Enhanced ShockBurst (ESB) is a basic protocol supporting two-way data packet communication including packet buffering, packet acknowledgment and automatic retransmission of lost packets. More...
Data Structures | |
struct | nrf_esb_address_t |
Enhanced ShockBurst addresses. More... | |
struct | nrf_esb_payload_t |
Enhanced ShockBurst payload. More... | |
struct | nrf_esb_evt_t |
Enhanced ShockBurst event. More... | |
struct | nrf_esb_config_t |
Main nrf_esb configuration struct. More... | |
Typedefs | |
typedef void(* | nrf_esb_event_handler_t )(nrf_esb_evt_t const *p_event) |
Definition of the event handler for the module. | |
Enumerations | |
enum | nrf_esb_protocol_t { NRF_ESB_PROTOCOL_ESB, NRF_ESB_PROTOCOL_ESB_DPL } |
Enhanced ShockBurst protocol. | |
enum | nrf_esb_mode_t { NRF_ESB_MODE_PTX, NRF_ESB_MODE_PRX } |
Enhanced ShockBurst mode. | |
enum | nrf_esb_bitrate_t { NRF_ESB_BITRATE_2MBPS = RADIO_MODE_MODE_Nrf_2Mbit, NRF_ESB_BITRATE_1MBPS = RADIO_MODE_MODE_Nrf_1Mbit, NRF_ESB_BITRATE_250KBPS = RADIO_MODE_MODE_Nrf_250Kbit, NRF_ESB_BITRATE_1MBPS_BLE = RADIO_MODE_MODE_Ble_1Mbit } |
Enhanced ShockBurst bitrate mode. More... | |
enum | nrf_esb_crc_t { NRF_ESB_CRC_16BIT = RADIO_CRCCNF_LEN_Two, NRF_ESB_CRC_8BIT = RADIO_CRCCNF_LEN_One, NRF_ESB_CRC_OFF = RADIO_CRCCNF_LEN_Disabled } |
Enhanced ShockBurst CRC modes. More... | |
enum | nrf_esb_tx_power_t { NRF_ESB_TX_POWER_4DBM = RADIO_TXPOWER_TXPOWER_Pos4dBm, NRF_ESB_TX_POWER_0DBM = RADIO_TXPOWER_TXPOWER_0dBm, NRF_ESB_TX_POWER_NEG4DBM = RADIO_TXPOWER_TXPOWER_Neg4dBm, NRF_ESB_TX_POWER_NEG8DBM = RADIO_TXPOWER_TXPOWER_Neg8dBm, NRF_ESB_TX_POWER_NEG12DBM = RADIO_TXPOWER_TXPOWER_Neg12dBm, NRF_ESB_TX_POWER_NEG16DBM = RADIO_TXPOWER_TXPOWER_Neg16dBm, NRF_ESB_TX_POWER_NEG20DBM = RADIO_TXPOWER_TXPOWER_Neg20dBm, NRF_ESB_TX_POWER_NEG30DBM = RADIO_TXPOWER_TXPOWER_Neg30dBm } |
Enhanced ShockBurst radio transmission power modes. More... | |
enum | nrf_esb_tx_mode_t { NRF_ESB_TXMODE_AUTO, NRF_ESB_TXMODE_MANUAL, NRF_ESB_TXMODE_MANUAL_START } |
Enhanced ShockBurst transmission modes. | |
enum | nrf_esb_evt_id_t { NRF_ESB_EVENT_TX_SUCCESS, NRF_ESB_EVENT_TX_FAILED, NRF_ESB_EVENT_RX_RECEIVED } |
Enhanced ShockBurst event id used to indicate the type of the event. More... | |
Functions | |
STATIC_ASSERT (32<=252) | |
uint32_t | nrf_esb_init (nrf_esb_config_t const *p_config) |
Function for initializing the Enhanced ShockBurst module. More... | |
uint32_t | nrf_esb_suspend (void) |
Function for suspending Enhanced ShockBurst. More... | |
uint32_t | nrf_esb_disable (void) |
Function for disabling Enhanced ShockBurst. More... | |
bool | nrf_esb_is_idle (void) |
Function to check if nrf_esb is idle. More... | |
uint32_t | nrf_esb_write_payload (nrf_esb_payload_t const *p_payload) |
Function to write TX or ack payload. More... | |
uint32_t | nrf_esb_read_rx_payload (nrf_esb_payload_t *p_payload) |
Function to read RX payload. More... | |
uint32_t | nrf_esb_start_tx (void) |
Function to start transmitting. More... | |
uint32_t | nrf_esb_start_rx (void) |
Function to start transmitting data in FIFO buffer. More... | |
uint32_t | nrf_esb_stop_rx (void) |
Function to stop receiving data. More... | |
uint32_t | nrf_esb_flush_tx (void) |
Function to remove remaining items from the TX buffer. More... | |
uint32_t | nrf_esb_pop_tx (void) |
Function to remove the first items from the TX buffer. More... | |
uint32_t | nrf_esb_flush_rx (void) |
Function to remove remaining items from the RX buffer. More... | |
uint32_t | nrf_esb_get_clear_interrupts (uint32_t *p_interrupts) |
Function to clear pending interrupts. More... | |
uint32_t | nrf_esb_set_address_length (uint8_t length) |
Function to set address length. More... | |
uint32_t | nrf_esb_set_base_address_0 (uint8_t const *p_addr) |
Function to set the base address 0. More... | |
uint32_t | nrf_esb_set_base_address_1 (uint8_t const *p_addr) |
Function to set the base address 1. More... | |
uint32_t | nrf_esb_set_prefixes (uint8_t const *p_prefixes, uint8_t num_pipes) |
Function to set pipe prefix addresses. More... | |
uint32_t | nrf_esb_enable_pipes (uint8_t enable_mask) |
Function to control what pipes are enabled. More... | |
uint32_t | nrf_esb_update_prefix (uint8_t pipe, uint8_t prefix) |
Function to update prefix per pipe. More... | |
uint32_t | nrf_esb_set_rf_channel (uint32_t channel) |
Function to set the channel to use for the radio. More... | |
uint32_t | nrf_esb_rf_channel_get (uint32_t *p_channel) |
Function to get the current rf_channel. More... | |
uint32_t | nrf_esb_set_tx_power (nrf_esb_tx_power_t tx_output_power) |
Function to set the radio output power. More... | |
Enhanced ShockBurst (ESB) is a basic protocol supporting two-way data packet communication including packet buffering, packet acknowledgment and automatic retransmission of lost packets.
#define ESB_EVT_IRQ SWI0_IRQn |
ESB Event IRQ number when running on a nRF51 device.
#define ESB_EVT_IRQHandler SWI0_IRQHandler |
The handler for ESB_EVT_IRQ when running on a nRF51 device.
#define NRF_ESB_ADDR_DEFAULT |
Default address configuration for ESB. Roughly equal to nRF24Lxx default (except pipe number which is only possible .
#define NRF_ESB_CRC_RESET_VALUE 0xFFFF |
CRC reset value
#define NRF_ESB_CREATE_PAYLOAD | ( | _pipe, | |
... | |||
) |
Macro to create initializer for a TX data packet.
This macro generates an initializer. It is more efficient than setting the individual parameters dynamically.
[in] | _pipe | The pipe to use for the data packet. |
[in] | ... | Comma separated list of character data to put in the TX buffer. Supported values are from 1 to 63 characters. |
#define NRF_ESB_DEFAULT_CONFIG |
Default radio parameters. Roughly equal to nRF24Lxx default parameters (except CRC which is set to 16-bit, and protocol set to DPL).
#define NRF_ESB_INT_RX_DR_MSK 0x04 |
The flag used to indicate a received packet since last event.
#define NRF_ESB_INT_TX_FAILED_MSK 0x02 |
The flag used to indicate a failiure since last event.
#define NRF_ESB_INT_TX_SUCCESS_MSK 0x01 |
The flag used to indicate a success since last event.
#define NRF_ESB_LEGACY_CONFIG |
Default legacy radio parameters, identical to nRF24L defaults.
#define NRF_ESB_MAX_PAYLOAD_LENGTH 32 |
The max size of the payload. Valid values are 1 to 252
#define NRF_ESB_PID_MAX 3 |
Maximum value for PID.
#define NRF_ESB_PID_RESET_VALUE 0xFF |
Invalid PID value which is guaranteed to not colide with any valid PID value.
#define NRF_ESB_PPI_RX_TIMEOUT 12 |
The PPI channel used for RX timeout.
PPI channel for RX timeout.
#define NRF_ESB_PPI_RX_TIMEOUT 12 |
The PPI channel used for RX timeout.
PPI channel for RX timeout.
#define NRF_ESB_PPI_TIMER_START 10 |
The PPI channel used for timer start.
PPI channel for timer start.
#define NRF_ESB_PPI_TIMER_START 10 |
The PPI channel used for timer start.
PPI channel for timer start.
#define NRF_ESB_PPI_TIMER_STOP 11 |
The PPI channel used for timer stop.
PPI Channel for timer stop.
#define NRF_ESB_PPI_TIMER_STOP 11 |
The PPI channel used for timer stop.
PPI Channel for timer stop.
#define NRF_ESB_PPI_TX_START 13 |
The PPI channel used for starting TX.
PPI channel for TX start.
#define NRF_ESB_PPI_TX_START 13 |
The PPI channel used for starting TX.
PPI channel for TX start.
#define NRF_ESB_RX_FIFO_SIZE 8 |
The size of the reception first in first out buffer.
#define NRF_ESB_SYS_TIMER NRF_TIMER2 |
The timer which will be used by the module.
System timer used by nrf_esb
#define NRF_ESB_SYS_TIMER NRF_TIMER2 |
The timer which will be used by the module.
System timer used by nrf_esb
#define NRF_ESB_SYS_TIMER_IRQ_Handler TIMER2_IRQHandler |
The handler which will be used by NRF_ESB_SYS_TIMER.
Timer IRQ handler used by nrf_esb
#define NRF_ESB_SYS_TIMER_IRQ_Handler TIMER2_IRQHandler |
The handler which will be used by NRF_ESB_SYS_TIMER.
Timer IRQ handler used by nrf_esb
#define NRF_ESB_TX_FIFO_SIZE 8 |
The size of the transmission first in first out buffer.
enum nrf_esb_bitrate_t |
enum nrf_esb_crc_t |
enum nrf_esb_evt_id_t |
enum nrf_esb_tx_power_t |
Enhanced ShockBurst radio transmission power modes.
uint32_t nrf_esb_disable | ( | void | ) |
Function for disabling Enhanced ShockBurst.
Disable the Enhanced ShockBurst module immediately. This may stop ongoing communication.
NRF_SUCCESS | Enhanced ShockBurst was disabled. |
uint32_t nrf_esb_enable_pipes | ( | uint8_t | enable_mask | ) |
Function to control what pipes are enabled.
enable_mask | Bitfield mask to control enabling or disabling pipes. Setting bit to 0 disables the pipe. Setting bit to 1 enables the pipe. |
uint32_t nrf_esb_flush_rx | ( | void | ) |
Function to remove remaining items from the RX buffer.
NRF_SUCCESS | Pending items in the RX buffer was successfully cleared. |
NRF_INVALID_STATE | Module is not initialized. |
uint32_t nrf_esb_flush_tx | ( | void | ) |
Function to remove remaining items from the TX buffer.
When this function is run, the TX fifo buffer will be cleared.
NRF_SUCCESS | Call was successful. |
NRF_ERROR_NULL | Required parameter was NULL. |
NRF_INVALID_STATE | Module is not initialized. |
uint32_t nrf_esb_get_clear_interrupts | ( | uint32_t * | p_interrupts | ) |
Function to clear pending interrupts.
[in,out] | p_interrupts | Pointer to value holding current interrupts. |
NRF_SUCCESS | Call was successful. |
NRF_ERROR_NULL | Required parameter was NULL. |
NRF_INVALID_STATE | Module is not initialized. |
uint32_t nrf_esb_init | ( | nrf_esb_config_t const * | p_config | ) |
Function for initializing the Enhanced ShockBurst module.
p_config | Parameters for initializing the module. |
NRF_SUCCESS | Initialization successful. |
NRF_ERROR_NULL | The argument parameters was NULL. |
NRF_ERROR_BUSY | Function failed because radio is busy. |
bool nrf_esb_is_idle | ( | void | ) |
Function to check if nrf_esb is idle.
idle | state True if nrf_esb is idle, otherwise false. |
uint32_t nrf_esb_pop_tx | ( | void | ) |
Function to remove the first items from the TX buffer.
NRF_SUCCESS | Call was successful. |
NRF_INVALID_STATE | Module is not initialized. |
NRF_ERROR_BUFFER_EMPTY | No items in queue to remove. |
uint32_t nrf_esb_read_rx_payload | ( | nrf_esb_payload_t * | p_payload | ) |
Function to read RX payload.
[in,out] | p_payload | Pointer to structure containing information and state of payload. |
NRF_SUCCESS | Data read successfully. |
NRF_ERROR_NULL | Required parameter was NULL. |
NRF_INVALID_STATE | Module is not initialized. |
uint32_t nrf_esb_rf_channel_get | ( | uint32_t * | p_channel | ) |
Function to get the current rf_channel.
[in,out] | p_channel | Pointer to data channel data. |
NRF_SUCCESS | Call was successful. |
NRF_ERROR_NULL | Required parameter was NULL. |
uint32_t nrf_esb_set_address_length | ( | uint8_t | length | ) |
Function to set address length.
[in] | length | Length in bytes for esb address |
NRF_SUCCESS | Call was successful. |
NRF_ERROR_INVALID_PARAM | Invalid address length |
NRF_ERROR_BUSY | Function failed because radio is busy. |
uint32_t nrf_esb_set_base_address_0 | ( | uint8_t const * | p_addr | ) |
Function to set the base address 0.
[in] | p_addr | Pointer to the address data. |
NRF_SUCCESS | Call was successful. |
NRF_ERROR_BUSY | Function failed because radio is busy. |
NRF_ERROR_NULL | Required parameter was NULL. |
uint32_t nrf_esb_set_base_address_1 | ( | uint8_t const * | p_addr | ) |
Function to set the base address 1.
[in] | p_addr | Pointer to the address data. |
NRF_SUCCESS | Call was successful. |
NRF_ERROR_BUSY | Function failed because radio is busy. |
NRF_ERROR_NULL | Required parameter was NULL. |
uint32_t nrf_esb_set_prefixes | ( | uint8_t const * | p_prefixes, |
uint8_t | num_pipes | ||
) |
Function to set pipe prefix addresses.
[in] | p_prefixes | Pointer to char array containing prefixes for pipe 0 to 7. |
num_pipes | Number of pipes to set. |
NRF_SUCCESS | Call was successful. |
NRF_ERROR_BUSY | Function failed because radio is busy. |
NRF_ERROR_NULL | Required parameter was NULL. |
NRF_ERROR_INVALID_PARAM | Invalid pipe number given. |
uint32_t nrf_esb_set_rf_channel | ( | uint32_t | channel | ) |
Function to set the channel to use for the radio.
[in] | channel | Channel to use for radio. |
NRF_SUCCESS | Call was successful. |
NRF_INVALID_STATE | Module is not initialized. |
NRF_ERROR_BUSY | Module was not in idle state. |
NRF_ERROR_INVALID_PARAM | Channel is invalid (larger than 125). |
uint32_t nrf_esb_set_tx_power | ( | nrf_esb_tx_power_t | tx_output_power | ) |
Function to set the radio output power.
[in] | tx_output_power | Output power. |
NRF_SUCCESS | Call was successful. |
NRF_ERROR_BUSY | Function failed because radio is busy. |
uint32_t nrf_esb_start_rx | ( | void | ) |
Function to start transmitting data in FIFO buffer.
NRF_SUCCESS | RX started successfully. |
NRF_ERROR_BUSY | Function failed because radio is busy. |
uint32_t nrf_esb_start_tx | ( | void | ) |
Function to start transmitting.
NRF_SUCCESS | TX started successfully. |
NRF_ESB_ERROR_TX_FIFO_EMPTY | TX won't start because FIFO buffer is empty. |
NRF_ERROR_BUSY | Function failed because radio is busy. |
uint32_t nrf_esb_stop_rx | ( | void | ) |
Function to stop receiving data.
NRF_SUCCESS | Rx started successfully. |
NRF_ERROR_BUSY | Function failed because radio is busy. |
uint32_t nrf_esb_suspend | ( | void | ) |
Function for suspending Enhanced ShockBurst.
NRF_SUCCESS | Enhanced ShockBurst was disabled. |
NRF_ERROR_BUSY | Function failed because radio is busy. |
uint32_t nrf_esb_update_prefix | ( | uint8_t | pipe, |
uint8_t | prefix | ||
) |
Function to update prefix per pipe.
pipe | Pipe to set the prefix. |
prefix | Prefix to set for pipe. |
NRF_SUCCESS | Call was successful. |
NRF_ERROR_BUSY | Function failed because radio is busy. |
NRF_ERROR_INVALID_PARAM | Invalid pipe number given. |
uint32_t nrf_esb_write_payload | ( | nrf_esb_payload_t const * | p_payload | ) |
Function to write TX or ack payload.
Function for writing a payload to be added to the queue. When the module is in PTX mode, the payload will be queued for for a regular transmission. When the module is in PRX mode, the payload will be queued for when a packet is received with ack with payload.
[in] | p_payload | Pointer to structure containing information and state of payload. |
NRF_SUCCESS | Payload was successfully queued up for writing. |
NRF_ERROR_NULL | Required parameter was NULL. |
NRF_INVALID_STATE | Module is not initialized. |
NRF_ERROR_NOT_SUPPORTED | p_payload->noack was false while selective ack was not enabled. |
NRF_ERROR_INVALID_LENGTH | Payload length was invalid (zero or larger than max allowed). |
STATIC_ASSERT | ( | 32<= | 252 | ) |
252 | The max size of the payload. Valid values are 1 to 252 |