Events

APIs related to events.

Macros

#define RAIL_EVENTS_NONE   0ULL
 Value representing no events.
 
#define RAIL_EVENT_RSSI_AVERAGE_DONE   (1ULL << RAIL_EVENT_RSSI_AVERAGE_DONE_SHIFT)
 Occurs when the hardware-averaged RSSI is done.
 
#define RAIL_EVENT_RX_ACK_TIMEOUT   (1ULL << RAIL_EVENT_RX_ACK_TIMEOUT_SHIFT)
 Notifies the application when searching for an ack packet has timed out.
 
#define RAIL_EVENT_RX_FIFO_ALMOST_FULL   (1ULL << RAIL_EVENT_RX_FIFO_ALMOST_FULL_SHIFT)
 Occurs when the receive FIFO exceeds the configured threshold value.
 
#define RAIL_EVENT_RX_PACKET_RECEIVED   (1ULL << RAIL_EVENT_RX_PACKET_RECEIVED_SHIFT)
 Occurs whenever a packet is received.
 
#define RAIL_EVENT_RX_PREAMBLE_LOST   (1ULL << RAIL_EVENT_RX_PREAMBLE_LOST_SHIFT)
 Occurs when the radio has lost a preamble.
 
#define RAIL_EVENT_RX_PREAMBLE_DETECT   (1ULL << RAIL_EVENT_RX_PREAMBLE_DETECT_SHIFT)
 Occurs when the radio has detected a preamble.
 
#define RAIL_EVENT_RX_SYNC1_DETECT   (1ULL << RAIL_EVENT_RX_SYNC1_DETECT_SHIFT)
 Occurs when the first sync word is detected.
 
#define RAIL_EVENT_RX_SYNC2_DETECT   (1ULL << RAIL_EVENT_RX_SYNC2_DETECT_SHIFT)
 Occurs when the second sync word is detected.
 
#define RAIL_EVENT_RX_FRAME_ERROR   (1ULL << RAIL_EVENT_RX_FRAME_ERROR_SHIFT)
 Occurs when a packet being received has a frame error.
 
#define RAIL_EVENT_RX_FIFO_OVERFLOW   (1ULL << RAIL_EVENT_RX_FIFO_OVERFLOW_SHIFT)
 Occurs when RX buffer is full.
 
#define RAIL_EVENT_RX_ADDRESS_FILTERED   (1ULL << RAIL_EVENT_RX_ADDRESS_FILTERED_SHIFT)
 Occurs when a packet's address does not match the filtering settings.
 
#define RAIL_EVENT_RX_TIMEOUT   (1ULL << RAIL_EVENT_RX_TIMEOUT_SHIFT)
 Occurs when an RX event times out.
 
#define RAIL_EVENT_RX_SCHEDULED_RX_END   (1ULL << RAIL_EVENT_RX_SCHEDULED_RX_END_SHIFT)
 Occurs when the scheduled RX window ends.
 
#define RAIL_EVENT_RX_PACKET_ABORTED   (1ULL << RAIL_EVENT_RX_PACKET_ABORTED_SHIFT)
 Occurs when a packet is aborted, but a more specific reason (such as RAIL_EVENT_RX_ADDRESS_FILTERED) isn't known.
 
#define RAIL_EVENT_RX_FILTER_PASSED   (1ULL << RAIL_EVENT_RX_FILTER_PASSED_SHIFT)
 Occurs when the packet has passed any configured address and frame filtering options.
 
#define RAIL_EVENT_RX_TIMING_LOST   (1ULL << RAIL_EVENT_RX_TIMING_LOST_SHIFT)
 Occurs when the modem timing is lost.
 
#define RAIL_EVENT_RX_TIMING_DETECT   (1ULL << RAIL_EVENT_RX_TIMING_DETECT_SHIFT)
 Occurs when the modem timing is detected.
 
#define RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND   (1ULL << RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND_SHIFT)
 Indicates a Data Request is being received when using IEEE 802.15.4 functionality.
 
#define RAIL_EVENTS_RX_COMPLETION
 This mask indicates all of the events that determine the end of a received packet.
 
#define RAIL_EVENT_TX_FIFO_ALMOST_EMPTY   (1ULL << RAIL_EVENT_TX_FIFO_ALMOST_EMPTY_SHIFT)
 Occurs when the number of bytes in the transmit FIFO was above the configured threshold, and falls to a value at or below the threshold value.
 
#define RAIL_EVENT_TX_PACKET_SENT   (1ULL << RAIL_EVENT_TX_PACKET_SENT_SHIFT)
 Occurs when a packet was sent.
 
#define RAIL_EVENT_TXACK_PACKET_SENT   (1ULL << RAIL_EVENT_TXACK_PACKET_SENT_SHIFT)
 Occurs when an ack packet was sent.
 
#define RAIL_EVENT_TX_ABORTED   (1ULL << RAIL_EVENT_TX_ABORTED_SHIFT)
 Occurs when a transmit is aborted by the user.
 
