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>
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_WHITEN_POLY 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 |
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 | txStartTime |
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 | txStartTime | |
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_WHITEN_POLY 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_disable_hard_stop_time_irq(), 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, customEvent, customHardStop, RCL_CmdIeee_PanConfig::defaultPend, 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_EventRxCtrlAck, LRF_EventRxEmpty, LRF_EventRxIgnored, LRF_EventRxNok, LRF_EventRxOk, 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_PanConfig::panCoord, RCL_Buffer_DataEntry_paddedLen, RCL_CMD_IEEE_MAX_NUM_PAN, RCL_CmdIeee_AutoAck_ImmAckAutoPendAll, RCL_CmdIeee_AutoAck_ImmAckAutoPendDataReq, RCL_CmdIeee_AutoAck_ImmAckNoAutoPend, RCL_CmdIeee_AutoAck_Off, RCL_CmdIeee_CcaMode1Energy, 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, TxPowerResult_Ok, txStateCheckAck, txStateFinished, txStateNewAction, txStateNoTx, txStateSetTxTime, txStateSetupCca, 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_DEFAULT, RCL_CMD_IEEE_WH_MODE_PRBS15, RCL_CMD_IEEE_WH_MODE_PRBS32, 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_WHITEN_POLY, 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 |