[nRF24] Update to 5.0.0
This commit is contained in:
parent
eb9903f183
commit
a229912789
6 changed files with 286 additions and 284 deletions
|
@ -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!"));
|
||||
|
||||
|
|
|
@ -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!"));
|
||||
|
||||
|
|
|
@ -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!"));
|
||||
|
||||
|
|
|
@ -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!"));
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
/*!
|
||||
|
|
Loading…
Add table
Reference in a new issue