#define RAIL_EVENT_TXACK_ABORTED   (1ULL << RAIL_EVENT_TXACK_ABORTED_SHIFT)
 Occurs when an ack transmit is aborted by the user.
 
#define RAIL_EVENT_TX_BLOCKED   (1ULL << RAIL_EVENT_TX_BLOCKED_SHIFT)
 Occurs when a transmit is blocked from occurring due to having called RAIL_EnableTxHoldOff().
 
#define RAIL_EVENT_TXACK_BLOCKED   (1ULL << RAIL_EVENT_TXACK_BLOCKED_SHIFT)
 Occurs when an ack transmit is blocked from occurring due to having called RAIL_EnableTxHoldOff().
 
#define RAIL_EVENT_TX_UNDERFLOW   (1ULL << RAIL_EVENT_TX_UNDERFLOW_SHIFT)
 Occurs when the transmit buffer underflows.
 
#define RAIL_EVENT_TXACK_UNDERFLOW   (1ULL << RAIL_EVENT_TXACK_UNDERFLOW_SHIFT)
 Occurs when the ack transmit buffer underflows.
 
#define RAIL_EVENT_TX_CHANNEL_CLEAR   (1ULL << RAIL_EVENT_TX_CHANNEL_CLEAR_SHIFT)
 Occurs when Carrier Sense Mulitple Access (CSMA) or Listen Before Talk (LBT) succeeds.
 
#define RAIL_EVENT_TX_CHANNEL_BUSY   (1ULL << RAIL_EVENT_TX_CHANNEL_BUSY_SHIFT)
 Occurs when Carrier Sense Mulitple Access (CSMA) or Listen Before Talk (LBT) fails.
 
#define RAIL_EVENT_TX_CCA_RETRY   (1ULL << RAIL_EVENT_TX_CCA_RETRY_SHIFT)
 Occurs during CSMA or LBT when an individual Clear Channel Assessment (CCA) check failed, but there are more tries needed before the overall operation completes.
 
#define RAIL_EVENT_TX_START_CCA   (1ULL << RAIL_EVENT_TX_START_CCA_SHIFT)
 Occurs when a Clear Channel Assessment (CCA) check begins.
 
#define RAIL_EVENTS_TX_COMPLETION
 This mask indicates all of the events that determine the end of a transmitted packet.
 
#define RAIL_EVENTS_TXACK_COMPLETION
 This mask indicates all of the events that determine the end of a transmitted ack packet.
 
#define RAIL_EVENT_CONFIG_UNSCHEDULED   (1ULL << RAIL_EVENT_CONFIG_UNSCHEDULED_SHIFT)
 Occurs when the scheduler switches away from this configuration.
 
#define RAIL_EVENT_CONFIG_SCHEDULED   (1ULL << RAIL_EVENT_CONFIG_SCHEDULED_SHIFT)
 Occurs when the scheduler switches to this configuration.
 
#define RAIL_EVENT_SCHEDULER_STATUS   (1ULL << RAIL_EVENT_SCHEDULER_STATUS_SHIFT)
 Occurs when the scheduler has a status to report.
 
#define RAIL_EVENT_CAL_NEEDED   (1ULL << RAIL_EVENT_CAL_NEEDED_SHIFT)
 Occurs when the application needs to run a calibration.
 
#define RAIL_EVENTS_ALL   0xFFFFFFFFFFFFFFFFULL
 Value representing all possible events.

Enumerations

