Radio Control Layer (RCL)
ble5.h File Reference
+ Include dependency graph for ble5.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Enumerations

enum  RCL_BLE5_FilterListUpdateResult { RCL_BLE5_FilterListUpdateOk, RCL_BLE5_FilterListUpdateIndexError }
 Result of filter list update API. More...
 

Functions

RCL_Events RCL_Handler_BLE5_adv (RCL_Command *cmd, LRF_Events lrfEvents, RCL_Events rclEventsIn)
 
RCL_Events RCL_Handler_BLE5_scan_init (RCL_Command *cmd, LRF_Events lrfEvents, RCL_Events rclEventsIn)
 
RCL_Events RCL_Handler_BLE5_conn (RCL_Command *cmd, LRF_Events lrfEvents, RCL_Events rclEventsIn)
 
RCL_Events RCL_Handler_BLE5_dtmTx (RCL_Command *cmd, LRF_Events lrfEvents, RCL_Events rclEventsIn)
 
RCL_Events RCL_Handler_BLE5_genericRx (RCL_Command *cmd, LRF_Events lrfEvents, RCL_Events rclEventsIn)
 
RCL_Events RCL_Handler_BLE5_genericTx (RCL_Command *cmd, LRF_Events lrfEvents, RCL_Events rclEventsIn)
 
RCL_Events RCL_Handler_Ble5_txTest (RCL_Command *cmd, LRF_Events lrfEvents, RCL_Events rclEventsIn)
 
RCL_Events RCL_Handler_BLE5_aux_adv (RCL_Command *cmd, LRF_Events lrfEvents, RCL_Events rclEventsIn)
 
RCL_BLE5_FilterListUpdateResult RCL_BLE5_updateFilterList (const RCL_FL_Entry *newEntry, RCL_FilterList *filterList, uint32_t index)
 Update filter list. More...
 
void RCL_BLE5_setDefaultRfFrequency (uint32_t rfFrequency)
 Set RF frequency to use if custom frequency is specified. More...
 
static RCL_Ble5Channel RCL_BLE5_getRxChannel (const RCL_Buffer_DataEntry *rxEntry)
 Get channel field from packet. More...
 
RCL_Ble5_RxPktStatus RCL_BLE5_getRxStatus (const RCL_Buffer_DataEntry *rxEntry)
 Get received status field from packet. More...
 
int8_t RCL_BLE5_getRxRssi (const RCL_Buffer_DataEntry *rxEntry)
 Get received RSSI from packet. More...
 
uint32_t RCL_BLE5_getRxTimestamp (const RCL_Buffer_DataEntry *rxEntry)
 Get received timestamp from packet. More...
 

Enumeration Type Documentation

§ RCL_BLE5_FilterListUpdateResult

Result of filter list update API.

Tells if RCL_BLE5_FilterListUpdateResult succeeded

Enumerator
RCL_BLE5_FilterListUpdateOk 

Update was successful

RCL_BLE5_FilterListUpdateIndexError 

Index was outside size of filter list or filter list was NULL

Function Documentation

§ RCL_Handler_BLE5_adv()

RCL_Events RCL_Handler_BLE5_adv ( RCL_Command *  cmd,
LRF_Events  lrfEvents,
RCL_Events  rclEventsIn 
)

