Low-level driver for nrf24l01+ transceiver. More...
Low-level driver for nrf24l01+ transceiver.
Files | |
| file | nrf24l01p.h | 
| file | nrf24l01p_settings.h | 
| Low-level driver for nrf24l01+ transceiver.  | |
| file | nrf24l01p_ng_types.h | 
| Definitions of user visible types for the NRF24L01+ (NG) device driver.  | |
Data Structures | |
| struct | nrf24l01p_t | 
| Structure that represents the hardware setup of the nrf24l01+ transceiver.  More... | |
Functions | |
| int | nrf24l01p_read_reg (const nrf24l01p_t *dev, char reg, char *answer) | 
| Read one register of the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_write_reg (const nrf24l01p_t *dev, char reg, char write) | 
| Write one register to the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_init (nrf24l01p_t *dev, spi_t spi, gpio_t ce, gpio_t csn, gpio_t irq) | 
| Initialize the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_on (const nrf24l01p_t *dev) | 
| Power on the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_off (const nrf24l01p_t *dev) | 
| Power off the nrf24l01+ transceiver.  More... | |
| void | nrf24l01p_transmit (const nrf24l01p_t *dev) | 
| Transmit payload laying in TX FIFO of the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_read_payload (const nrf24l01p_t *dev, char *answer, unsigned int size) | 
| Read payload from RX FIFO of the nrf24l01+ transceiver.  More... | |
| void | nrf24l01p_register (nrf24l01p_t *dev, unsigned int *pid) | 
| Register a given ID to the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_enable_dynamic_payload (const nrf24l01p_t *dev, nrf24l01p_rx_pipe_t pipe) | 
| Enable dynamic payload for the pipe on give nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_enable_dynamic_ack (const nrf24l01p_t *dev) | 
| Enable dynamic ack for the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_unregister (nrf24l01p_t *dev, unsigned int pid) | 
| Unregister the nrf24l01+ transceiver from his ID.  More... | |
| void | nrf24l01p_get_id (const nrf24l01p_t *dev, unsigned int *pid) | 
| Get ID from the nrf24l01p transceiver.  More... | |
| void | nrf24l01p_start (const nrf24l01p_t *dev) | 
| Start searching packets while in RX mode.  More... | |
| void | nrf24l01p_stop (const nrf24l01p_t *dev) | 
| Stop searching packets while in RX mode.  More... | |
| int | nrf24l01p_preload (const nrf24l01p_t *dev, char *data, unsigned int size) | 
| Preload TX FIFO with payload to transmit.  More... | |
| int | nrf24l01p_set_channel (const nrf24l01p_t *dev, uint8_t chan) | 
| Set the RF channel for the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_set_address_width (const nrf24l01p_t *dev, nrf24l01p_aw_t aw) | 
| Set the address width for the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_set_payload_width (const nrf24l01p_t *dev, nrf24l01p_rx_pipe_t pipe, uint8_t width) | 
| Set the RX payload width for the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_set_tx_address (const nrf24l01p_t *dev, const uint8_t *saddr, unsigned int length) | 
| Set the TX address for the nrf24l01+ transceiver (byte array).  More... | |
| int | nrf24l01p_set_tx_address_long (const nrf24l01p_t *dev, uint64_t saddr, unsigned int length) | 
| Set the TX address for the nrf24l01+ transceiver (long int).  More... | |
| int | nrf24l01p_set_rx_address (const nrf24l01p_t *dev, nrf24l01p_rx_pipe_t pipe, const uint8_t *saddr, unsigned int length) | 
| Set the RX address for the nrf24l01+ transceiver (byte array).  More... | |
| int | nrf24l01p_set_rx_address_long (const nrf24l01p_t *dev, nrf24l01p_rx_pipe_t pipe, uint64_t saddr, unsigned int length) | 
| Set the RX address for the nrf24l01+ transceiver (long int).  More... | |
| uint64_t | nrf24l01p_get_tx_address_long (const nrf24l01p_t *dev) | 
| Get the TX address for the nrf24l01+ transceiver (long int).  More... | |
| uint64_t | nrf24l01p_get_rx_address_long (const nrf24l01p_t *dev, nrf24l01p_rx_pipe_t pipe) | 
| Get the RX address for the nrf24l01+ transceiver (long int).  More... | |
| int | nrf24l01p_set_datarate (const nrf24l01p_t *dev, nrf24l01p_dr_t dr) | 
| Get the TX address for the nrf24l01+ transceiver (long int).  More... | |
| int | nrf24l01p_get_status (const nrf24l01p_t *dev) | 
| Get the status (register) of the nrf24l01+ transceiver device.  More... | |
| int | nrf24l01p_set_power (const nrf24l01p_t *dev, int pwr) | 
| Set the transmit power for the nrf24l01+ transceiver device.  More... | |
| int | nrf24l01p_get_power (const nrf24l01p_t *dev) | 
| Get the transmit power for the nrf24l01+ transceiver device.  More... | |
| int | nrf24l01p_set_txmode (const nrf24l01p_t *dev) | 
| Set the nrf24l01+ into TX mode.  More... | |
| int | nrf24l01p_set_rxmode (const nrf24l01p_t *dev) | 
| Set the nrf24l01+ into RX mode.  More... | |
| int | nrf24l01p_reset_all_interrupts (const nrf24l01p_t *dev) | 
| Reset all interrupts on the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_reset_interrupts (const nrf24l01p_t *dev, char intrs) | 
| Reset interrupts on the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_mask_interrupt (const nrf24l01p_t *dev, char intr) | 
| Mask one interrupt on the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_unmask_interrupt (const nrf24l01p_t *dev, char intr) | 
| Unmask one interrupt on the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_enable_pipe (const nrf24l01p_t *dev, nrf24l01p_rx_pipe_t pipe) | 
| Enable RX datapipe on the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_disable_pipe (const nrf24l01p_t *dev, nrf24l01p_rx_pipe_t pipe) | 
| Disable RX datapipe on the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_disable_crc (const nrf24l01p_t *dev) | 
| Disable CRC error detection on the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_enable_crc (const nrf24l01p_t *dev, nrf24l01p_crc_t crc) | 
| Enable CRC error detection on the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_setup_auto_ack (const nrf24l01p_t *dev, nrf24l01p_rx_pipe_t pipe, nrf24l01p_retransmit_delay_t delay_retrans, char count_retrans) | 
| Setup and enable automatic ACK and retransmission on the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_disable_all_auto_ack (const nrf24l01p_t *dev) | 
| Disable automatic ACK on the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_flush_tx_fifo (const nrf24l01p_t *dev) | 
| Flush TX FIFO on the nrf24l01+ transceiver.  More... | |
| int | nrf24l01p_flush_rx_fifo (const nrf24l01p_t *dev) | 
| Flush RX FIFO on the nrf24l01+ transceiver.  More... | |
| void | nrf24l01p_rx_cb (void *arg) | 
| Callback that is called when interrupt occurs on interrupt pin from the nrf24l01+ transceiver.  More... | |
| enum nrf24l01p_aw_t | 
Defines the address width of the nrf24l01+ transceiver.
| Enumerator | |
|---|---|
| NRF24L01P_AW_3BYTE | address width is 3 Byte  | 
| NRF24L01P_AW_4BYTE | address width is 4 Byte  | 
| NRF24L01P_AW_5BYTE | address width is 5 Byte  | 
Definition at line 48 of file nrf24l01p.h.
| enum nrf24l01p_crc_t | 
Defines the error detection encoding scheme for the nrf24l01p transceiver.
| Enumerator | |
|---|---|
| NRF24L01P_CRC_1BYTE | encoding scheme generates 1 Byte redundancy  | 
| NRF24L01P_CRC_2BYTE | encoding scheme generates 2 Bytes redundancy  | 
Definition at line 88 of file nrf24l01p.h.
| enum nrf24l01p_dr_t | 
Defines the RF datarate.
| Enumerator | |
|---|---|
| NRF24L01P_DR_250KBS | datarate is 250 kbps  | 
| NRF24L01P_DR_1MBS | datarate is 1 Mbps  | 
| NRF24L01P_DR_2MBS | datarate is 2 Mbps  | 
Definition at line 57 of file nrf24l01p.h.
| enum nrf24l01p_pwr_t | 
Defines the RF power level.
| Enumerator | |
|---|---|
| NRF24L01P_PWR_N18DBM | power is -18dBm  | 
| NRF24L01P_PWR_N12DBM | power is -12dBm  | 
| NRF24L01P_PWR_N6DBM | power is - 6dBm  | 
| NRF24L01P_PWR_0DBM | power is 0dBm  | 
Definition at line 66 of file nrf24l01p.h.
Defines the automatic retransmission delay defined from end of transmission to start of next treansmission.
Definition at line 97 of file nrf24l01p.h.
| enum nrf24l01p_rx_event_t | 
Defines states for the nrf24l01+ transceiver.
| Enumerator | |
|---|---|
| RCV_PKT_NRF24L01P | transceiver received data  | 
Definition at line 119 of file nrf24l01p.h.
| enum nrf24l01p_rx_pipe_t | 
Defines the datapipe on which the receiver searches for packets.
| Enumerator | |
|---|---|
| NRF24L01P_PIPE0 | RX pipe 0.  | 
| NRF24L01P_PIPE1 | RX pipe 1.  | 
| NRF24L01P_PIPE2 | RX pipe 2.  | 
| NRF24L01P_PIPE3 | RX pipe 3.  | 
| NRF24L01P_PIPE4 | RX pipe 4.  | 
| NRF24L01P_PIPE5 | RX pipe 5.  | 
Definition at line 76 of file nrf24l01p.h.
| int nrf24l01p_disable_all_auto_ack | ( | const nrf24l01p_t * | dev | ) | 
Disable automatic ACK on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| int nrf24l01p_disable_crc | ( | const nrf24l01p_t * | dev | ) | 
Disable CRC error detection on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| int nrf24l01p_disable_pipe | ( | const nrf24l01p_t * | dev, | 
| nrf24l01p_rx_pipe_t | pipe | ||
| ) | 
Disable RX datapipe on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| [in] | pipe | RX pipe to disable. | 
| int nrf24l01p_enable_crc | ( | const nrf24l01p_t * | dev, | 
| nrf24l01p_crc_t | crc | ||
| ) | 
Enable CRC error detection on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| [in] | crc | Length of cyclic redundancy check (type nrf24l01p_crc_t). | 
| int nrf24l01p_enable_dynamic_ack | ( | const nrf24l01p_t * | dev | ) | 
Enable dynamic ack for the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| int nrf24l01p_enable_dynamic_payload | ( | const nrf24l01p_t * | dev, | 
| nrf24l01p_rx_pipe_t | pipe | ||
| ) | 
Enable dynamic payload for the pipe on give nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| [in] | pipe | RX pipe for which dynamic payload is enabled | 
| int nrf24l01p_enable_pipe | ( | const nrf24l01p_t * | dev, | 
| nrf24l01p_rx_pipe_t | pipe | ||
| ) | 
Enable RX datapipe on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| [in] | pipe | RX pipe to enable. | 
| int nrf24l01p_flush_rx_fifo | ( | const nrf24l01p_t * | dev | ) | 
Flush RX FIFO on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| int nrf24l01p_flush_tx_fifo | ( | const nrf24l01p_t * | dev | ) | 
Flush TX FIFO on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| void nrf24l01p_get_id | ( | const nrf24l01p_t * | dev, | 
| unsigned int * | pid | ||
| ) | 
Get ID from the nrf24l01p transceiver.
| [in] | dev | Transceiver device to use. | 
| [in] | pid | Transceiver ID. | 
| int nrf24l01p_get_power | ( | const nrf24l01p_t * | dev | ) | 
Get the transmit power for the nrf24l01+ transceiver device.
| [in] | dev | Transceiver device to use. | 
| uint64_t nrf24l01p_get_rx_address_long | ( | const nrf24l01p_t * | dev, | 
| nrf24l01p_rx_pipe_t | pipe | ||
| ) | 
Get the RX address for the nrf24l01+ transceiver (long int).
| [in] | dev | Transceiver device to use. | 
| [in] | pipe | RX pipe to get the address from. | 
| int nrf24l01p_get_status | ( | const nrf24l01p_t * | dev | ) | 
Get the status (register) of the nrf24l01+ transceiver device.
| [in] | dev | Transceiver device to use.s of the. | 
| uint64_t nrf24l01p_get_tx_address_long | ( | const nrf24l01p_t * | dev | ) | 
Get the TX address for the nrf24l01+ transceiver (long int).
| [in] | dev | Transceiver device to use. | 
| int nrf24l01p_init | ( | nrf24l01p_t * | dev, | 
| spi_t | spi, | ||
| gpio_t | ce, | ||
| gpio_t | csn, | ||
| gpio_t | irq | ||
| ) | 
Initialize the nrf24l01+ transceiver.
@ note This function initializes the transceiver so that it is ready to use.
| [in] | dev | Transceiver device to use. | 
| [in] | spi | SPI device to use. | 
| [in] | ce | GPIO pin to use for chip enable. | 
| [in] | csn | GPIO pin to use for chip select. | 
| [in] | irq | GPIO pin to use for interrupt request. | 
| int nrf24l01p_mask_interrupt | ( | const nrf24l01p_t * | dev, | 
| char | intr | ||
| ) | 
Mask one interrupt on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| [in] | intr | Transceiver device to use. | 
| int nrf24l01p_off | ( | const nrf24l01p_t * | dev | ) | 
Power off the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| int nrf24l01p_on | ( | const nrf24l01p_t * | dev | ) | 
Power on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| int nrf24l01p_preload | ( | const nrf24l01p_t * | dev, | 
| char * | data, | ||
| unsigned int | size | ||
| ) | 
Preload TX FIFO with payload to transmit.
| [in] | dev | Transceiver device to use. | 
| [in] | data | Buffer to preload. | 
| [in] | size | Number of bytes in buffer. For nrf24l01+ e.g. 32 | 
| int nrf24l01p_read_payload | ( | const nrf24l01p_t * | dev, | 
| char * | answer, | ||
| unsigned int | size | ||
| ) | 
Read payload from RX FIFO of the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| [in] | answer | Buffer to receive bytes to. | 
| [in] | size | Number of bytes to transfer. For nrf24l01+ in general 32. | 
| int nrf24l01p_read_reg | ( | const nrf24l01p_t * | dev, | 
| char | reg, | ||
| char * | answer | ||
| ) | 
Read one register of the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| [in] | reg | Register address to read from. | 
| [in] | answer | Byte to read. | 
| void nrf24l01p_register | ( | nrf24l01p_t * | dev, | 
| unsigned int * | pid | ||
| ) | 
Register a given ID to the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| [in] | pid | ID to register. | 
| int nrf24l01p_reset_all_interrupts | ( | const nrf24l01p_t * | dev | ) | 
Reset all interrupts on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| int nrf24l01p_reset_interrupts | ( | const nrf24l01p_t * | dev, | 
| char | intrs | ||
| ) | 
Reset interrupts on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| [in] | intrs | Interrupt mask to reset | 
| void nrf24l01p_rx_cb | ( | void * | arg | ) | 
Callback that is called when interrupt occurs on interrupt pin from the nrf24l01+ transceiver.
| [in] | arg | Used to pass transceiver device "dev". | 
| int nrf24l01p_set_address_width | ( | const nrf24l01p_t * | dev, | 
| nrf24l01p_aw_t | aw | ||
| ) | 
Set the address width for the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| [in] | aw | Address width (type nrf24l01p_aw_t). | 
| int nrf24l01p_set_channel | ( | const nrf24l01p_t * | dev, | 
| uint8_t | chan | ||
| ) | 
Set the RF channel for the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| [in] | chan | Buffer to preload. | 
| int nrf24l01p_set_datarate | ( | const nrf24l01p_t * | dev, | 
| nrf24l01p_dr_t | dr | ||
| ) | 
Get the TX address for the nrf24l01+ transceiver (long int).
| [in] | dev | Transceiver device to use. | 
| [in] | dr | Datarate (of type nrf24l01p_dr_t). | 
| int nrf24l01p_set_payload_width | ( | const nrf24l01p_t * | dev, | 
| nrf24l01p_rx_pipe_t | pipe, | ||
| uint8_t | width | ||
| ) | 
Set the RX payload width for the nrf24l01+ transceiver.
@ note This function sets the payload width for one packet. If the maximum of 32 bytes is exceeded, this value is set to 32.
| [in] | dev | Transceiver device to use. | 
| [in] | pipe | RX pipe to set the payload width. | 
| [in] | width | Number of bytes per packet in RX payload. | 
| int nrf24l01p_set_power | ( | const nrf24l01p_t * | dev, | 
| int | pwr | ||
| ) | 
Set the transmit power for the nrf24l01+ transceiver device.
| [in] | dev | Transceiver device to use. | 
| [in] | pwr | TX power for the nrf24l01p transceiver. | 
| int nrf24l01p_set_rx_address | ( | const nrf24l01p_t * | dev, | 
| nrf24l01p_rx_pipe_t | pipe, | ||
| const uint8_t * | saddr, | ||
| unsigned int | length | ||
| ) | 
Set the RX address for the nrf24l01+ transceiver (byte array).
| [in] | dev | Transceiver device to use. | 
| [in] | pipe | RX pipe to set the address. | 
| [in] | saddr | Byte array which holds the RX address. | 
| [in] | length | Number of bytes in address array. | 
| int nrf24l01p_set_rx_address_long | ( | const nrf24l01p_t * | dev, | 
| nrf24l01p_rx_pipe_t | pipe, | ||
| uint64_t | saddr, | ||
| unsigned int | length | ||
| ) | 
Set the RX address for the nrf24l01+ transceiver (long int).
| [in] | dev | Transceiver device to use. | 
| [in] | pipe | RX pipe to set the address. | 
| [in] | saddr | Long integer which holds the RX address in LSBs. | 
| [in] | length | Number of relevant bytes in uint64_t. | 
| int nrf24l01p_set_rxmode | ( | const nrf24l01p_t * | dev | ) | 
Set the nrf24l01+ into RX mode.
| [in] | dev | Transceiver device to use. | 
| int nrf24l01p_set_tx_address | ( | const nrf24l01p_t * | dev, | 
| const uint8_t * | saddr, | ||
| unsigned int | length | ||
| ) | 
Set the TX address for the nrf24l01+ transceiver (byte array).
| [in] | dev | Transceiver device to use. | 
| [in] | saddr | Byte array which holds the TX address. | 
| [in] | length | Number of bytes in address array. | 
| int nrf24l01p_set_tx_address_long | ( | const nrf24l01p_t * | dev, | 
| uint64_t | saddr, | ||
| unsigned int | length | ||
| ) | 
Set the TX address for the nrf24l01+ transceiver (long int).
| [in] | dev | Transceiver device to use. | 
| [in] | saddr | Long integer which holds the TX address in LSBs. | 
| [in] | length | Number of relevant bytes in uint64_t. | 
| int nrf24l01p_set_txmode | ( | const nrf24l01p_t * | dev | ) | 
Set the nrf24l01+ into TX mode.
| [in] | dev | Transceiver device to use. | 
| int nrf24l01p_setup_auto_ack | ( | const nrf24l01p_t * | dev, | 
| nrf24l01p_rx_pipe_t | pipe, | ||
| nrf24l01p_retransmit_delay_t | delay_retrans, | ||
| char | count_retrans | ||
| ) | 
Setup and enable automatic ACK and retransmission on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| [in] | pipe | RX pipe to setup auto ack. | 
| [in] | delay_retrans | Automatic retransmission delay (type nrf24l01p_retransmit_delay_t) | 
| [in] | count_retrans | Auto retransmit count. | 
| void nrf24l01p_start | ( | const nrf24l01p_t * | dev | ) | 
Start searching packets while in RX mode.
| [in] | dev | Transceiver device to use. | 
| void nrf24l01p_stop | ( | const nrf24l01p_t * | dev | ) | 
Stop searching packets while in RX mode.
| [in] | dev | Transceiver device to use. | 
| void nrf24l01p_transmit | ( | const nrf24l01p_t * | dev | ) | 
Transmit payload laying in TX FIFO of the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| int nrf24l01p_unmask_interrupt | ( | const nrf24l01p_t * | dev, | 
| char | intr | ||
| ) | 
Unmask one interrupt on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| [in] | intr | Transceiver device to use. | 
| int nrf24l01p_unregister | ( | nrf24l01p_t * | dev, | 
| unsigned int | pid | ||
| ) | 
Unregister the nrf24l01+ transceiver from his ID.
| [in] | dev | Transceiver device to use. | 
| [in] | pid | Actual ID to unregister. | 
| int nrf24l01p_write_reg | ( | const nrf24l01p_t * | dev, | 
| char | reg, | ||
| char | write | ||
| ) | 
Write one register to the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. | 
| [in] | reg | Register address to write to. | 
| [in] | write | Byte to write. |