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>
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().