Skip to content

Commit 966c5d7

Browse files
Yveauxtekka007
authored andcommitted
Nrf24 lowlevel (#1192)
* Implemented nRF24 constant carrier wave For testing purposes only! Not used by regular MySensors stack. * Please Jenkins for unused functions * Add RPD retrieval
1 parent cff3696 commit 966c5d7

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

drivers/RF24/RF24.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,13 @@ LOCAL void RF24_disableConstantCarrierWave(void)
432432
RF24_setRFSetup(RF24_RF_SETUP);
433433
}
434434

435+
LOCAL bool RF24_getReceivedPowerDetector(void)
436+
{
437+
// nRF24L01+ only. nRF24L01 contains a carrier detect function (same register & bit) which works
438+
// slightly different and takes at least 128us to become active.
439+
return (RF24_readByteRegister(RF24_REG_RPD) & _BV(RF24_RPD)) != 0;
440+
}
441+
435442
#if defined(MY_RX_MESSAGE_BUFFER_FEATURE)
436443
LOCAL void RF24_irqHandler(void)
437444
{

drivers/RF24/RF24.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,11 @@ LOCAL void RF24_enableConstantCarrierWave(void) __attribute__((unused));
400400
* @brief Stop generating a constant carrier wave (for testing only).
401401
*/
402402
LOCAL void RF24_disableConstantCarrierWave(void) __attribute__((unused));
403-
403+
/**
404+
* @brief Retrieve latched RPD power level, in receive mode (for testing, nRF24L01+ only).
405+
* @return True when power level >-64dBm for more than 40us.
406+
*/
407+
LOCAL bool RF24_getReceivedPowerDetector(void) __attribute__((unused));
404408

405409
#if defined(MY_RX_MESSAGE_BUFFER_FEATURE)
406410
/**

drivers/RF24/RF24registers.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@
5656
#define RF24_REG_RF_SETUP (0x06)
5757
#define RF24_REG_STATUS (0x07)
5858
#define RF24_REG_OBSERVE_TX (0x08)
59-
#define RF24_REG_CD (0x09)
59+
#define RF24_REG_RPD (0x09) // nRF24L01+
60+
#define RF24_REG_CD (RF24_REG_RPD) // nRF24L01
6061
#define RF24_REG_RX_ADDR_P0 (0x0A)
6162
#define RF24_REG_RX_ADDR_P1 (0x0B)
6263
#define RF24_REG_RX_ADDR_P2 (0x0C)
@@ -79,7 +80,6 @@
7980

8081
// instructions
8182
#define RF24_CMD_READ_REGISTER (0x00)
82-
#define RF24_CMD_RPD (0x09)
8383
#define RF24_CMD_WRITE_REGISTER (0x20)
8484
#define RF24_CMD_ACTIVATE (0x50)
8585
#define RF24_CMD_READ_RX_PL_WID (0x60)
@@ -144,6 +144,8 @@
144144
#define RF24_TX_EMPTY (4)
145145
#define RF24_RX_FULL (1)
146146
#define RF24_RX_EMPTY (0)
147+
#define RF24_RPD (0) // nRF24L01+
148+
#define RF24_CD (RF24_RPD) // nRF24L01
147149

148150
// features
149151
#define RF24_EN_DPL (2)

0 commit comments

Comments
 (0)