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. | |
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 49 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 90 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 59 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 68 of file nrf24l01p.h.
Defines the automatic retransmission delay defined from end of transmission to start of next treansmission.
Definition at line 99 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 121 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 78 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 exeeded, 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. |