This module contains the driver for the NRF24L01+ (NG) 2.4 GHz transceiver. More...
This module contains the driver for the NRF24L01+ (NG) 2.4 GHz transceiver.
Files | |
| file | nrf24l01p_ng.h | 
| Public interface for NRF24L01+ (NG) devices.  | |
| file | gnrc_netif_nrf24l01p_ng.h | 
| NRF24L01+ (NG) adaptation for Network interface API.  | |
| file | nrf24l01p_ng_communication.h | 
| Functions to communicate with the NRF24L01+ (NG) transceiver via SPI.  | |
| file | nrf24l01p_ng_constants.h | 
| Constants from the datasheet of the NRF24L01+ (NG) transceiver.  | |
| file | nrf24l01p_ng_diagnostics.h | 
| Functions to print NRF24L01+ (NG) debug information.  | |
| file | nrf24l01p_ng_netdev.h | 
| Netdev driver interface for NRF24L01+ (NG) device driver.  | |
| file | nrf24l01p_ng_params.h | 
| Board specific configuration for all NRF24L01+ (NG) devices.  | |
| file | nrf24l01p_ng_registers.h | 
| Register map of NRF24L01+ (NG) devices.  | |
| file | nrf24l01p_ng_states.h | 
| Operation states of NRF24L01+ (NG) devices.  | |
Data Structures | |
| struct | nrf24l01p_ng_cfg_t | 
| Struct that holds all active configuration values.  More... | |
| struct | nrf24l01p_ng_params_t | 
| Struct of NRF24L01+ initialization parameters.  More... | |
| struct | nrf24l01p_ng | 
| NRF24L01+ device struct.  More... | |
Macros | |
| #define | NRF24L01P_NG_MIN_ADDR_WIDTH (3) | 
| Minimum width of a NRF24L01+ layer-2 address.  | |
| #define | NRF24L01P_NG_MAX_ADDR_WIDTH (5) | 
| Maximum width of a NRF24L01+ layer-2 address.  | |
| #define | NRF24L01P_NG_ADDR_WIDTH NRF24L01P_NG_MAX_ADDR_WIDTH | 
| Pass the compiler a definition of NRF24L01P_NG_ADDR_WIDTH to configure the layer-2 address width of this transceiver.  | |
| #define | NRF24L01P_NG_BROADCAST_ADDR { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } | 
| Agreed layer-2 address to send broadcast frames to.  More... | |
| #define | NRF24L01P_NG_ADDR_P0(dev) ((dev)->arxaddr.rx_addr_long[NRF24L01P_NG_P0]) | 
| Shortcut to access the address of pipe 0.  | |
| #define | NRF24L01P_NG_ADDR_P1(dev) ((dev)->arxaddr.rx_addr_long[NRF24L01P_NG_P1]) | 
| Shortcut to access the address of pipe 1.  | |
| #define | NRF24L01P_NG_ADDR_PX_LSB(dev, pipe) ((dev)->arxaddr.rx_addr_short[(pipe) - 2]) | 
| Shortcut to access the least significant byte of the addresses pipe 2, pipe 3, pipe 4 or pipe 5.  More... | |
Functions | |
| int | nrf24l01p_ng_setup (nrf24l01p_ng_t *dev, const nrf24l01p_ng_params_t *params, uint8_t index) | 
| Setup the NRF24L01+ driver, but perform no initialization.  More... | |
| int | nrf24l01p_ng_set_enable_pipe (nrf24l01p_ng_t *dev, nrf24l01p_ng_pipe_t pipe, bool enable) | 
Enable or disable data pipe pipe.  More... | |
| int | nrf24l01p_ng_get_enable_pipe (nrf24l01p_ng_t *dev, nrf24l01p_ng_pipe_t pipe, bool *enable) | 
Query if data pipe pipe is enabled.  More... | |
| int | nrf24l01p_ng_set_air_data_rate (nrf24l01p_ng_t *dev, nrf24l01p_ng_rfdr_t data_rate) | 
| Configure air data rate.  More... | |
| uint16_t | nrf24l01p_ng_get_air_data_rate (const nrf24l01p_ng_t *dev, nrf24l01p_ng_rfdr_t *data_rate) | 
| Get currently configured data rate.  More... | |
| int | nrf24l01p_ng_set_crc (nrf24l01p_ng_t *dev, nrf24l01p_ng_crc_t crc) | 
| Configure CRC length.  More... | |
| uint8_t | nrf24l01p_ng_get_crc (const nrf24l01p_ng_t *dev, nrf24l01p_ng_crc_t *crc) | 
| Get currently configured CRC length.  More... | |
| int | nrf24l01p_ng_set_tx_power (nrf24l01p_ng_t *dev, nrf24l01p_ng_tx_power_t power) | 
| Configure Tx trasceiver power.  More... | |
| int8_t | nrf24l01p_ng_get_tx_power (const nrf24l01p_ng_t *dev, nrf24l01p_ng_tx_power_t *power) | 
| Get currently configured Tx transceiver power.  More... | |
| int | nrf24l01p_ng_set_channel (nrf24l01p_ng_t *dev, uint8_t channel) | 
| Set transceiver channel.  More... | |
| uint8_t | nrf24l01p_ng_get_channel (const nrf24l01p_ng_t *dev) | 
| Get currently configured transceiver channel.  More... | |
| int | nrf24l01p_ng_set_rx_address (nrf24l01p_ng_t *dev, const uint8_t *addr, nrf24l01p_ng_pipe_t pipe) | 
| Set Rx address of a certain data pipe.  More... | |
| int | nrf24l01p_ng_get_rx_address (const nrf24l01p_ng_t *dev, uint8_t *addr, nrf24l01p_ng_pipe_t pipe) | 
| Get current Rx address of a certain data pipe.  More... | |
| int | nrf24l01p_ng_set_max_retransm (nrf24l01p_ng_t *dev, uint8_t max_rt) | 
| Configure maximum number of retransmissions for ESB.  More... | |
| uint8_t | nrf24l01p_ng_get_max_retransm (const nrf24l01p_ng_t *dev) | 
| Get currently configured number of maximum retransmissions for ESB.  More... | |
| int | nrf24l01p_ng_set_retransm_delay (nrf24l01p_ng_t *dev, nrf24l01p_ng_ard_t rt_delay) | 
| Set retransmission delay for ESB.  More... | |
| uint16_t | nrf24l01p_ng_get_retransm_delay (const nrf24l01p_ng_t *dev, nrf24l01p_ng_ard_t *rt_delay) | 
| Get retransmission delay for ESB.  More... | |
| int | nrf24l01p_ng_set_state (nrf24l01p_ng_t *dev, nrf24l01p_ng_state_t state) | 
| Put device into sleep mode(NRF24L01P_NG_STATE_POWER_DOWN), standby mode (NRF24L01P_NG_STATE_STANDBY_1), or Rx mode (NRF24L01P_NG_STATE_RX_MODE)  More... | |
| nrf24l01p_ng_state_t | nrf24l01p_ng_get_state (const nrf24l01p_ng_t *dev) | 
| Get current device state.  More... | |
| void | nrf24l01p_ng_eui_get (const netdev_t *dev, uint8_t *eui) | 
| Retrieve a unique layer-2 address for an nrf24l01p_ng instance.  More... | |
| #define NRF24L01P_NG_ADDR_PX_LSB | ( | dev, | |
| pipe | |||
| ) | ((dev)->arxaddr.rx_addr_short[(pipe) - 2]) | 
Shortcut to access the least significant byte of the addresses pipe 2, pipe 3, pipe 4 or pipe 5.
The other bytes are shared with the address of pipe 1
Definition at line 84 of file nrf24l01p_ng.h.
| #define NRF24L01P_NG_BROADCAST_ADDR { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } | 
Agreed layer-2 address to send broadcast frames to.
The broadcast address will be assigned to pipe 0.
Definition at line 66 of file nrf24l01p_ng.h.
| void nrf24l01p_ng_eui_get | ( | const netdev_t * | dev, | 
| uint8_t * | eui | ||
| ) | 
Retrieve a unique layer-2 address for an nrf24l01p_ng instance.
| [in] | dev | The device descriptor of the transceiver | 
| [out] | eui | Destination to write the address to | 
| uint16_t nrf24l01p_ng_get_air_data_rate | ( | const nrf24l01p_ng_t * | dev, | 
| nrf24l01p_ng_rfdr_t * | data_rate | ||
| ) | 
Get currently configured data rate.
| [in] | dev | NRF24L01+ device handle | 
| [out] | data_rate | Configuration data rate value (may be NULL) | 
| uint8_t nrf24l01p_ng_get_channel | ( | const nrf24l01p_ng_t * | dev | ) | 
Get currently configured transceiver channel.
| [in] | dev | NRF24L01+ device handle | 
| uint8_t nrf24l01p_ng_get_crc | ( | const nrf24l01p_ng_t * | dev, | 
| nrf24l01p_ng_crc_t * | crc | ||
| ) | 
Get currently configured CRC length.
| [in] | dev | NRF24L01+ device handle | 
| [out] | crc | Configuration crc value (may be NULL) | 
| int nrf24l01p_ng_get_enable_pipe | ( | nrf24l01p_ng_t * | dev, | 
| nrf24l01p_ng_pipe_t | pipe, | ||
| bool * | enable | ||
| ) | 
Query if data pipe pipe is enabled. 
| [in] | dev | NRF24L01+ device handle | 
| [in] | pipe | Pipe index | 
| [out] | enable | If pipe is enabled or disabled | 
| 0 | Success | 
| -EINVAL | Bad pipe index | 
| uint8_t nrf24l01p_ng_get_max_retransm | ( | const nrf24l01p_ng_t * | dev | ) | 
Get currently configured number of maximum retransmissions for ESB.
| [in] | dev | NRF24L01+ device handle | 
| uint16_t nrf24l01p_ng_get_retransm_delay | ( | const nrf24l01p_ng_t * | dev, | 
| nrf24l01p_ng_ard_t * | rt_delay | ||
| ) | 
Get retransmission delay for ESB.
| [in] | dev | NRF24L01+ device handle | 
| [out] | rt_delay | Configuration retransmission delay value | 
| int nrf24l01p_ng_get_rx_address | ( | const nrf24l01p_ng_t * | dev, | 
| uint8_t * | addr, | ||
| nrf24l01p_ng_pipe_t | pipe | ||
| ) | 
Get current Rx address of a certain data pipe.
addr must be at least NRF24L01P_NG_ADDR_WIDTH wide.
| [in] | dev | NRF24L01+ device handle | 
| [out] | addr | Rx address | 
| [in] | pipe | Pipe index | 
| -EINVAL | Bad pipe index | 
| nrf24l01p_ng_state_t nrf24l01p_ng_get_state | ( | const nrf24l01p_ng_t * | dev | ) | 
Get current device state.
| [in] | dev | NRf24L01+ device handle | 
| int8_t nrf24l01p_ng_get_tx_power | ( | const nrf24l01p_ng_t * | dev, | 
| nrf24l01p_ng_tx_power_t * | power | ||
| ) | 
Get currently configured Tx transceiver power.
| [in] | dev | NRF24L01+ device handle | 
| [out] | power | Configuration Tx power value | 
| int nrf24l01p_ng_set_air_data_rate | ( | nrf24l01p_ng_t * | dev, | 
| nrf24l01p_ng_rfdr_t | data_rate | ||
| ) | 
Configure air data rate.
| [in] | dev | NRF24L01+ device handle | 
| [in] | data_rate | Data rate configuration value | 
| 0 | Success | 
| -EINVAL | Bad data rate value | 
| -EAGAIN | Current state does not permit changing data rate | 
| int nrf24l01p_ng_set_channel | ( | nrf24l01p_ng_t * | dev, | 
| uint8_t | channel | ||
| ) | 
Set transceiver channel.
| [in] | dev | NRF24l01+ device handle | 
| [in] | channel | Channel [0; 15] | 
| 0 | Success | 
| -EINVAL | Bad channel | 
| -EAGAIN | Current state does not permit switching channel | 
| int nrf24l01p_ng_set_crc | ( | nrf24l01p_ng_t * | dev, | 
| nrf24l01p_ng_crc_t | crc | ||
| ) | 
Configure CRC length.
| [in] | dev | NRF24L01+ device handle | 
| [in] | crc | Configuration CRC value | 
| 0 | Success | 
| -EINVAL | Bad CRC configuration value | 
| -ENOTSUP | CRC length not supported | 
| -EAGAIN | Current state does not permit changing CRC length | 
| int nrf24l01p_ng_set_enable_pipe | ( | nrf24l01p_ng_t * | dev, | 
| nrf24l01p_ng_pipe_t | pipe, | ||
| bool | enable | ||
| ) | 
Enable or disable data pipe pipe. 
     If @p pipe should be enabled, it is advised to
     set an address in advance.
     @see nrf24l01p_ng_set_rx_addr
     For Enhanced ShockBurst, auto ACK and dynamic
     payload length are enabled
 | [in] | dev | NRF24L01+ device handle | 
