Browse Source

zuverlaessige Alarmabfrage

pull/1080/head
no name 2 years ago
parent
commit
d14e0ef01f
  1. 16
      src/hm/hmInverter.h

16
src/hm/hmInverter.h

@ -149,6 +149,7 @@ class Inverter {
uint16_t alarmCode; // last Alarm uint16_t alarmCode; // last Alarm
uint32_t alarmStart; uint32_t alarmStart;
uint32_t alarmEnd; uint32_t alarmEnd;
uint8_t alarmDataReqPending; // alarmData request issued and wait for answer
int8_t mTxChanQuality[RF_CHANNELS]; // qualities of send channels int8_t mTxChanQuality[RF_CHANNELS]; // qualities of send channels
uint8_t mBestTxChanIndex; // current send chan index uint8_t mBestTxChanIndex; // current send chan index
uint8_t mLastBestTxChanIndex; // last send chan index uint8_t mLastBestTxChanIndex; // last send chan index
@ -204,10 +205,12 @@ class Inverter {
uint8_t getQueuedCmd() { uint8_t getQueuedCmd() {
if (_commandQueue.empty()) { if (_commandQueue.empty()) {
if (ivGen != IV_MI) { if (ivGen != IV_MI) {
if (getFwVersion()) { if (!getFwVersion()) {
enqueCommand<InfoCommand>(RealTimeRunData_Debug); // live data
} else {
enqueCommand<InfoCommand>(InverterDevInform_All); // firmware version enqueCommand<InfoCommand>(InverterDevInform_All); // firmware version
} else if (alarmDataReqPending) {
enqueCommand<InfoCommand>(AlarmData); // alarm not answered
} else {
enqueCommand<InfoCommand>(RealTimeRunData_Debug); // live data
} }
} else if (ivGen == IV_MI){ } else if (ivGen == IV_MI){
if (getFwVersion() == 0) if (getFwVersion() == 0)
@ -330,6 +333,9 @@ class Inverter {
DPRINT(DBG_INFO, "alarm ID incremented to "); DPRINT(DBG_INFO, "alarm ID incremented to ");
DBGPRINTLN(String(alarmMesIndex)); DBGPRINTLN(String(alarmMesIndex));
if (alarmDataReqPending < UINT8_MAX) {
alarmDataReqPending++;
}
enqueCommand<InfoCommand>(AlarmData); enqueCommand<InfoCommand>(AlarmData);
} }
} }
@ -526,6 +532,10 @@ class Inverter {
uint16_t parseAlarmLog(uint8_t id, uint8_t pyld[], uint8_t len, uint32_t *start, uint32_t *endTime) { uint16_t parseAlarmLog(uint8_t id, uint8_t pyld[], uint8_t len, uint32_t *start, uint32_t *endTime) {
uint8_t startOff = 2 + id * ALARM_LOG_ENTRY_SIZE; uint8_t startOff = 2 + id * ALARM_LOG_ENTRY_SIZE;
if (alarmDataReqPending) {
alarmDataReqPending--;
}
if((startOff + ALARM_LOG_ENTRY_SIZE) > len) if((startOff + ALARM_LOG_ENTRY_SIZE) > len)
return 0; return 0;

Loading…
Cancel
Save