From 7afd0b80feb1c87ac9ac57331e05bc543f9bae9c Mon Sep 17 00:00:00 2001
From: lumapu <lp@lufami.de>
Date: Sun, 26 Mar 2023 15:11:45 +0200
Subject: [PATCH] improve communication

---
 src/hms/hmsRadio.h | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/src/hms/hmsRadio.h b/src/hms/hmsRadio.h
index db73dd9f..8c6bf8af 100644
--- a/src/hms/hmsRadio.h
+++ b/src/hms/hmsRadio.h
@@ -41,19 +41,22 @@ class CmtRadio {
         bool loop() {
             mCmt.loop();
 
-            if(0x00 != mIrqRcvd)
+            if((!mIrqRcvd) && (!mRqstGetRx))
                 return false;
-            mIrqRcvd--;
             getRx();
-            mCmt.goRx();
-            return true;
+            if(CMT_SUCCESS == mCmt.goRx()) {
+                mIrqRcvd   = false;
+                mRqstGetRx = false;
+                return true;
+            } else
+                return false;
         }
 
         void tickSecond() {
         }
 
         void handleIntr(void) {
-            mIrqRcvd++;
+            mIrqRcvd = true;
         }
 
         void enableDebug() {
@@ -130,7 +133,8 @@ class CmtRadio {
             mSendCnt        = 0;
             mRetransmits    = 0;
             mSerialDebug    = false;
-            mIrqRcvd        = 0;
+            mIrqRcvd        = false;
+            mRqstGetRx      = false;
         }
 
         inline void sendSwitchChCmd(const uint64_t *ivId, uint8_t ch) {
@@ -149,6 +153,7 @@ class CmtRadio {
             mTxBuf[12] = ch;
             mTxBuf[13] = 0x14;
             sendPacket(14, false);
+            mRqstGetRx = true;
         }
 
         void initPacket(const uint64_t *ivId, uint8_t mid, uint8_t pid) {
@@ -183,7 +188,8 @@ class CmtRadio {
         uint32_t mDtuSn;
         uint8_t mTxBuf[27];
         bool mSerialDebug;
-        volatile uint8_t mIrqRcvd;
+        bool mIrqRcvd;
+        bool mRqstGetRx;
 };
 
 #endif /*__HMS_RADIO_H__*/