import React, { useEffect, useState, useRef } from 'react'; import { Box, Typography } from '@mui/material'; import CircleIcon from '@mui/icons-material/Circle'; const ConnectionIndicators = ({ isConnected, mavlinkSession, localNode }) => { const [txActive, setTxActive] = useState(false); const [rxActive, setRxActive] = useState(false); const txTimeout = useRef(null); const rxTimeout = useRef(null); useEffect(() => { const handleFrameSend = () => { setTxActive(true); clearTimeout(txTimeout.current); txTimeout.current = setTimeout(() => { setTxActive(false); }, 100); }; const handleFrameReceive = () => { setRxActive(true); clearTimeout(rxTimeout.current); rxTimeout.current = setTimeout(() => { setRxActive(false); }, 100); }; if (mavlinkSession) { mavlinkSession.on('mav-tx', handleFrameSend); mavlinkSession.on('mav-rx', handleFrameReceive); } return () => { if (mavlinkSession) { mavlinkSession.removeListener('mav-tx', handleFrameSend); mavlinkSession.removeListener('mav-rx', handleFrameReceive); } clearTimeout(txTimeout.current); clearTimeout(rxTimeout.current); }; }, [localNode, mavlinkSession]); return ( TX RX ); }; export default ConnectionIndicators;