diff --git a/app/src/lib/components/statusbar/StopButton.svelte b/app/src/lib/components/statusbar/StopButton.svelte
index 28ff091..8f7cca2 100644
--- a/app/src/lib/components/statusbar/StopButton.svelte
+++ b/app/src/lib/components/statusbar/StopButton.svelte
@@ -1,8 +1,9 @@
diff --git a/app/src/lib/platform_shared/websocket_message.ts b/app/src/lib/platform_shared/websocket_message.ts
index 4978a36..b09f13d 100644
--- a/app/src/lib/platform_shared/websocket_message.ts
+++ b/app/src/lib/platform_shared/websocket_message.ts
@@ -134,7 +134,10 @@ export interface IMUData {
x: number;
y: number;
z: number;
- temp: number;
+ heading: number;
+ altitude: number;
+ bmpTemp: number;
+ pressure: number;
}
export interface StaticSystemInformation {
@@ -741,7 +744,7 @@ export const KnownNetworkItem: MessageFns = {
};
function createBaseIMUData(): IMUData {
- return { x: 0, y: 0, z: 0, temp: 0 };
+ return { x: 0, y: 0, z: 0, heading: 0, altitude: 0, bmpTemp: 0, pressure: 0 };
}
export const IMUData: MessageFns = {
@@ -755,8 +758,17 @@ export const IMUData: MessageFns = {
if (message.z !== 0) {
writer.uint32(29).float(message.z);
}
- if (message.temp !== 0) {
- writer.uint32(37).float(message.temp);
+ if (message.heading !== 0) {
+ writer.uint32(37).float(message.heading);
+ }
+ if (message.altitude !== 0) {
+ writer.uint32(45).float(message.altitude);
+ }
+ if (message.bmpTemp !== 0) {
+ writer.uint32(53).float(message.bmpTemp);
+ }
+ if (message.pressure !== 0) {
+ writer.uint32(61).float(message.pressure);
}
return writer;
},
@@ -797,7 +809,31 @@ export const IMUData: MessageFns = {
break;
}
- message.temp = reader.float();
+ message.heading = reader.float();
+ continue;
+ }
+ case 5: {
+ if (tag !== 45) {
+ break;
+ }
+
+ message.altitude = reader.float();
+ continue;
+ }
+ case 6: {
+ if (tag !== 53) {
+ break;
+ }
+
+ message.bmpTemp = reader.float();
+ continue;
+ }
+ case 7: {
+ if (tag !== 61) {
+ break;
+ }
+
+ message.pressure = reader.float();
continue;
}
}
@@ -814,7 +850,10 @@ export const IMUData: MessageFns = {
x: isSet(object.x) ? globalThis.Number(object.x) : 0,
y: isSet(object.y) ? globalThis.Number(object.y) : 0,
z: isSet(object.z) ? globalThis.Number(object.z) : 0,
- temp: isSet(object.temp) ? globalThis.Number(object.temp) : 0,
+ heading: isSet(object.heading) ? globalThis.Number(object.heading) : 0,
+ altitude: isSet(object.altitude) ? globalThis.Number(object.altitude) : 0,
+ bmpTemp: isSet(object.bmpTemp) ? globalThis.Number(object.bmpTemp) : 0,
+ pressure: isSet(object.pressure) ? globalThis.Number(object.pressure) : 0,
};
},
@@ -829,8 +868,17 @@ export const IMUData: MessageFns = {
if (message.z !== 0) {
obj.z = message.z;
}
- if (message.temp !== 0) {
- obj.temp = message.temp;
+ if (message.heading !== 0) {
+ obj.heading = message.heading;
+ }
+ if (message.altitude !== 0) {
+ obj.altitude = message.altitude;
+ }
+ if (message.bmpTemp !== 0) {
+ obj.bmpTemp = message.bmpTemp;
+ }
+ if (message.pressure !== 0) {
+ obj.pressure = message.pressure;
}
return obj;
},
@@ -843,7 +891,10 @@ export const IMUData: MessageFns = {
message.x = object.x ?? 0;
message.y = object.y ?? 0;
message.z = object.z ?? 0;
- message.temp = object.temp ?? 0;
+ message.heading = object.heading ?? 0;
+ message.altitude = object.altitude ?? 0;
+ message.bmpTemp = object.bmpTemp ?? 0;
+ message.pressure = object.pressure ?? 0;
return message;
},
};
@@ -3444,7 +3495,7 @@ export const protoMetadata: ProtoMetadata = {
"options": undefined,
"proto3Optional": false,
}, {
- "name": "temp",
+ "name": "heading",
"number": 4,
"label": 1,
"type": 2,
@@ -3452,7 +3503,43 @@ export const protoMetadata: ProtoMetadata = {
"extendee": "",
"defaultValue": "",
"oneofIndex": 0,
- "jsonName": "temp",
+ "jsonName": "heading",
+ "options": undefined,
+ "proto3Optional": false,
+ }, {
+ "name": "altitude",
+ "number": 5,
+ "label": 1,
+ "type": 2,
+ "typeName": "",
+ "extendee": "",
+ "defaultValue": "",
+ "oneofIndex": 0,
+ "jsonName": "altitude",
+ "options": undefined,
+ "proto3Optional": false,
+ }, {
+ "name": "bmp_temp",
+ "number": 6,
+ "label": 1,
+ "type": 2,
+ "typeName": "",
+ "extendee": "",
+ "defaultValue": "",
+ "oneofIndex": 0,
+ "jsonName": "bmpTemp",
+ "options": undefined,
+ "proto3Optional": false,
+ }, {
+ "name": "pressure",
+ "number": 7,
+ "label": 1,
+ "type": 2,
+ "typeName": "",
+ "extendee": "",
+ "defaultValue": "",
+ "oneofIndex": 0,
+ "jsonName": "pressure",
"options": undefined,
"proto3Optional": false,
}],
@@ -4698,13 +4785,13 @@ export const protoMetadata: ProtoMetadata = {
"sourceCodeInfo": {
"location": [{
"path": [4, 4],
- "span": [8, 0, 13, 1],
+ "span": [8, 0, 16, 1],
"leadingComments": " Individual message data types\n",
"trailingComments": "",
"leadingDetachedComments": [],
}, {
"path": [4, 25],
- "span": [102, 0, 121, 1],
+ "span": [105, 0, 124, 1],
"leadingComments": " WebSocket message wrapper\n Only ONE field will be set at a time (oneof ensures this)\n",
"trailingComments": "",
"leadingDetachedComments": [],
diff --git a/app/src/lib/stores/imu.ts b/app/src/lib/stores/imu.ts
index c486d6f..a9ce417 100644
--- a/app/src/lib/stores/imu.ts
+++ b/app/src/lib/stores/imu.ts
@@ -1,42 +1,19 @@
import { writable } from 'svelte/store'
-import type { IMUMsg } from '$lib/types/models'
-import type { IMUReport } from '$lib/platform_shared/imu_report'
+import { IMUData } from '$lib/platform_shared/websocket_message'
+const imu_data: IMUData[] = [];
const maxIMUData = 100
+
export const imu = (() => {
- const { subscribe, update } = writable({
- x: [] as number[],
- y: [] as number[],
- z: [] as number[],
- heading: [] as number[],
- altitude: [] as number[],
- pressure: [] as number[],
- bmp_temp: [] as number[]
- })
+ const { subscribe, update } = writable(imu_data)
- const addData = (content: IMUReport) => {
- update(data => {
- if (content.success) {
- data.x = [...data.x, content.x].slice(-maxIMUData)
- data.y = [...data.y, content.y].slice(-maxIMUData)
- data.z = [...data.z, content.z].slice(-maxIMUData)
- }
-
- // TODO: Temporarily disabled
- // if (content.mag && content.mag[4]) {
- // data.heading = [...data.heading, content.mag[3]].slice(-maxIMUData)
- // }
-
- // if (content.bmp && content.bmp[3]) {
- // data.pressure = [...data.pressure, content.bmp[0]].slice(-maxIMUData)
- // data.altitude = [...data.altitude, content.bmp[1]].slice(-maxIMUData)
- // data.bmp_temp = [...data.bmp_temp, content.bmp[2]].slice(-maxIMUData)
- // }
-
- return data
- })
+ return {
+ subscribe,
+ addData: (content: IMUData) => {
+ update(imu_data => {
+ return [...imu_data, content].slice(-maxIMUData)
+ })
+ }
}
-
- return { subscribe, addData }
})()
diff --git a/app/src/lib/types/models.ts b/app/src/lib/types/models.ts
index 1d6b5ff..c289675 100644
--- a/app/src/lib/types/models.ts
+++ b/app/src/lib/types/models.ts
@@ -13,20 +13,6 @@ export type GithubRelease = {
}
-export type WifiStatus = {
- status: number
- local_ip: string
- mac_address: string
- rssi: number
- ssid: string
- bssid: string
- channel: number
- subnet_mask: string
- gateway_ip: string
- dns_ip_1: string
- dns_ip_2?: string
-}
-
export type NetworkList = {
networks: NetworkItem[]
@@ -67,22 +53,6 @@ export type Rssi = {
}
-export type IMU = {
- x: number
- y: number
- z: number
- heading: number
- altitude: number
- bmp_temp: number
- pressure: number
-}
-
-export type IMUMsg = {
- imu: [number, number, number, number, boolean]
- mag: [number, number, number, number, boolean]
- bmp: [number, number, number, boolean]
-}
-
export interface I2CDevice {
address: number
diff --git a/app/src/routes/controller/+page.svelte b/app/src/routes/controller/+page.svelte
index cb5f73d..1936bfa 100644
--- a/app/src/routes/controller/+page.svelte
+++ b/app/src/routes/controller/+page.svelte
@@ -5,12 +5,12 @@
import { onMount } from 'svelte'
import { mpu, socket } from '$lib/stores'
import { imu } from '$lib/stores/imu'
- import { MessageTopic, type IMU } from '$lib/types/models'
+ import type { IMUData } from '$lib/platform_shared/websocket_message'
let layout = $derived($views.find(v => v.name === $selectedView)!)
onMount(() => {
- socket.on(MessageTopic.imu, (data: IMU) => {
+ socket.on(IMUData, (data: IMUData) => {
imu.addData(data)
if (data.heading)
mpu.update(mpuData => {
diff --git a/app/src/routes/wifi/sta/Wifi.svelte b/app/src/routes/wifi/sta/Wifi.svelte
index f5caec0..aca4ba8 100644
--- a/app/src/routes/wifi/sta/Wifi.svelte
+++ b/app/src/routes/wifi/sta/Wifi.svelte
@@ -11,12 +11,6 @@
import ScanNetworks from './Scan.svelte'
import Spinner from '$lib/components/Spinner.svelte'
import InfoDialog from '$lib/components/InfoDialog.svelte'
- import {
- MessageTopic,
- type KnownNetworkItem,
- type WifiSettings,
- type WifiStatus
- } from '$lib/types/models'
import { socket } from '$lib/stores'
import { api } from '$lib/api'
import {
@@ -39,17 +33,9 @@
Edit
} from '$lib/components/icons'
import StatusItem from '$lib/components/StatusItem.svelte'
+ import { KnownNetworkItem } from '$lib/platform_shared/websocket_message'
- let networkEditable: KnownNetworkItem = $state({
- ssid: '',
- password: '',
- static_ip_config: false,
- local_ip: undefined,
- subnet_mask: undefined,
- gateway_ip: undefined,
- dns_ip_1: undefined,
- dns_ip_2: undefined
- })
+ let networkEditable: KnownNetworkItem = $state( KnownNetworkItem.create() )
let static_ip_config = $state(false)
diff --git a/platform_shared/websocket_message.proto b/platform_shared/websocket_message.proto
index 501824b..7c23a67 100644
--- a/platform_shared/websocket_message.proto
+++ b/platform_shared/websocket_message.proto
@@ -1,5 +1,17 @@
syntax = "proto3";
+
+// REST MESSAGE TYPES
+// TODO: i am too lazy to create a new file and compile it manually, so move this to a new proto before merging
+
+
+// END REST MESSAGE TYPES
+
+
+
+
+
+
message Vector { float x = 1; float y = 2; }
message I2CDevice { int32 address = 1; string part_number = 2; string name = 3; }
message PinConfig { int32 pin = 1; string mode = 2; string type = 3; string role = 4; }
@@ -10,7 +22,10 @@ message IMUData {
float x = 1;
float y = 2;
float z = 3;
- float temp = 4;
+ float heading = 4;
+ float altitude = 5;
+ float bmp_temp = 6;
+ float pressure = 7;
}
enum ModesEnum {