From 0ab4d5cf4bb5bafe600eeb3fefb9b314849e565a Mon Sep 17 00:00:00 2001 From: Youwen Wu Date: Sat, 2 Mar 2024 12:02:18 -0800 Subject: [PATCH] feat: reset telemetry state after disconnect to avoid the model continuing to move when the robot disconnects while in motion --- client/src/lib/utils/initializeTelemetry.ts | 43 ++++++++++----------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/client/src/lib/utils/initializeTelemetry.ts b/client/src/lib/utils/initializeTelemetry.ts index 5458368..06ba0cc 100644 --- a/client/src/lib/utils/initializeTelemetry.ts +++ b/client/src/lib/utils/initializeTelemetry.ts @@ -1,5 +1,5 @@ -import { telemetryStore } from "../stores/telemetryStore"; -import { listen } from "@tauri-apps/api/event"; +import { telemetryStore } from '../stores/telemetryStore' +import { listen } from '@tauri-apps/api/event' /** * 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) => { - telemetryStore.update(data); + telemetryStore.update(data) // console.log(data) -}; +} export const initializeTelemetry = async ( topics: TelemetryTopics, @@ -21,28 +21,27 @@ export const initializeTelemetry = async ( // Make sure refreshRate is valid if (!Number.isInteger(refreshRate) || refreshRate < 1) { 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) => { - if (event.payload === "connected") { - telemetryStore.set("connected", true); - } else if (event.payload === "disconnected") { - telemetryStore.set("connected", false); + const unlistenStatus = await listen('telemetry_status', event => { + if (event.payload === 'connected') { + telemetryStore.set('connected', true) + } else if (event.payload === 'disconnected') { + telemetryStore.reset() } - }); + }) - const unlistenTelemetry = await listen("telemetry_data", (event) => { - const data = JSON.parse(event.payload as string); - // console.log(JSON.parse) - telemetryStore.set(data["topic_name"], data["data"]); - }); + const unlistenTelemetry = await listen('telemetry_data', event => { + const data = JSON.parse(event.payload as string) + telemetryStore.set(data['topic_name'], data['data']) + }) const unlistenAll = () => { - unlistenStatus(); - unlistenTelemetry(); - }; + unlistenStatus() + unlistenTelemetry() + } - return unlistenAll; -}; + return unlistenAll +}