|
Radio Control Layer (RCL)
|
#include <stdint.h>#include <stdlib.h>#include <ti/log/Log.h>#include <ti/drivers/dpl/HwiP.h>#include <ti/drivers/rcl/RCL_Command.h>#include <ti/drivers/rcl/RCL_Buffer.h>#include <ti/drivers/rcl/RCL_Scheduler.h>#include <ti/drivers/rcl/RCL_Profiling.h>#include <ti/drivers/rcl/hal/hal.h>#include <ti/drivers/rcl/commands/ieee.h>#include <ti/devices/DeviceFamily.h>
Include dependency graph for ieee.c:Data Structures | |
| struct | .common |
| union | .__unnamed__ |
| struct | .__unnamed__.txTest |
| struct | .__unnamed__.rxTx |
Macros | |
| #define | RCL_HANDLER_IEEE_PRBS9_POLY 0x08800000 |
| #define | RCL_HANDLER_IEEE_PRBS15_POLY 0x80020000 |
| #define | RCL_HANDLER_IEEE_PRBS32_POLY 0x00400007 |
| #define | RCL_HANDLER_IEEE_PRBS_INIT 0x0000001F |
| #define | RCL_HANDLER_IEEE_RESTORE_NONE 0x0000 |
| #define | RCL_HANDLER_IEEE_RESTORE_MODCTRL 0x0001 |
| #define | RCL_HANDLER_IEEE_RESTORE_WHITENING 0x0002 |
| #define | RCL_HANDLER_IEEE_RESTORE_SFD 0x0004 |
| #define | IEEE_PHY_HDR_LEN 1 |
| #define | IEEE_MAC_FCF_LEN 2 |
| #define | IEEE_BACKOFF_PERIOD RCL_SCHEDULER_SYSTIM_US(320) |
| #define | IEEE_CCA_START_TIME_MARGIN RCL_SCHEDULER_SYSTIM_US(192) |
Functions | |
| static void | RCL_Handler_Ieee_updateRxCurBufferAndFifo (List_List *rxBuffers) |
| static RCL_CommandStatus | RCL_Handler_Ieee_findPbeErrorEndStatus (uint16_t pbeEndStatus) |
| static uint32_t | RCL_Handler_Ieee_maskEventsByFifoConf (uint32_t mask, uint16_t fifoConfVal, bool activeUpdate) |
| static void | RCL_Handler_Ieee_updateStats (RCL_StatsIeee *stats, uint32_t startTime) |
| static bool | RCL_Handler_Ieee_initStats (RCL_StatsIeee *stats, uint32_t startTime) |
| static bool | RCL_Handler_Ieee_setCustomEventTime (uint32_t eventTime, uint32_t timeMargin, bool hardStop) |
| static bool | RCL_Handler_Ieee_restoreStopTime (void) |
| RCL_Events | RCL_Handler_Ieee_RxTx (RCL_Command *cmd, LRF_Events lrfEvents, RCL_Events rclEventsIn) |
| RCL_Events | RCL_Handler_Ieee_TxTest (RCL_Command *cmd, LRF_Events lrfEvents, RCL_Events rclEventsIn) |
| RCL_CommandStatus | RCL_IEEE_Tx_submit (RCL_CmdIeeeRxTx *cmd, RCL_CmdIeee_TxAction *txAction) |
| Update tx action. More... | |
| RCL_CommandStatus | RCL_IEEE_Tx_stop (RCL_CmdIeeeRxTx *cmd, RCL_StopType stopType) |
| Stop a Tx action in an IEEE command. More... | |
Variables | |
| struct { | |
| struct { | |
| uint16_t | txFifoSize |
| uint16_t | rxFifoSize |
| RCL_CommandStatus | endStatus |
| bool | activeUpdate |
| bool | apiHardStopPending |
| RCL_MultiBuffer * | curBuffer |
| uint32_t | nextEventTime |
| RCL_Handler_Ieee_EventType | eventTimeType |
| } | common |
| union { | |
| struct { | |
| uint16_t | restoreOpt |
| uint16_t | storedWhitenInit |
| uint32_t | storedWhitenPoly |
| uint32_t | storedMdmSyncA |
| } | txTest |
| struct { | |
| RCL_Handler_Ieee_TxState | txState |
| RCL_Handler_Ieee_RxState | rxState |
| uint8_t | ccaContentionWindow |
| bool | waitingForValidRssi |
| bool | allowTxDelay |
| bool | alwaysStoreAck |
| uint8_t | expSeqNo |
| uint32_t | ccaTxStartTime |
| RCL_StopType | txActionStop |
| } | rxTx |
| } | |
| } | ieeeHandlerState |
| struct .common |
| Data Fields | ||
|---|---|---|
| uint16_t | txFifoSize | |
| uint16_t | rxFifoSize | |
| RCL_CommandStatus | endStatus | |
| bool | activeUpdate | |
| bool | apiHardStopPending | |
| RCL_MultiBuffer * | curBuffer | |
| uint32_t | nextEventTime | |
| RCL_Handler_Ieee_EventType | eventTimeType | |
| union .__unnamed__ |
| Data Fields | ||
|---|---|---|
| __unnamed__ | txTest | |
| __unnamed__ | rxTx | |
| struct .__unnamed__.txTest |
| struct .__unnamed__.rxTx |
| Data Fields | ||
|---|---|---|
| RCL_Handler_Ieee_TxState | txState | |
| RCL_Handler_Ieee_RxState | rxState | |
| uint8_t | ccaContentionWindow | |
| bool | waitingForValidRssi | |
| bool | allowTxDelay | |
| bool | alwaysStoreAck | |
| uint8_t | expSeqNo | |
| uint32_t | ccaTxStartTime | |
| RCL_StopType | txActionStop | |
| #define RCL_HANDLER_IEEE_PRBS9_POLY 0x08800000 |
Polynomial to use for PRBS9 data
Referenced by RCL_Handler_Ieee_TxTest().
| #define RCL_HANDLER_IEEE_PRBS15_POLY 0x80020000 |
Polynomial to use for PRBS15 data
Referenced by RCL_Handler_Ieee_TxTest().
| #define RCL_HANDLER_IEEE_PRBS32_POLY 0x00400007 |
Polynomial to use for PRBS32 data
Referenced by RCL_Handler_Ieee_TxTest().
| #define RCL_HANDLER_IEEE_PRBS_INIT 0x0000001F |
Referenced by RCL_Handler_Ieee_TxTest().
| #define RCL_HANDLER_IEEE_RESTORE_NONE 0x0000 |
Referenced by RCL_Handler_Ieee_TxTest().
| #define RCL_HANDLER_IEEE_RESTORE_MODCTRL 0x0001 |
Referenced by RCL_Handler_Ieee_TxTest().
| #define RCL_HANDLER_IEEE_RESTORE_WHITENING 0x0002 |
Referenced by RCL_Handler_Ieee_TxTest().
| #define RCL_HANDLER_IEEE_RESTORE_SFD 0x0004 |
Referenced by RCL_Handler_Ieee_TxTest().
| #define IEEE_PHY_HDR_LEN 1 |
Referenced by RCL_Handler_Ieee_RxTx().
| #define IEEE_MAC_FCF_LEN 2 |
Referenced by RCL_Handler_Ieee_RxTx().
| #define IEEE_BACKOFF_PERIOD RCL_SCHEDULER_SYSTIM_US(320) |
Referenced by RCL_Handler_Ieee_RxTx().
| #define IEEE_CCA_START_TIME_MARGIN RCL_SCHEDULER_SYSTIM_US(192) |
Referenced by RCL_Handler_Ieee_RxTx().
|
static |
References ieeeHandlerState, LRF_setRxFifoEffSz(), RCL_MultiBuffer_findAvailableRxSpace(), and RCL_MultiBuffer_findFirstWritableBuffer().
Referenced by RCL_Handler_Ieee_RxTx().
|
static |
References ieeeHandlerState, RCL_CommandStatus_Error, RCL_CommandStatus_Error_RxFifo, RCL_CommandStatus_Error_Synth, RCL_CommandStatus_Error_TxFifo, RCL_CommandStatus_Error_UnknownOp, RCL_CommandStatus_HardStopApi, RCL_CommandStatus_RxTimeout, RCL_Scheduler_findStopStatus(), RCL_StopType_Graceful, and RCL_StopType_Hard.
Referenced by RCL_Handler_Ieee_RxTx(), and RCL_Handler_Ieee_TxTest().
|
static |
References LRF_EventRxBufFull, LRF_EventRxIgnored, and LRF_EventRxNok.
Referenced by RCL_Handler_Ieee_RxTx().
|
static |
Referenced by RCL_Handler_Ieee_RxTx().
|
static |
References LRF_RSSI_INVALID.
Referenced by RCL_Handler_Ieee_RxTx().
|
static |
References RCL_SchedulerStopInfo::cmdStopTime, customEvent, customHardStop, hal_enable_hard_stop_time_irq(), hal_setup_hard_stop_time(), RCL_SchedulerState::hardStopInfo, ieeeHandlerState, noEvent, RCL_Handler_Ieee_restoreStopTime(), RCL_Scheduler_getCurrentTime(), RCL_Scheduler_isLater(), RCL_SchedulerStopReason_None, RCL_SchedulerStopReason_Scheduling, RCL_SchedulerStopReason_Timeout, rclSchedulerState, RCL_SchedulerStopInfo::schedStopTime, and RCL_SchedulerStopInfo::stopReason.
Referenced by RCL_Handler_Ieee_RxTx().
|
static |
References RCL_SchedulerStopInfo::apiStopEnabled, hal_cancel_hard_stop_time(), RCL_SchedulerState::hardStopInfo, ieeeHandlerState, LRF_sendHardStop(), noEvent, RCL_Scheduler_setStopTimes(), RCL_StopType_Hard, and rclSchedulerState.
Referenced by RCL_Handler_Ieee_RxTx(), and RCL_Handler_Ieee_setCustomEventTime().
| RCL_Events RCL_Handler_Ieee_RxTx | ( | RCL_Command * | cmd, |
| LRF_Events | lrfEvents, | ||
| RCL_Events | rclEventsIn | ||
| ) |
References RCL_SchedulerState::actualStartTime, RCL_CmdIeee_PanConfig::autoAckMode, RCL_CmdIeee_PanIdAddr::combined, customEvent, customHardStop, RCL_CmdIeee_PanConfig::defaultPend, RCL_CmdIeee_SourceMatchingTableShort::entryEnable, RCL_CmdIeee_SourceMatchingTableShort::framePending, hal_setup_sync_found_cap(), IEEE_BACKOFF_PERIOD, IEEE_CCA_START_TIME_MARGIN, IEEE_MAC_FCF_LEN, IEEE_PHY_HDR_LEN, ieeeHandlerState, RCL_CmdIeee_PanConfig::localExtAddr, RCL_CmdIeee_PanConfig::localPanId, RCL_CmdIeee_PanConfig::localShortAddr, LRF_clearHwInterrupt(), LRF_disable(), LRF_disableHwInterrupt(), LRF_disableSynthRefsys(), LRF_enable(), LRF_enableHwInterrupt(), LRF_enableSynthRefsys(), LRF_EventOpDone, LRF_EventOpError, LRF_EventRfesoft0, LRF_EventRxBufFull, LRF_EventRxEmpty, LRF_EventRxIgnored, LRF_EventRxNok, LRF_EventRxOk, LRF_EventTxAck, LRF_EventTxDone, LRF_getTxFifoWritable(), LRF_peekRxFifo(), LRF_prepareRxFifo(), LRF_prepareTxFifo(), LRF_programFrequency(), LRF_programTxPower(), LRF_readRssi(), LRF_readRxFifoWords(), LRF_RSSI_INVALID, LRF_sendHardStop(), LRF_waitForTopsmReady(), LRF_writeTxFifoWords(), RCL_CmdIeee_PanConfig::maxFrameVersion, noEvent, RCL_CmdIeee_SourceMatchingTableShort::numEntries, RCL_CmdIeee_PanConfig::panCoord, RCL_Buffer_DataEntry_paddedLen, RCL_CMD_IEEE_MAX_NUM_PAN, RCL_CMD_IEEE_SOURCE_MATCH_TABLE_SHORT_MAX_LEN, RCL_CMD_IEEE_SOURCE_MATCH_TABLE_SHORT_NUM_WORDS, RCL_CmdIeee_AutoAck_ImmAckAutoPendAll, RCL_CmdIeee_AutoAck_ImmAckAutoPendDataReq, RCL_CmdIeee_AutoAck_ImmAckNoAutoPend, RCL_CmdIeee_AutoAck_Off, RCL_CmdIeee_CcaMode1Energy, RCL_CmdIeee_CcaMode2Signal, RCL_CmdIeee_CcaMode3EnergyAndSignal, RCL_CmdIeee_CcaMode3EnergyOrSignal, RCL_CmdIeee_CcaMode4Aloha, RCL_CmdIeee_NoCca, RCL_CommandStatus_Active, RCL_CommandStatus_ChannelBusy, RCL_CommandStatus_DescheduledApi, RCL_CommandStatus_Error, RCL_CommandStatus_Error_MissingTxBuffer, RCL_CommandStatus_Error_Param, RCL_CommandStatus_Error_RxBufferCorruption, RCL_CommandStatus_Error_StartTooLate, RCL_CommandStatus_Error_TxBufferCorruption, RCL_CommandStatus_Finished, RCL_CommandStatus_GracefulStopApi, RCL_CommandStatus_HardStopApi, RCL_CommandStatus_isAnyStop, RCL_CommandStatus_NoSync, RCL_CommandStatus_RxErr, RCL_CommandStatus_Scheduled, RCL_Handler_Ieee_findPbeErrorEndStatus(), RCL_Handler_Ieee_initStats(), RCL_Handler_Ieee_maskEventsByFifoConf(), RCL_Handler_Ieee_restoreStopTime(), RCL_Handler_Ieee_setCustomEventTime(), RCL_Handler_Ieee_updateRxCurBufferAndFifo(), RCL_Handler_Ieee_updateStats(), RCL_MultiBuffer_commitBytes(), RCL_MultiBuffer_getBuffer(), RCL_MultiBuffer_getNextWritableByte(), RCL_ProfilingEvent_PostprocStart, RCL_ProfilingEvent_PreprocStop, RCL_Schedule_AbsTime, RCL_Schedule_Now, RCL_Scheduler_delta(), RCL_Scheduler_findStopStatus(), RCL_Scheduler_getCurrentTime(), RCL_Scheduler_isLater(), RCL_Scheduler_setCustomStartStopTimeEarliestStart(), RCL_Scheduler_setNewStartAbsTime(), RCL_Scheduler_setNewStartNow(), RCL_Scheduler_setStartStopTimeEarliestStart(), RCL_StopType_Graceful, RCL_StopType_Hard, RCL_StopType_None, rclSchedulerState, rxStateNoRx, rxStateRunning, rxStateWaitForStart, RCL_CmdIeee_SourceMatchingTableShort::shortEntry, RCL_CmdIeee_PanConfig::sourceMatchingTableExt, RCL_CmdIeee_PanConfig::sourceMatchingTableShort, TxPowerResult_Ok, txStateCheckAck, txStateFinished, txStateNewAction, txStateNoTx, txStateSetTxTime, txStateSetupCca, txStateStopToSetTx, txStateTx, txStateTxRx, txStateTxRxAck, txStateWaitForCca, txStateWaitForCmdEnd, and txStateWaitForTx.
| RCL_Events RCL_Handler_Ieee_TxTest | ( | RCL_Command * | cmd, |
| LRF_Events | lrfEvents, | ||
| RCL_Events | rclEventsIn | ||
| ) |
References ieeeHandlerState, LRF_disable(), LRF_disableSynthRefsys(), LRF_enable(), LRF_enableHwInterrupt(), LRF_enableSynthRefsys(), LRF_EventOpDone, LRF_EventOpError, LRF_programFrequency(), LRF_programTxPower(), LRF_waitForTopsmReady(), RCL_CMD_IEEE_WH_MODE_OFF, RCL_CMD_IEEE_WH_MODE_PRBS15, RCL_CMD_IEEE_WH_MODE_PRBS32, RCL_CMD_IEEE_WH_MODE_PRBS9, RCL_CommandStatus_Active, RCL_CommandStatus_Error_Param, RCL_CommandStatus_Error_Synth, RCL_CommandStatus_Finished, RCL_Handler_Ieee_findPbeErrorEndStatus(), RCL_HANDLER_IEEE_PRBS15_POLY, RCL_HANDLER_IEEE_PRBS32_POLY, RCL_HANDLER_IEEE_PRBS9_POLY, RCL_HANDLER_IEEE_PRBS_INIT, RCL_HANDLER_IEEE_RESTORE_MODCTRL, RCL_HANDLER_IEEE_RESTORE_NONE, RCL_HANDLER_IEEE_RESTORE_SFD, RCL_HANDLER_IEEE_RESTORE_WHITENING, RCL_Scheduler_setStartStopTimeEarliestStart(), and TxPowerResult_Ok.
| RCL_CommandStatus RCL_IEEE_Tx_submit | ( | RCL_CmdIeeeRxTx * | cmd, |
| RCL_CmdIeee_TxAction * | txAction | ||
| ) |
Update tx action.
| cmd | Existing IEEE command to submit the TX on top of |
| txAction | TX action to apply |
References RCL_SchedulerState::currCmd, ieeeHandlerState, RCL_CommandStatus_Error, RCL_CommandStatus_Error_AlreadySubmitted, RCL_CommandStatus_Finished, RCL_CommandStatus_Idle, RCL_EventHandlerCmdUpdate, RCL_Scheduler_postEvent(), rclSchedulerState, txStateNewAction, and txStateNoTx.
| RCL_CommandStatus RCL_IEEE_Tx_stop | ( | RCL_CmdIeeeRxTx * | cmd, |
| RCL_StopType | stopType | ||
| ) |
Stop a Tx action in an IEEE command.
Sends the message to try to stop a TX action. When the function returns, the command may still be running. Depending on the stop type, the operation may stop after some time.
| cmd | [in] IEEE command |
| stopType | [in] Stop type; telling which situations the operation will stop |
References ieeeHandlerState, RCL_CommandStatus_Active, RCL_CommandStatus_DescheduledApi, RCL_CommandStatus_Error_Param, RCL_CommandStatus_Finished, RCL_EventHandlerCmdUpdate, and RCL_Scheduler_postEvent().
| struct { ... } ieeeHandlerState |