#ifndef ILEDDISPLAYDEVICE_H #define ILEDDISPLAYDEVICE_H #include #include struct LedDisplayConfig { std::string ip = "192.168.1.100"; int port = 5005; int slaveId = 0xFFFE; int startAddress = 0; int timeoutMs = 1000; bool enabled = false; int controllerType = 0xFE; int areaX = 0; int areaY = 0; int areaWidth = 64; int areaHeight = 32; int dynamicTimeoutSec = 10; int displayMode = 0x01; int speed = 2; int stayTime = 10; }; struct LedDisplayResult { bool valid = false; int guideCode = 0; float distance = 0.0f; float lateralOffset = 0.0f; float angle = 0.0f; }; enum class ELedDisplayStatus { Disconnected = 0, Connected, Error }; using LedDisplayStatusCallback = std::function; class ILedDisplayDevice { public: virtual ~ILedDisplayDevice() = default; static int CreateObject(ILedDisplayDevice** ppDevice); virtual int Open(const LedDisplayConfig& config) = 0; virtual void Close() = 0; virtual bool IsConnected() const = 0; virtual int SendResult(const LedDisplayResult& result) = 0; virtual const LedDisplayConfig& GetConfig() const = 0; virtual void SetStatusCallback(LedDisplayStatusCallback callback, void* user) = 0; }; #endif // ILEDDISPLAYDEVICE_H