|
|
@@ -88,12 +88,7 @@ uint8_t Nrf24L01::init() {
|
|
|
// reg - number of register to read
|
|
|
// return: value of register
|
|
|
uint8_t Nrf24L01::readReg(uint8_t reg) {
|
|
|
- uint8_t value;
|
|
|
- PIN_LOW(_spiManager->_csn_port, _spiManager->_csn_pin);
|
|
|
- value = _spiManager->SPI_ReadReg(reg & nRF24_MASK_REG_MAP);
|
|
|
- PIN_HIGH(_spiManager->_csn_port, _spiManager->_csn_pin);
|
|
|
-
|
|
|
- return value;
|
|
|
+ return _spiManager->SPI_ReadReg(reg & nRF24_MASK_REG_MAP);
|
|
|
}
|
|
|
|
|
|
// Write a new value to register
|
|
|
@@ -104,7 +99,7 @@ void Nrf24L01::writeReg(uint8_t reg, uint8_t value) {
|
|
|
PIN_LOW(_spiManager->_csn_port, _spiManager->_csn_pin);
|
|
|
if (reg < nRF24_CMD_W_REGISTER) {
|
|
|
// This is a register access
|
|
|
- _spiManager->SPI_WritedReg((nRF24_CMD_W_REGISTER | (reg & nRF24_MASK_REG_MAP)), value);
|
|
|
+ _spiManager->SPI_WritedRegNoCSN((nRF24_CMD_W_REGISTER | (reg & nRF24_MASK_REG_MAP)), value);
|
|
|
|
|
|
} else {
|
|
|
// This is a single byte command or future command/register
|
|
|
@@ -118,27 +113,6 @@ void Nrf24L01::writeReg(uint8_t reg, uint8_t value) {
|
|
|
PIN_HIGH(_spiManager->_csn_port, _spiManager->_csn_pin);
|
|
|
}
|
|
|
|
|
|
-// Read a multi-byte register
|
|
|
-// input:
|
|
|
-// reg - number of register to read
|
|
|
-// pBuf - pointer to the buffer for register data
|
|
|
-// count - number of bytes to read
|
|
|
-void Nrf24L01::readMBReg(uint8_t reg, uint8_t *pBuf, uint8_t count) {
|
|
|
- PIN_LOW(_spiManager->_csn_port, _spiManager->_csn_pin);
|
|
|
- _spiManager->SPI_ReadRegMulti(reg, pBuf, nRF24_CMD_NOP, count);
|
|
|
- PIN_HIGH(_spiManager->_csn_port, _spiManager->_csn_pin);
|
|
|
-}
|
|
|
-
|
|
|
-// Write a multi-byte register
|
|
|
-// input:
|
|
|
-// reg - number of register to write
|
|
|
-// pBuf - pointer to the buffer with data to write
|
|
|
-// count - number of bytes to write
|
|
|
-void Nrf24L01::writeMBReg(uint8_t reg, uint8_t *pBuf, uint8_t count) {
|
|
|
- PIN_LOW(_spiManager->_csn_port, _spiManager->_csn_pin);
|
|
|
- _spiManager->SPI_WriteRegMulti(reg, pBuf, count);
|
|
|
- PIN_HIGH(_spiManager->_csn_port, _spiManager->_csn_pin);
|
|
|
-}
|
|
|
|
|
|
// 1 - nRF24L01 is online and responding
|
|
|
// 0 - received sequence differs from original
|
|
|
@@ -155,8 +129,8 @@ uint8_t Nrf24L01::doCheck(void) {
|
|
|
uint8_t *ptr = (uint8_t *)nRF24_TEST_ADDR;
|
|
|
|
|
|
// Write test TX address and read TX_ADDR register
|
|
|
- writeMBReg(nRF24_CMD_W_REGISTER | nRF24_REG_TX_ADDR, ptr, 5);
|
|
|
- readMBReg(nRF24_CMD_R_REGISTER | nRF24_REG_TX_ADDR, rxbuf, 5);
|
|
|
+ _spiManager->SPI_WriteRegMulti(nRF24_CMD_W_REGISTER | nRF24_REG_TX_ADDR, ptr, 5);
|
|
|
+ _spiManager->SPI_ReadRegMulti(nRF24_CMD_R_REGISTER | nRF24_REG_TX_ADDR, rxbuf, nRF24_CMD_NOP, 5);
|
|
|
|
|
|
// Compare buffers, return error on first mismatch
|
|
|
for (i = 0; i < 5; i++) {
|
|
|
@@ -466,17 +440,12 @@ void Nrf24L01::clearIRQFlags(void) {
|
|
|
// pBuf - pointer to the buffer with payload data
|
|
|
// length - payload length in bytes
|
|
|
void Nrf24L01::writePayload(uint8_t *pBuf, uint8_t length) {
|
|
|
- writeMBReg(nRF24_CMD_W_TX_PAYLOAD, pBuf, length);
|
|
|
+ _spiManager->SPI_WriteRegMulti(nRF24_CMD_W_TX_PAYLOAD, pBuf, length);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
uint8_t Nrf24L01::getRxDplPayloadWidth() {
|
|
|
- uint8_t value;
|
|
|
-
|
|
|
- PIN_LOW(_spiManager->_csn_port, _spiManager->_csn_pin);
|
|
|
- value = _spiManager->SPI_ReadReg(nRF24_CMD_R_RX_PL_WID);
|
|
|
- PIN_HIGH(_spiManager->_csn_port, _spiManager->_csn_pin);
|
|
|
-
|
|
|
- return value;
|
|
|
+ return _spiManager->SPI_ReadReg(nRF24_CMD_R_RX_PL_WID);
|
|
|
}
|
|
|
|
|
|
nRF24_RXResult Nrf24L01::readPayloadGeneric(uint8_t *pBuf, uint8_t *length, uint8_t dpl) {
|
|
|
@@ -499,7 +468,7 @@ nRF24_RXResult Nrf24L01::readPayloadGeneric(uint8_t *pBuf, uint8_t *length, uint
|
|
|
|
|
|
// Read a payload from the RX FIFO
|
|
|
if (*length) {
|
|
|
- readMBReg(nRF24_CMD_R_RX_PAYLOAD, pBuf, *length);
|
|
|
+ _spiManager->SPI_ReadRegMulti(nRF24_CMD_R_RX_PAYLOAD, pBuf, nRF24_CMD_NOP, *length);
|
|
|
}
|
|
|
|
|
|
return ((nRF24_RXResult)pipe);
|
|
|
@@ -531,9 +500,7 @@ uint8_t Nrf24L01::getFeatures() {
|
|
|
}
|
|
|
|
|
|
void Nrf24L01::activateFeatures() {
|
|
|
- PIN_LOW(_spiManager->_csn_port, _spiManager->_csn_pin);
|
|
|
_spiManager->SPI_WritedReg(nRF24_CMD_ACTIVATE, 0x73);
|
|
|
- PIN_HIGH(_spiManager->_csn_port, _spiManager->_csn_pin);
|
|
|
}
|
|
|
|
|
|
void Nrf24L01::writeAckPayload(nRF24_RXResult pipe, char *payload, uint8_t length) {
|