|
Radio Control Layer (RCL)
|
#include <stdint.h>#include <stdlib.h>#include <string.h>#include <stddef.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/RCL_Feature.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 |
Functions | |
| static RCL_CommandStatus | RCL_Handler_Ieee_processRxAction (const RCL_CmdIeee_RxAction *rxAction) |
| static RCL_IEEE_AckEntryResult | RCL_Handler_Ieee_txAckUpdate (RCL_CmdIeeeRxTx *cmd, uint32_t *ackData, uint8_t numWords) |
| 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) |
| static bool | RCL_Handler_Ieee_updateSrcMatchTableShort (RCL_CmdIeeeRxTx *ieeeCmd) |
| static uint32_t | RCL_Handler_IEEE_findNumExtraBytes (uint32_t fifoCfg) |
| static void | RCL_Handler_Ieee_setCoexEndMode (void) |
| static void | RCL_Handler_Ieee_setCoexPriority (bool tx) |
| static void | RCL_Handler_Ieee_processCoexTxPriority (RCL_CmdIeee_TxAction *txAction) |
| 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... | |
| RCL_IEEE_AckEntryResult | RCL_IEEE_enterAck (RCL_CmdIeeeRxTx *cmd, uint32_t *ackData, uint8_t numWords) |
| Provide ACK data to be transmitted in response to received frame. More... | |
| RCL_IEEE_AckEntryResult | RCL_IEEE_cancelAck (RCL_CmdIeeeRxTx *cmd) |
| Cancel transmission of ACK in response to received frame. More... | |
| size_t | RCL_IEEE_readPartialFrame (RCL_CmdIeeeRxTx *cmd, RCL_Buffer_DataEntry *dataEntry, size_t entrySize) |
| Read partially received frame into buffer. More... | |
| RCL_IEEE_UpdateResult | RCL_IEEE_updateRxAction (RCL_CmdIeeeRxTx *cmd) |
| Update RX Action contents. More... | |
| RCL_IEEE_UpdateResult | RCL_IEEE_updateSourceMatchingTableShort (RCL_CmdIeeeRxTx *cmd, RCL_IEEE_SourceMatchingUpdate description, RCL_CmdIeee_PanIdAddr newPanIdAddr) |
| Update short source matching table. More... | |
| RCL_IEEE_UpdateResult | RCL_IEEE_updateTxPower (RCL_CmdIeeeRxTx *cmd, RCL_Command_TxPower newTxPower) |
| Update TX power. More... | |
| int8_t | RCL_IEEE_getRxRssi (const RCL_Buffer_DataEntry *rxEntry) |
| Get received RSSI from frame. More... | |
| uint8_t | RCL_IEEE_getRxLqi (const RCL_Buffer_DataEntry *rxEntry) |
| Get received LQI from frame. More... | |
| uint32_t | RCL_IEEE_getRxTimestamp (const RCL_Buffer_DataEntry *rxEntry) |
| Get received timestamp from frame. 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 { | |
| uint32_t | ccaTxStartTime |
| uint32_t * | ackData |
| uint16_t | fifoCfg |
| uint8_t | numPan |
| RCL_StopType | txActionStop |
| RCL_Handler_Ieee_TxState | txState |
| RCL_Handler_Ieee_RxState | rxState |
| RCL_Handler_Ieee_TxAckState | txAckState |
| uint8_t | ccaContentionWindow |
| bool | waitingForValidRssi |
| bool | allowTxDelay |
| bool | alwaysStoreAck |
| bool | frameFiltStop |
| bool | immAckExpected |
| bool | temperatureRestart |
| uint8_t | expSeqNo |
| bool | restoreThresh |
| bool | coexNoGrant |
| uint8_t | coexPriority |
| bool | coexPriorityChange |
| bool | coexRestart |
| RCL_IEEE_SourceMatchingUpdate | srcMatchUpdateDesc |
| RCL_CmdIeee_PanIdAddr | srcMatchNewPanIdAddr |
| bool(* | srcMatchUpdateFun )(RCL_CmdIeeeRxTx *ieeeCmd) |
| uint16_t | demc1be1 |
| uint16_t | demc1be2 |
| volatile uint8_t | ackNumRemainingWords |
| volatile uint8_t | ackNumWords |
| volatile RCL_IEEE_AckEntryResult | ackResult |
| volatile uint8_t | bytesReadFromFifo |
| volatile uint16_t | savedRxfRp |
| volatile bool | rxActionUpdate |
| volatile RCL_Handler_Ieee_SourceMatchUpdatePhase | srcMatchUpdatePhase |
| } | rxTx |
| } | |
| } | ieeeHandlerState |
| const LRF_CoexConfiguration | lrfCoexConfiguration |
| 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 |
| #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_MAC_CRC_LEN 2 |
Referenced by RCL_Handler_IEEE_findNumExtraBytes().
| #define IEEE_TIMESTAMP_ADJUST 697U /* CC23XX: Sync found strobe comes 174.25 us after start of preamble */ |
Referenced by RCL_Handler_Ieee_updateStats(), and RCL_IEEE_getRxTimestamp().
| #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().
| #define RCL_HANDLER_IEEE_ACK_LENGTH_IDLE 0x00U |
Referenced by RCL_Handler_Ieee_RxTx(), and RCL_Handler_Ieee_txAckUpdate().
| #define RCL_HANDLER_IEEE_ACK_LENGTH_ABORT 0xFFU |
Referenced by RCL_Handler_Ieee_RxTx(), RCL_IEEE_cancelAck(), and RCL_IEEE_enterAck().
| #define RCL_HANDLER_IEEE_ACK_LENGTH_MAX 33U |
Referenced by RCL_Handler_Ieee_RxTx(), and RCL_IEEE_enterAck().
| #define IEEE_RSSI_MIN_VALUE (-128) |
Referenced by RCL_Handler_Ieee_initStats(), and RCL_Handler_Ieee_updateStats().
| #define IEEE_THRESHOLD_NO_SYNC 0x7F |
Referenced by RCL_Handler_Ieee_processRxAction().
| #define IEEE_SOURCE_MATCHING_BUSY ((uint16_t) -2) |
Referenced by RCL_Handler_Ieee_updateSrcMatchTableShort().
| #define COEX_GRANT_GLOBAL_ENABLE | ( | coexConfig | ) | (coexConfig.grantPin != (RFE_COMMON_RAM_GRANTPIN_CFG_DIS >> RFE_COMMON_RAM_GRANTPIN_CFG_S)) |
Referenced by RCL_Handler_Ieee_RxTx().
| #define COEX_REQUEST_GLOBAL_ENABLE | ( | coexConfig | ) | (coexConfig.T1 != 0) |
|
static |
References RCL_CmdIeee_PanConfig::autoAckMode, RCL_CmdIeee_PanIdAddr::combined, RCL_CmdIeee_PanConfig::defaultPend, RCL_CmdIeee_SourceMatchingTableShort::entryEnable, RCL_CmdIeee_SourceMatchingTableShort::framePending, IEEE_THRESHOLD_NO_SYNC, ieeeHandlerState, RCL_CmdIeee_PanConfig::localExtAddr, RCL_CmdIeee_PanConfig::localPanId, RCL_CmdIeee_PanConfig::localShortAddr, LRF_disableHwInterrupt(), LRF_enableHwInterrupt(), LRF_EventOpDone, LRF_EventOpError, LRF_EventRxBufFull, LRF_EventRxCtrlAck, LRF_EventRxIgnored, LRF_EventRxNok, LRF_EventRxOk, LRF_EventTxAck, LRF_EventTxCtrl, RCL_CmdIeee_PanConfig::maxFrameVersion, RCL_CmdIeee_SourceMatchingTableShort::numEntries, RCL_CmdIeee_PanConfig::panCoord, 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_ImmAckProvidedFrame, RCL_CmdIeee_AutoAck_Off, RCL_CommandStatus_Active, RCL_CommandStatus_Error_Param, RCL_Handler_Ieee_maskEventsByFifoConf(), RCL_CmdIeee_SourceMatchingTableShort::shortEntry, RCL_CmdIeee_PanConfig::sourceMatchingTableExt, and RCL_CmdIeee_PanConfig::sourceMatchingTableShort.
Referenced by RCL_Handler_Ieee_RxTx().
|
static |
|
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, LRF_EventRxNok, and LRF_EventTxAck.
Referenced by RCL_Handler_Ieee_processRxAction().
|
static |
References IEEE_RSSI_MIN_VALUE, IEEE_TIMESTAMP_ADJUST, LRF_readMaxRssi(), LRF_readRssi(), and LRF_RSSI_INVALID.
Referenced by RCL_Handler_Ieee_RxTx().
|
static |
References IEEE_RSSI_MIN_VALUE, LRF_initializeMaxRssi(), and 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_Handler_Ieee_setCoexEndMode(), 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().
|
static |
References RCL_CmdIeee_SourceMatchingTableShort::entryEnable, RCL_CmdIeee_SourceMatchingTableShort::framePending, IEEE_SOURCE_MATCHING_BUSY, ieeeHandlerState, LRF_disableHwInterrupt(), LRF_enableHwInterrupt(), LRF_EventRxCtrl, noSrcMatchUpdate, RCL_CmdIeee_SourceMatchingTableShort::numEntries, RCL_IEEE_EnableEntry, RCL_IEEE_FrameNotPending, RCL_IEEE_FramePending, RCL_IEEE_NewAddrFrameNotPending, RCL_IEEE_NewAddrFramePending, RCL_CmdIeee_SourceMatchingTableShort::shortEntry, srcMatchUpdateFinish, and srcMatchUpdateStart.
Referenced by RCL_IEEE_updateSourceMatchingTableShort().
|
static |
References IEEE_MAC_CRC_LEN.
Referenced by RCL_IEEE_getRxLqi(), and RCL_IEEE_getRxRssi().
|
static |
References COEX_REQUEST_GLOBAL_ENABLE, and ieeeHandlerState.
Referenced by RCL_Handler_Ieee_RxTx(), and RCL_Handler_Ieee_setCustomEventTime().
|
static |
References COEX_REQUEST_GLOBAL_ENABLE, and ieeeHandlerState.
Referenced by RCL_Handler_Ieee_RxTx().
|
static |
References COEX_REQUEST_GLOBAL_ENABLE, ieeeHandlerState, and LRF_CoexConfiguration::invertedPriority.
Referenced by RCL_Handler_Ieee_RxTx().
| RCL_Events RCL_Handler_Ieee_RxTx | ( | RCL_Command * | cmd, |
| LRF_Events | lrfEvents, | ||
| RCL_Events | rclEventsIn | ||
| ) |
References RCL_SchedulerState::actualStartTime, RCL_SchedulerStopInfo::apiStopEnabled, COEX_GRANT_GLOBAL_ENABLE, COEX_REQUEST_GLOBAL_ENABLE, customEvent, customHardStop, RCL_FeatureControl::enableTemperatureMonitoring, RCL_SchedulerState::gracefulStopInfo, hal_power_release_swtcxo_update_constraint(), hal_power_set_swtcxo_update_constraint(), hal_setup_sync_found_cap(), RCL_SchedulerState::hardStopInfo, IEEE_BACKOFF_PERIOD, IEEE_CCA_START_TIME_MARGIN, IEEE_MAC_FCF_LEN, IEEE_PHY_HDR_LEN, LRF_CoexConfiguration::ieeeCorrMask, ieeeHandlerState, LRF_CoexConfiguration::ieeeTSync, LRF_CoexConfiguration::invertedPriority, LRF_clearHwInterrupt(), LRF_deassertCoexRequest(), LRF_disable(), LRF_disableCoexGrant(), LRF_disableHwInterrupt(), LRF_disableSynthRefsys(), LRF_disableTemperatureMonitoring(), LRF_enable(), LRF_enableCoexGrant(), LRF_enableHwInterrupt(), LRF_enableSynthRefsys(), LRF_enableTemperatureMonitoring(), LRF_EventOpDone, LRF_EventOpError, LRF_EventRfesoft0, LRF_EventRfesoft1, LRF_EventRxCtrl, LRF_EventRxEmpty, LRF_EventTxDone, LRF_getTxFifoWritable(), LRF_peekRxFifo(), LRF_prepareRxFifo(), LRF_prepareTxFifo(), LRF_programFrequency(), LRF_programTxPower(), LRF_readRssi(), LRF_readRxFifoWords(), LRF_RSSI_INVALID, LRF_sendGracefulStop(), LRF_sendHardStop(), LRF_updateTemperatureCompensation(), LRF_waitForTopsmReady(), LRF_writeTxFifoWords(), noEvent, noSrcMatchUpdate, RCL_Buffer_bytesToWords, RCL_Buffer_DataEntry_paddedLen, RCL_CMD_IEEE_MAX_NUM_PAN, 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_CoexNoGrant, 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_FramePending, RCL_CommandStatus_GracefulStopApi, RCL_CommandStatus_HardStopApi, RCL_CommandStatus_isAnyStop, RCL_CommandStatus_NoSync, RCL_CommandStatus_RxErr, RCL_CommandStatus_Scheduled, RCL_HANDLER_IEEE_ACK_LENGTH_ABORT, RCL_HANDLER_IEEE_ACK_LENGTH_IDLE, RCL_HANDLER_IEEE_ACK_LENGTH_MAX, RCL_Handler_Ieee_findPbeErrorEndStatus(), RCL_Handler_Ieee_initStats(), RCL_Handler_Ieee_processCoexTxPriority(), RCL_Handler_Ieee_processRxAction(), RCL_Handler_Ieee_restoreStopTime(), RCL_Handler_Ieee_setCoexEndMode(), RCL_Handler_Ieee_setCoexPriority(), RCL_Handler_Ieee_setCustomEventTime(), RCL_Handler_Ieee_updateRxCurBufferAndFifo(), RCL_Handler_Ieee_updateStats(), RCL_IEEE_AckAborted, RCL_IEEE_AckError, RCL_IEEE_AckNotExpected, RCL_IEEE_AckOk, RCL_IEEE_AckPartial, 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, rclFeatureControl, rclSchedulerState, rxStateNoRx, rxStateRunning, rxStateWaitForStart, srcMatchUpdateStart, LRF_CoexConfiguration::T1, LRF_CoexConfiguration::T2, txAckStateAckAborted, txAckStatePayloadComplete, txAckStatePayloadExpected, txAckStatePending, 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 hal_power_release_swtcxo_update_constraint(), hal_power_set_swtcxo_update_constraint(), 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().
| RCL_IEEE_AckEntryResult RCL_IEEE_enterAck | ( | RCL_CmdIeeeRxTx * | cmd, |
| uint32_t * | ackData, | ||
| uint8_t | numWords | ||
| ) |
Provide ACK data to be transmitted in response to received frame.
Provide an ACK frame or the parts of it, which will be transmitted if the frame was received successfully
| cmd | Existing IEEE command for which to enter ACK |
| ackData | Pointer to data that will be appended; first part should be of type RCL_Buffer_DataEntry |
| numWords | Number of 32-bit words provided at this point; 0 if entry is complete |
References RCL_Buffer_bytesToWords, RCL_Buffer_DataEntry_paddedLen, RCL_HANDLER_IEEE_ACK_LENGTH_ABORT, RCL_HANDLER_IEEE_ACK_LENGTH_MAX, RCL_Handler_Ieee_txAckUpdate(), and RCL_IEEE_AckError.
| RCL_IEEE_AckEntryResult RCL_IEEE_cancelAck | ( | RCL_CmdIeeeRxTx * | cmd | ) |
Cancel transmission of ACK in response to received frame.
Cancel transmission of an ACK by not starting it or aborting transmission
| cmd | Existing IEEE command for which to enter ACK |
References RCL_HANDLER_IEEE_ACK_LENGTH_ABORT, RCL_Handler_Ieee_txAckUpdate(), and RCL_IEEE_AckError.
| size_t RCL_IEEE_readPartialFrame | ( | RCL_CmdIeeeRxTx * | cmd, |
| RCL_Buffer_DataEntry * | dataEntry, | ||
| size_t | entrySize | ||
| ) |
Read partially received frame into buffer.
| cmd | Existing IEEE command receiving the frame |
| dataEntry | Entry for storing data |
| entrySize | Number of bytes available in entry, including header fields (should be a multiple of 4) |
References data, ieeeHandlerState, LRF_getUncommittedFifoStatus(), LRF_peekRxFifoWords(), and RCL_CommandStatus_Active.
| RCL_IEEE_UpdateResult RCL_IEEE_updateRxAction | ( | RCL_CmdIeeeRxTx * | cmd | ) |
Update RX Action contents.
Re-read the contents of the receive action of the given command. All elements will be re-read at an appropriate time; until then, the old value is used. The rxBuffers element should only be updated through normal RCL_Buffer functions, though. If the status indicates that the update is pending, a cmdUpdateDone event is raised when it is done. If an error occurred during the update, the command will end with error.
| cmd | Existing IEEE command for which to re-read the RX action contents |
References ieeeHandlerState, noSrcMatchUpdate, RCL_CMDID_IEEE_RX_TX, RCL_CommandStatus_Active, RCL_EventHandlerCmdUpdate, RCL_IEEE_UpdateCmdError, RCL_IEEE_UpdateDone, RCL_IEEE_UpdatePending, RCL_Scheduler_postEvent(), and result.
| RCL_IEEE_UpdateResult RCL_IEEE_updateSourceMatchingTableShort | ( | RCL_CmdIeeeRxTx * | cmd, |
| RCL_IEEE_SourceMatchingUpdate | description, | ||
| RCL_CmdIeee_PanIdAddr | newPanIdAddr | ||
| ) |
Update short source matching table.
Update the given source matching table in a way that is safe even if a running command is using the source matching table.
| cmd | Existing IEEE command for which to update the source matching table |
| description | Description of operation to perform |
| newPanIdAddr | If entry is changed: New PAN ID and address to set |
References RCL_CmdIeee_SourceMatchingTableShort::entryEnable, RCL_CmdIeee_SourceMatchingTableShort::framePending, ieeeHandlerState, RCL_IEEE_SourceMatchingUpdate::index, noSrcMatchUpdate, RCL_CmdIeee_SourceMatchingTableShort::numEntries, RCL_IEEE_SourceMatchingUpdate::operation, RCL_IEEE_SourceMatchingUpdate::panNo, RCL_CMDID_IEEE_RX_TX, RCL_CommandStatus_Active, RCL_EventHandlerCmdUpdate, RCL_Handler_Ieee_updateSrcMatchTableShort(), RCL_IEEE_DisableEntry, RCL_IEEE_EnableEntry, RCL_IEEE_FrameNotPending, RCL_IEEE_FramePending, RCL_IEEE_NewAddrFrameNotPending, RCL_IEEE_NewAddrFramePending, RCL_IEEE_UpdateCmdError, RCL_IEEE_UpdateDone, RCL_IEEE_UpdateIndexError, RCL_IEEE_UpdateParamError, RCL_IEEE_UpdatePending, RCL_Scheduler_postEvent(), result, RCL_CmdIeee_SourceMatchingTableShort::shortEntry, and srcMatchUpdateStart.
| RCL_IEEE_UpdateResult RCL_IEEE_updateTxPower | ( | RCL_CmdIeeeRxTx * | cmd, |
| RCL_Command_TxPower | newTxPower | ||
| ) |
Update TX power.
Update the TX power used for future frames sent with TX actions or as ACKs for a running command. The command structure will be updated with the new value if the update was successful.
| cmd | Existing IEEE command for which to update the TX power |
| newTxPower | New TX power value |
References LRF_programTxPower(), LRF_TxPower_None, LRF_TxPowerTable_Index::rawValue, RCL_CMDID_IEEE_RX_TX, RCL_CommandStatus_Active, RCL_IEEE_UpdateCmdError, RCL_IEEE_UpdateDone, RCL_IEEE_UpdateParamError, result, and TxPowerResult_Ok.
| int8_t RCL_IEEE_getRxRssi | ( | const RCL_Buffer_DataEntry * | rxEntry | ) |
Get received RSSI from frame.
Returns the RSSI field of a received frame, or LRF_RSSI_INVALID if appending RSSI is not enabled
| rxEntry | Received data entry |
References ieeeHandlerState, LRF_RSSI_INVALID, and RCL_Handler_IEEE_findNumExtraBytes().
| uint8_t RCL_IEEE_getRxLqi | ( | const RCL_Buffer_DataEntry * | rxEntry | ) |
Get received LQI from frame.
Returns the LQI field of a received frame, or 0 if appending LQI is not enabled
| rxEntry | Received data entry |
References ieeeHandlerState, and RCL_Handler_IEEE_findNumExtraBytes().
| uint32_t RCL_IEEE_getRxTimestamp | ( | const RCL_Buffer_DataEntry * | rxEntry | ) |
Get received timestamp from frame.
Returns the timestamp in 0.25 us units of a received frame, adjusted to point to the start of the preamble. If appending timestamp is not enabled, 0 is returned. Note that 0 is a valid value, so it cannot be used for error checking.
| rxEntry | Received data entry |
References IEEE_TIMESTAMP_ADJUST, and ieeeHandlerState.
| struct { ... } ieeeHandlerState |
Referenced by RCL_Handler_Ieee_findPbeErrorEndStatus(), RCL_Handler_Ieee_processCoexTxPriority(), RCL_Handler_Ieee_processRxAction(), RCL_Handler_Ieee_restoreStopTime(), RCL_Handler_Ieee_RxTx(), RCL_Handler_Ieee_setCoexEndMode(), RCL_Handler_Ieee_setCoexPriority(), RCL_Handler_Ieee_setCustomEventTime(), RCL_Handler_Ieee_txAckUpdate(), RCL_Handler_Ieee_TxTest(), RCL_Handler_Ieee_updateRxCurBufferAndFifo(), RCL_Handler_Ieee_updateSrcMatchTableShort(), RCL_IEEE_getRxLqi(), RCL_IEEE_getRxRssi(), RCL_IEEE_getRxTimestamp(), RCL_IEEE_readPartialFrame(), RCL_IEEE_Tx_stop(), RCL_IEEE_Tx_submit(), RCL_IEEE_updateRxAction(), and RCL_IEEE_updateSourceMatchingTableShort().
| const LRF_CoexConfiguration lrfCoexConfiguration |
Referenced by LRF_enableCoexGrant().