#ifndef UWBHELPER_H #define UWBHELPER_H #include #include struct DeviceData { int deviceId; float distance; float rssi; unsigned long lastUpdate; bool active; }; class UWBHelper { private: HardwareSerial* uwbSerial; int resetPin; public: UWBHelper(HardwareSerial* serial, int reset); // Initialization bool begin(); void reset(); // Configuration bool configureDevice(int deviceId, bool isAnchor, int dataRate = 1, int rangeFilter = 1); bool setCapacity(int tagCount, int timeSlot = 10, int extMode = 1); bool setNetwork(int networkId); bool enableReporting(bool enable); bool saveConfiguration(); bool restartDevice(); // Communication String sendCommand(String command, int timeout = 2000); bool parseRangeData(String data, DeviceData devices[], int maxDevices); // Utility String getVersion(); bool isResponseOK(String response); void printDiagnostics(); }; // Data filtering class class DistanceFilter { private: static const int FILTER_SIZE = 5; float readings[FILTER_SIZE]; int index; bool filled; public: DistanceFilter(); float addReading(float distance); float getFilteredValue(); void reset(); }; #endif // UWBHELPER_H