From f809f17dc8207044bfe1dcd8c4648980cd6ffb63 Mon Sep 17 00:00:00 2001 From: jgromes Date: Mon, 13 Mar 2023 22:02:07 +0100 Subject: [PATCH] [Pager] Added missing exclude direct receive guards (#697) --- src/protocols/Pager/Pager.cpp | 8 ++++++++ src/protocols/Pager/Pager.h | 7 ++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/protocols/Pager/Pager.cpp b/src/protocols/Pager/Pager.cpp index cc7591d8..32f401f6 100644 --- a/src/protocols/Pager/Pager.cpp +++ b/src/protocols/Pager/Pager.cpp @@ -1,6 +1,7 @@ #include "Pager.h" #if !defined(RADIOLIB_EXCLUDE_PAGER) +#if !defined(RADIOLIB_EXCLUDE_DIRECT_RECEIVE) // this is a massive hack, but we need a global-scope ISR to manage the bit reading // let's hope nobody ever tries running two POCSAG receivers at the same time static PhysicalLayer* _readBitInstance = NULL; @@ -14,10 +15,13 @@ static void PagerClientReadBit(void) { _readBitInstance->readBit(_readBitPin); } } +#endif PagerClient::PagerClient(PhysicalLayer* phy) { _phy = phy; + #if !defined(RADIOLIB_EXCLUDE_DIRECT_RECEIVE) _readBitInstance = _phy; + #endif } int16_t PagerClient::begin(float base, uint16_t speed, bool invert, uint16_t shift) { @@ -214,6 +218,7 @@ int16_t PagerClient::transmit(uint8_t* data, size_t len, uint32_t addr, uint8_t return(RADIOLIB_ERR_NONE); } +#if !defined(RADIOLIB_EXCLUDE_DIRECT_RECEIVE) int16_t PagerClient::startReceive(RADIOLIB_PIN_TYPE pin, uint32_t addr, uint32_t mask) { // save the variables _readBitPin = pin; @@ -430,6 +435,7 @@ int16_t PagerClient::readData(uint8_t* data, size_t* len, uint32_t* addr) { *len = decodedBytes; return(RADIOLIB_ERR_NONE); } +#endif void PagerClient::write(uint32_t* data, size_t len) { // write code words from buffer @@ -471,6 +477,7 @@ void PagerClient::write(uint32_t codeWord) { } } +#if !defined(RADIOLIB_EXCLUDE_DIRECT_RECEIVE) uint32_t PagerClient::read() { uint32_t codeWord = 0; codeWord |= (uint32_t)_phy->read() << 24; @@ -491,6 +498,7 @@ uint32_t PagerClient::read() { // TODO BCH error correction here return(codeWord); } +#endif uint8_t PagerClient::encodeBCD(char c) { switch(c) { diff --git a/src/protocols/Pager/Pager.h b/src/protocols/Pager/Pager.h index eb828fbb..844150bc 100644 --- a/src/protocols/Pager/Pager.h +++ b/src/protocols/Pager/Pager.h @@ -142,6 +142,8 @@ class PagerClient { */ int16_t transmit(uint8_t* data, size_t len, uint32_t addr, uint8_t encoding = RADIOLIB_PAGER_BCD); + +#if !defined(RADIOLIB_EXCLUDE_DIRECT_RECEIVE) /*! \brief Start reception of POCSAG packets. @@ -190,6 +192,7 @@ class PagerClient { \returns \ref status_codes */ int16_t readData(uint8_t* data, size_t* len, uint32_t* addr = NULL); +#endif #if !defined(RADIOLIB_GODMODE) private: @@ -202,7 +205,6 @@ class PagerClient { uint16_t _shift; uint16_t _shiftHz; uint16_t _bitDuration; - uint32_t _readBatchPos; uint32_t _filterAddr; uint32_t _filterMask; bool inv = false; @@ -214,7 +216,10 @@ class PagerClient { void write(uint32_t* data, size_t len); void write(uint32_t codeWord); + +#if !defined(RADIOLIB_EXCLUDE_DIRECT_RECEIVE) uint32_t read(); +#endif uint8_t encodeBCD(char c); char decodeBCD(uint8_t b);