29 #include <mraa/gpio.h>
36 #define EN_RXADDR 0x02
38 #define SETUP_RETR 0x04
42 #define OBSERVE_TX 0x08
44 #define RX_ADDR_P0 0x0A
45 #define RX_ADDR_P1 0x0B
46 #define RX_ADDR_P2 0x0C
47 #define RX_ADDR_P3 0x0D
48 #define RX_ADDR_P4 0x0E
49 #define RX_ADDR_P5 0x0F
57 #define FIFO_STATUS 0x17
102 #define R_REGISTER 0x00
103 #define W_REGISTER 0x20
104 #define REGISTER_MASK 0x1F
105 #define R_RX_PAYLOAD 0x61
106 #define W_TX_PAYLOAD 0xA0
107 #define FLUSH_TX 0xE1
108 #define FLUSH_RX 0xE2
109 #define REUSE_TX_PL 0xE3
115 #define RF_PWR_HIGH 2
119 #define _CONFIG ((1<<EN_CRC) | (0<<CRCO) )
121 #define MAX_BUFFER 32
127 #define BLE_MAC_0 0xEF
128 #define BLE_MAC_1 0xFF
129 #define BLE_MAC_2 0xC0
130 #define BLE_MAC_3 0xAA
131 #define BLE_MAC_4 0x18
132 #define BLE_MAC_5 0x00
134 #define BLE_PAYLOAD_OFFSET 13
138 typedef void (* funcPtrVoidVoid) ();
204 void init (uint8_t chipSelect, uint8_t chipEnable);
216 void send (uint8_t * value);
300 void setChannel (uint8_t channel);
302 void setPower (power_t power);
304 uint8_t setSpeedRate (speed_rate_t rate);
325 mraa_result_t
ceLow ();
330 mraa_result_t
csOn ();
335 mraa_result_t
csOff ();
359 void writeBytes (uint8_t * dataout, uint8_t * datain, uint8_t len);
363 void setRegister (uint8_t reg, uint8_t value);
367 uint8_t getRegister (uint8_t reg);
371 void readRegister (uint8_t reg, uint8_t * value, uint8_t len);
375 void writeRegister (uint8_t reg, uint8_t * value, uint8_t len);
379 void sendCommand (uint8_t cmd);
381 void bleCrc (
const uint8_t* data, uint8_t len, uint8_t* dst);
383 void bleWhiten (uint8_t* data, uint8_t len, uint8_t whitenCoeff);
385 void blePacketEncode(uint8_t* packet, uint8_t len, uint8_t chan);
387 uint8_t swapbits (uint8_t a);
389 mraa_spi_context m_spi;
396 uint8_t m_localAddress[5];
398 mraa_gpio_context m_csnPinCtx;
399 mraa_gpio_context m_cePinCtx;
bool rxFifoEmpty()
Definition: nrf24l01.cxx:217
uint8_t m_bleBuffer[32]
Definition: nrf24l01.h:352
bool dataReady()
Definition: nrf24l01.cxx:164
void txFlushBuffer()
Definition: nrf24l01.cxx:335
void configure()
Definition: nrf24l01.cxx:92
void sendBeaconingMsg(uint8_t *msg)
Definition: nrf24l01.cxx:377
void send()
Definition: nrf24l01.cxx:137
void powerDown()
Definition: nrf24l01.cxx:243
void setBroadcastAddress(uint8_t *addr)
Definition: nrf24l01.cxx:154
void init(uint8_t chipSelect, uint8_t chipEnable)
Definition: nrf24l01.cxx:56
void rxPowerUp()
Definition: nrf24l01.cxx:223
mraa_result_t csOn()
Definition: nrf24l01.cxx:317
void getData(uint8_t *data)
Definition: nrf24l01.cxx:192
std::string name()
Definition: nrf24l01.h:193
void setDestinationAddress(uint8_t *addr)
Definition: nrf24l01.cxx:149
void rxFlushBuffer()
Definition: nrf24l01.cxx:232
mraa_result_t csOff()
Definition: nrf24l01.cxx:322
void setBeaconingMode()
Definition: nrf24l01.cxx:340
mraa_result_t ceLow()
Definition: nrf24l01.cxx:312
funcPtrVoidVoid dataRecievedHandler
Definition: nrf24l01.h:354
void setPayload(uint8_t load)
Definition: nrf24l01.cxx:159
uint8_t m_txBuffer[MAX_BUFFER]
Definition: nrf24l01.h:351
void txPowerUp()
Definition: nrf24l01.cxx:237
bool dataSending()
Definition: nrf24l01.cxx:177
C++ API for NRF24l01 transceiver module.
Definition: nrf24l01.h:176
mraa_result_t ceHigh()
Definition: nrf24l01.cxx:307
void pollListener()
Definition: nrf24l01.cxx:327
uint8_t getStatus()
Definition: nrf24l01.cxx:212
NRF24L01(uint8_t cs, uint8_t ce)
Definition: nrf24l01.cxx:34
void setSourceAddress(uint8_t *addr)
Definition: nrf24l01.cxx:142
uint8_t m_rxBuffer[MAX_BUFFER]
Definition: nrf24l01.h:350
~NRF24L01()
Definition: nrf24l01.cxx:39