enum  RAIL_Events_t {
  RAIL_EVENT_RSSI_AVERAGE_DONE_SHIFT = 0,
  RAIL_EVENT_RX_ACK_TIMEOUT_SHIFT,
  RAIL_EVENT_RX_FIFO_ALMOST_FULL_SHIFT,
  RAIL_EVENT_RX_PACKET_RECEIVED_SHIFT,
  RAIL_EVENT_RX_PREAMBLE_LOST_SHIFT,
  RAIL_EVENT_RX_PREAMBLE_DETECT_SHIFT,
  RAIL_EVENT_RX_SYNC1_DETECT_SHIFT,
  RAIL_EVENT_RX_SYNC2_DETECT_SHIFT,
  RAIL_EVENT_RX_FRAME_ERROR_SHIFT,
  RAIL_EVENT_RX_FIFO_OVERFLOW_SHIFT,
  RAIL_EVENT_RX_ADDRESS_FILTERED_SHIFT,
  RAIL_EVENT_RX_TIMEOUT_SHIFT,
  RAIL_EVENT_RX_SCHEDULED_RX_END_SHIFT,
  RAIL_EVENT_RX_PACKET_ABORTED_SHIFT,
  RAIL_EVENT_RX_FILTER_PASSED_SHIFT,
  RAIL_EVENT_RX_TIMING_LOST_SHIFT,
  RAIL_EVENT_RX_TIMING_DETECT_SHIFT,
  RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND_SHIFT,
  RAIL_EVENT_TX_FIFO_ALMOST_EMPTY_SHIFT,
  RAIL_EVENT_TX_PACKET_SENT_SHIFT,
  RAIL_EVENT_TXACK_PACKET_SENT_SHIFT,
  RAIL_EVENT_TX_ABORTED_SHIFT,
  RAIL_EVENT_TXACK_ABORTED_SHIFT,
  RAIL_EVENT_TX_BLOCKED_SHIFT,
  RAIL_EVENT_TXACK_BLOCKED_SHIFT,
  RAIL_EVENT_TX_UNDERFLOW_SHIFT,
  RAIL_EVENT_TXACK_UNDERFLOW_SHIFT,
  RAIL_EVENT_TX_CHANNEL_CLEAR_SHIFT,
  RAIL_EVENT_TX_CHANNEL_BUSY_SHIFT,
  RAIL_EVENT_TX_CCA_RETRY_SHIFT,
  RAIL_EVENT_TX_START_CCA_SHIFT,
  RAIL_EVENT_CONFIG_UNSCHEDULED_SHIFT,
  RAIL_EVENT_CONFIG_SCHEDULED_SHIFT,
  RAIL_EVENT_SCHEDULER_STATUS_SHIFT,
  RAIL_EVENT_CAL_NEEDED_SHIFT
}
 RAIL events passed to event callback.

Functions

RAIL_Status_t RAIL_ConfigEvents (RAIL_Handle_t railHandle, RAIL_Events_t mask, RAIL_Events_t events)
 Configures radio events.

Detailed Description

APIs related to events.

Macro Definition Documentation

◆ RAIL_EVENT_CAL_NEEDED

#define RAIL_EVENT_CAL_NEEDED   (1ULL << RAIL_EVENT_CAL_NEEDED_SHIFT)

Occurs when the application needs to run a calibration.

The RAIL library detects when a calibration is needed. The application determines a valid window to call RAIL_Calibrate().

Definition at line 631 of file rail_types.h.

◆ RAIL_EVENT_CONFIG_SCHEDULED

#define RAIL_EVENT_CONFIG_SCHEDULED   (1ULL << RAIL_EVENT_CONFIG_SCHEDULED_SHIFT)

Occurs when the scheduler switches to this configuration.

This event can occur often in dynamic multiprotocol scenarios, and can be used to influence the stack's operation.

Definition at line 613 of file rail_types.h.

◆ RAIL_EVENT_CONFIG_UNSCHEDULED

#define RAIL_EVENT_CONFIG_UNSCHEDULED   (1ULL << RAIL_EVENT_CONFIG_UNSCHEDULED_SHIFT)

Occurs when the scheduler switches away from this configuration.

This event can occur often in dynamic multiprotocol scenarios, and can give the current stack an opportunity to release hardware resources.

Definition at line 606 of file rail_types.h.

◆ RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND

#define RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND   (1ULL << RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND_SHIFT)

Indicates a Data Request is being received when using IEEE 802.15.4 functionality.

This occurs when the command byte of an incoming frame is for a data request, which requests an ACK. This callback is called before the packet is fully received to allow the node to have more time to decide whether to set the frame pending in the outgoing ACK. This event only ever occurs if the RAIL IEEE 802.15.4 functionality is enabled, but will never occur if promiscuous mode is enabled via RAIL_IEEE802154_SetPromiscuousMode().

Call RAIL_IEEE802154_GetAddress() to get the source address of the packet.

Definition at line 441 of file rail_types.h.

◆ RAIL_EVENT_RSSI_AVERAGE_DONE

#define RAIL_EVENT_RSSI_AVERAGE_DONE   (1ULL << RAIL_EVENT_RSSI_AVERAGE_DONE_SHIFT)

Occurs when the hardware-averaged RSSI is done.

It only occurs in response to RAIL_StartAverageRssi() to indicate that the hardware has completed averaging. Call RAIL_GetAverageRssi() to get the result.

Definition at line 297 of file rail_types.h.

◆ RAIL_EVENT_RX_ACK_TIMEOUT

#define RAIL_EVENT_RX_ACK_TIMEOUT   (1ULL << RAIL_EVENT_RX_ACK_TIMEOUT_SHIFT)

Notifies the application when searching for an ack packet has timed out.

This event occurs whenever the timeout for searching for an ack packet is exceeded. This will only occur after calling RAIL_ConfigAutoAck() and transmitting a packet.

Definition at line 305 of file rail_types.h.

◆ RAIL_EVENT_RX_ADDRESS_FILTERED

#define RAIL_EVENT_RX_ADDRESS_FILTERED   (1ULL << RAIL_EVENT_RX_ADDRESS_FILTERED_SHIFT)

Occurs when a packet's address does not match the filtering settings.

