Add support for more packet types

This commit is contained in:
2024-02-18 22:50:55 +11:00
parent 07f46ecfe7
commit 52d03a1ac9
3 changed files with 30 additions and 0 deletions

View File

@@ -9,6 +9,9 @@ enum class PacketType {
OPEN,
CLOSE,
STOP,
OPEN_SLOW,
CLOSE_SLOW,
MOVE_TO_SAVED_POSITION,
FIELDS,
FIELD_COMMAND,
UNKNOWN

View File

@@ -57,6 +57,24 @@ bool BufferFiller::fill(uint8_t *buffer, const Packet* packet) {
buffer[dataOffset + 1] = 0x55;
buffer[dataOffset + 2] = 0x00;
break;
case PacketType::CLOSE_SLOW:
setPacketSize(buffer, 0x11);
buffer[dataOffset + 0] = 0x52;
buffer[dataOffset + 1] = 0x4C;
buffer[dataOffset + 2] = 0x00;
break;
case PacketType::OPEN_SLOW:
setPacketSize(buffer, 0x11);
buffer[dataOffset + 0] = 0x52;
buffer[dataOffset + 1] = 0x52;
buffer[dataOffset + 2] = 0x00;
break;
case PacketType::MOVE_TO_SAVED_POSITION:
setPacketSize(buffer, 0x11);
buffer[dataOffset + 0] = 0x52;
buffer[dataOffset + 1] = 0x48;
buffer[dataOffset + 2] = 0x00;
break;
case PacketType::FIELDS: {
FieldsParameters parameters = std::get<FieldsParameters>(packet->parameters);
// 0x10 is the number of bytes without any fields

View File

@@ -54,6 +54,15 @@ bool PacketParser::parsePacket(const uint8_t *buffer, Packet& packet)
} else if (buffer[dataOffset + 0] == 0x52 && buffer[dataOffset + 1] == 0x55) {
packet.type = PacketType::OPEN;
packet.parameters = std::monostate{};
} else if (buffer[dataOffset + 0] == 0x52 && buffer[dataOffset + 1] == 0x4C) {
packet.type = PacketType::CLOSE_SLOW;
packet.parameters = std::monostate{};
} else if (buffer[dataOffset + 0] == 0x52 && buffer[dataOffset + 1] == 0x52) {
packet.type = PacketType::OPEN_SLOW;
packet.parameters = std::monostate{};
} else if (buffer[dataOffset + 0] == 0x52 && buffer[dataOffset + 1] == 0x48) {
packet.type = PacketType::MOVE_TO_SAVED_POSITION;
packet.parameters = std::monostate{};
} else if (buffer[dataOffset + 0] == 0x21 && buffer[dataOffset + 1] == 0x5A) {
packet.type = PacketType::FIELDS;
std::vector<Field> fields;