Add support for more packet types
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user