Team Ai
Apppublic

IDKHowToCodeFr/tinyml-backend

sourceHugging Faceupdated 2d agoView on Hugging Face
1likes
TelemetryContext.tsx53 linesDownload Raw Back to context
1"use client";2 3import { createContext, useContext, useState, useCallback } from "react";4import { useResilientSocket, ConnectionStatus } from "@/hooks/useResilientSocket";5 6type StreamState = {7  hr: number[];8  temp: number[];9};10 11type TelemetryContextType = {12  data: any;13  stream: StreamState;14  status: ConnectionStatus;15};16 17const TelemetryContext = createContext<TelemetryContextType | null>(null);18 19export function TelemetryProvider({ children }: { children: React.ReactNode }) {20  const [data, setData] = useState<any>(null);21  const [stream, setStream] = useState<StreamState>({22    hr: Array(50).fill(75),23    temp: Array(50).fill(37.0)24  });25 26  const handleMessage = useCallback((msg: any) => {27    setData(msg);28    if (msg?.sensor_data) {29      setStream(prev => ({30        hr: [...prev.hr.slice(1), msg.sensor_data.Heart_Rate],31        temp: [...prev.temp.slice(1), msg.sensor_data.Body_Temp]32      }));33    }34  }, []);35 36  const wsUrl = process.env.NEXT_PUBLIC_WS_URL || "ws://localhost:8000/ws/feed";37  const status = useResilientSocket(wsUrl, handleMessage);38 39  return (40    <TelemetryContext.Provider value={{ data, stream, status }}>41      {children}42    </TelemetryContext.Provider>43  );44}45 46export function useTelemetry() {47  const context = useContext(TelemetryContext);48  if (!context) {49    throw new Error("useTelemetry must be used within a TelemetryProvider");50  }51  return context;52}53