| [in] | pipe | Pipe index | 
| [in] | enable | If pipe should be enabled or disabled | 
| 0 | Success | 
| -EINVAL | Bad pipe index | 
| int nrf24l01p_ng_set_max_retransm | ( | nrf24l01p_ng_t * | dev, | 
| uint8_t | max_rt | ||
| ) | 
Configure maximum number of retransmissions for ESB.
| [in] | dev | NRF24L01+ device handle | 
| [in] | max_rt | Number of maximum retransmissions [0; 15] | 
| 0 | Success | 
| -EINVAL | Unsupported number of retransmissions | 
| -EAGAIN | Current state does not permit changing the maximum number of retransmissions | 
| int nrf24l01p_ng_set_retransm_delay | ( | nrf24l01p_ng_t * | dev, | 
| nrf24l01p_ng_ard_t | rt_delay | ||
| ) | 
Set retransmission delay for ESB.
| [in] | dev | NRF24L01+ device handle | 
| [in] | rt_delay | Configuration retransmission delay value | 
| int nrf24l01p_ng_set_rx_address | ( | nrf24l01p_ng_t * | dev, | 
| const uint8_t * | addr, | ||
| nrf24l01p_ng_pipe_t | pipe | ||
| ) | 
Set Rx address of a certain data pipe.
If you want to set the address of pipe 2, 3, 4 or 5 you only set the LSB because the other bytes are equal to the address of pipe 1.
For pipe 0 and 1 NRF24L01P_NG_ADDR_WIGTH bytes are expected
| [in] | dev | NRF24L01+ device handle | 
| [in] | addr | Rx address | 
| [in] | pipe | Pipe index | 
| 0 | Success | 
| -EINVAL | Bad address length | 
| int nrf24l01p_ng_set_state | ( | nrf24l01p_ng_t * | dev, | 
| nrf24l01p_ng_state_t | state | ||
| ) | 
Put device into sleep mode(NRF24L01P_NG_STATE_POWER_DOWN), standby mode (NRF24L01P_NG_STATE_STANDBY_1), or Rx mode (NRF24L01P_NG_STATE_RX_MODE)
| [in] | dev | NRF24L01+ device handle | 
| [in] | state | State | 
| -EAGAIN | Device is currently not permitted to change state | 
| -ENOTSUP | Device is not permitted to change state to state  | 
| int nrf24l01p_ng_set_tx_power | ( | nrf24l01p_ng_t * | dev, | 
| nrf24l01p_ng_tx_power_t | power | ||
| ) | 
Configure Tx trasceiver power.
| [in] | dev | NRf24L01+ device handle | 
| [in] | power | Configuration Tx power value | 
| 0 | Success | 
| -EINVAL | Bad Tx power configuration value | 
| -EAGAIN | Current state does not permit changing Tx power | 
| int nrf24l01p_ng_setup | ( | nrf24l01p_ng_t * | dev, | 
| const nrf24l01p_ng_params_t * | params, | ||
| uint8_t | index | ||
| ) | 
Setup the NRF24L01+ driver, but perform no initialization.
netdev_driver_t::init can be used after this call to initialize the transceiver.
| [in] | dev | NRF24L01+ device handle | 
| [in] | params | Parameters of the device to setup | 
| [in] | index | Index of params in a global parameter struct array. If initialized manually, pass a unique identifier instead. | 
| 0 | Device successfully set up |