#pragma once #include "../float16/float16.h" #include "Client.h" namespace Passer::Control { class IMessage { public: // static unsigned char buffer[256]; virtual unsigned char Serialize(unsigned char *buffer); static bool SendMsg(ControlClient client, IMessage msg, unsigned char bufferSize); static bool SendMsg(ControlClient client, unsigned char *buffer, unsigned char bufferSize); }; class InvestigateMsg : public IMessage { public: static const unsigned char id = 0x81; static const unsigned char length = 3; unsigned char networkId; unsigned char thingId; InvestigateMsg(unsigned char networkId, unsigned char thingId); virtual unsigned char Serialize(unsigned char *buffer) override; static bool Send(ControlClient client, unsigned char networkId, unsigned char thingId); }; class ThingMsg : public IMessage { public: static const unsigned char id = 0x80; static const unsigned char length = 5; unsigned char networkId; unsigned char thingId; unsigned char thingType; unsigned char parentId; ThingMsg(unsigned char networkId, unsigned char thingId, unsigned char thingType, unsigned char parentId); virtual unsigned char Serialize(unsigned char *buffer) override; static bool Send(ControlClient client, unsigned char networkId, unsigned char thingId, unsigned char thingType, unsigned char parentId); }; class NameMsg : public IMessage { public: static const unsigned char id = 0x91; static const unsigned char length = 4; unsigned char networkId; unsigned char thingId; unsigned char nameLength; const char *name; NameMsg(unsigned char networkId, unsigned char thingId, unsigned char nameLength, const char *name); virtual unsigned char Serialize(unsigned char *buffer) override; }; class ModelUrlMsg : public IMessage { public: static const unsigned char id = 0x90; unsigned char networkId; unsigned char thingId; float scale; unsigned char urlLength; const char *url; ModelUrlMsg(unsigned char networkId, unsigned char thingId, unsigned char urlLegth, const char *url, float scale = 1); virtual unsigned char Serialize(unsigned char *buffer) override; }; } // namespace Passer::Control using namespace Passer::Control;