From 1e81a3e9634c3c51257d7f6872ed446ad776f340 Mon Sep 17 00:00:00 2001 From: rejoe2 Date: Tue, 4 Apr 2023 15:27:03 +0200 Subject: [PATCH] faster request after power limit and more yield() calls in while() loops (thx to beegee3) --- src/hm/hmPayload.h | 2 ++ src/hm/hmRadio.h | 34 ++++++++++++++++++++++------------ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/hm/hmPayload.h b/src/hm/hmPayload.h index de99d41b..e08dd909 100644 --- a/src/hm/hmPayload.h +++ b/src/hm/hmPayload.h @@ -210,6 +210,8 @@ class HmPayload { iv->clearCmdQueue(); iv->enqueCommand(SystemConfigPara); // read back power limit + if(mHighPrioIv == NULL) // do it immediately if possible + mHighPrioIv = iv; } iv->devControlCmd = Init; } diff --git a/src/hm/hmRadio.h b/src/hm/hmRadio.h index 98fbb299..b848d377 100644 --- a/src/hm/hmRadio.h +++ b/src/hm/hmRadio.h @@ -52,12 +52,15 @@ template = RF_CHANNELS) mRxChIdx = 0; mNrf24.setChannel(mRfChLst[mRxChIdx]); - //yield(); + yield(); } - yield(); // not finished but time is over return true; } @@ -206,6 +208,7 @@ class HmRadio { } else { //MI 2nd gen. specific switch (cmd) { case TurnOn: + //mTxBuf[0] = 0x50; mTxBuf[9] = 0x55; mTxBuf[10] = 0xaa; break; @@ -228,8 +231,10 @@ class HmRadio { } void prepareDevInformCmd(uint64_t invId, uint8_t cmd, uint32_t ts, uint16_t alarmMesId, bool isRetransmit, uint8_t reqfld=TX_REQ_INFO) { // might not be necessary to add additional arg. - DPRINT(DBG_DEBUG, F("prepareDevInformCmd 0x")); - DPRINTLN(DBG_DEBUG, String(cmd, HEX)); + if(mSerialDebug) { + DPRINT(DBG_DEBUG, F("prepareDevInformCmd 0x")); + DPRINTLN(DBG_DEBUG,String(cmd, HEX)); + } initPacket(invId, reqfld, ALL_FRAMES); mTxBuf[10] = cmd; // cid mTxBuf[11] = 0x00; @@ -302,7 +307,12 @@ class HmRadio { } void initPacket(uint64_t invId, uint8_t mid, uint8_t pid) { - DPRINTLN(DBG_VERBOSE, F("initPacket, mid: ") + String(mid, HEX) + F(" pid: ") + String(pid, HEX)); + if(mSerialDebug) { + DPRINT(DBG_VERBOSE, F("initPacket, mid: ")); + DPRINT(DBG_VERBOSE, String(mid, HEX)); + DPRINT(DBG_VERBOSE,F(" pid: ")); + DPRINTLN(DBG_VERBOSE,String(pid, HEX)); + } memset(mTxBuf, 0, MAX_RF_PAYLOAD_SIZE); mTxBuf[0] = mid; // message id CP_U32_BigEndian(&mTxBuf[1], (invId >> 8));