diff --git a/lib/Hoymiles/src/commands/DevControlCommand.cpp b/lib/Hoymiles/src/commands/DevControlCommand.cpp index b8f8a50..54b4217 100644 --- a/lib/Hoymiles/src/commands/DevControlCommand.cpp +++ b/lib/Hoymiles/src/commands/DevControlCommand.cpp @@ -1,8 +1,16 @@ #include "DevControlCommand.h" +#include "crc.h" DevControlCommand::DevControlCommand(uint64_t target_address, uint64_t router_address) : CommandAbstract(target_address, router_address) { _payload[0] = 0x51; _payload[9] = 0x81; +} + +void DevControlCommand::udpateCRC(uint8_t len) +{ + uint16_t crc = crc16(&_payload[10], len); + _payload[10 + len] = (uint8_t)(crc >> 8); + _payload[10 + len + 1] = (uint8_t)(crc); } \ No newline at end of file diff --git a/lib/Hoymiles/src/commands/DevControlCommand.h b/lib/Hoymiles/src/commands/DevControlCommand.h index 4465344..f230bd0 100644 --- a/lib/Hoymiles/src/commands/DevControlCommand.h +++ b/lib/Hoymiles/src/commands/DevControlCommand.h @@ -5,4 +5,7 @@ class DevControlCommand : public CommandAbstract { public: explicit DevControlCommand(uint64_t target_address = 0, uint64_t router_address = 0); + +protected: + void udpateCRC(uint8_t len); }; \ No newline at end of file