References RCL_SchedulerState::actualStartTime, ADV_ACCESS_ADDRESS, ADV_CRC_INIT, ble5HandlerState, BLE_ADV_AUX_SCAN_REQ_PKT_LEN, BLE_ADV_FILTER_POLICY_CONN, BLE_ADV_FILTER_POLICY_SCAN, BLE_ADV_MODE_BM, BLE_ADV_MODE_CONN_NONSCAN, BLE_ADV_MODE_NONCONN_NONSCAN, BLE_ADV_MODE_NONCONN_SCAN, BLE_AUX_OFFSET_30_US, BLE_convertSystimUnitsToOffsetUnits, BLE_CUSTOM_FREQ_BM, BLE_HEADER_LENGTH, BLE_NUM_PAD, BLE_PDU_ADV_DIRECT_IND, BLE_PDU_ADV_EXTENDED, BLE_PDU_ADV_IND, BLE_PDU_ADV_NONCONN_IND, BLE_PDU_ADV_SCAN_IND, BLE_PDU_TYPE_BM, BLE_T_IFS, RCL_SchedulerStopInfo::cmdStopEnabled, EXT_ADV_INTERVAL_US, EXT_ADV_PHY_SWITCHING_DELAY_US, RCL_SchedulerState::gracefulStopInfo, hal_enable_graceful_stop_time_irq(), hal_setup_sync_found_cap(), HIGH_DUTY_CYCLE_INTERVAL, LRF_disable(), LRF_disableSynthRefsys(), LRF_enable(), LRF_enableHwInterrupt(), LRF_enableSynthRefsys(), LRF_EventOpDone, LRF_EventOpError, LRF_EventRxBufFull, LRF_EventRxIgnored, LRF_EventRxNok, LRF_EventRxOk, LRF_peekRxFifo(), LRF_prepareRxFifo(), LRF_prepareTxFifo(), LRF_programFrequency(), LRF_programTxPower(), LRF_readRxFifoWords(), LRF_waitForTopsmReady(), RCL_Buffer_DataEntry_paddedLen, RCL_Buffer_entryLen, RCL_BufferStateFinished, RCL_CommandStatus_Active, RCL_CommandStatus_Connect, RCL_CommandStatus_Error_MissingTxBuffer, RCL_CommandStatus_Error_Param, RCL_CommandStatus_Error_RxBufferCorruption, RCL_CommandStatus_Error_TxBufferCorruption, RCL_CommandStatus_Finished, RCL_Handler_BLE5_commitPacket(), RCL_Handler_BLE5_findAdvChannel(), RCL_Handler_BLE5_findNumExtraBytes(), RCL_Handler_BLE5_findPacketDuration(), RCL_Handler_BLE5_findPbeErrorEndStatus(), RCL_Handler_BLE5_findRfFreq(), RCL_Handler_BLE5_findWhitenInit(), RCL_Handler_BLE5_getAuxPtrFromTxBuffer(), RCL_Handler_BLE5_initAdvScanInitStats(), RCL_Handler_BLE5_InitializeFilterList(), RCL_Handler_BLE5_maskEventsByFifoConf(), RCL_Handler_BLE5_setPhy(), RCL_Handler_BLE5_updateAdvScanInitStats(), RCL_Handler_BLE5_updateAuxPtr(), RCL_Handler_BLE5_updateRxCurBufferAndFifo(), RCL_Handler_BLE5_updateTxBuffers(), RCL_MultiBuffer_getBuffer(), RCL_MultiBuffer_getNextWritableByte(), RCL_ProfilingEvent_PostprocStart, RCL_ProfilingEvent_PreprocStop, RCL_Scheduler_findStopStatus(), RCL_Scheduler_setNewStartNow(), RCL_Scheduler_setNewStartRelTime(), RCL_Scheduler_setStartStopTimeEarliestStart(), RCL_SCHEDULER_SYSTIM_US, RCL_StopType_Graceful, RCL_StopType_Hard, RCL_TxBuffer_get(), RCL_TxBuffer_head(), RCL_TxBuffer_next(), rclSchedulerState, RCL_SchedulerState::requestedPhyFeatures, RCL_SchedulerStopInfo::schedStopEnabled, and TxPowerResult_Ok.

§ RCL_Handler_BLE5_scan_init()

RCL_Events RCL_Handler_BLE5_scan_init ( RCL_Command *  cmd,
LRF_Events  lrfEvents,
RCL_Events  rclEventsIn 
)

