#ifndef PACKET_TYPES_H #define PACKET_TYPES_H #include #include // Define packet types enum class PacketType { OPEN, CLOSE, STOP, FIELDS, FIELD_COMMAND, UNKNOWN }; enum class FieldType { VALUE, SET, FETCH, UNKNOWN }; struct Field { uint8_t identifier; FieldType type; bool hasValue; std::variant value; }; struct FieldsParameters { std::vector fields; }; using PacketParameters = std::variant; struct BroadcastHeader { uint16_t source; }; struct UnicastHeader { uint16_t source; uint16_t destination; }; struct GroupsHeader { uint16_t source; std::vector groups; }; using PacketHeader = std::variant; // Define Packet structure struct Packet { PacketHeader header; PacketType type; PacketParameters parameters; uint8_t rollingCode1; uint8_t rollingCode2; }; #endif // PACKET_TYPES_H