63 lines
1.5 KiB
C++
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
|