References RCL_SchedulerState::actualStartTime, ADV_ACCESS_ADDRESS, ADV_CRC_INIT, RCL_SchedulerStopInfo::apiStopEnabled, ble5HandlerState, BLE_ADV_CHAN_HI, BLE_ADV_CHAN_LO, BLE_ADV_CHAN_MID, BLE_ADV_EXTENDED_MAX_PKT_LEN, BLE_ADV_LEGACY_MAX_PKT_LEN, BLE_AUX_OFFSET_300_US, BLE_AUX_OFFSET_30_US, BLE_CLK_ACCURACY_SCALE_FACTOR, BLE_CONNECT_INT_UNIT, BLE_CONNECT_MSG_LEN, BLE_HEADER_LENGTH, BLE_INTERVAL_POS, BLE_PDU_ADV_DIRECT_IND, BLE_PDU_ADV_EXTENDED, BLE_PDU_ADV_IND, BLE_PDU_AUX_CONNECT_RSP, BLE_PDU_TYPE_BM, BLE_PHY_FEATURE_PHY_CODED, BLE_PHY_FEATURE_PHY_MASK, BLE_SCALED_CLK_ACCURACY_500PPM, BLE_SCALED_CLK_ACCURACY_50PPM, BLE_T_IFS, BLE_TRANSMIT_WINDOW_DELAY_EXT_CODED, BLE_TRANSMIT_WINDOW_DELAY_EXT_UNCODED, BLE_TRANSMIT_WINDOW_DELAY_LEGACY, BLE_WIN_OFFSET_POS, BLE_WIN_SIZE_POS, RCL_SchedulerState::gracefulStopInfo, hal_setup_sync_found_cap(), RCL_SchedulerState::hardStopInfo, LRF_disable(), LRF_disableSynthRefsys(), LRF_enable(), LRF_enableHwInterrupt(), LRF_enableSynthRefsys(), LRF_EventOpDone, LRF_EventOpError, LRF_EventRxBufFull, LRF_EventRxIgnored, LRF_EventRxNok, LRF_EventRxOk, LRF_getTxFifoWrAddr(), LRF_peekRxFifo(), LRF_prepareRxFifo(), LRF_prepareTxFifo(), LRF_programFrequency(), LRF_programTxPower(), LRF_readRxFifoWords(), LRF_waitForTopsmReady(), RCL_BLE5_CONNECT_INT_SUB_DIV, RCL_BLE5_CONNECT_SUB_INT, RCL_Buffer_DataEntry_paddedLen, RCL_CMDID_BLE5_INITIATOR, RCL_CommandStatus_Active, RCL_CommandStatus_Connect, RCL_CommandStatus_Error_MissingTxBuffer, RCL_CommandStatus_Error_Param, RCL_CommandStatus_Error_RxBufferCorruption, RCL_CommandStatus_Finished, RCL_CommandStatus_MaxAuxWaitTimeExceeded, RCL_EventNone, RCL_Handler_BLE5_commitPacket(), RCL_Handler_BLE5_findConnectTime(), RCL_Handler_BLE5_findNumExtraBytes(), RCL_Handler_BLE5_findPacketDuration(), RCL_Handler_BLE5_findPbeErrorEndStatus(), RCL_Handler_BLE5_findRfFreq(), RCL_Handler_BLE5_findRxSyncOverhead(), RCL_Handler_BLE5_findWhitenInit(), RCL_Handler_BLE5_initAdvScanInitStats(), RCL_Handler_BLE5_InitializeFilterList(), RCL_Handler_BLE5_maskEventsByFifoConf(), RCL_Handler_BLE5_prepareConnectTime(), RCL_Handler_BLE5_readAuxPtrFromRxBuffer(), RCL_Handler_BLE5_setPhy(), RCL_Handler_BLE5_updateAdvScanInitStats(), RCL_Handler_BLE5_updateBackoffParams(), RCL_Handler_BLE5_updateFilterListEntry(), RCL_Handler_BLE5_updateRxCurBufferAndFifo(), RCL_Handler_BLE5_updateTxBuffers(), RCL_MultiBuffer_getBuffer(), RCL_MultiBuffer_getNextWritableByte(), RCL_ProfilingEvent_PreprocStop, RCL_Scheduler_findStopStatus(), RCL_Scheduler_setNewStartAbsTime(), RCL_Scheduler_setNewStartNow(), RCL_Scheduler_setStartStopTimeEarliestStart(), RCL_SCHEDULER_SYSTIM_US, RCL_StopType_Graceful, RCL_StopType_Hard, RCL_TxBuffer_head(), rclSchedulerState, RCL_SchedulerState::requestedPhyFeatures, RX_START_OVERHEAD, txBuffer_dataByte, and TxPowerResult_Ok.

