mirror of
https://github.com/lumapu/ahoy.git
synced 2025-05-23 22:06:11 +02:00
MI - some small fixes (#5)
This commit is contained in:
parent
6fc2f2dde3
commit
0535117a47
3 changed files with 40 additions and 25 deletions
|
@ -157,7 +157,8 @@ class Inverter {
|
||||||
}
|
}
|
||||||
|
|
||||||
void clearCmdQueue() {
|
void clearCmdQueue() {
|
||||||
DPRINTLN(DBG_INFO, F("clearCmdQueue"));
|
DPRINTHEAD(DBG_INFO, id);
|
||||||
|
DBGPRINTLN_TXT(TXT_CLRQUE);
|
||||||
while (!_commandQueue.empty()) {
|
while (!_commandQueue.empty()) {
|
||||||
// Will destroy CommandAbstract Class Object (?)
|
// Will destroy CommandAbstract Class Object (?)
|
||||||
_commandQueue.pop();
|
_commandQueue.pop();
|
||||||
|
|
|
@ -174,7 +174,6 @@ class MiPayload {
|
||||||
|
|
||||||
void add(Inverter<> *iv, packet_t *p) {
|
void add(Inverter<> *iv, packet_t *p) {
|
||||||
//DPRINTLN(DBG_INFO, F("MI got data [0]=") + String(p->packet[0], HEX));
|
//DPRINTLN(DBG_INFO, F("MI got data [0]=") + String(p->packet[0], HEX));
|
||||||
|
|
||||||
if (p->packet[0] == (0x08 + ALL_FRAMES)) { // 0x88; MI status response to 0x09
|
if (p->packet[0] == (0x08 + ALL_FRAMES)) { // 0x88; MI status response to 0x09
|
||||||
miStsDecode(iv, p);
|
miStsDecode(iv, p);
|
||||||
}
|
}
|
||||||
|
@ -261,20 +260,26 @@ const byteAssign_t InfoAssignment[] = {
|
||||||
mStat->rxSuccess++;
|
mStat->rxSuccess++;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (p->packet[0] == (TX_REQ_INFO + ALL_FRAMES)) { // response from get information command
|
} else if ( p->packet[0] == (TX_REQ_INFO + ALL_FRAMES) || p->packet[0] == 0xB6 ) { // response from get information command
|
||||||
// atm, we just do nothing else than print out what we got...
|
// atm, we just do nothing else than print out what we got...
|
||||||
// for decoding see xls- Data collection instructions - #147ff
|
// for decoding see xls- Data collection instructions - #147ff
|
||||||
mPayload[iv->id].txId = p->packet[0];
|
//mPayload[iv->id].txId = p->packet[0];
|
||||||
DPRINTLN(DBG_DEBUG, F("Response from info request received"));
|
//DPRINTLN(DBG_DEBUG, F("Response from info request received"));
|
||||||
|
DBGPRINTLN_TXT(TXT_RXDIREQ);
|
||||||
uint8_t *pid = &p->packet[9];
|
uint8_t *pid = &p->packet[9];
|
||||||
if (*pid == 0x00) {
|
if (*pid == 0x00) {
|
||||||
DPRINT(DBG_DEBUG, F("fragment number zero received"));
|
//DPRINT(DBG_DEBUG, F("fragment number zero received"));
|
||||||
|
DBGPRINTLN_TXT(TXT_FRAGM0);
|
||||||
iv->setQueuedCmdFinished();
|
iv->setQueuedCmdFinished();
|
||||||
} //else {
|
} else if (p->packet[9] == 0x81) {
|
||||||
DPRINTLN(DBG_DEBUG, "PID: 0x" + String(*pid, HEX));
|
DPRINTHEAD(DBG_WARN, iv->id);
|
||||||
/*
|
DBGPRINTLN_TXT(TXT_NO2NDG);
|
||||||
if ((*pid & 0x7F) < MAX_PAYLOAD_ENTRIES) {
|
iv->ivGen = IV_HM;
|
||||||
|
iv->setQueuedCmdFinished();
|
||||||
|
iv->clearCmdQueue();
|
||||||
|
//DPRINTLN(DBG_DEBUG, "PID: 0x" + String(*pid, HEX));
|
||||||
|
/* (old else-tree)
|
||||||
|
if ((*pid & 0x7F) < MAX_PAYLOAD_ENTRIES) {^
|
||||||
memcpy(mPayload[iv->id].data[(*pid & 0x7F) - 1], &p->packet[10], p->len - 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].len[(*pid & 0x7F) - 1] = p->len - 11;
|
||||||
mPayload[iv->id].gotFragment = true;
|
mPayload[iv->id].gotFragment = true;
|
||||||
|
@ -286,13 +291,14 @@ const byteAssign_t InfoAssignment[] = {
|
||||||
if (*pid > 0x81)
|
if (*pid > 0x81)
|
||||||
mPayload[iv->id].lastFound = true;
|
mPayload[iv->id].lastFound = true;
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
} */
|
//}
|
||||||
} else if (p->packet[0] == (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
|
||||||
|| p->packet[0] == (TX_REQ_DEVCONTROL + ALL_FRAMES -1)) { // response from DRED instruction
|
|| p->packet[0] == (TX_REQ_DEVCONTROL + ALL_FRAMES -1)) { // response from DRED instruction
|
||||||
DPRINTHEAD(DBG_DEBUG, iv->id);
|
DPRINTHEAD(DBG_DEBUG, iv->id);
|
||||||
DBGPRINTLN(F("Response from devcontrol request received"));
|
DBGPRINTLN_TXT(TXT_RXCTRREQ);
|
||||||
|
//DBGPRINTLN(F("Response from devcontrol request received"));
|
||||||
|
|
||||||
mPayload[iv->id].txId = p->packet[0];
|
mPayload[iv->id].txId = p->packet[0];
|
||||||
iv->clearDevControlRequest();
|
iv->clearDevControlRequest();
|
||||||
|
@ -313,7 +319,8 @@ const byteAssign_t InfoAssignment[] = {
|
||||||
//DPRINTLN(DBG_INFO, F("procPyld: cmd: 0x") + String(mPayload[iv->id].txCmd, HEX));
|
//DPRINTLN(DBG_INFO, F("procPyld: cmd: 0x") + String(mPayload[iv->id].txCmd, HEX));
|
||||||
//DPRINTLN(DBG_INFO, F("procPyld: txid: 0x") + String(mPayload[iv->id].txId, HEX));
|
//DPRINTLN(DBG_INFO, F("procPyld: txid: 0x") + String(mPayload[iv->id].txId, HEX));
|
||||||
//DPRINTLN(DBG_DEBUG, F("procPyld: max: ") + String(mPayload[iv->id].maxPackId));
|
//DPRINTLN(DBG_DEBUG, F("procPyld: max: ") + String(mPayload[iv->id].maxPackId));
|
||||||
DPRINT_INIT(DBG_INFO,TXT_PPYDCMD);
|
DPRINTHEAD(DBG_INFO, iv->id);
|
||||||
|
DBGPRINT_TXT(TXT_PPYDCMD);
|
||||||
DBGHEXLN(mPayload[iv->id].txCmd);
|
DBGHEXLN(mPayload[iv->id].txCmd);
|
||||||
DBGPRINT_TXT(TXT_PPYDTXI);
|
DBGPRINT_TXT(TXT_PPYDTXI);
|
||||||
DBGHEXLN(mPayload[iv->id].txId);
|
DBGHEXLN(mPayload[iv->id].txId);
|
||||||
|
@ -718,7 +725,8 @@ const byteAssign_t InfoAssignment[] = {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool build(uint8_t id, bool *complete) {
|
bool build(uint8_t id, bool *complete) {
|
||||||
DPRINTLN_TXT(DBG_VERBOSE, TXT_BUILD);
|
DPRINTLN(DBG_VERBOSE, F("build"));
|
||||||
|
//DPRINTLN_TXT(DBG_VERBOSE, TXT_BUILD);
|
||||||
/*uint16_t crc = 0xffff, crcRcv = 0x0000;
|
/*uint16_t crc = 0xffff, crcRcv = 0x0000;
|
||||||
if (mPayload[id].maxPackId > MAX_PAYLOAD_ENTRIES)
|
if (mPayload[id].maxPackId > MAX_PAYLOAD_ENTRIES)
|
||||||
mPayload[id].maxPackId = MAX_PAYLOAD_ENTRIES;
|
mPayload[id].maxPackId = MAX_PAYLOAD_ENTRIES;
|
||||||
|
|
|
@ -182,7 +182,6 @@
|
||||||
#define TXT_REQRETR 7
|
#define TXT_REQRETR 7
|
||||||
#define TXT_PPYDMAX 10
|
#define TXT_PPYDMAX 10
|
||||||
#define TXT_NOPYLD 1
|
#define TXT_NOPYLD 1
|
||||||
|
|
||||||
#define TXT_GDEVINF 3
|
#define TXT_GDEVINF 3
|
||||||
#define TXT_DEVCTRL 4
|
#define TXT_DEVCTRL 4
|
||||||
#define TXT_INCRALM 5
|
#define TXT_INCRALM 5
|
||||||
|
@ -194,7 +193,6 @@
|
||||||
DPRINTLN(DBG_DEBUG, F("Response from info request received"));
|
DPRINTLN(DBG_DEBUG, F("Response from info request received"));
|
||||||
|
|
||||||
DBGPRINTLN(F("Response from devcontrol request received"));
|
DBGPRINTLN(F("Response from devcontrol request received"));
|
||||||
DPRINT(DBG_DEBUG, F("fragment number zero received"));
|
|
||||||
DBGPRINT(F("has accepted power limit set point "));
|
DBGPRINT(F("has accepted power limit set point "));
|
||||||
DBGPRINT(F(" with PowerLimitControl "));
|
DBGPRINT(F(" with PowerLimitControl "));
|
||||||
DPRINT(DBG_INFO, F("Payload (") + String(payloadLen) + "): ");
|
DPRINT(DBG_INFO, F("Payload (") + String(payloadLen) + "): ");
|
||||||
|
@ -228,22 +226,30 @@ DBGPRINTLN(F("Response from devcontrol request received"));
|
||||||
#define TXT_NOPYLD2 3
|
#define TXT_NOPYLD2 3
|
||||||
#define TXT_CRCERR 4
|
#define TXT_CRCERR 4
|
||||||
#define TXT_RSTPYLD 5
|
#define TXT_RSTPYLD 5
|
||||||
#define TXT_NULLREC 7
|
#define TXT_RXDIREQ 6
|
||||||
#define TXT_PREVSND 8
|
#define TXT_CLRQUE 7
|
||||||
#define TXT_RESPLIM 9
|
#define TXT_RXCTRREQ 8
|
||||||
|
#define TXT_NULLREC 9
|
||||||
//resetPayload
|
#define TXT_PREVSND 10
|
||||||
|
#define TXT_RESPLIM 11
|
||||||
|
#define TXT_FRAGM0 20
|
||||||
|
#define TXT_NO2NDG 100
|
||||||
|
|
||||||
#define DBGPRINTLN_TXT(text) ({\
|
#define DBGPRINTLN_TXT(text) ({\
|
||||||
switch(text) {\
|
switch(text) {\
|
||||||
case TXT_TIMEOUT: DBGPRINTLN(F("enqueued cmd failed/timeout")); break; \
|
case TXT_TIMEOUT: DBGPRINTLN(F("enqueued cmd failed/timeout")); break; \
|
||||||
case TXT_BUILD: DBGPRINTLN(F("build")); break; \
|
case TXT_BUILD: DBGPRINTLN(F("build")); break; \
|
||||||
case TXT_NOPYLD2: DBGPRINTLN(F("nothing received")); break; \
|
case TXT_NOPYLD2: DBGPRINTLN(F("nothing received")); break; \
|
||||||
case TXT_RSTPYLD: DBGPRINTLN(F("resetPayload"));break; \
|
|
||||||
case TXT_CRCERR: DBGPRINTLN(F("CRC Error: Request Complete Retransmit")); break; \
|
case TXT_CRCERR: DBGPRINTLN(F("CRC Error: Request Complete Retransmit")); break; \
|
||||||
|
case TXT_RSTPYLD: DBGPRINTLN(F("resetPayload"));break; \
|
||||||
|
case TXT_RXDIREQ: DBGPRINTLN(F("Response from info request received")); break; \
|
||||||
|
case TXT_CLRQUE: DBGPRINTLN(F("clearCmdQueue")); break; \
|
||||||
|
case TXT_RXCTRREQ: DBGPRINTLN(F("Response from devcontrol request received")); break; \
|
||||||
case TXT_NULLREC: DBGPRINTLN(F("record is NULL!")); break; \
|
case TXT_NULLREC: DBGPRINTLN(F("record is NULL!")); break; \
|
||||||
case TXT_PREVSND: DBGPRINTLN(F("Prevent retransmit on Restart / CleanState_LockAndAlarm...")); break; \
|
case TXT_PREVSND: DBGPRINTLN(F("Prevent retransmit on Restart / CleanState_LockAndAlarm...")); break; \
|
||||||
case TXT_RESPLIM: DBGPRINTLN(F("retransmit power limit")); break; \
|
case TXT_RESPLIM: DBGPRINTLN(F("retransmit power limit")); break; \
|
||||||
|
case TXT_FRAGM0: DBGPRINTLN(F("fragment number zero received")); break; \
|
||||||
|
case TXT_NO2NDG: DBGPRINTLN(F("seems to use 3rd gen. protocol - switching ivGen!")); break; \
|
||||||
default: ; break; \
|
default: ; break; \
|
||||||
}\
|
}\
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue