feat: reset telemetry state after disconnect

to avoid the model continuing to move when the robot disconnects while in motion
This commit is contained in:
Youwen Wu 2024-03-02 12:02:18 -08:00
parent 650c322d53
commit 0ab4d5cf4b

View file

@ -1,5 +1,5 @@
import { telemetryStore } from "../stores/telemetryStore"; import { telemetryStore } from '../stores/telemetryStore'
import { listen } from "@tauri-apps/api/event"; import { listen } from '@tauri-apps/api/event'
/** /**
* Connects to sockets and subscribes to specified topics to receive telemetry data. * Connects to sockets and subscribes to specified topics to receive telemetry data.
@ -10,9 +10,9 @@ import { listen } from "@tauri-apps/api/event";
*/ */
const onUpdate = (data: TelemetryData) => { const onUpdate = (data: TelemetryData) => {
telemetryStore.update(data); telemetryStore.update(data)
// console.log(data) // console.log(data)
}; }
export const initializeTelemetry = async ( export const initializeTelemetry = async (
topics: TelemetryTopics, topics: TelemetryTopics,
@ -21,28 +21,27 @@ export const initializeTelemetry = async (
// Make sure refreshRate is valid // Make sure refreshRate is valid
if (!Number.isInteger(refreshRate) || refreshRate < 1) { if (!Number.isInteger(refreshRate) || refreshRate < 1) {
throw new Error( throw new Error(
"refreshRate must be an integer greater than or equal to 1." 'refreshRate must be an integer greater than or equal to 1.'
); )
} }
const unlistenStatus = await listen("telemetry_status", (event) => { const unlistenStatus = await listen('telemetry_status', event => {
if (event.payload === "connected") { if (event.payload === 'connected') {
telemetryStore.set("connected", true); telemetryStore.set('connected', true)
} else if (event.payload === "disconnected") { } else if (event.payload === 'disconnected') {
telemetryStore.set("connected", false); telemetryStore.reset()
} }
}); })
const unlistenTelemetry = await listen("telemetry_data", (event) => { const unlistenTelemetry = await listen('telemetry_data', event => {
const data = JSON.parse(event.payload as string); const data = JSON.parse(event.payload as string)
// console.log(JSON.parse) telemetryStore.set(data['topic_name'], data['data'])
telemetryStore.set(data["topic_name"], data["data"]); })
});
const unlistenAll = () => { const unlistenAll = () => {
unlistenStatus(); unlistenStatus()
unlistenTelemetry(); unlistenTelemetry()
}; }
return unlistenAll; return unlistenAll
}; }