From 3105cd43808c824ba6f7481d9d30bf3eb87447e0 Mon Sep 17 00:00:00 2001 From: rejoe2 Date: Fri, 25 Aug 2023 08:45:43 +0200 Subject: [PATCH] HW info triggers next request immediate request prod. data if HW info was received --- src/hm/hmInverter.h | 3 +++ src/hm/hmPayload.h | 3 +++ src/hm/miPayload.h | 7 +++++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/hm/hmInverter.h b/src/hm/hmInverter.h index d00e9e5d..8ce964e9 100644 --- a/src/hm/hmInverter.h +++ b/src/hm/hmInverter.h @@ -339,6 +339,9 @@ class Inverter { DPRINT(DBG_INFO, "alarm ID incremented to "); DBGPRINTLN(String(alarmMesIndex)); enqueCommand(AlarmData); +// ivSendHighPrio(id); +// if(mHighPrioIv == NULL) // process the request immediately if possible +// mHighPrioIv = iv; } } } diff --git a/src/hm/hmPayload.h b/src/hm/hmPayload.h index 441981cf..3d8692e4 100644 --- a/src/hm/hmPayload.h +++ b/src/hm/hmPayload.h @@ -338,6 +338,9 @@ class HmPayload { yield(); } } + if( (InverterDevInform_All == mPayload[iv->id].txCmd) && (mHighPrioIv == NULL) ) // process next request immediately if possible + mHighPrioIv = iv; + } else { DPRINT(DBG_ERROR, F("plausibility check failed, expected ")); DBGPRINT(String(rec->pyldLen)); diff --git a/src/hm/miPayload.h b/src/hm/miPayload.h index c96e9896..ecef1330 100644 --- a/src/hm/miPayload.h +++ b/src/hm/miPayload.h @@ -193,6 +193,8 @@ class MiPayload { record_t<> *rec = iv->getRecordStruct(InverterDevInform_All); // choose the record structure rec->ts = mPayload[iv->id].ts; mPayload[iv->id].gotFragment = true; + if(mHighPrioIv == NULL) // process next request immediately if possible + mHighPrioIv = iv; /* Polling the device software and hardware version number command @@ -244,7 +246,7 @@ const byteAssign_t InfoAssignment[] = { record_t<> *rec = iv->getRecordStruct(InverterDevInform_Simple); // choose the record structure rec->ts = mPayload[iv->id].ts; iv->setValue(1, rec, (uint32_t) ((p->packet[24] << 8) + p->packet[25])/1); - notify(InverterDevInform_All, iv); + //notify(InverterDevInform_All, iv); //28737 } else if ( p->packet[9] == 0x01 || p->packet[9] == 0x10 ) {//second frame for MI, 3rd gen. answers in 0x10 DPRINT_IVID(DBG_INFO, iv->id); @@ -278,7 +280,8 @@ const byteAssign_t InfoAssignment[] = { DPRINT(DBG_INFO,F("Matching_APPFW_PN ")); DBGPRINTLN(String((uint32_t) (((p->packet[22] << 8) | p->packet[23]) << 8 | p->packet[24]) << 8 | p->packet[25])); } - notify(InverterDevInform_Simple, iv); + //notify(InverterDevInform_Simple, iv); + notify(InverterDevInform_All, iv); } else { DBGPRINTLN(F("3rd gen. inverter!")); // see table in OpenDTU code, DevInfoParser.cpp devInfo[] }