29 lines
744 B
C++
29 lines
744 B
C++
#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;
|
|
|
|
setTimeout(1000);
|
|
}
|
|
|
|
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);
|
|
}
|
|
|
|
bool DevControlCommand::handleResponse(InverterAbstract* inverter, fragment_t fragment[], uint8_t max_fragment_id)
|
|
{
|
|
for (uint8_t i = 0; i < max_fragment_id; i++) {
|
|
if (fragment[i].mainCmd != (_payload[0] | 0x80)) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
} |