§ RCL_Handler_BLE5_conn()

RCL_Events RCL_Handler_BLE5_conn ( RCL_Command *  cmd,
LRF_Events  lrfEvents,
RCL_Events  rclEventsIn 
)

References RCL_SchedulerState::actualStartTime, ble5HandlerState, BLE_MAX_PKT_LEN, hal_setup_sync_found_cap(), LRF_disable(), LRF_disableSynthRefsys(), LRF_enable(), LRF_enableHwInterrupt(), LRF_enableSynthRefsys(), LRF_EventOpDone, LRF_EventOpError, LRF_EventRxBufFull, LRF_EventRxEmpty, LRF_EventRxIgnored, LRF_EventRxNok, LRF_EventRxOk, LRF_EventTxDone, LRF_getTxFifoWritable(), LRF_peekRxFifo(), LRF_prepareRxFifo(), LRF_prepareTxFifo(), LRF_programFrequency(), LRF_programTxPower(), LRF_readRxFifoWords(), LRF_waitForTopsmReady(), RCL_Buffer_DataEntry_paddedLen, RCL_BufferStateFinished, RCL_CommandStatus_Active, RCL_CommandStatus_Error_Param, RCL_CommandStatus_Error_RxBufferCorruption, RCL_CommandStatus_Error_TxBufferCorruption, RCL_CommandStatus_Finished, RCL_CommandStatus_MaxNak, RCL_CommandStatus_NoSync, RCL_CommandStatus_RxErr, RCL_CommandStatus_RxTimeout, RCL_Handler_BLE5_commitPacket(), RCL_Handler_BLE5_findNumExtraBytes(), RCL_Handler_BLE5_findPbeErrorEndStatus(), RCL_Handler_BLE5_findRfFreq(), RCL_Handler_BLE5_findWhitenInit(), RCL_Handler_BLE5_initConnStats(), RCL_Handler_BLE5_maskEventsByFifoConf(), RCL_Handler_BLE5_setPhy(), RCL_Handler_BLE5_updateConnStats(), RCL_Handler_BLE5_updateRxCurBufferAndFifo(), RCL_Handler_BLE5_updateTxBuffers(), RCL_MultiBuffer_getBuffer(), RCL_MultiBuffer_getNextWritableByte(), RCL_ProfilingEvent_PostprocStart, RCL_ProfilingEvent_PreprocStop, RCL_Schedule_AbsTime, RCL_Scheduler_findStopStatus(), RCL_Scheduler_setStartStopTimeEarliestStart(), RCL_StopType_Graceful, RCL_TxBuffer_get(), rclSchedulerState, and TxPowerResult_Ok.

§ RCL_Handler_BLE5_dtmTx()

§ RCL_Handler_BLE5_genericRx()

§ RCL_Handler_BLE5_genericTx()

§ RCL_Handler_Ble5_txTest()

§ RCL_Handler_BLE5_aux_adv()

RCL_Events RCL_Handler_BLE5_aux_adv ( RCL_Command *  cmd,
LRF_Events  lrfEvents,
RCL_Events  rclEventsIn 
)