After this event, the packet will not be received, and no other events should occur for the packet. This event can only occur after calling RAIL_EnableAddressFilter().

Definition at line 375 of file rail_types.h.

◆ RAIL_EVENT_RX_FIFO_ALMOST_FULL

#define RAIL_EVENT_RX_FIFO_ALMOST_FULL   (1ULL << RAIL_EVENT_RX_FIFO_ALMOST_FULL_SHIFT)

Occurs when the receive FIFO exceeds the configured threshold value.

Call RAIL_GetRxFifoBytesAvailable() to get the number of bytes available. When using this event, the threshold should be set via RAIL_SetRxFifoThreshold().

Definition at line 312 of file rail_types.h.

◆ RAIL_EVENT_RX_FIFO_OVERFLOW

#define RAIL_EVENT_RX_FIFO_OVERFLOW   (1ULL << RAIL_EVENT_RX_FIFO_OVERFLOW_SHIFT)

Occurs when RX buffer is full.

This will cause the radio to stop receiving packets until the packet causing the overflow is processed.

Definition at line 367 of file rail_types.h.

◆ RAIL_EVENT_RX_FILTER_PASSED

#define RAIL_EVENT_RX_FILTER_PASSED   (1ULL << RAIL_EVENT_RX_FILTER_PASSED_SHIFT)

Occurs when the packet has passed any configured address and frame filtering options.

This event will only occur between the start of the packet, indicated by RAIL_EVENT_RX_SYNC1_DETECT or RAIL_EVENT_RX_SYNC2_DETECT, and one of the events in the RAIL_EVENTS_RX_COMPLETION mask. This event will always occur before or concurrently with RAIL_EVENT_RX_PACKET_RECEIVED. If IEEE 802.15.4 frame and address filtering are enabled, this event will occur immediately after destination address filtering.

Definition at line 413 of file rail_types.h.

◆ RAIL_EVENT_RX_FRAME_ERROR

#define RAIL_EVENT_RX_FRAME_ERROR   (1ULL << RAIL_EVENT_RX_FRAME_ERROR_SHIFT)

Occurs when a packet being received has a frame error.

For efr32xg1x parts, frame errors include violations of variable length minimum/maximum limits and CRC errors. If RAIL_RX_OPTION_IGNORE_CRC_ERRORS is set, RAIL_EVENT_RX_FRAME_ERROR will not occur for CRC errors.

Definition at line 361 of file rail_types.h.

◆ RAIL_EVENT_RX_PACKET_RECEIVED

#define RAIL_EVENT_RX_PACKET_RECEIVED   (1ULL << RAIL_EVENT_RX_PACKET_RECEIVED_SHIFT)

Occurs whenever a packet is received.

Call RAIL_GetRxPacketInfo() to get basic packet information along with a handle to this packet for subsequent use with RAIL_PeekRxPacket(), RAIL_GetRxPacketDetails(), RAIL_HoldRxPacket(), and RAIL_ReleaseRxPacket() as needed.

If RAIL_RX_OPTION_IGNORE_CRC_ERRORS is set, this event also occurs for packets with CRC errors.

Definition at line 323 of file rail_types.h.

◆ RAIL_EVENT_RX_PREAMBLE_DETECT

#define RAIL_EVENT_RX_PREAMBLE_DETECT   (1ULL << RAIL_EVENT_RX_PREAMBLE_DETECT_SHIFT)

Occurs when the radio has detected a preamble.

This event can occur multiple times while searching for a packet, and is generally used for diagnostic purposes. This event can only occur after a RAIL_EVENT_RX_TIMING_DETECT event has already occurred.

Definition at line 339 of file rail_types.h.

◆ RAIL_EVENT_RX_PREAMBLE_LOST

#define RAIL_EVENT_RX_PREAMBLE_LOST   (1ULL << RAIL_EVENT_RX_PREAMBLE_LOST_SHIFT)

Occurs when the radio has lost a preamble.

This event can occur multiple times while searching for a packet, and is generally used for diagnostic purposes. This event can only occur after a RAIL_EVENT_RX_PREAMBLE_DETECT event has already occurred.

Definition at line 331 of file rail_types.h.

◆ RAIL_EVENT_RX_SCHEDULED_RX_END

#define RAIL_EVENT_RX_SCHEDULED_RX_END   (1ULL << RAIL_EVENT_RX_SCHEDULED_RX_END_SHIFT)

Occurs when the scheduled RX window ends.

This event only occurs in response to a scheduled receive timeout after calling RAIL_ScheduleRx(). If RAIL_ScheduleRxConfig_t::rxTransitionEndSchedule was passed as false, then this event will occur unless the receive is aborted (due to a call to RAIL_Idle() or a scheduler pre-emption, for instance). If RAIL_ScheduleRxConfig_t::rxTransitionEndSchedule was passed as true, then any of the RAIL_EVENTS_RX_COMPLETION events occurring will also cause this event to not occur, since the scheduled reeive will end with the transition at the end of the packet.

