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 {