References RCL_SchedulerState::actualStartTime, ADV_ACCESS_ADDRESS, ADV_CRC_INIT, ble5HandlerState, BLE_ADV_AUX_SCAN_REQ_PKT_LEN, BLE_ADV_FILTER_POLICY_SCAN, BLE_ADV_MODE_BM, BLE_ADV_MODE_CONN_NONSCAN, BLE_ADV_MODE_NONCONN_NONSCAN, BLE_ADV_MODE_NONCONN_SCAN, BLE_AUX_OFFSET_30_US, BLE_convertSystimUnitsToOffsetUnits, BLE_HEADER_LENGTH, BLE_NUM_PAD, BLE_PDU_ADV_EXTENDED, BLE_PDU_TYPE_BM, BLE_T_IFS, RCL_SchedulerStopInfo::cmdStopEnabled, EXT_ADV_INTERVAL_US, RCL_SchedulerState::gracefulStopInfo, hal_enable_graceful_stop_time_irq(), hal_setup_sync_found_cap(), LRF_disable(), LRF_disableSynthRefsys(), LRF_enable(), LRF_enableHwInterrupt(), LRF_enableSynthRefsys(), LRF_EventOpDone, LRF_EventOpError, LRF_EventRxBufFull, LRF_EventRxIgnored, LRF_EventRxNok, LRF_EventRxOk, LRF_peekRxFifo(), LRF_prepareRxFifo(), LRF_prepareTxFifo(), LRF_programFrequency(), LRF_programTxPower(), LRF_readRxFifoWords(), LRF_waitForTopsmReady(), RCL_Buffer_DataEntry_paddedLen, RCL_Buffer_entryLen, RCL_BufferStateFinished, RCL_CommandStatus_Active, RCL_CommandStatus_Connect, RCL_CommandStatus_Error_MissingTxBuffer, RCL_CommandStatus_Error_Param, RCL_CommandStatus_Error_RxBufferCorruption, RCL_CommandStatus_Error_TxBufferCorruption, RCL_CommandStatus_Finished, RCL_Handler_BLE5_commitPacket(), RCL_Handler_BLE5_findNumExtraBytes(), RCL_Handler_BLE5_findPacketDuration(), RCL_Handler_BLE5_findPbeErrorEndStatus(), RCL_Handler_BLE5_findRfFreq(), RCL_Handler_BLE5_findWhitenInit(), RCL_Handler_BLE5_getAuxPtrFromTxBuffer(), RCL_Handler_BLE5_initAdvScanInitStats(), RCL_Handler_BLE5_InitializeFilterList(), RCL_Handler_BLE5_maskEventsByFifoConf(), RCL_Handler_BLE5_setPhy(), RCL_Handler_BLE5_updateAdvScanInitStats(), RCL_Handler_BLE5_updateAuxPtr(), RCL_Handler_BLE5_updateRxCurBufferAndFifo(), RCL_Handler_BLE5_updateTxBuffers(), RCL_MultiBuffer_getBuffer(), RCL_MultiBuffer_getNextWritableByte(), RCL_Scheduler_findStopStatus(), RCL_Scheduler_setNewStartRelTime(), RCL_Scheduler_setStartStopTimeEarliestStart(), RCL_SCHEDULER_SYSTIM_US, RCL_StopType_Graceful, RCL_StopType_Hard, RCL_TxBuffer_get(), RCL_TxBuffer_head(), RCL_TxBuffer_next(), rclSchedulerState, RCL_SchedulerStopInfo::schedStopEnabled, and TxPowerResult_Ok.

§ RCL_BLE5_updateFilterList()

RCL_BLE5_FilterListUpdateResult RCL_BLE5_updateFilterList ( const RCL_FL_Entry *  newEntry,
RCL_FilterList *  filterList,
uint32_t  index 
)

Update filter list.