Definition at line 395 of file rail_types.h.

◆ RAIL_EVENT_RX_SYNC1_DETECT

#define RAIL_EVENT_RX_SYNC1_DETECT   (1ULL << RAIL_EVENT_RX_SYNC1_DETECT_SHIFT)

Occurs when the first sync word is detected.

After this event occurs, one of the events in the RAIL_EVENTS_RX_COMPLETION mask will occur.

Definition at line 345 of file rail_types.h.

◆ RAIL_EVENT_RX_SYNC2_DETECT

#define RAIL_EVENT_RX_SYNC2_DETECT   (1ULL << RAIL_EVENT_RX_SYNC2_DETECT_SHIFT)

Occurs when the second sync word is detected.

After this event occurs, one of the events in the RAIL_EVENTS_RX_COMPLETION mask will occur.

Definition at line 351 of file rail_types.h.

◆ RAIL_EVENT_RX_TIMEOUT

#define RAIL_EVENT_RX_TIMEOUT   (1ULL << RAIL_EVENT_RX_TIMEOUT_SHIFT)

Occurs when an RX event times out.

This event can only occur if the RAIL_StateTiming_t::rxSearchTimeout passed to RAIL_SetStateTiming() is nonzero.

Definition at line 382 of file rail_types.h.

◆ RAIL_EVENT_RX_TIMING_DETECT

#define RAIL_EVENT_RX_TIMING_DETECT   (1ULL << RAIL_EVENT_RX_TIMING_DETECT_SHIFT)

Occurs when the modem timing is detected.

This event can occur multiple times while searching for a packet, and is generally used for diagnostic purposes.

Definition at line 427 of file rail_types.h.

◆ RAIL_EVENT_RX_TIMING_LOST

#define RAIL_EVENT_RX_TIMING_LOST   (1ULL << RAIL_EVENT_RX_TIMING_LOST_SHIFT)

Occurs when the modem timing is lost.

This event can occur multiple times while searching for a packet, and is generally used for diagnostic purposes. This event can only occur after a RAIL_EVENT_RX_TIMING_DETECT event has already occurred.

Definition at line 421 of file rail_types.h.

◆ RAIL_EVENT_SCHEDULER_STATUS

#define RAIL_EVENT_SCHEDULER_STATUS   (1ULL << RAIL_EVENT_SCHEDULER_STATUS_SHIFT)

Occurs when the scheduler has a status to report.

The exact status can be found with RAIL_GetSchedulerStatus(). See RAIL_SchedulerStatus_t for more details.

Note
RAIL_GetSchedulerStatus() is only valid to call during the timeframe of the RAIL_Config_t::eventsCallback.

Definition at line 622 of file rail_types.h.

◆ RAIL_EVENT_TX_ABORTED

#define RAIL_EVENT_TX_ABORTED   (1ULL << RAIL_EVENT_TX_ABORTED_SHIFT)

Occurs when a transmit is aborted by the user.

This can occur due to calling RAIL_Idle() or due to a scheduler pre-emption.

Definition at line 494 of file rail_types.h.

◆ RAIL_EVENT_TX_CCA_RETRY

#define RAIL_EVENT_TX_CCA_RETRY   (1ULL << RAIL_EVENT_TX_CCA_RETRY_SHIFT)

Occurs during CSMA or LBT when an individual Clear Channel Assessment (CCA) check failed, but there are more tries needed before the overall operation completes.

This event can occur multiple times based on the configuration of the ongoing CSMA or LBT tranmission. This event can only happen after calling RAIL_StartCcaCsmaTx() or RAIL_StartCsmaLbtTx().

Definition at line 555 of file rail_types.h.

◆ RAIL_EVENT_TX_CHANNEL_BUSY

#define RAIL_EVENT_TX_CHANNEL_BUSY   (1ULL << RAIL_EVENT_TX_CHANNEL_BUSY_SHIFT)

Occurs when Carrier Sense Mulitple Access (CSMA) or Listen Before Talk (LBT) fails.

This event can only happen after calling RAIL_StartCcaCsmaTx() or RAIL_StartCsmaLbtTx().

Definition at line 545 of file rail_types.h.

◆ RAIL_EVENT_TX_CHANNEL_CLEAR

#define RAIL_EVENT_TX_CHANNEL_CLEAR   (1ULL << RAIL_EVENT_TX_CHANNEL_CLEAR_SHIFT)

Occurs when Carrier Sense Mulitple Access (CSMA) or Listen Before Talk (LBT) succeeds.

This event can only happen after calling RAIL_StartCcaCsmaTx() or RAIL_StartCsmaLbtTx().

Definition at line 538 of file rail_types.h.

◆ RAIL_EVENT_TX_FIFO_ALMOST_EMPTY

#define RAIL_EVENT_TX_FIFO_ALMOST_EMPTY   (1ULL << RAIL_EVENT_TX_FIFO_ALMOST_EMPTY_SHIFT)

