Packet Transmit

APIs which initiate a packet transmission in RAIL.

Functions

RAIL_Status_t RAIL_StartTx (RAIL_Handle_t railHandle, uint16_t channel, RAIL_TxOptions_t options, const RAIL_SchedulerInfo_t *schedulerInfo)
 Start a transmit.
 
RAIL_Status_t RAIL_StartScheduledTx (RAIL_Handle_t railHandle, uint16_t channel, RAIL_TxOptions_t options, const RAIL_ScheduleTxConfig_t *config, const RAIL_SchedulerInfo_t *schedulerInfo)
 Schedule sending a packet.
 
RAIL_Status_t RAIL_StartCcaCsmaTx (RAIL_Handle_t railHandle, uint16_t channel, RAIL_TxOptions_t options, const RAIL_CsmaConfig_t *csmaConfig, const RAIL_SchedulerInfo_t *schedulerInfo)
 Start a transmit using CSMA.
 
RAIL_Status_t RAIL_StartCcaLbtTx (RAIL_Handle_t railHandle, uint16_t channel, RAIL_TxOptions_t options, const RAIL_LbtConfig_t *lbtConfig, const RAIL_SchedulerInfo_t *schedulerInfo)
 Start a transmit using LBT.
 
RAIL_Status_t RAIL_StartScheduledCcaCsmaTx (RAIL_Handle_t railHandle, uint16_t channel, RAIL_TxOptions_t options, const RAIL_ScheduleTxConfig_t *scheduleTxConfig, const RAIL_CsmaConfig_t *csmaConfig, const RAIL_SchedulerInfo_t *schedulerInfo)
 Schedule a transmit using CSMA.
 
RAIL_Status_t RAIL_StartScheduledCcaLbtTx (RAIL_Handle_t railHandle, uint16_t channel, RAIL_TxOptions_t options, const RAIL_ScheduleTxConfig_t *scheduleTxConfig, const RAIL_LbtConfig_t *lbtConfig, const RAIL_SchedulerInfo_t *schedulerInfo)
 Schedule a transmit using LBT.

Detailed Description

APIs which initiate a packet transmission in RAIL.

When using any of these functions, the data to be transmitted must have been previously written to the Transmit FIFO via RAIL_SetTxFifo() and/or RAIL_WriteTxFifo().

Function Documentation

◆ RAIL_StartCcaCsmaTx()

RAIL_Status_t RAIL_StartCcaCsmaTx ( RAIL_Handle_t  railHandle,
uint16_t  channel,
RAIL_TxOptions_t  options,
const RAIL_CsmaConfig_t csmaConfig,
const RAIL_SchedulerInfo_t schedulerInfo 
)

Start a transmit using CSMA.

Parameters
[in]railHandleA RAIL instance handle.
[in]channelDefine the channel to transmit on.
[in]optionsTX options to be applied to this transmit only.
[in]csmaConfigA pointer to the RAIL_CsmaConfig_t structure describing the CSMA parameters to use for this transmit.
In multiprotocol this must point to global or heap storage that remains valid after the API returns until the transmit is actually started.
[in]schedulerInfoInformation to allow the radio scheduler to place this transmit appropriately. This is only used in multiprotocol version of RAIL and may be set to NULL in all other versions.
Returns
Status code indicating success of the function call. If successfully initiated, a transmit completion or failure will be reported by a later RAIL_Config_t::eventsCallback with the appropriate RAIL_Events_t.

Perform the Carrier Sense Multiple Access (CSMA) algorithm, and if the channel is deemed clear (RSSI below the specified threshold), it will commence transmission. The data to be transmitted must have been previously established via RAIL_SetTxFifo() and/or RAIL_WriteTxFifo(). Packets can be received during CSMA backoff periods if receive is active throughout the CSMA process. This will happen either by starting the CSMA process while receive is already active, or if the csmaBackoff time in the RAIL_CsmaConfig_t is less than the idleToRx time (set by RAIL_SetStateTiming()). If the csmaBackoff time is greater than the idleToRx time, receive will only be active during CSMA's clear channel assessments.

If the CSMA algorithm deems the channel busy, the RAIL_Config_t::eventsCallback occurs with RAIL_EVENT_TX_CHANNEL_BUSY, and the contents of the transmit FIFO remain intact.

Returns an error if a previous transmit is still in progress. If changing channels, any ongoing packet reception is aborted.

In multiprotocol, ensure that the radio is properly yielded after this operation completes. See Yielding the Radio for more details.

◆ RAIL_StartCcaLbtTx()

RAIL_Status_t RAIL_StartCcaLbtTx ( RAIL_Handle_t  railHandle,
uint16_t  channel,
RAIL_TxOptions_t  options,
const RAIL_LbtConfig_t lbtConfig,
const RAIL_SchedulerInfo_t schedulerInfo 
)

Start a transmit using LBT.