Update the given filter list in a way that is safe even if a running command is using the filter list. The contents of newEntry will be copied into filterList->entries[index].

If a scanner or initiator function is running, the filter list in use in the radio will also be updated in a way that ensures no match will be found on a non-existing entry. In a short time, neither the old nor new entry will give a match.

If an advertiser command is running, the update will not apply until the next time the advertiser is started

Parameters
newEntryNew filter list entry to apply
filterListFilter accept list to update
indexIndex into filter accept list to update
Returns
Result telling if update was successful

References ble5HandlerState, RCL_SchedulerState::currCmd, PBE_NUM_FILTER_ENTRIES, RCL_BLE5_FilterListUpdateIndexError, RCL_BLE5_FilterListUpdateOk, RCL_EventHandlerCmdUpdate, RCL_Scheduler_postEvent(), and rclSchedulerState.

§ RCL_BLE5_setDefaultRfFrequency()

void RCL_BLE5_setDefaultRfFrequency ( uint32_t  rfFrequency)

Set RF frequency to use if custom frequency is specified.

If a command specifies to use a custom frequncy, it will program the freuqncy last set using this function.

Parameters
rfFrequencyRF frequency in Hz

References ble5HandlerState.

§ RCL_BLE5_getRxChannel()

static RCL_Ble5Channel RCL_BLE5_getRxChannel ( const RCL_Buffer_DataEntry *  rxEntry)
inlinestatic

Get channel field from packet.

Returns the channel that the packet was received on

Parameters
rxEntryReceived data entry
Returns
Channel for receiving packet

References RCL_BLE5_getRxRssi(), RCL_BLE5_getRxStatus(), and RCL_BLE5_getRxTimestamp().

§ RCL_BLE5_getRxStatus()

RCL_Ble5_RxPktStatus RCL_BLE5_getRxStatus ( const RCL_Buffer_DataEntry *  rxEntry)

Get received status field from packet.

Returns the packet status field of a received packet, or {.value = RCL_BLE5_RX_PKT_STATUS_INVALID} if status is not enabled

Parameters
rxEntryReceived data entry
Returns
Receive packet status

References ble5HandlerState, RCL_BLE5_RX_PKT_STATUS_INVALID, RCL_Handler_BLE5_findNumExtraBytes(), and RCL_Ble5_RxPktStatus::value.

Referenced by RCL_BLE5_getRxChannel().

§ RCL_BLE5_getRxRssi()

int8_t RCL_BLE5_getRxRssi ( const RCL_Buffer_DataEntry *  rxEntry)

Get received RSSI from packet.

Returns the RSSI field of a received packet, or LRF_RSSI_INVALID if RSSI is not enabled

Parameters
rxEntryReceived data entry
Returns
Reported RSSI of received packet

References ble5HandlerState, LRF_RSSI_INVALID, and RCL_Handler_BLE5_findNumExtraBytes().

Referenced by RCL_BLE5_getRxChannel().

§ RCL_BLE5_getRxTimestamp()

uint32_t RCL_BLE5_getRxTimestamp ( const RCL_Buffer_DataEntry *  rxEntry)

Get received timestamp from packet.

Returns the timestamp a received packet, adjusted according to the PHY it was received on (1 Mbps assumed if packet status is not available). If timestamp is not enabled, 0 is returned. Note that this is a valid value, so it can not be used for error checking.

Parameters
rxEntryReceived data entry
Returns
Timestamp of received packet

References ble5HandlerState, RCL_Ble5_RxPhy1Mbps, RCL_Ble5_RxPhy2Mbps, RCL_Ble5_RxPhyCodedS2, RCL_Ble5_RxPhyCodedS8, RCL_Handler_BLE5_findNumExtraBytes(), TIMESTAMP_ADJUST_1MBPS, TIMESTAMP_ADJUST_2MBPS, and TIMESTAMP_ADJUST_CODED.

Referenced by RCL_BLE5_getRxChannel().