Occurs when the number of bytes in the transmit FIFO was above the configured threshold, and falls to a value at or below the threshold value.

This event does not occur on initailization or after resetting the transmit FIFO with RAIL_ResetFifo(). Call RAIL_GetTxFifoSpaceAvailable() to get the number of bytes available in the transmit FIFO at the time of the callback dispatch. When using this event, the threshold should be set via RAIL_SetTxFifoThreshold().

Definition at line 471 of file rail_types.h.

◆ RAIL_EVENT_TX_PACKET_SENT

#define RAIL_EVENT_TX_PACKET_SENT   (1ULL << RAIL_EVENT_TX_PACKET_SENT_SHIFT)

Occurs when a packet was sent.

Call RAIL_GetTxPacketDetails() to get information about the packet that was transmitted.

Note
RAIL_GetTxPacketDetails() is only valid to call during the timeframe of the RAIL_Config_t::eventsCallback.

Definition at line 479 of file rail_types.h.

◆ RAIL_EVENT_TX_START_CCA

#define RAIL_EVENT_TX_START_CCA   (1ULL << RAIL_EVENT_TX_START_CCA_SHIFT)

Occurs when a Clear Channel Assessment (CCA) check begins.

This event can occur multiple times based on the configuration of the ongoing CSMA or LBT transmission. This event can only happen after calling RAIL_StartCcaCsmaTx() or RAIL_StartCsmaLbtTx().

Definition at line 563 of file rail_types.h.

◆ RAIL_EVENT_TX_UNDERFLOW

#define RAIL_EVENT_TX_UNDERFLOW   (1ULL << RAIL_EVENT_TX_UNDERFLOW_SHIFT)

Occurs when the transmit buffer underflows.

This can happen due to the transmitted packet specifying an unintended length based on the current radio configuration, or due to RAIL_WriteTxFifo() calls not keeping up with the transmit rate, if the entire packet isn't loaded at once.

Definition at line 522 of file rail_types.h.

◆ RAIL_EVENT_TXACK_ABORTED

#define RAIL_EVENT_TXACK_ABORTED   (1ULL << RAIL_EVENT_TXACK_ABORTED_SHIFT)

Occurs when an ack transmit is aborted by the user.

This event can only occur after calling RAIL_ConfigAutoAck(). This can occur due to calling RAIL_Idle() or due to a scheduler pre-emption.

Definition at line 501 of file rail_types.h.

◆ RAIL_EVENT_TXACK_BLOCKED

#define RAIL_EVENT_TXACK_BLOCKED   (1ULL << RAIL_EVENT_TXACK_BLOCKED_SHIFT)

Occurs when an ack transmit is blocked from occurring due to having called RAIL_EnableTxHoldOff().

This event can only occur after calling RAIL_ConfigAutoAck().

Definition at line 514 of file rail_types.h.

◆ RAIL_EVENT_TXACK_PACKET_SENT

#define RAIL_EVENT_TXACK_PACKET_SENT   (1ULL << RAIL_EVENT_TXACK_PACKET_SENT_SHIFT)

Occurs when an ack packet was sent.

Call RAIL_GetTxPacketDetails() to get information about the packet that was transmitted. This event can only occur after calling RAIL_ConfigAutoAck().

Note
RAIL_GetTxPacketDetails() is only valid to call during the timeframe of the RAIL_Config_t::eventsCallback.

Definition at line 488 of file rail_types.h.

◆ RAIL_EVENT_TXACK_UNDERFLOW

#define RAIL_EVENT_TXACK_UNDERFLOW   (1ULL << RAIL_EVENT_TXACK_UNDERFLOW_SHIFT)

Occurs when the ack transmit buffer underflows.

This can happen due to the transmitted packet specifying an unintended length based on the current radio configuration, or due to RAIL_WriteAutoAckFifo() not being called at all before an ack transmit. This event can only occur after calling RAIL_ConfigAutoAck().

Definition at line 531 of file rail_types.h.

◆ RAIL_EVENTS_RX_COMPLETION

#define RAIL_EVENTS_RX_COMPLETION
Value:
#define RAIL_EVENT_RX_FRAME_ERROR
Occurs when a packet being received has a frame error.
Definition: rail_types.h:361
#define RAIL_EVENT_RX_PACKET_RECEIVED
Occurs whenever a packet is received.
Definition: rail_types.h:323
#define RAIL_EVENT_RX_ADDRESS_FILTERED
Occurs when a packet&#39;s address does not match the filtering settings.
Definition: rail_types.h:375
#define RAIL_EVENT_RX_FIFO_OVERFLOW
Occurs when RX buffer is full.
Definition: rail_types.h:367
#define RAIL_EVENT_RX_PACKET_ABORTED
Occurs when a packet is aborted, but a more specific reason (such as RAIL_EVENT_RX_ADDRESS_FILTERED) ...
Definition: rail_types.h:401