Parameters
[in]railHandleA RAIL instance handle.
[in]channelDefine the channel to transmit on.
[in]optionsTX options to be applied to this transmit only.
[in]lbtConfigA pointer to the RAIL_LbtConfig_t structure describing the LBT parameters to use for this transmit.
In multiprotocol this must point to global or heap storage that remains valid after the API returns until the transmit is actually started.
[in]schedulerInfoInformation to allow the radio scheduler to place this transmit appropriately. This is only used in multiprotocol version of RAIL and may be set to NULL in all other versions.
Returns
Status code indicating success of the function call. If successfully initiated, a transmit completion or failure will be reported by a later RAIL_Config_t::eventsCallback with the appropriate RAIL_Events_t.

Performs the Listen Before Talk (LBT) algorithm, and if the channel is deemed clear (RSSI below the specified threshold), it will commence transmission. The data to be transmitted must have been previously established via RAIL_SetTxFifo() and/or RAIL_WriteTxFifo(). Packets can be received during LBT backoff periods if receive is active throughout the LBT process. This will happen either by starting the LBT process while receive is already active, or if the lbtBackoff time in the RAIL_LbtConfig_t is less than the idleToRx time (set by RAIL_SetStateTiming()). If the lbtBackoff time is greater than the idleToRx time, receive will only be active during LBT's clear channel assessments.

If the LBT algorithm deems the channel busy, the RAIL_Config_t::eventsCallback occurs with RAIL_EVENT_TX_CHANNEL_BUSY, and the contents of the transmit FIFO remain intact.

Returns an error if a previous transmit is still in progress. If changing channels, any ongoing packet reception is aborted.

In multiprotocol, ensure that the radio is properly yielded after this operation completes. See Yielding the Radio for more details.

◆ RAIL_StartScheduledCcaCsmaTx()

RAIL_Status_t RAIL_StartScheduledCcaCsmaTx ( RAIL_Handle_t  railHandle,
uint16_t  channel,
RAIL_TxOptions_t  options,
const RAIL_ScheduleTxConfig_t scheduleTxConfig,
const RAIL_CsmaConfig_t csmaConfig,
const RAIL_SchedulerInfo_t schedulerInfo 
)

Schedule a transmit using CSMA.

Parameters
[in]railHandleA RAIL instance handle.
[in]channelDefine the channel to transmit on.
[in]optionsTX options to be applied to this transmit only.
[in]scheduleTxConfigA pointer to the RAIL_ScheduleTxConfig_t structure describing the CSMA parameters to use for this transmit.
[in]csmaConfigA pointer to the RAIL_CsmaConfig_t structure describing the CSMA parameters to use for this transmit.
In multiprotocol this must point to global or heap storage that remains valid after the API returns until the transmit is actually started.
[in]schedulerInfoInformation to allow the radio scheduler to place this transmit appropriately. This is only used in multiprotocol version of RAIL and may be set to NULL in all other versions.
Returns
Status code indicating success of the function call. If successfully initiated, a transmit completion or failure will be reported by a later RAIL_Config_t::eventsCallback with the appropriate RAIL_Events_t.

Internally, the RAIL library needs a PRS channel for this feature. It will allocate an available PRS channel to use and hold onto that channel for future use. If no PRS channel is available, the function returns with RAIL_STATUS_INVALID_CALL.

Perform the Carrier Sense Multiple Access (CSMA) algorithm at the scheduled time, and if the channel is deemed clear (RSSI below the specified threshold), it will commence transmission. The data to be transmitted must have been previously established via RAIL_SetTxFifo() and/or RAIL_WriteTxFifo(). Packets can be received during CSMA backoff periods if receive is active throughout the CSMA process. This will happen either by starting the CSMA process while receive is already active, or if the csmaBackoff time in the RAIL_CsmaConfig_t is less than the idleToRx time (set by RAIL_SetStateTiming()). If the csmaBackoff time is greater than the idleToRx time, receive will only be active during CSMA's clear channel assessments.

If the CSMA algorithm deems the channel busy, the RAIL_Config_t::eventsCallback occurs with RAIL_EVENT_TX_CHANNEL_BUSY, and the contents of the transmit FIFO remain intact.

Returns an error if a previous transmit is still in progress. If changing channels, any ongoing packet reception is aborted.

In multiprotocol, ensure that the radio is properly yielded after this operation completes. See Yielding the Radio for more details.

◆ RAIL_StartScheduledCcaLbtTx()

RAIL_Status_t RAIL_StartScheduledCcaLbtTx ( RAIL_Handle_t  railHandle,
uint16_t  channel,
RAIL_TxOptions_t  options,
const RAIL_ScheduleTxConfig_t scheduleTxConfig,
const RAIL_LbtConfig_t lbtConfig,
const RAIL_SchedulerInfo_t schedulerInfo 
)

