From a229912789a111bc4132a2843750112b957b0890 Mon Sep 17 00:00:00 2001 From: jgromes Date: Sun, 14 Nov 2021 11:43:17 +0100 Subject: [PATCH] [nRF24] Update to 5.0.0 --- .../nRF24/nRF24_Receive/nRF24_Receive.ino | 8 +- .../nRF24_Receive_Interrupt.ino | 8 +- .../nRF24/nRF24_Transmit/nRF24_Transmit.ino | 12 +- .../nRF24_Transmit_Interrupt.ino | 8 +- src/modules/nRF24/nRF24.cpp | 266 ++++++++--------- src/modules/nRF24/nRF24.h | 268 +++++++++--------- 6 files changed, 286 insertions(+), 284 deletions(-) diff --git a/examples/nRF24/nRF24_Receive/nRF24_Receive.ino b/examples/nRF24/nRF24_Receive/nRF24_Receive.ino index 2c036fd6..47131411 100644 --- a/examples/nRF24/nRF24_Receive/nRF24_Receive.ino +++ b/examples/nRF24/nRF24_Receive/nRF24_Receive.ino @@ -35,7 +35,7 @@ void setup() { // initialize nRF24 with default settings Serial.print(F("[nRF24] Initializing ... ")); int state = radio.begin(); - if(state == ERR_NONE) { + if(state == RADIOLIB_ERR_NONE) { Serial.println(F("success!")); } else { Serial.print(F("failed, code ")); @@ -50,7 +50,7 @@ void setup() { Serial.print(F("[nRF24] Setting address for receive pipe 0 ... ")); byte addr[] = {0x01, 0x23, 0x45, 0x67, 0x89}; state = radio.setReceivePipe(0, addr); - if(state == ERR_NONE) { + if(state == RADIOLIB_ERR_NONE) { Serial.println(F("success!")); } else { Serial.print(F("failed, code ")); @@ -75,7 +75,7 @@ void loop() { int state = radio.receive(byteArr, 8); */ - if (state == ERR_NONE) { + if (state == RADIOLIB_ERR_NONE) { // packet was successfully received Serial.println(F("success!")); @@ -83,7 +83,7 @@ void loop() { Serial.print(F("[nRF24] Data:\t\t")); Serial.println(str); - } else if (state == ERR_RX_TIMEOUT) { + } else if (state == RADIOLIB_ERR_RX_TIMEOUT) { // timeout occurred while waiting for a packet Serial.println(F("timeout!")); diff --git a/examples/nRF24/nRF24_Receive_Interrupt/nRF24_Receive_Interrupt.ino b/examples/nRF24/nRF24_Receive_Interrupt/nRF24_Receive_Interrupt.ino index 6d964bd1..cafa2964 100644 --- a/examples/nRF24/nRF24_Receive_Interrupt/nRF24_Receive_Interrupt.ino +++ b/examples/nRF24/nRF24_Receive_Interrupt/nRF24_Receive_Interrupt.ino @@ -36,7 +36,7 @@ void setup() { // initialize nRF24 with default settings Serial.print(F("[nRF24] Initializing ... ")); int state = radio.begin(); - if(state == ERR_NONE) { + if(state == RADIOLIB_ERR_NONE) { Serial.println(F("success!")); } else { Serial.print(F("failed, code ")); @@ -51,7 +51,7 @@ void setup() { Serial.print(F("[nRF24] Setting address for receive pipe 0 ... ")); byte addr[] = {0x01, 0x23, 0x45, 0x67, 0x89}; state = radio.setReceivePipe(0, addr); - if(state == ERR_NONE) { + if(state == RADIOLIB_ERR_NONE) { Serial.println(F("success!")); } else { Serial.print(F("failed, code ")); @@ -66,7 +66,7 @@ void setup() { // start listening Serial.print(F("[nRF24] Starting to listen ... ")); state = radio.startReceive(); - if (state == ERR_NONE) { + if (state == RADIOLIB_ERR_NONE) { Serial.println(F("success!")); } else { Serial.print(F("failed, code ")); @@ -124,7 +124,7 @@ void loop() { int state = radio.readData(byteArr, 8); */ - if (state == ERR_NONE) { + if (state == RADIOLIB_ERR_NONE) { // packet was successfully received Serial.println(F("[nRF24] Received packet!")); diff --git a/examples/nRF24/nRF24_Transmit/nRF24_Transmit.ino b/examples/nRF24/nRF24_Transmit/nRF24_Transmit.ino index c692e8a8..0b8c516c 100644 --- a/examples/nRF24/nRF24_Transmit/nRF24_Transmit.ino +++ b/examples/nRF24/nRF24_Transmit/nRF24_Transmit.ino @@ -35,7 +35,7 @@ void setup() { // initialize nRF24 with default settings Serial.print(F("[nRF24] Initializing ... ")); int state = radio.begin(); - if(state == ERR_NONE) { + if(state == RADIOLIB_ERR_NONE) { Serial.println(F("success!")); } else { Serial.print(F("failed, code ")); @@ -50,7 +50,7 @@ void setup() { byte addr[] = {0x01, 0x23, 0x45, 0x67, 0x89}; Serial.print(F("[nRF24] Setting transmit pipe ... ")); state = radio.setTransmitPipe(addr); - if(state == ERR_NONE) { + if(state == RADIOLIB_ERR_NONE) { Serial.println(F("success!")); } else { Serial.print(F("failed, code ")); @@ -66,20 +66,20 @@ void loop() { // 32 characters long int state = radio.transmit("Hello World!"); - if (state == ERR_NONE) { + if (state == RADIOLIB_ERR_NONE) { // the packet was successfully transmitted Serial.println(F("success!")); - } else if (state == ERR_PACKET_TOO_LONG) { + } else if (state == RADIOLIB_ERR_PACKET_TOO_LONG) { // the supplied packet was longer than 32 bytes Serial.println(F("too long!")); - } else if (state == ERR_ACK_NOT_RECEIVED) { + } else if (state == RADIOLIB_ERR_ACK_NOT_RECEIVED) { // acknowledge from destination module // was not received within 15 retries Serial.println(F("ACK not received!")); - } else if (state == ERR_TX_TIMEOUT) { + } else if (state == RADIOLIB_ERR_TX_TIMEOUT) { // timed out while transmitting Serial.println(F("timeout!")); diff --git a/examples/nRF24/nRF24_Transmit_Interrupt/nRF24_Transmit_Interrupt.ino b/examples/nRF24/nRF24_Transmit_Interrupt/nRF24_Transmit_Interrupt.ino index 81b064b3..9b6720c5 100644 --- a/examples/nRF24/nRF24_Transmit_Interrupt/nRF24_Transmit_Interrupt.ino +++ b/examples/nRF24/nRF24_Transmit_Interrupt/nRF24_Transmit_Interrupt.ino @@ -30,7 +30,7 @@ nRF24 radio = new Module(10, 2, 3); //nRF24 radio = RadioShield.ModuleA; // save transmission state between loops -int transmissionState = ERR_NONE; +int transmissionState = RADIOLIB_ERR_NONE; void setup() { Serial.begin(9600); @@ -38,7 +38,7 @@ void setup() { // initialize nRF24 with default settings Serial.print(F("[nRF24] Initializing ... ")); int state = radio.begin(); - if(state == ERR_NONE) { + if(state == RADIOLIB_ERR_NONE) { Serial.println(F("success!")); } else { Serial.print(F("failed, code ")); @@ -53,7 +53,7 @@ void setup() { byte addr[] = {0x01, 0x23, 0x45, 0x67, 0x89}; Serial.print(F("[nRF24] Setting transmit pipe ... ")); state = radio.setTransmitPipe(addr); - if(state == ERR_NONE) { + if(state == RADIOLIB_ERR_NONE) { Serial.println(F("success!")); } else { Serial.print(F("failed, code ")); @@ -110,7 +110,7 @@ void loop() { // reset flag transmittedFlag = false; - if (transmissionState == ERR_NONE) { + if (transmissionState == RADIOLIB_ERR_NONE) { // packet was successfully sent Serial.println(F("transmission finished!")); diff --git a/src/modules/nRF24/nRF24.cpp b/src/modules/nRF24/nRF24.cpp index 90f8b3e0..683d22f6 100644 --- a/src/modules/nRF24/nRF24.cpp +++ b/src/modules/nRF24/nRF24.cpp @@ -1,30 +1,34 @@ #include "nRF24.h" #if !defined(RADIOLIB_EXCLUDE_NRF24) -nRF24::nRF24(Module* mod) : PhysicalLayer(NRF24_FREQUENCY_STEP_SIZE, NRF24_MAX_PACKET_LENGTH) { +nRF24::nRF24(Module* mod) : PhysicalLayer(RADIOLIB_NRF24_FREQUENCY_STEP_SIZE, RADIOLIB_NRF24_MAX_PACKET_LENGTH) { _mod = mod; } +Module* nRF24::getMod() { + return(_mod); +} + int16_t nRF24::begin(int16_t freq, int16_t dataRate, int8_t power, uint8_t addrWidth) { // set module properties - _mod->SPIreadCommand = NRF24_CMD_READ; - _mod->SPIwriteCommand = NRF24_CMD_WRITE; - _mod->init(RADIOLIB_USE_SPI); - Module::pinMode(_mod->getIrq(), INPUT); + _mod->SPIreadCommand = RADIOLIB_NRF24_CMD_READ; + _mod->SPIwriteCommand = RADIOLIB_NRF24_CMD_WRITE; + _mod->init(); + _mod->pinMode(_mod->getIrq(), INPUT); // set pin mode on RST (connected to nRF24 CE pin) - Module::pinMode(_mod->getRst(), OUTPUT); - Module::digitalWrite(_mod->getRst(), LOW); + _mod->pinMode(_mod->getRst(), OUTPUT); + _mod->digitalWrite(_mod->getRst(), LOW); // wait for minimum power-on reset duration - Module::delay(100); + _mod->delay(100); // check SPI connection - int16_t val = _mod->SPIgetRegValue(NRF24_REG_SETUP_AW); + int16_t val = _mod->SPIgetRegValue(RADIOLIB_NRF24_REG_SETUP_AW); if(!((val >= 0) && (val <= 3))) { RADIOLIB_DEBUG_PRINTLN(F("No nRF24 found!")); - _mod->term(RADIOLIB_USE_SPI); - return(ERR_CHIP_NOT_FOUND); + _mod->term(); + return(RADIOLIB_ERR_CHIP_NOT_FOUND); } RADIOLIB_DEBUG_PRINTLN(F("M\tnRF24")); @@ -64,17 +68,17 @@ int16_t nRF24::begin(int16_t freq, int16_t dataRate, int8_t power, uint8_t addrW } int16_t nRF24::sleep() { - return(_mod->SPIsetRegValue(NRF24_REG_CONFIG, NRF24_POWER_DOWN, 1, 1)); + return(_mod->SPIsetRegValue(RADIOLIB_NRF24_REG_CONFIG, RADIOLIB_NRF24_POWER_DOWN, 1, 1)); } int16_t nRF24::standby() { // make sure carrier output is disabled - _mod->SPIsetRegValue(NRF24_REG_RF_SETUP, NRF24_CONT_WAVE_OFF, 7, 7); - _mod->SPIsetRegValue(NRF24_REG_RF_SETUP, NRF24_PLL_LOCK_OFF, 4, 4); - Module::digitalWrite(_mod->getRst(), LOW); + _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_RF_SETUP, RADIOLIB_NRF24_CONT_WAVE_OFF, 7, 7); + _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_RF_SETUP, RADIOLIB_NRF24_PLL_LOCK_OFF, 4, 4); + _mod->digitalWrite(_mod->getRst(), LOW); // use standby-1 mode - return(_mod->SPIsetRegValue(NRF24_REG_CONFIG, NRF24_POWER_UP, 1, 1)); + return(_mod->SPIsetRegValue(RADIOLIB_NRF24_REG_CONFIG, RADIOLIB_NRF24_POWER_UP, 1, 1)); } int16_t nRF24::transmit(uint8_t* data, size_t len, uint8_t addr) { @@ -83,22 +87,22 @@ int16_t nRF24::transmit(uint8_t* data, size_t len, uint8_t addr) { RADIOLIB_ASSERT(state); // wait until transmission is finished - uint32_t start = Module::micros(); - while(Module::digitalRead(_mod->getIrq())) { - Module::yield(); + uint32_t start = _mod->micros(); + while(_mod->digitalRead(_mod->getIrq())) { + _mod->yield(); // check maximum number of retransmits - if(getStatus(NRF24_MAX_RT)) { + if(getStatus(RADIOLIB_NRF24_MAX_RT)) { standby(); clearIRQ(); - return(ERR_ACK_NOT_RECEIVED); + return(RADIOLIB_ERR_ACK_NOT_RECEIVED); } // check timeout: 15 retries * 4ms (max Tx time as per datasheet) - if(Module::micros() - start >= 60000) { + if(_mod->micros() - start >= 60000) { standby(); clearIRQ(); - return(ERR_TX_TIMEOUT); + return(RADIOLIB_ERR_TX_TIMEOUT); } } @@ -114,15 +118,15 @@ int16_t nRF24::receive(uint8_t* data, size_t len) { RADIOLIB_ASSERT(state); // wait for Rx_DataReady or timeout - uint32_t start = Module::micros(); - while(Module::digitalRead(_mod->getIrq())) { - Module::yield(); + uint32_t start = _mod->micros(); + while(_mod->digitalRead(_mod->getIrq())) { + _mod->yield(); // check timeout: 15 retries * 4ms (max Tx time as per datasheet) - if(Module::micros() - start >= 60000) { + if(_mod->micros() - start >= 60000) { standby(); clearIRQ(); - return(ERR_RX_TIMEOUT); + return(RADIOLIB_ERR_RX_TIMEOUT); } } @@ -134,25 +138,25 @@ int16_t nRF24::transmitDirect(uint32_t frf) { // set raw frequency value if(frf != 0) { uint8_t freqRaw = frf - 2400; - _mod->SPIwriteRegister(NRF24_REG_RF_CH, freqRaw & 0b01111111); + _mod->SPIwriteRegister(RADIOLIB_NRF24_REG_RF_CH, freqRaw & 0b01111111); } // output carrier - int16_t state = _mod->SPIsetRegValue(NRF24_REG_CONFIG, NRF24_PTX, 0, 0); - state |= _mod->SPIsetRegValue(NRF24_REG_RF_SETUP, NRF24_CONT_WAVE_ON, 7, 7); - state |= _mod->SPIsetRegValue(NRF24_REG_RF_SETUP, NRF24_PLL_LOCK_ON, 4, 4); - Module::digitalWrite(_mod->getRst(), HIGH); + int16_t state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_CONFIG, RADIOLIB_NRF24_PTX, 0, 0); + state |= _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_RF_SETUP, RADIOLIB_NRF24_CONT_WAVE_ON, 7, 7); + state |= _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_RF_SETUP, RADIOLIB_NRF24_PLL_LOCK_ON, 4, 4); + _mod->digitalWrite(_mod->getRst(), HIGH); return(state); } int16_t nRF24::receiveDirect() { // nRF24 is unable to directly output demodulated data // this method is implemented only for PhysicalLayer compatibility - return(ERR_NONE); + return(RADIOLIB_ERR_NONE); } void nRF24::setIrqAction(void (*func)(void)) { - Module::attachInterrupt(RADIOLIB_DIGITAL_PIN_TO_INTERRUPT(_mod->getIrq()), func, FALLING); + _mod->attachInterrupt(RADIOLIB_DIGITAL_PIN_TO_INTERRUPT(_mod->getIrq()), func, FALLING); } int16_t nRF24::startTransmit(uint8_t* data, size_t len, uint8_t addr) { @@ -160,8 +164,8 @@ int16_t nRF24::startTransmit(uint8_t* data, size_t len, uint8_t addr) { (void)addr; // check packet length - if(len > NRF24_MAX_PACKET_LENGTH) { - return(ERR_PACKET_TOO_LONG); + if(len > RADIOLIB_NRF24_MAX_PACKET_LENGTH) { + return(RADIOLIB_ERR_PACKET_TOO_LONG); } // set mode to standby @@ -169,17 +173,17 @@ int16_t nRF24::startTransmit(uint8_t* data, size_t len, uint8_t addr) { RADIOLIB_ASSERT(state); // enable primary Tx mode - state = _mod->SPIsetRegValue(NRF24_REG_CONFIG, NRF24_PTX, 0, 0); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_CONFIG, RADIOLIB_NRF24_PTX, 0, 0); // clear interrupts clearIRQ(); // enable Tx_DataSent interrupt - state |= _mod->SPIsetRegValue(NRF24_REG_CONFIG, NRF24_MASK_TX_DS_IRQ_ON, 5, 5); + state |= _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_CONFIG, RADIOLIB_NRF24_MASK_TX_DS_IRQ_ON, 5, 5); RADIOLIB_ASSERT(state); // flush Tx FIFO - SPItransfer(NRF24_CMD_FLUSH_TX); + SPItransfer(RADIOLIB_NRF24_CMD_FLUSH_TX); // fill Tx FIFO uint8_t buff[32]; @@ -188,9 +192,9 @@ int16_t nRF24::startTransmit(uint8_t* data, size_t len, uint8_t addr) { SPIwriteTxPayload(data, len); // CE high to start transmitting - Module::digitalWrite(_mod->getRst(), HIGH); - Module::delay(1); - Module::digitalWrite(_mod->getRst(), LOW); + _mod->digitalWrite(_mod->getRst(), HIGH); + _mod->delay(1); + _mod->digitalWrite(_mod->getRst(), LOW); return(state); } @@ -201,22 +205,22 @@ int16_t nRF24::startReceive() { RADIOLIB_ASSERT(state); // enable primary Rx mode - state = _mod->SPIsetRegValue(NRF24_REG_CONFIG, NRF24_PRX, 0, 0); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_CONFIG, RADIOLIB_NRF24_PRX, 0, 0); RADIOLIB_ASSERT(state); // enable Rx_DataReady interrupt clearIRQ(); - state = _mod->SPIsetRegValue(NRF24_REG_CONFIG, NRF24_MASK_RX_DR_IRQ_ON, 6, 6); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_CONFIG, RADIOLIB_NRF24_MASK_RX_DR_IRQ_ON, 6, 6); RADIOLIB_ASSERT(state); // flush Rx FIFO - SPItransfer(NRF24_CMD_FLUSH_RX); + SPItransfer(RADIOLIB_NRF24_CMD_FLUSH_RX); // CE high to start receiving - Module::digitalWrite(_mod->getRst(), HIGH); + _mod->digitalWrite(_mod->getRst(), HIGH); // wait to enter Rx state - Module::delay(1); + _mod->delay(1); return(state); } @@ -228,7 +232,7 @@ int16_t nRF24::readData(uint8_t* data, size_t len) { // get packet length size_t length = len; - if(len == NRF24_MAX_PACKET_LENGTH) { + if(len == RADIOLIB_NRF24_MAX_PACKET_LENGTH) { length = getPacketLength(); } @@ -238,15 +242,15 @@ int16_t nRF24::readData(uint8_t* data, size_t len) { // clear interrupt clearIRQ(); - return(ERR_NONE); + return(RADIOLIB_ERR_NONE); } int16_t nRF24::setFrequency(int16_t freq) { - RADIOLIB_CHECK_RANGE(freq, 2400, 2525, ERR_INVALID_FREQUENCY); + RADIOLIB_CHECK_RANGE(freq, 2400, 2525, RADIOLIB_ERR_INVALID_FREQUENCY); // set frequency uint8_t freqRaw = freq - 2400; - return(_mod->SPIsetRegValue(NRF24_REG_RF_CH, freqRaw, 6, 0)); + return(_mod->SPIsetRegValue(RADIOLIB_NRF24_REG_RF_CH, freqRaw, 6, 0)); } int16_t nRF24::setDataRate(int16_t dataRate) { @@ -256,16 +260,16 @@ int16_t nRF24::setDataRate(int16_t dataRate) { // set data rate if(dataRate == 250) { - state = _mod->SPIsetRegValue(NRF24_REG_RF_SETUP, NRF24_DR_250_KBPS, 5, 5); - state |= _mod->SPIsetRegValue(NRF24_REG_RF_SETUP, NRF24_DR_250_KBPS, 3, 3); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_RF_SETUP, RADIOLIB_NRF24_DR_250_KBPS, 5, 5); + state |= _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_RF_SETUP, RADIOLIB_NRF24_DR_250_KBPS, 3, 3); } else if(dataRate == 1000) { - state = _mod->SPIsetRegValue(NRF24_REG_RF_SETUP, NRF24_DR_1_MBPS, 5, 5); - state |= _mod->SPIsetRegValue(NRF24_REG_RF_SETUP, NRF24_DR_1_MBPS, 3, 3); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_RF_SETUP, RADIOLIB_NRF24_DR_1_MBPS, 5, 5); + state |= _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_RF_SETUP, RADIOLIB_NRF24_DR_1_MBPS, 3, 3); } else if(dataRate == 2000) { - state = _mod->SPIsetRegValue(NRF24_REG_RF_SETUP, NRF24_DR_2_MBPS, 5, 5); - state |= _mod->SPIsetRegValue(NRF24_REG_RF_SETUP, NRF24_DR_2_MBPS, 3, 3); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_RF_SETUP, RADIOLIB_NRF24_DR_2_MBPS, 5, 5); + state |= _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_RF_SETUP, RADIOLIB_NRF24_DR_2_MBPS, 3, 3); } else { - return(ERR_INVALID_DATA_RATE); + return(RADIOLIB_ERR_INVALID_DATA_RATE); } return(state); @@ -280,23 +284,23 @@ int16_t nRF24::setOutputPower(int8_t power) { uint8_t powerRaw = 0; switch(power) { case -18: - powerRaw = NRF24_RF_PWR_18_DBM; + powerRaw = RADIOLIB_NRF24_RF_PWR_18_DBM; break; case -12: - powerRaw = NRF24_RF_PWR_12_DBM; + powerRaw = RADIOLIB_NRF24_RF_PWR_12_DBM; break; case -6: - powerRaw = NRF24_RF_PWR_6_DBM; + powerRaw = RADIOLIB_NRF24_RF_PWR_6_DBM; break; case 0: - powerRaw = NRF24_RF_PWR_0_DBM; + powerRaw = RADIOLIB_NRF24_RF_PWR_0_DBM; break; default: - return(ERR_INVALID_OUTPUT_POWER); + return(RADIOLIB_ERR_INVALID_OUTPUT_POWER); } // write new register value - state = _mod->SPIsetRegValue(NRF24_REG_RF_SETUP, powerRaw, 2, 1); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_RF_SETUP, powerRaw, 2, 1); return(state); } @@ -310,19 +314,19 @@ int16_t nRF24::setAddressWidth(uint8_t addrWidth) { case 2: // Even if marked as 'Illegal' on the datasheet this will work: // http://travisgoodspeed.blogspot.com/2011/02/promiscuity-is-nrf24l01s-duty.html - state = _mod->SPIsetRegValue(NRF24_REG_SETUP_AW, NRF24_ADDRESS_2_BYTES, 1, 0); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_SETUP_AW, RADIOLIB_NRF24_ADDRESS_2_BYTES, 1, 0); break; case 3: - state = _mod->SPIsetRegValue(NRF24_REG_SETUP_AW, NRF24_ADDRESS_3_BYTES, 1, 0); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_SETUP_AW, RADIOLIB_NRF24_ADDRESS_3_BYTES, 1, 0); break; case 4: - state = _mod->SPIsetRegValue(NRF24_REG_SETUP_AW, NRF24_ADDRESS_4_BYTES, 1, 0); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_SETUP_AW, RADIOLIB_NRF24_ADDRESS_4_BYTES, 1, 0); break; case 5: - state = _mod->SPIsetRegValue(NRF24_REG_SETUP_AW, NRF24_ADDRESS_5_BYTES, 1, 0); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_SETUP_AW, RADIOLIB_NRF24_ADDRESS_5_BYTES, 1, 0); break; default: - return(ERR_INVALID_ADDRESS_WIDTH); + return(RADIOLIB_ERR_INVALID_ADDRESS_WIDTH); } // save address width @@ -337,11 +341,11 @@ int16_t nRF24::setTransmitPipe(uint8_t* addr) { RADIOLIB_ASSERT(state); // set transmit address - _mod->SPIwriteRegisterBurst(NRF24_REG_TX_ADDR, addr, _addrWidth); + _mod->SPIwriteRegisterBurst(RADIOLIB_NRF24_REG_TX_ADDR, addr, _addrWidth); // set Rx pipe 0 address (for ACK) - _mod->SPIwriteRegisterBurst(NRF24_REG_RX_ADDR_P0, addr, _addrWidth); - state |= _mod->SPIsetRegValue(NRF24_REG_EN_RXADDR, NRF24_P0_ON, 0, 0); + _mod->SPIwriteRegisterBurst(RADIOLIB_NRF24_REG_RX_ADDR_P0, addr, _addrWidth); + state |= _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_RXADDR, RADIOLIB_NRF24_P0_ON, 0, 0); return(state); } @@ -354,15 +358,15 @@ int16_t nRF24::setReceivePipe(uint8_t pipeNum, uint8_t* addr) { // write full pipe 0 - 1 address and enable the pipe switch(pipeNum) { case 0: - _mod->SPIwriteRegisterBurst(NRF24_REG_RX_ADDR_P0, addr, _addrWidth); - state |= _mod->SPIsetRegValue(NRF24_REG_EN_RXADDR, NRF24_P0_ON, 0, 0); + _mod->SPIwriteRegisterBurst(RADIOLIB_NRF24_REG_RX_ADDR_P0, addr, _addrWidth); + state |= _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_RXADDR, RADIOLIB_NRF24_P0_ON, 0, 0); break; case 1: - _mod->SPIwriteRegisterBurst(NRF24_REG_RX_ADDR_P1, addr, _addrWidth); - state |= _mod->SPIsetRegValue(NRF24_REG_EN_RXADDR, NRF24_P1_ON, 1, 1); + _mod->SPIwriteRegisterBurst(RADIOLIB_NRF24_REG_RX_ADDR_P1, addr, _addrWidth); + state |= _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_RXADDR, RADIOLIB_NRF24_P1_ON, 1, 1); break; default: - return(ERR_INVALID_PIPE_NUMBER); + return(RADIOLIB_ERR_INVALID_PIPE_NUMBER); } return(state); @@ -376,23 +380,23 @@ int16_t nRF24::setReceivePipe(uint8_t pipeNum, uint8_t addrByte) { // write unique pipe 2 - 5 address and enable the pipe switch(pipeNum) { case 2: - state = _mod->SPIsetRegValue(NRF24_REG_RX_ADDR_P2, addrByte); - state |= _mod->SPIsetRegValue(NRF24_REG_EN_RXADDR, NRF24_P2_ON, 2, 2); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_RX_ADDR_P2, addrByte); + state |= _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_RXADDR, RADIOLIB_NRF24_P2_ON, 2, 2); break; case 3: - state = _mod->SPIsetRegValue(NRF24_REG_RX_ADDR_P3, addrByte); - state |= _mod->SPIsetRegValue(NRF24_REG_EN_RXADDR, NRF24_P3_ON, 3, 3); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_RX_ADDR_P3, addrByte); + state |= _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_RXADDR, RADIOLIB_NRF24_P3_ON, 3, 3); break; case 4: - state = _mod->SPIsetRegValue(NRF24_REG_RX_ADDR_P4, addrByte); - state |= _mod->SPIsetRegValue(NRF24_REG_EN_RXADDR, NRF24_P4_ON, 4, 4); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_RX_ADDR_P4, addrByte); + state |= _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_RXADDR, RADIOLIB_NRF24_P4_ON, 4, 4); break; case 5: - state = _mod->SPIsetRegValue(NRF24_REG_RX_ADDR_P5, addrByte); - state |= _mod->SPIsetRegValue(NRF24_REG_EN_RXADDR, NRF24_P5_ON, 5, 5); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_RX_ADDR_P5, addrByte); + state |= _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_RXADDR, RADIOLIB_NRF24_P5_ON, 5, 5); break; default: - return(ERR_INVALID_PIPE_NUMBER); + return(RADIOLIB_ERR_INVALID_PIPE_NUMBER); } return(state); @@ -405,49 +409,49 @@ int16_t nRF24::disablePipe(uint8_t pipeNum) { switch(pipeNum) { case 0: - state = _mod->SPIsetRegValue(NRF24_REG_EN_RXADDR, NRF24_P0_OFF, 0, 0); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_RXADDR, RADIOLIB_NRF24_P0_OFF, 0, 0); break; case 1: - state = _mod->SPIsetRegValue(NRF24_REG_EN_RXADDR, NRF24_P1_OFF, 1, 1); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_RXADDR, RADIOLIB_NRF24_P1_OFF, 1, 1); break; case 2: - state = _mod->SPIsetRegValue(NRF24_REG_EN_RXADDR, NRF24_P2_OFF, 2, 2); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_RXADDR, RADIOLIB_NRF24_P2_OFF, 2, 2); break; case 3: - state = _mod->SPIsetRegValue(NRF24_REG_EN_RXADDR, NRF24_P3_OFF, 3, 3); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_RXADDR, RADIOLIB_NRF24_P3_OFF, 3, 3); break; case 4: - state = _mod->SPIsetRegValue(NRF24_REG_EN_RXADDR, NRF24_P4_OFF, 4, 4); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_RXADDR, RADIOLIB_NRF24_P4_OFF, 4, 4); break; case 5: - state = _mod->SPIsetRegValue(NRF24_REG_EN_RXADDR, NRF24_P5_OFF, 5, 5); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_RXADDR, RADIOLIB_NRF24_P5_OFF, 5, 5); break; default: - return(ERR_INVALID_PIPE_NUMBER); + return(RADIOLIB_ERR_INVALID_PIPE_NUMBER); } return(state); } int16_t nRF24::getStatus(uint8_t mask) { - return(_mod->SPIgetRegValue(NRF24_REG_STATUS) & mask); + return(_mod->SPIgetRegValue(RADIOLIB_NRF24_REG_STATUS) & mask); } bool nRF24::isCarrierDetected() { - return(_mod->SPIgetRegValue(NRF24_REG_RPD, 0, 0) == 1); + return(_mod->SPIgetRegValue(RADIOLIB_NRF24_REG_RPD, 0, 0) == 1); } int16_t nRF24::setFrequencyDeviation(float freqDev) { // nRF24 is unable to set frequency deviation // this method is implemented only for PhysicalLayer compatibility (void)freqDev; - return(ERR_NONE); + return(RADIOLIB_ERR_NONE); } size_t nRF24::getPacketLength(bool update) { (void)update; uint8_t length = 0; - SPItransfer(NRF24_CMD_READ_RX_PAYLOAD_WIDTH, false, NULL, &length, 1); + SPItransfer(RADIOLIB_NRF24_CMD_READ_RX_PAYLOAD_WIDTH, false, NULL, &length, 1); return((size_t)length); } @@ -459,35 +463,35 @@ int16_t nRF24::setCrcFiltering(bool crcOn) { } // Disable CRC - return _mod->SPIsetRegValue(NRF24_REG_CONFIG, (crcOn ? NRF24_CRC_ON : NRF24_CRC_OFF), 3, 3); + return _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_CONFIG, (crcOn ? RADIOLIB_NRF24_CRC_ON : RADIOLIB_NRF24_CRC_OFF), 3, 3); } int16_t nRF24::setAutoAck(bool autoAckOn){ - return _mod->SPIsetRegValue(NRF24_REG_EN_AA, (autoAckOn ? NRF24_AA_ALL_ON : NRF24_AA_ALL_OFF), 5, 0); + return _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_AA, (autoAckOn ? RADIOLIB_NRF24_AA_ALL_ON : RADIOLIB_NRF24_AA_ALL_OFF), 5, 0); } int16_t nRF24::setAutoAck(uint8_t pipeNum, bool autoAckOn){ switch(pipeNum) { case 0: - return _mod->SPIsetRegValue(NRF24_REG_EN_AA, (autoAckOn ? NRF24_AA_P0_ON : NRF24_AA_P0_OFF), 0, 0); + return _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_AA, (autoAckOn ? RADIOLIB_NRF24_AA_P0_ON : RADIOLIB_NRF24_AA_P0_OFF), 0, 0); break; case 1: - return _mod->SPIsetRegValue(NRF24_REG_EN_AA, (autoAckOn ? NRF24_AA_P1_ON : NRF24_AA_P1_OFF), 1, 1); + return _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_AA, (autoAckOn ? RADIOLIB_NRF24_AA_P1_ON : RADIOLIB_NRF24_AA_P1_OFF), 1, 1); break; case 2: - return _mod->SPIsetRegValue(NRF24_REG_EN_AA, (autoAckOn ? NRF24_AA_P2_ON : NRF24_AA_P2_OFF), 2, 2); + return _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_AA, (autoAckOn ? RADIOLIB_NRF24_AA_P2_ON : RADIOLIB_NRF24_AA_P2_OFF), 2, 2); break; case 3: - return _mod->SPIsetRegValue(NRF24_REG_EN_AA, (autoAckOn ? NRF24_AA_P3_ON : NRF24_AA_P3_OFF), 3, 3); + return _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_AA, (autoAckOn ? RADIOLIB_NRF24_AA_P3_ON : RADIOLIB_NRF24_AA_P3_OFF), 3, 3); break; case 4: - return _mod->SPIsetRegValue(NRF24_REG_EN_AA, (autoAckOn ? NRF24_AA_P4_ON : NRF24_AA_P4_OFF), 4, 4); + return _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_AA, (autoAckOn ? RADIOLIB_NRF24_AA_P4_ON : RADIOLIB_NRF24_AA_P4_OFF), 4, 4); break; case 5: - return _mod->SPIsetRegValue(NRF24_REG_EN_AA, (autoAckOn ? NRF24_AA_P5_ON : NRF24_AA_P5_OFF), 5, 5); + return _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_EN_AA, (autoAckOn ? RADIOLIB_NRF24_AA_P5_ON : RADIOLIB_NRF24_AA_P5_OFF), 5, 5); break; default: - return (ERR_INVALID_PIPE_NUMBER); + return (RADIOLIB_ERR_INVALID_PIPE_NUMBER); } } @@ -495,14 +499,14 @@ int16_t nRF24::setDataShaping(uint8_t sh) { // nRF24 is unable to set data shaping // this method is implemented only for PhysicalLayer compatibility (void)sh; - return(ERR_NONE); + return(RADIOLIB_ERR_NONE); } int16_t nRF24::setEncoding(uint8_t encoding) { // nRF24 is unable to set encoding // this method is implemented only for PhysicalLayer compatibility (void)encoding; - return(ERR_NONE); + return(RADIOLIB_ERR_NONE); } uint8_t nRF24::randomByte() { @@ -525,79 +529,75 @@ void nRF24::readBit(RADIOLIB_PIN_TYPE pin) { void nRF24::clearIRQ() { // clear status bits - _mod->SPIsetRegValue(NRF24_REG_STATUS, NRF24_RX_DR | NRF24_TX_DS | NRF24_MAX_RT, 6, 4); + _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_STATUS, RADIOLIB_NRF24_RX_DR | RADIOLIB_NRF24_TX_DS | RADIOLIB_NRF24_MAX_RT, 6, 4); // disable interrupts - _mod->SPIsetRegValue(NRF24_REG_CONFIG, NRF24_MASK_RX_DR_IRQ_OFF | NRF24_MASK_TX_DS_IRQ_OFF | NRF24_MASK_MAX_RT_IRQ_OFF, 6, 4); + _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_CONFIG, RADIOLIB_NRF24_MASK_RX_DR_IRQ_OFF | RADIOLIB_NRF24_MASK_TX_DS_IRQ_OFF | RADIOLIB_NRF24_MASK_MAX_RT_IRQ_OFF, 6, 4); } int16_t nRF24::config() { // enable 16-bit CRC - int16_t state = _mod->SPIsetRegValue(NRF24_REG_CONFIG, NRF24_CRC_ON | NRF24_CRC_16, 3, 2); + int16_t state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_CONFIG, RADIOLIB_NRF24_CRC_ON | RADIOLIB_NRF24_CRC_16, 3, 2); RADIOLIB_ASSERT(state); // set 15 retries and delay 1500 (5*250) us - _mod->SPIsetRegValue(NRF24_REG_SETUP_RETR, (5 << 4) | 5); + _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_SETUP_RETR, (5 << 4) | 5); // set features: dynamic payload on, payload with ACK packets off, dynamic ACK off - state = _mod->SPIsetRegValue(NRF24_REG_FEATURE, NRF24_DPL_ON | NRF24_ACK_PAY_OFF | NRF24_DYN_ACK_OFF, 2, 0); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_FEATURE, RADIOLIB_NRF24_DPL_ON | RADIOLIB_NRF24_ACK_PAY_OFF | RADIOLIB_NRF24_DYN_ACK_OFF, 2, 0); RADIOLIB_ASSERT(state); // enable dynamic payloads - state = _mod->SPIsetRegValue(NRF24_REG_DYNPD, NRF24_DPL_ALL_ON, 5, 0); + state = _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_DYNPD, RADIOLIB_NRF24_DPL_ALL_ON, 5, 0); RADIOLIB_ASSERT(state); // reset IRQ clearIRQ(); // clear status - _mod->SPIsetRegValue(NRF24_REG_STATUS, NRF24_RX_DR | NRF24_TX_DS | NRF24_MAX_RT, 6, 4); + _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_STATUS, RADIOLIB_NRF24_RX_DR | RADIOLIB_NRF24_TX_DS | RADIOLIB_NRF24_MAX_RT, 6, 4); // flush FIFOs - SPItransfer(NRF24_CMD_FLUSH_TX); - SPItransfer(NRF24_CMD_FLUSH_RX); + SPItransfer(RADIOLIB_NRF24_CMD_FLUSH_TX); + SPItransfer(RADIOLIB_NRF24_CMD_FLUSH_RX); // power up - _mod->SPIsetRegValue(NRF24_REG_CONFIG, NRF24_POWER_UP, 1, 1); - Module::delay(5); + _mod->SPIsetRegValue(RADIOLIB_NRF24_REG_CONFIG, RADIOLIB_NRF24_POWER_UP, 1, 1); + _mod->delay(5); return(state); } void nRF24::SPIreadRxPayload(uint8_t* data, uint8_t numBytes) { - SPItransfer(NRF24_CMD_READ_RX_PAYLOAD, false, NULL, data, numBytes); + SPItransfer(RADIOLIB_NRF24_CMD_READ_RX_PAYLOAD, false, NULL, data, numBytes); } void nRF24::SPIwriteTxPayload(uint8_t* data, uint8_t numBytes) { - SPItransfer(NRF24_CMD_WRITE_TX_PAYLOAD, true, data, NULL, numBytes); + SPItransfer(RADIOLIB_NRF24_CMD_WRITE_TX_PAYLOAD, true, data, NULL, numBytes); } void nRF24::SPItransfer(uint8_t cmd, bool write, uint8_t* dataOut, uint8_t* dataIn, uint8_t numBytes) { - // get pointer to used SPI interface and the settings - SPIClass* spi = _mod->getSpi(); - SPISettings spiSettings = _mod->getSpiSettings(); - // start transfer - Module::digitalWrite(_mod->getCs(), LOW); - spi->beginTransaction(spiSettings); + _mod->digitalWrite(_mod->getCs(), LOW); + _mod->SPIbeginTransaction(); // send command - spi->transfer(cmd); + _mod->SPItransfer(cmd); // send data if(write) { for(uint8_t i = 0; i < numBytes; i++) { - spi->transfer(dataOut[i]); + _mod->SPItransfer(dataOut[i]); } } else { for(uint8_t i = 0; i < numBytes; i++) { - dataIn[i] = spi->transfer(0x00); + dataIn[i] = _mod->SPItransfer(0x00); } } // stop transfer - spi->endTransaction(); - Module::digitalWrite(_mod->getCs(), HIGH); + _mod->SPIendTransaction(); + _mod->digitalWrite(_mod->getCs(), HIGH); } #endif diff --git a/src/modules/nRF24/nRF24.h b/src/modules/nRF24/nRF24.h index d76a658d..fead3bf1 100644 --- a/src/modules/nRF24/nRF24.h +++ b/src/modules/nRF24/nRF24.h @@ -7,169 +7,169 @@ #include "../../protocols/PhysicalLayer/PhysicalLayer.h" // nRF24 physical layer properties -#define NRF24_FREQUENCY_STEP_SIZE 1000000.0 -#define NRF24_MAX_PACKET_LENGTH 32 +#define RADIOLIB_NRF24_FREQUENCY_STEP_SIZE 1000000.0 +#define RADIOLIB_NRF24_MAX_PACKET_LENGTH 32 // nRF24 SPI commands -#define NRF24_CMD_READ 0b00000000 -#define NRF24_CMD_WRITE 0b00100000 -#define NRF24_CMD_READ_RX_PAYLOAD 0b01100001 -#define NRF24_CMD_WRITE_TX_PAYLOAD 0b10100000 -#define NRF24_CMD_FLUSH_TX 0b11100001 -#define NRF24_CMD_FLUSH_RX 0b11100010 -#define NRF24_CMD_REUSE_TX_PAXLOAD 0b11100011 -#define NRF24_CMD_READ_RX_PAYLOAD_WIDTH 0b01100000 -#define NRF24_CMD_WRITE_ACK_PAYLOAD 0b10101000 -#define NRF24_CMD_WRITE_TX_PAYLOAD_NOACK 0b10110000 -#define NRF24_CMD_NOP 0b11111111 +#define RADIOLIB_NRF24_CMD_READ 0b00000000 +#define RADIOLIB_NRF24_CMD_WRITE 0b00100000 +#define RADIOLIB_NRF24_CMD_READ_RX_PAYLOAD 0b01100001 +#define RADIOLIB_NRF24_CMD_WRITE_TX_PAYLOAD 0b10100000 +#define RADIOLIB_NRF24_CMD_FLUSH_TX 0b11100001 +#define RADIOLIB_NRF24_CMD_FLUSH_RX 0b11100010 +#define RADIOLIB_NRF24_CMD_REUSE_TX_PAXLOAD 0b11100011 +#define RADIOLIB_NRF24_CMD_READ_RX_PAYLOAD_WIDTH 0b01100000 +#define RADIOLIB_NRF24_CMD_WRITE_ACK_PAYLOAD 0b10101000 +#define RADIOLIB_NRF24_CMD_WRITE_TX_PAYLOAD_NOACK 0b10110000 +#define RADIOLIB_NRF24_CMD_NOP 0b11111111 // nRF24 register map -#define NRF24_REG_CONFIG 0x00 -#define NRF24_REG_EN_AA 0x01 -#define NRF24_REG_EN_RXADDR 0x02 -#define NRF24_REG_SETUP_AW 0x03 -#define NRF24_REG_SETUP_RETR 0x04 -#define NRF24_REG_RF_CH 0x05 -#define NRF24_REG_RF_SETUP 0x06 -#define NRF24_REG_STATUS 0x07 -#define NRF24_REG_OBSERVE_TX 0x08 -#define NRF24_REG_RPD 0x09 -#define NRF24_REG_RX_ADDR_P0 0x0A -#define NRF24_REG_RX_ADDR_P1 0x0B -#define NRF24_REG_RX_ADDR_P2 0x0C -#define NRF24_REG_RX_ADDR_P3 0x0D -#define NRF24_REG_RX_ADDR_P4 0x0E -#define NRF24_REG_RX_ADDR_P5 0x0F -#define NRF24_REG_TX_ADDR 0x10 -#define NRF24_REG_RX_PW_P0 0x11 -#define NRF24_REG_RX_PW_P1 0x12 -#define NRF24_REG_RX_PW_P2 0x13 -#define NRF24_REG_RX_PW_P3 0x14 -#define NRF24_REG_RX_PW_P4 0x15 -#define NRF24_REG_RX_PW_P5 0x16 -#define NRF24_REG_FIFO_STATUS 0x17 -#define NRF24_REG_DYNPD 0x1C -#define NRF24_REG_FEATURE 0x1D +#define RADIOLIB_NRF24_REG_CONFIG 0x00 +#define RADIOLIB_NRF24_REG_EN_AA 0x01 +#define RADIOLIB_NRF24_REG_EN_RXADDR 0x02 +#define RADIOLIB_NRF24_REG_SETUP_AW 0x03 +#define RADIOLIB_NRF24_REG_SETUP_RETR 0x04 +#define RADIOLIB_NRF24_REG_RF_CH 0x05 +#define RADIOLIB_NRF24_REG_RF_SETUP 0x06 +#define RADIOLIB_NRF24_REG_STATUS 0x07 +#define RADIOLIB_NRF24_REG_OBSERVE_TX 0x08 +#define RADIOLIB_NRF24_REG_RPD 0x09 +#define RADIOLIB_NRF24_REG_RX_ADDR_P0 0x0A +#define RADIOLIB_NRF24_REG_RX_ADDR_P1 0x0B +#define RADIOLIB_NRF24_REG_RX_ADDR_P2 0x0C +#define RADIOLIB_NRF24_REG_RX_ADDR_P3 0x0D +#define RADIOLIB_NRF24_REG_RX_ADDR_P4 0x0E +#define RADIOLIB_NRF24_REG_RX_ADDR_P5 0x0F +#define RADIOLIB_NRF24_REG_TX_ADDR 0x10 +#define RADIOLIB_NRF24_REG_RX_PW_P0 0x11 +#define RADIOLIB_NRF24_REG_RX_PW_P1 0x12 +#define RADIOLIB_NRF24_REG_RX_PW_P2 0x13 +#define RADIOLIB_NRF24_REG_RX_PW_P3 0x14 +#define RADIOLIB_NRF24_REG_RX_PW_P4 0x15 +#define RADIOLIB_NRF24_REG_RX_PW_P5 0x16 +#define RADIOLIB_NRF24_REG_FIFO_STATUS 0x17 +#define RADIOLIB_NRF24_REG_DYNPD 0x1C +#define RADIOLIB_NRF24_REG_FEATURE 0x1D // NRF24_REG_CONFIG MSB LSB DESCRIPTION -#define NRF24_MASK_RX_DR_IRQ_OFF 0b01000000 // 6 6 RX_DR will not be reflected on IRQ pin -#define NRF24_MASK_RX_DR_IRQ_ON 0b00000000 // 6 6 RX_DR will be reflected on IRQ pin as active low (default) -#define NRF24_MASK_TX_DS_IRQ_OFF 0b00100000 // 5 5 TX_DS will not be reflected on IRQ pin -#define NRF24_MASK_TX_DS_IRQ_ON 0b00000000 // 5 5 TX_DS will be reflected on IRQ pin as active low (default) -#define NRF24_MASK_MAX_RT_IRQ_OFF 0b00010000 // 4 4 MAX_RT will not be reflected on IRQ pin -#define NRF24_MASK_MAX_RT_IRQ_ON 0b00000000 // 4 4 MAX_RT will be reflected on IRQ pin as active low (default) -#define NRF24_CRC_OFF 0b00000000 // 3 3 CRC calculation: disabled -#define NRF24_CRC_ON 0b00001000 // 3 3 enabled (default) -#define NRF24_CRC_8 0b00000000 // 2 2 CRC scheme: CRC8 (default) -#define NRF24_CRC_16 0b00000100 // 2 2 CRC16 -#define NRF24_POWER_UP 0b00000010 // 1 1 power up -#define NRF24_POWER_DOWN 0b00000000 // 1 1 power down -#define NRF24_PTX 0b00000000 // 0 0 enable primary Tx -#define NRF24_PRX 0b00000001 // 0 0 enable primary Rx +#define RADIOLIB_NRF24_MASK_RX_DR_IRQ_OFF 0b01000000 // 6 6 RX_DR will not be reflected on IRQ pin +#define RADIOLIB_NRF24_MASK_RX_DR_IRQ_ON 0b00000000 // 6 6 RX_DR will be reflected on IRQ pin as active low (default) +#define RADIOLIB_NRF24_MASK_TX_DS_IRQ_OFF 0b00100000 // 5 5 TX_DS will not be reflected on IRQ pin +#define RADIOLIB_NRF24_MASK_TX_DS_IRQ_ON 0b00000000 // 5 5 TX_DS will be reflected on IRQ pin as active low (default) +#define RADIOLIB_NRF24_MASK_MAX_RT_IRQ_OFF 0b00010000 // 4 4 MAX_RT will not be reflected on IRQ pin +#define RADIOLIB_NRF24_MASK_MAX_RT_IRQ_ON 0b00000000 // 4 4 MAX_RT will be reflected on IRQ pin as active low (default) +#define RADIOLIB_NRF24_CRC_OFF 0b00000000 // 3 3 CRC calculation: disabled +#define RADIOLIB_NRF24_CRC_ON 0b00001000 // 3 3 enabled (default) +#define RADIOLIB_NRF24_CRC_8 0b00000000 // 2 2 CRC scheme: CRC8 (default) +#define RADIOLIB_NRF24_CRC_16 0b00000100 // 2 2 CRC16 +#define RADIOLIB_NRF24_POWER_UP 0b00000010 // 1 1 power up +#define RADIOLIB_NRF24_POWER_DOWN 0b00000000 // 1 1 power down +#define RADIOLIB_NRF24_PTX 0b00000000 // 0 0 enable primary Tx +#define RADIOLIB_NRF24_PRX 0b00000001 // 0 0 enable primary Rx // NRF24_REG_EN_AA -#define NRF24_AA_ALL_OFF 0b00000000 // 5 0 auto-ACK on all pipes: disabled -#define NRF24_AA_ALL_ON 0b00111111 // 5 0 enabled (default) -#define NRF24_AA_P5_OFF 0b00000000 // 5 5 auto-ACK on pipe 5: disabled -#define NRF24_AA_P5_ON 0b00100000 // 5 5 enabled (default) -#define NRF24_AA_P4_OFF 0b00000000 // 4 4 auto-ACK on pipe 4: disabled -#define NRF24_AA_P4_ON 0b00010000 // 4 4 enabled (default) -#define NRF24_AA_P3_OFF 0b00000000 // 3 3 auto-ACK on pipe 3: disabled -#define NRF24_AA_P3_ON 0b00001000 // 3 3 enabled (default) -#define NRF24_AA_P2_OFF 0b00000000 // 2 2 auto-ACK on pipe 2: disabled -#define NRF24_AA_P2_ON 0b00000100 // 2 2 enabled (default) -#define NRF24_AA_P1_OFF 0b00000000 // 1 1 auto-ACK on pipe 1: disabled -#define NRF24_AA_P1_ON 0b00000010 // 1 1 enabled (default) -#define NRF24_AA_P0_OFF 0b00000000 // 0 0 auto-ACK on pipe 0: disabled -#define NRF24_AA_P0_ON 0b00000001 // 0 0 enabled (default) +#define RADIOLIB_NRF24_AA_ALL_OFF 0b00000000 // 5 0 auto-ACK on all pipes: disabled +#define RADIOLIB_NRF24_AA_ALL_ON 0b00111111 // 5 0 enabled (default) +#define RADIOLIB_NRF24_AA_P5_OFF 0b00000000 // 5 5 auto-ACK on pipe 5: disabled +#define RADIOLIB_NRF24_AA_P5_ON 0b00100000 // 5 5 enabled (default) +#define RADIOLIB_NRF24_AA_P4_OFF 0b00000000 // 4 4 auto-ACK on pipe 4: disabled +#define RADIOLIB_NRF24_AA_P4_ON 0b00010000 // 4 4 enabled (default) +#define RADIOLIB_NRF24_AA_P3_OFF 0b00000000 // 3 3 auto-ACK on pipe 3: disabled +#define RADIOLIB_NRF24_AA_P3_ON 0b00001000 // 3 3 enabled (default) +#define RADIOLIB_NRF24_AA_P2_OFF 0b00000000 // 2 2 auto-ACK on pipe 2: disabled +#define RADIOLIB_NRF24_AA_P2_ON 0b00000100 // 2 2 enabled (default) +#define RADIOLIB_NRF24_AA_P1_OFF 0b00000000 // 1 1 auto-ACK on pipe 1: disabled +#define RADIOLIB_NRF24_AA_P1_ON 0b00000010 // 1 1 enabled (default) +#define RADIOLIB_NRF24_AA_P0_OFF 0b00000000 // 0 0 auto-ACK on pipe 0: disabled +#define RADIOLIB_NRF24_AA_P0_ON 0b00000001 // 0 0 enabled (default) // NRF24_REG_EN_RXADDR -#define NRF24_P5_OFF 0b00000000 // 5 5 receive pipe 5: disabled (default) -#define NRF24_P5_ON 0b00100000 // 5 5 enabled -#define NRF24_P4_OFF 0b00000000 // 4 4 receive pipe 4: disabled (default) -#define NRF24_P4_ON 0b00010000 // 4 4 enabled -#define NRF24_P3_OFF 0b00000000 // 3 3 receive pipe 3: disabled (default) -#define NRF24_P3_ON 0b00001000 // 3 3 enabled -#define NRF24_P2_OFF 0b00000000 // 2 2 receive pipe 2: disabled (default) -#define NRF24_P2_ON 0b00000100 // 2 2 enabled -#define NRF24_P1_OFF 0b00000000 // 1 1 receive pipe 1: disabled -#define NRF24_P1_ON 0b00000010 // 1 1 enabled (default) -#define NRF24_P0_OFF 0b00000000 // 0 0 receive pipe 0: disabled -#define NRF24_P0_ON 0b00000001 // 0 0 enabled (default) +#define RADIOLIB_NRF24_P5_OFF 0b00000000 // 5 5 receive pipe 5: disabled (default) +#define RADIOLIB_NRF24_P5_ON 0b00100000 // 5 5 enabled +#define RADIOLIB_NRF24_P4_OFF 0b00000000 // 4 4 receive pipe 4: disabled (default) +#define RADIOLIB_NRF24_P4_ON 0b00010000 // 4 4 enabled +#define RADIOLIB_NRF24_P3_OFF 0b00000000 // 3 3 receive pipe 3: disabled (default) +#define RADIOLIB_NRF24_P3_ON 0b00001000 // 3 3 enabled +#define RADIOLIB_NRF24_P2_OFF 0b00000000 // 2 2 receive pipe 2: disabled (default) +#define RADIOLIB_NRF24_P2_ON 0b00000100 // 2 2 enabled +#define RADIOLIB_NRF24_P1_OFF 0b00000000 // 1 1 receive pipe 1: disabled +#define RADIOLIB_NRF24_P1_ON 0b00000010 // 1 1 enabled (default) +#define RADIOLIB_NRF24_P0_OFF 0b00000000 // 0 0 receive pipe 0: disabled +#define RADIOLIB_NRF24_P0_ON 0b00000001 // 0 0 enabled (default) // NRF24_REG_SETUP_AW -#define NRF24_ADDRESS_2_BYTES 0b00000000 // 1 0 address width: 2 bytes -#define NRF24_ADDRESS_3_BYTES 0b00000001 // 1 0 3 bytes -#define NRF24_ADDRESS_4_BYTES 0b00000010 // 1 0 4 bytes -#define NRF24_ADDRESS_5_BYTES 0b00000011 // 1 0 5 bytes (default) +#define RADIOLIB_NRF24_ADDRESS_2_BYTES 0b00000000 // 1 0 address width: 2 bytes +#define RADIOLIB_NRF24_ADDRESS_3_BYTES 0b00000001 // 1 0 3 bytes +#define RADIOLIB_NRF24_ADDRESS_4_BYTES 0b00000010 // 1 0 4 bytes +#define RADIOLIB_NRF24_ADDRESS_5_BYTES 0b00000011 // 1 0 5 bytes (default) // NRF24_REG_SETUP_RETR -#define NRF24_ARD 0b00000000 // 7 4 auto retransmit delay: t[us] = (NRF24_ARD + 1) * 250 us -#define NRF24_ARC_OFF 0b00000000 // 3 0 auto retransmit count: auto retransmit disabled -#define NRF24_ARC 0b00000011 // 3 0 up to 3 retransmits on AA fail (default) +#define RADIOLIB_NRF24_ARD 0b00000000 // 7 4 auto retransmit delay: t[us] = (NRF24_ARD + 1) * 250 us +#define RADIOLIB_NRF24_ARC_OFF 0b00000000 // 3 0 auto retransmit count: auto retransmit disabled +#define RADIOLIB_NRF24_ARC 0b00000011 // 3 0 up to 3 retransmits on AA fail (default) // NRF24_REG_RF_CH -#define NRF24_RF_CH 0b00000010 // 6 0 RF channel: f_CH[MHz] = 2400 MHz + NRF24_RF_CH +#define RADIOLIB_NRF24_RF_CH 0b00000010 // 6 0 RF channel: f_CH[MHz] = 2400 MHz + NRF24_RF_CH // NRF24_REG_RF_SETUP -#define NRF24_CONT_WAVE_OFF 0b00000000 // 7 7 continuous carrier transmit: disabled (default) -#define NRF24_CONT_WAVE_ON 0b10000000 // 7 7 enabled -#define NRF24_DR_250_KBPS 0b00100000 // 5 5 data rate: 250 kbps -#define NRF24_DR_1_MBPS 0b00000000 // 3 3 1 Mbps (default) -#define NRF24_DR_2_MBPS 0b00001000 // 3 3 2 Mbps -#define NRF24_PLL_LOCK_ON 0b00010000 // 4 4 force PLL lock: enabled -#define NRF24_PLL_LOCK_OFF 0b00000000 // 4 4 disabled (default) -#define NRF24_RF_PWR_18_DBM 0b00000000 // 2 1 output power: -18 dBm -#define NRF24_RF_PWR_12_DBM 0b00000010 // 2 1 -12 dBm -#define NRF24_RF_PWR_6_DBM 0b00000100 // 2 1 -6 dBm -#define NRF24_RF_PWR_0_DBM 0b00000110 // 2 1 0 dBm (default) +#define RADIOLIB_NRF24_CONT_WAVE_OFF 0b00000000 // 7 7 continuous carrier transmit: disabled (default) +#define RADIOLIB_NRF24_CONT_WAVE_ON 0b10000000 // 7 7 enabled +#define RADIOLIB_NRF24_DR_250_KBPS 0b00100000 // 5 5 data rate: 250 kbps +#define RADIOLIB_NRF24_DR_1_MBPS 0b00000000 // 3 3 1 Mbps (default) +#define RADIOLIB_NRF24_DR_2_MBPS 0b00001000 // 3 3 2 Mbps +#define RADIOLIB_NRF24_PLL_LOCK_ON 0b00010000 // 4 4 force PLL lock: enabled +#define RADIOLIB_NRF24_PLL_LOCK_OFF 0b00000000 // 4 4 disabled (default) +#define RADIOLIB_NRF24_RF_PWR_18_DBM 0b00000000 // 2 1 output power: -18 dBm +#define RADIOLIB_NRF24_RF_PWR_12_DBM 0b00000010 // 2 1 -12 dBm +#define RADIOLIB_NRF24_RF_PWR_6_DBM 0b00000100 // 2 1 -6 dBm +#define RADIOLIB_NRF24_RF_PWR_0_DBM 0b00000110 // 2 1 0 dBm (default) // NRF24_REG_STATUS -#define NRF24_RX_DR 0b01000000 // 6 6 Rx data ready -#define NRF24_TX_DS 0b00100000 // 5 5 Tx data sent -#define NRF24_MAX_RT 0b00010000 // 4 4 maximum number of retransmits reached (must be cleared to continue) -#define NRF24_RX_FIFO_EMPTY 0b00001110 // 3 1 Rx FIFO is empty -#define NRF24_RX_P_NO 0b00000000 // 3 1 number of data pipe that received data -#define NRF24_TX_FIFO_FULL 0b00000001 // 0 0 Tx FIFO is full +#define RADIOLIB_NRF24_RX_DR 0b01000000 // 6 6 Rx data ready +#define RADIOLIB_NRF24_TX_DS 0b00100000 // 5 5 Tx data sent +#define RADIOLIB_NRF24_MAX_RT 0b00010000 // 4 4 maximum number of retransmits reached (must be cleared to continue) +#define RADIOLIB_NRF24_RX_FIFO_EMPTY 0b00001110 // 3 1 Rx FIFO is empty +#define RADIOLIB_NRF24_RX_P_NO 0b00000000 // 3 1 number of data pipe that received data +#define RADIOLIB_NRF24_TX_FIFO_FULL 0b00000001 // 0 0 Tx FIFO is full // NRF24_REG_OBSERVE_TX -#define NRF24_PLOS_CNT 0b00000000 // 7 4 number of lost packets -#define NRF24_ARC_CNT 0b00000000 // 3 0 number of retransmitted packets +#define RADIOLIB_NRF24_PLOS_CNT 0b00000000 // 7 4 number of lost packets +#define RADIOLIB_NRF24_ARC_CNT 0b00000000 // 3 0 number of retransmitted packets // NRF24_REG_RPD -#define NRF24_RP_BELOW_64_DBM 0b00000000 // 0 0 received power in the current channel: less than -64 dBm -#define NRF24_RP_ABOVE_64_DBM 0b00000001 // 0 0 more than -64 dBm +#define RADIOLIB_NRF24_RP_BELOW_64_DBM 0b00000000 // 0 0 received power in the current channel: less than -64 dBm +#define RADIOLIB_NRF24_RP_ABOVE_64_DBM 0b00000001 // 0 0 more than -64 dBm // NRF24_REG_FIFO_STATUS -#define NRF24_TX_REUSE 0b01000000 // 6 6 reusing last transmitted payload -#define NRF24_TX_FIFO_FULL_FLAG 0b00100000 // 5 5 Tx FIFO is full -#define NRF24_TX_FIFO_EMPTY_FLAG 0b00010000 // 4 4 Tx FIFO is empty -#define NRF24_RX_FIFO_FULL_FLAG 0b00000010 // 1 1 Rx FIFO is full -#define NRF24_RX_FIFO_EMPTY_FLAG 0b00000001 // 0 0 Rx FIFO is empty +#define RADIOLIB_NRF24_TX_REUSE 0b01000000 // 6 6 reusing last transmitted payload +#define RADIOLIB_NRF24_TX_FIFO_FULL_FLAG 0b00100000 // 5 5 Tx FIFO is full +#define RADIOLIB_NRF24_TX_FIFO_EMPTY_FLAG 0b00010000 // 4 4 Tx FIFO is empty +#define RADIOLIB_NRF24_RX_FIFO_FULL_FLAG 0b00000010 // 1 1 Rx FIFO is full +#define RADIOLIB_NRF24_RX_FIFO_EMPTY_FLAG 0b00000001 // 0 0 Rx FIFO is empty // NRF24_REG_DYNPD -#define NRF24_DPL_P5_OFF 0b00000000 // 5 5 dynamic payload length on pipe 5: disabled (default) -#define NRF24_DPL_P5_ON 0b00100000 // 5 5 enabled -#define NRF24_DPL_P4_OFF 0b00000000 // 4 4 dynamic payload length on pipe 4: disabled (default) -#define NRF24_DPL_P4_ON 0b00010000 // 4 4 enabled -#define NRF24_DPL_P3_OFF 0b00000000 // 3 3 dynamic payload length on pipe 3: disabled (default) -#define NRF24_DPL_P3_ON 0b00001000 // 3 3 enabled -#define NRF24_DPL_P2_OFF 0b00000000 // 2 2 dynamic payload length on pipe 2: disabled (default) -#define NRF24_DPL_P2_ON 0b00000100 // 2 2 enabled -#define NRF24_DPL_P1_OFF 0b00000000 // 1 1 dynamic payload length on pipe 1: disabled (default) -#define NRF24_DPL_P1_ON 0b00000010 // 1 1 enabled -#define NRF24_DPL_P0_OFF 0b00000000 // 0 0 dynamic payload length on pipe 0: disabled (default) -#define NRF24_DPL_P0_ON 0b00000001 // 0 0 enabled -#define NRF24_DPL_ALL_OFF 0b00000000 // 5 0 disable all dynamic payloads -#define NRF24_DPL_ALL_ON 0b00111111 // 5 0 enable all dynamic payloads +#define RADIOLIB_NRF24_DPL_P5_OFF 0b00000000 // 5 5 dynamic payload length on pipe 5: disabled (default) +#define RADIOLIB_NRF24_DPL_P5_ON 0b00100000 // 5 5 enabled +#define RADIOLIB_NRF24_DPL_P4_OFF 0b00000000 // 4 4 dynamic payload length on pipe 4: disabled (default) +#define RADIOLIB_NRF24_DPL_P4_ON 0b00010000 // 4 4 enabled +#define RADIOLIB_NRF24_DPL_P3_OFF 0b00000000 // 3 3 dynamic payload length on pipe 3: disabled (default) +#define RADIOLIB_NRF24_DPL_P3_ON 0b00001000 // 3 3 enabled +#define RADIOLIB_NRF24_DPL_P2_OFF 0b00000000 // 2 2 dynamic payload length on pipe 2: disabled (default) +#define RADIOLIB_NRF24_DPL_P2_ON 0b00000100 // 2 2 enabled +#define RADIOLIB_NRF24_DPL_P1_OFF 0b00000000 // 1 1 dynamic payload length on pipe 1: disabled (default) +#define RADIOLIB_NRF24_DPL_P1_ON 0b00000010 // 1 1 enabled +#define RADIOLIB_NRF24_DPL_P0_OFF 0b00000000 // 0 0 dynamic payload length on pipe 0: disabled (default) +#define RADIOLIB_NRF24_DPL_P0_ON 0b00000001 // 0 0 enabled +#define RADIOLIB_NRF24_DPL_ALL_OFF 0b00000000 // 5 0 disable all dynamic payloads +#define RADIOLIB_NRF24_DPL_ALL_ON 0b00111111 // 5 0 enable all dynamic payloads // NRF24_REG_FEATURE -#define NRF24_DPL_OFF 0b00000000 // 2 2 dynamic payload length: disabled (default) -#define NRF24_DPL_ON 0b00000100 // 2 2 enabled -#define NRF24_ACK_PAY_OFF 0b00000000 // 1 1 payload with ACK packets: disabled (default) -#define NRF24_ACK_PAY_ON 0b00000010 // 1 1 enabled -#define NRF24_DYN_ACK_OFF 0b00000000 // 0 0 payloads without ACK: disabled (default) -#define NRF24_DYN_ACK_ON 0b00000001 // 0 0 enabled +#define RADIOLIB_NRF24_DPL_OFF 0b00000000 // 2 2 dynamic payload length: disabled (default) +#define RADIOLIB_NRF24_DPL_ON 0b00000100 // 2 2 enabled +#define RADIOLIB_NRF24_ACK_PAY_OFF 0b00000000 // 1 1 payload with ACK packets: disabled (default) +#define RADIOLIB_NRF24_ACK_PAY_ON 0b00000010 // 1 1 enabled +#define RADIOLIB_NRF24_DYN_ACK_OFF 0b00000000 // 0 0 payloads without ACK: disabled (default) +#define RADIOLIB_NRF24_DYN_ACK_ON 0b00000001 // 0 0 enabled /*! \class nRF24 @@ -191,6 +191,8 @@ class nRF24: public PhysicalLayer { */ nRF24(Module* mod); + Module* getMod(); + // basic methods /*!