This mask indicates all of the events that determine the end of a received packet.

After a packet has begun to be received, which is indicated by a RAIL_EVENT_RX_SYNC1_DETECT or a RAIL_EVENT_RX_SYNC2_DETECT, exactly one of the following events will occur. When one of these events occurs a state transition will take place, based on the parameter passed to RAIL_SetRxTransitions(). The RAIL_StateTransitions_t::success transition will be followed only if the RAIL_EVENT_RX_PACKET_RECEIVED event occurs. Any of the other events will trigger the RAIL_StateTransitions_t::error transition.

Definition at line 454 of file rail_types.h.

◆ RAIL_EVENTS_TX_COMPLETION

#define RAIL_EVENTS_TX_COMPLETION
Value:
#define RAIL_EVENT_TX_UNDERFLOW
Occurs when the transmit buffer underflows.
Definition: rail_types.h:522
#define RAIL_EVENT_TX_PACKET_SENT
Occurs when a packet was sent.
Definition: rail_types.h:479
#define RAIL_EVENT_TX_BLOCKED
Occurs when a transmit is blocked from occurring due to having called RAIL_EnableTxHoldOff().
Definition: rail_types.h:507
#define RAIL_EVENT_TX_CHANNEL_BUSY
Occurs when Carrier Sense Mulitple Access (CSMA) or Listen Before Talk (LBT) fails.
Definition: rail_types.h:545
#define RAIL_EVENT_TX_ABORTED
Occurs when a transmit is aborted by the user.
Definition: rail_types.h:494

This mask indicates all of the events that determine the end of a transmitted packet.

After a packet has begun to be transmitted, which is indicated by a RAIL_STATUS_NO_ERROR return value from one of the transmit functions, exactly one of the following events will occur. When one of these events occurs a state transition will take place based on the parameter passed to RAIL_SetTxTransitions(). The RAIL_StateTransitions_t::success transition will be followed only if the RAIL_EVENT_TX_PACKET_SENT event occurs. Any of the other events will trigger the RAIL_StateTransitions_t::error transition.

Definition at line 576 of file rail_types.h.

◆ RAIL_EVENTS_TXACK_COMPLETION

#define RAIL_EVENTS_TXACK_COMPLETION
Value:
#define RAIL_EVENT_TXACK_PACKET_SENT
Occurs when an ack packet was sent.
Definition: rail_types.h:488
#define RAIL_EVENT_TXACK_ABORTED
Occurs when an ack transmit is aborted by the user.
Definition: rail_types.h:501
#define RAIL_EVENT_TXACK_UNDERFLOW
Occurs when the ack transmit buffer underflows.
Definition: rail_types.h:531
#define RAIL_EVENT_TXACK_BLOCKED
Occurs when an ack transmit is blocked from occurring due to having called RAIL_EnableTxHoldOff().
Definition: rail_types.h:514

This mask indicates all of the events that determine the end of a transmitted ack packet.

After an ack packet has begun to be transmitted, which occurs after an ack-requesting receive, exactly one of the following events will occur. When one of these events occurs a state transition will take place based on the RAIL_AutoAckConfig_t::rxTransitions passed to RAIL_ConfigAutoAck(). The receive transitions are used because the transmitted ack packet is considered a part of the ack-requesting received packet. The RAIL_StateTransitions_t::success transition will be followed only if the RAIL_EVENT_TXACK_PACKET_SENT event occurs. Any of the other events will trigger the RAIL_StateTransitions_t::error transition.

Definition at line 594 of file rail_types.h.

Enumeration Type Documentation

◆ RAIL_Events_t

RAIL events passed to event callback.

More than one event may be indicated due to interrupt latency.

Enumerator
RAIL_EVENT_RSSI_AVERAGE_DONE_SHIFT 

Shift position of RAIL_EVENT_RSSI_AVERAGE_DONE bit.

RAIL_EVENT_RX_ACK_TIMEOUT_SHIFT 

Shift position of RAIL_EVENT_RX_ACK_TIMEOUT bit.

RAIL_EVENT_RX_FIFO_ALMOST_FULL_SHIFT 

Shift position of RAIL_EVENT_RX_FIFO_ALMOST_FULL bit.

RAIL_EVENT_RX_PACKET_RECEIVED_SHIFT 

Shift position of RAIL_EVENT_RX_PACKET_RECEIVED bit.

RAIL_EVENT_RX_PREAMBLE_LOST_SHIFT 

Shift position of RAIL_EVENT_RX_PREAMBLE_LOST bit.

RAIL_EVENT_RX_PREAMBLE_DETECT_SHIFT 

Shift position of RAIL_EVENT_RX_PREAMBLE_DETECT bit.

RAIL_EVENT_RX_SYNC1_DETECT_SHIFT 

Shift position of RAIL_EVENT_RX_SYNC1_DETECT bit.

RAIL_EVENT_RX_SYNC2_DETECT_SHIFT 

