Add support for more packet types
This commit is contained in:
@@ -9,6 +9,9 @@ enum class PacketType {
|
||||
OPEN,
|
||||
CLOSE,
|
||||
STOP,
|
||||
OPEN_SLOW,
|
||||
CLOSE_SLOW,
|
||||
MOVE_TO_SAVED_POSITION,
|
||||
FIELDS,
|
||||
FIELD_COMMAND,
|
||||
UNKNOWN
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user