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, OPEN,
CLOSE, CLOSE,
STOP, STOP,
OPEN_SLOW,
CLOSE_SLOW,
MOVE_TO_SAVED_POSITION,
FIELDS, FIELDS,
FIELD_COMMAND, FIELD_COMMAND,
UNKNOWN UNKNOWN

View File

@@ -57,6 +57,24 @@ bool BufferFiller::fill(uint8_t *buffer, const Packet* packet) {
buffer[dataOffset + 1] = 0x55; buffer[dataOffset + 1] = 0x55;
buffer[dataOffset + 2] = 0x00; buffer[dataOffset + 2] = 0x00;
break; 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: { case PacketType::FIELDS: {
FieldsParameters parameters = std::get<FieldsParameters>(packet->parameters); FieldsParameters parameters = std::get<FieldsParameters>(packet->parameters);
// 0x10 is the number of bytes without any fields // 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) { } else if (buffer[dataOffset + 0] == 0x52 && buffer[dataOffset + 1] == 0x55) {
packet.type = PacketType::OPEN; packet.type = PacketType::OPEN;
packet.parameters = std::monostate{}; 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) { } else if (buffer[dataOffset + 0] == 0x21 && buffer[dataOffset + 1] == 0x5A) {
packet.type = PacketType::FIELDS; packet.type = PacketType::FIELDS;
std::vector<Field> fields; std::vector<Field> fields;