Shift position of RAIL_EVENT_RX_SYNC2_DETECT bit.

RAIL_EVENT_RX_FRAME_ERROR_SHIFT 

Shift position of RAIL_EVENT_RX_FRAME_ERROR bit.

RAIL_EVENT_RX_FIFO_OVERFLOW_SHIFT 

Shift position of RAIL_EVENT_RX_FIFO_OVERFLOW bit.

RAIL_EVENT_RX_ADDRESS_FILTERED_SHIFT 

Shift position of RAIL_EVENT_RX_ADDRESS_FILTERED bit.

RAIL_EVENT_RX_TIMEOUT_SHIFT 

Shift position of RAIL_EVENT_RX_TIMEOUT bit.

RAIL_EVENT_RX_SCHEDULED_RX_END_SHIFT 

Shift position of RAIL_EVENT_RX_SCHEDULED_RX_END bit.

RAIL_EVENT_RX_PACKET_ABORTED_SHIFT 

Shift position of RAIL_EVENT_RX_PACKET_ABORTED bit.

RAIL_EVENT_RX_FILTER_PASSED_SHIFT 

Shift position of RAIL_EVENT_RX_FILTER_PASSED bit.

RAIL_EVENT_RX_TIMING_LOST_SHIFT 

Shift position of RAIL_EVENT_RX_TIMING_LOST bit.

RAIL_EVENT_RX_TIMING_DETECT_SHIFT 

Shift position of RAIL_EVENT_RX_TIMING_DETECT bit.

RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND_SHIFT 

Shift position of RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND bit.

RAIL_EVENT_TX_FIFO_ALMOST_EMPTY_SHIFT 

Shift position of RAIL_EVENT_TX_FIFO_ALMOST_EMPTY bit.

RAIL_EVENT_TX_PACKET_SENT_SHIFT 

Shift position of RAIL_EVENT_TX_PACKET_SENT bit.

RAIL_EVENT_TXACK_PACKET_SENT_SHIFT 

Shift position of RAIL_EVENT_TXACK_PACKET_SENT bit.

RAIL_EVENT_TX_ABORTED_SHIFT 

Shift position of RAIL_EVENT_TX_ABORTED bit.

RAIL_EVENT_TXACK_ABORTED_SHIFT 

Shift position of RAIL_EVENT_TXACK_ABORTED bit.

RAIL_EVENT_TX_BLOCKED_SHIFT 

Shift position of RAIL_EVENT_TX_BLOCKED bit.

RAIL_EVENT_TXACK_BLOCKED_SHIFT 

Shift position of RAIL_EVENT_TXACK_BLOCKED bit.

RAIL_EVENT_TX_UNDERFLOW_SHIFT 

Shift position of RAIL_EVENT_TX_UNDERFLOW bit.

RAIL_EVENT_TXACK_UNDERFLOW_SHIFT 

Shift position of RAIL_EVENT_TXACK_UNDERFLOW bit.

RAIL_EVENT_TX_CHANNEL_CLEAR_SHIFT 

Shift position of RAIL_EVENT_TX_CHANNEL_CLEAR bit.

RAIL_EVENT_TX_CHANNEL_BUSY_SHIFT 

Shift position of RAIL_EVENT_TX_CHANNEL_BUSY bit.

RAIL_EVENT_TX_CCA_RETRY_SHIFT 

Shift position of RAIL_EVENT_TX_CCA_RETRY bit.

RAIL_EVENT_TX_START_CCA_SHIFT 

Shift position of RAIL_EVENT_TX_START_CCA bit.

RAIL_EVENT_CONFIG_UNSCHEDULED_SHIFT 

Shift position of RAIL_EVENT_CONFIG_UNSCHEDULED bit.

RAIL_EVENT_CONFIG_SCHEDULED_SHIFT 

Shift position of RAIL_EVENT_CONFIG_SCHEDULED bit.

RAIL_EVENT_SCHEDULER_STATUS_SHIFT 

Shift position of RAIL_EVENT_SCHEDULER_STATUS bit.

RAIL_EVENT_CAL_NEEDED_SHIFT 

Shift position of RAIL_EVENT_CAL_NEEDED bit.

Definition at line 203 of file rail_types.h.

Function Documentation

◆ RAIL_ConfigEvents()

RAIL_Status_t RAIL_ConfigEvents ( RAIL_Handle_t  railHandle,
RAIL_Events_t  mask,
RAIL_Events_t  events 
)

Configures radio events.

Parameters
[in]railHandleA RAIL instance handle.
[in]maskBitmask containing which events should be modified.
[in]eventsDefine which events should trigger RAIL_Config_t::eventsCallback The full list of available callbacks can be found by looking at the RAIL_EVENT_* set of defines.
Returns
Status code indicating success of the function call.

Sets up which radio interrupts generate a RAIL event. The full list of options is in RAIL_Events_t.