#pragma once #include struct SensorNodeDashboardStatus { bool frameReceived = false; bool imuOnline = false; bool imuValid = false; bool levelCalibrationValid = false; bool gpsOnline = false; bool gpsFix = false; uint8_t imuAccuracy = 0; uint32_t bootId = 0; uint32_t frameSequence = 0; uint32_t framesReceived = 0; uint32_t framesDropped = 0; uint32_t parseErrors = 0; uint32_t oversizedFrames = 0; uint32_t bytesReceived = 0; uint32_t nodeRestarts = 0; uint32_t satellites = 0; float pitchDegrees = 0; float rollDegrees = 0; float yawDegrees = 0; float speedKph = 0; float hdop = 0; float altitudeMeters = 0; double latitude = 0; double longitude = 0; String stability = "unknown"; String firmwareVersion; String utcTime; unsigned long lastByteMs = 0; unsigned long lastFrameMs = 0; }; void initSensorNodeRs485(); void processSensorNodeRs485(); bool sensorNodeRs485Connected(); const SensorNodeDashboardStatus &getSensorNodeStatus();