[Pager] Minor fixes
This commit is contained in:
parent
268e2d704f
commit
cf561733d2
2 changed files with 26 additions and 19 deletions
|
@ -248,22 +248,24 @@ int16_t PagerClient::startReceive(uint32_t pin, uint32_t addr, uint32_t mask) {
|
||||||
readBitPin = pin;
|
readBitPin = pin;
|
||||||
filterAddr = addr;
|
filterAddr = addr;
|
||||||
filterMask = mask;
|
filterMask = mask;
|
||||||
|
filterAddresses = NULL;
|
||||||
return startReceiveCommon();
|
filterMasks = NULL;
|
||||||
|
filterNumAddresses = 0;
|
||||||
|
return(startReceiveCommon());
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t PagerClient::startReceive(uint32_t pin, uint32_t *addrs, uint32_t *masks, size_t numAddresses) {
|
int16_t PagerClient::startReceive(uint32_t pin, uint32_t *addrs, uint32_t *masks, size_t numAddresses) {
|
||||||
// save the variables
|
// save the variables
|
||||||
readBitPin = pin;
|
readBitPin = pin;
|
||||||
|
filterAddr = 0;
|
||||||
|
filterMask = 0;
|
||||||
filterAddresses = addrs;
|
filterAddresses = addrs;
|
||||||
filterMasks = masks;
|
filterMasks = masks;
|
||||||
filterNumAddresses = numAddresses;
|
filterNumAddresses = numAddresses;
|
||||||
|
return(startReceiveCommon());
|
||||||
return startReceiveCommon();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t PagerClient::startReceiveCommon() {
|
int16_t PagerClient::startReceiveCommon() {
|
||||||
// set the carrier frequency
|
// set the carrier frequency
|
||||||
int16_t state = phyLayer->setFrequency(baseFreq);
|
int16_t state = phyLayer->setFrequency(baseFreq);
|
||||||
RADIOLIB_ASSERT(state);
|
RADIOLIB_ASSERT(state);
|
||||||
|
@ -478,19 +480,23 @@ int16_t PagerClient::readData(uint8_t* data, size_t* len, uint32_t* addr) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool PagerClient::addressMatched(uint32_t addr) {
|
bool PagerClient::addressMatched(uint32_t addr) {
|
||||||
|
// check whether to match single or multiple addresses/masks
|
||||||
if(filterNumAddresses == 0) {
|
if(filterNumAddresses == 0) {
|
||||||
return((addr & filterMask) == (filterAddr & filterMask));
|
return((addr & filterMask) == (filterAddr & filterMask));
|
||||||
} else {
|
|
||||||
if (filterAddresses == NULL || filterMasks == NULL) {
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// multiple addresses, check there are some to match
|
||||||
|
if((filterAddresses == NULL) || (filterMasks == NULL)) {
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
|
|
||||||
for(size_t i = 0; i < filterNumAddresses; i++) {
|
for(size_t i = 0; i < filterNumAddresses; i++) {
|
||||||
if((filterAddresses[i] & filterMasks[i]) == (addr & filterMasks[i])) {
|
if((filterAddresses[i] & filterMasks[i]) == (addr & filterMasks[i])) {
|
||||||
return true;
|
return(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PagerClient::write(uint32_t* data, size_t len) {
|
void PagerClient::write(uint32_t* data, size_t len) {
|
||||||
|
|
|
@ -135,6 +135,7 @@ class PagerClient {
|
||||||
\param pin Pin to receive digital data on (e.g., DIO2 for SX127x).
|
\param pin Pin to receive digital data on (e.g., DIO2 for SX127x).
|
||||||
\param addrs Array of addresses to receive.
|
\param addrs Array of addresses to receive.
|
||||||
\param masks Array of address masks to use for filtering. Masks will be applied to corresponding addresses in addr array.
|
\param masks Array of address masks to use for filtering. Masks will be applied to corresponding addresses in addr array.
|
||||||
|
\param numAddress Number of addresses/masks to match.
|
||||||
\returns \ref status_codes
|
\returns \ref status_codes
|
||||||
*/
|
*/
|
||||||
int16_t startReceive(uint32_t pin, uint32_t *addrs, uint32_t *masks, size_t numAddress);
|
int16_t startReceive(uint32_t pin, uint32_t *addrs, uint32_t *masks, size_t numAddress);
|
||||||
|
@ -191,7 +192,7 @@ class PagerClient {
|
||||||
|
|
||||||
void write(uint32_t* data, size_t len);
|
void write(uint32_t* data, size_t len);
|
||||||
void write(uint32_t codeWord);
|
void write(uint32_t codeWord);
|
||||||
uint16_t startReceiveCommon();
|
int16_t startReceiveCommon();
|
||||||
bool addressMatched(uint32_t addr);
|
bool addressMatched(uint32_t addr);
|
||||||
|
|
||||||
#if !RADIOLIB_EXCLUDE_DIRECT_RECEIVE
|
#if !RADIOLIB_EXCLUDE_DIRECT_RECEIVE
|
||||||
|
|
Loading…
Add table
Reference in a new issue