Schedule a transmit using LBT.

Parameters
[in]railHandleA RAIL instance handle.
[in]channelDefine the channel to transmit on.
[in]optionsTX options to be applied to this transmit only.
[in]scheduleTxConfigA pointer to the RAIL_ScheduleTxConfig_t structure describing the CSMA parameters to use for this transmit.
[in]lbtConfigA pointer to the RAIL_LbtConfig_t structure describing the LBT parameters to use for this transmit.
In multiprotocol this must point to global or heap storage that remains valid after the API returns until the transmit is actually started.
[in]schedulerInfoInformation to allow the radio scheduler to place this transmit appropriately. This is only used in multiprotocol version of RAIL and may be set to NULL in all other versions.
Returns
Status code indicating success of the function call. If successfully initiated, a transmit completion or failure will be reported by a later RAIL_Config_t::eventsCallback with the appropriate RAIL_Events_t.

Internally, the RAIL library needs a PRS channel for this feature. It will allocate an available PRS channel to use and hold onto that channel for future use. If no PRS channel is available, the function returns with RAIL_STATUS_INVALID_CALL.

Performs the Listen Before Talk (LBT) algorithm at the scheduled time, and if the channel is deemed clear (RSSI below the specified threshold), it will commence transmission. The data to be transmitted must have been previously established via RAIL_SetTxFifo() and/or RAIL_WriteTxFifo(). Packets can be received during LBT backoff periods if receive is active throughout the LBT process. This will happen either by starting the LBT process while receive is already active, or if the lbtBackoff time in the RAIL_LbtConfig_t is less than the idleToRx time (set by RAIL_SetStateTiming()). If the lbtBackoff time is greater than the idleToRx time, receive will only be active during LBT's clear channel assessments.

If the LBT algorithm deems the channel busy, the RAIL_Config_t::eventsCallback occurs with RAIL_EVENT_TX_CHANNEL_BUSY, and the contents of the transmit FIFO remain intact.

Returns an error if a previous transmit is still in progress. If changing channels, any ongoing packet reception is aborted.

In multiprotocol, ensure that the radio is properly yielded after this operation completes. See Yielding the Radio for more details.

◆ RAIL_StartScheduledTx()

RAIL_Status_t RAIL_StartScheduledTx ( RAIL_Handle_t  railHandle,
uint16_t  channel,
RAIL_TxOptions_t  options,
const RAIL_ScheduleTxConfig_t config,
const RAIL_SchedulerInfo_t schedulerInfo 
)

Schedule sending a packet.

Parameters
[in]railHandleA RAIL instance handle.
[in]channelDefine the channel to transmit on.
[in]optionsTX options to be applied to this transmit only.
[in]configA pointer to the RAIL_ScheduleTxConfig_t structure containing when the transmit should occur.
[in]schedulerInfoInformation to allow the radio scheduler to place this transmit appropriately. This is only used in multiprotocol version of RAIL and may be set to NULL in all other versions.
Returns
Status code indicating success of the function call. If successfully initiated, a transmit completion or failure will be reported by a later RAIL_Config_t::eventsCallback with the appropriate RAIL_Events_t.

The transmit process will begin at the scheduled time. The data to be transmitted must have been previously established via RAIL_SetTxFifo() and/or RAIL_WriteTxFifo(). The time (in microseconds) and whether that time is absolute or relative is specified using the RAIL_ScheduleTxConfig_t structure. What to do if a scheduled transmit fires in the middle of receiving a packet is also specified in this structure.

Returns an error if a previous transmit is still in progress. If changing channels, any ongoing packet reception is aborted.

In multiprotocol, ensure that the radio is properly yielded after this operation completes. See Yielding the Radio for more details.

◆ RAIL_StartTx()

RAIL_Status_t RAIL_StartTx ( RAIL_Handle_t  railHandle,
uint16_t  channel,
RAIL_TxOptions_t  options,
const RAIL_SchedulerInfo_t schedulerInfo 
)

Start a transmit.

Parameters
[in]railHandleA RAIL instance handle.
[in]channelDefine the channel to transmit on.
[in]optionsTX options to be applied to this transmit only.
[in]schedulerInfoInformation to allow the radio scheduler to place this transmit appropriately. This is only used in multiprotocol version of RAIL and may be set to NULL in all other versions.
Returns
Status code indicating success of the function call. If successfully initiated, transmit completion or failure will be reported by a later RAIL_Config_t::eventsCallback with the appropriate RAIL_Events_t.

The transmit process will begin immediately or as soon as a packet being received has finished. The data to be transmitted must have been previously established via RAIL_SetTxFifo() and/or RAIL_WriteTxFifo().

Returns an error if a previous transmit is still in progress. If changing channels, any ongoing packet reception is aborted.

In multiprotocol, ensure that the radio is properly yielded after this operation completes. See Yielding the Radio for more details.