From b3ed84a0359e03128d5930e528114bcd0fdaaf36 Mon Sep 17 00:00:00 2001 From: Crsarmv7l <85343771+Crsarmv7l@users.noreply.github.com> Date: Tue, 26 Mar 2024 02:24:02 -0400 Subject: [PATCH] [CC1101] PQT = 0 in setPromiscuous (#1033) * PQT = 0 in setPromiscuous * Carriersense in promiscuous * carriersense to promiscuous * Fix explanation --- src/modules/CC1101/CC1101.cpp | 9 +++++++-- src/modules/CC1101/CC1101.h | 3 ++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/modules/CC1101/CC1101.cpp b/src/modules/CC1101/CC1101.cpp index 447e0420e..64ef8ab3c 100644 --- a/src/modules/CC1101/CC1101.cpp +++ b/src/modules/CC1101/CC1101.cpp @@ -826,7 +826,7 @@ int16_t CC1101::setCrcFiltering(bool enable) { } } -int16_t CC1101::setPromiscuousMode(bool enable) { +int16_t CC1101::setPromiscuousMode(bool enable, bool requireCarrierSense) { int16_t state = RADIOLIB_ERR_NONE; if(this->promiscuous == enable) { @@ -834,9 +834,14 @@ int16_t CC1101::setPromiscuousMode(bool enable) { } if(enable) { + // Lets set PQT to 0 with Promiscuous too + // We have to set the length to set PQT, but it should get disabled with disableSyncWordFiltering() + state = setPreambleLength(16, 0); + RADIOLIB_ASSERT(state); // disable sync word filtering and insertion // this also disables preamble - state = disableSyncWordFiltering(); + // Can enable Sync Mode with carriersense when promiscuous is enabled. Default is false: Sync Mode None + state = disableSyncWordFiltering(requireCarrierSense); RADIOLIB_ASSERT(state); // disable CRC filtering diff --git a/src/modules/CC1101/CC1101.h b/src/modules/CC1101/CC1101.h index 9d2254a4c..a0c2d7893 100644 --- a/src/modules/CC1101/CC1101.h +++ b/src/modules/CC1101/CC1101.h @@ -874,9 +874,10 @@ class CC1101: public PhysicalLayer { /*! \brief Set modem in "sniff" mode: no packet filtering (e.g., no preamble, sync word, address, CRC). \param enable Set or unset promiscuous mode. + \param defaults to false: no carriersense, true: sets carriersense above threshold \returns \ref status_codes */ - int16_t setPromiscuousMode(bool enable = true); + int16_t setPromiscuousMode(bool enable = true, bool requireCarrierSense = false); /*! \brief Get whether the modem is in promiscuous mode: no packet filtering