GrabBag/Device/LedDisplayDevice/Inc/ILedDisplayDevice.h
2026-07-11 15:49:14 +08:00

63 lines
1.5 KiB
C++

#ifndef ILEDDISPLAYDEVICE_H
#define ILEDDISPLAYDEVICE_H
#include <functional>
#include <string>
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<void(ELedDisplayStatus status,
const std::string& message,
void* user)>;
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