Browse Source

improved changes from PR #1234

pull/1239/head
lumapu 11 months ago
parent
commit
b57e463b92
  1. 2
      src/defines.h
  2. 10
      src/hm/Communication.h
  3. 4
      src/hm/hmRadio.h

2
src/defines.h

@ -13,7 +13,7 @@
//------------------------------------- //-------------------------------------
#define VERSION_MAJOR 0 #define VERSION_MAJOR 0
#define VERSION_MINOR 8 #define VERSION_MINOR 8
#define VERSION_PATCH 8 #define VERSION_PATCH 9
//------------------------------------- //-------------------------------------
typedef struct { typedef struct {

10
src/hm/Communication.h

@ -44,8 +44,8 @@ class Communication : public CommQueue<> {
if(!valid) if(!valid)
return; // empty return; // empty
uint16_t timeout = q->iv->ivGen != IV_MI ? (q->iv->mGotFragment && q->iv->mGotLastMsg) ? SINGLEFR_TIMEOUT : DEFAULT_TIMEOUT : MI_TIMEOUT; uint16_t timeout = q->iv->ivGen != IV_MI ? ((q->iv->mGotFragment && q->iv->mGotLastMsg) ? SINGLEFR_TIMEOUT : DEFAULT_TIMEOUT) : MI_TIMEOUT;
uint16_t timeout_min = q->iv->ivGen != IV_MI ? q->iv->mGotFragment ? SINGLEFR_TIMEOUT : FRSTMSG_TIMEOUT : MI_TIMEOUT; uint16_t timeout_min = q->iv->ivGen != IV_MI ? ((q->iv->mGotFragment) ? SINGLEFR_TIMEOUT : FRSTMSG_TIMEOUT) : MI_TIMEOUT;
bool testMode = false; bool testMode = false;
switch(mState) { switch(mState) {
@ -63,7 +63,7 @@ class Communication : public CommQueue<> {
testMode = mHeu.getTestModeEnabled(); testMode = mHeu.getTestModeEnabled();
q->iv->mGotFragment = false; q->iv->mGotFragment = false;
q->iv->mGotLastMsg = false; q->iv->mGotLastMsg = false;
mFirstTry = mFirstTry ? false : ( ( (IV_HM == q->iv->ivGen) || (IV_MI == q->iv->ivGen) ) && (q->iv->isAvailable()) || (millis() < 120000) ); mFirstTry = mFirstTry ? false : (((IV_HM == q->iv->ivGen) || (IV_MI == q->iv->ivGen) ) && (q->iv->isAvailable()) || (millis() < 120000));
if(NULL == q->iv->radio) if(NULL == q->iv->radio)
cmdDone(true); // can't communicate while radio is not defined! cmdDone(true); // can't communicate while radio is not defined!
mState = States::START; mState = States::START;
@ -97,8 +97,8 @@ class Communication : public CommQueue<> {
if(millis() > mWaitTimeout_min) { if(millis() > mWaitTimeout_min) {
if(!q->iv->mGotFragment) { // nothing received yet? if(!q->iv->mGotFragment) { // nothing received yet?
if(q->iv->mGotLastMsg) { if(q->iv->mGotLastMsg) {
//mState = States::CHECK_FRAMES; //mState = States::CHECK_FRAMES;
mWaitTimeout = mWaitTimeout_min; mWaitTimeout = mWaitTimeout_min;
} }
} else if(mFirstTry) { } else if(mFirstTry) {
DPRINT_IVID(DBG_INFO, q->iv->id); DPRINT_IVID(DBG_INFO, q->iv->id);

4
src/hm/hmRadio.h

@ -309,10 +309,8 @@ class HmRadio : public Radio {
} }
inline bool checkIvSerial(uint8_t buf[], Inverter<> *iv) { inline bool checkIvSerial(uint8_t buf[], Inverter<> *iv) {
uint8_t tmp[4];
CP_U32_BigEndian(tmp, iv->radioId.u64 >> 8);
for(uint8_t i = 0; i < 4; i++) { for(uint8_t i = 0; i < 4; i++) {
if(tmp[i] != buf[i]) if(buf[3-i] != iv->radioId.b[i])
return false; return false;
} }
return true; return true;

Loading…
Cancel
Save