|
|
@ -172,18 +172,19 @@ class HmsPayload { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void add(Inverter<> *iv, hmsPacket_t *p) { |
|
|
|
if (p->data[1] == (TX_REQ_INFO + ALL_FRAMES)) { // response from get information command
|
|
|
|
mPayload[iv->id].txId = p->data[1]; |
|
|
|
void add(Inverter<> *iv, packet_t *p) { |
|
|
|
if (p->packet[0] == (TX_REQ_INFO + ALL_FRAMES)) { // response from get information command
|
|
|
|
mPayload[iv->id].txId = p->packet[0]; |
|
|
|
DPRINTLN(DBG_DEBUG, F("Response from info request received")); |
|
|
|
uint8_t *pid = &p->data[10]; |
|
|
|
uint8_t *pid = &p->packet[9]; |
|
|
|
if (*pid == 0x00) { |
|
|
|
DPRINTLN(DBG_DEBUG, F("fragment number zero received and ignored")); |
|
|
|
} else { |
|
|
|
DPRINTLN(DBG_DEBUG, "PID: 0x" + String(*pid, HEX)); |
|
|
|
DPRINT(DBG_DEBUG, F("PID: 0x")); |
|
|
|
DPRINTLN(DBG_DEBUG, String(*pid, HEX)); |
|
|
|
if ((*pid & 0x7F) < MAX_PAYLOAD_ENTRIES) { |
|
|
|
memcpy(mPayload[iv->id].data[(*pid & 0x7F) - 1], &p->data[11], p->data[0] - 11); |
|
|
|
mPayload[iv->id].len[(*pid & 0x7F) - 1] = p->data[0] -11; |
|
|
|
memcpy(mPayload[iv->id].data[(*pid & 0x7F) - 1], &p->packet[10], p->len - 11); |
|
|
|
mPayload[iv->id].len[(*pid & 0x7F) - 1] = p->len - 11; |
|
|
|
mPayload[iv->id].gotFragment = true; |
|
|
|
mPayload[iv->id].rssi[(*pid & 0x7F) - 1] = p->rssi; |
|
|
|
} |
|
|
@ -197,15 +198,15 @@ class HmsPayload { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else if (p->data[1] == (TX_REQ_DEVCONTROL + ALL_FRAMES)) { // response from dev control command
|
|
|
|
} else if (p->packet[0] == (TX_REQ_DEVCONTROL + ALL_FRAMES)) { // response from dev control command
|
|
|
|
DPRINTLN(DBG_DEBUG, F("Response from devcontrol request received")); |
|
|
|
|
|
|
|
mPayload[iv->id].txId = p->data[1]; |
|
|
|
mPayload[iv->id].txId = p->packet[0]; |
|
|
|
iv->clearDevControlRequest(); |
|
|
|
|
|
|
|
if ((p->data[13] == ActivePowerContr) && (p->data[14] == 0x00)) { |
|
|
|
if ((p->packet[12] == ActivePowerContr) && (p->packet[13] == 0x00)) { |
|
|
|
bool ok = true; |
|
|
|
if((p->data[11] == 0x00) && (p->data[12] == 0x00)) { |
|
|
|
if((p->packet[10] == 0x00) && (p->packet[11] == 0x00)) { |
|
|
|
mApp->setMqttPowerLimitAck(iv); |
|
|
|
iv->powerLimitAck = true; |
|
|
|
} else |
|
|
|