Radio Control Layer (RCL)
ieee.c File Reference
#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
 

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_MAC_CRC_LEN   2
 
#define IEEE_TIMESTAMP_ADJUST   697U /* CC23XX: Sync found strobe comes 174.25 us after start of preamble */
 
#define IEEE_BACKOFF_PERIOD   RCL_SCHEDULER_SYSTIM_US(320)
 
#define IEEE_CCA_START_TIME_MARGIN   RCL_SCHEDULER_SYSTIM_US(192)
 
#define RCL_HANDLER_IEEE_ACK_LENGTH_IDLE   0x00U
 
#define RCL_HANDLER_IEEE_ACK_LENGTH_ABORT   0xFFU
 
#define RCL_HANDLER_IEEE_ACK_LENGTH_MAX   33U
 
#define IEEE_RSSI_MIN_VALUE   (-128)
 
#define IEEE_THRESHOLD_NO_SYNC   0x7F
 
#define IEEE_SOURCE_MATCHING_BUSY   ((uint16_t) -2)
 
#define COEX_GRANT_GLOBAL_ENABLE(coexConfig)   (coexConfig.grantPin != (RFE_COMMON_RAM_GRANTPIN_CFG_DIS >> RFE_COMMON_RAM_GRANTPIN_CFG_S))
 
#define COEX_REQUEST_GLOBAL_ENABLE(coexConfig)   (coexConfig.T1 != 0)
 

Enumerations

enum  RCL_Handler_Ieee_TxState {
  txStateNoTx, txStateNewAction, txStateSetupCca, txStateWaitForCca,
  txStateStopToSetTx, txStateSetTxTime, txStateWaitForTx, txStateTx,
  txStateTxRx, txStateTxRxAck, txStateCheckAck, txStateWaitForCmdEnd,
  txStateFinished
}
 
enum  RCL_Handler_Ieee_RxState { rxStateNoRx, rxStateWaitForStart, rxStateRunning }
 
enum  RCL_Handler_Ieee_TxAckState { txAckStatePending, txAckStatePayloadExpected, txAckStatePayloadComplete, txAckStateAckAborted }
 
enum  RCL_Handler_Ieee_EventType { noEvent, customEvent, customHardStop }
 
enum  RCL_Handler_Ieee_SourceMatchUpdatePhase { noSrcMatchUpdate, srcMatchUpdateStart, srcMatchUpdateFinish }
 

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
 

Data Structure Documentation

§ .common

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

§ .__unnamed__

union .__unnamed__
Data Fields
__unnamed__ txTest
__unnamed__ rxTx

§ .__unnamed__.txTest

struct .__unnamed__.txTest
Data Fields
uint16_t restoreOpt
uint16_t storedWhitenInit
uint32_t storedWhitenPoly
uint32_t storedMdmSyncA

Macro Definition Documentation

§ RCL_HANDLER_IEEE_PRBS9_POLY

#define RCL_HANDLER_IEEE_PRBS9_POLY   0x08800000

Polynomial to use for PRBS9 data

Referenced by RCL_Handler_Ieee_TxTest().

§ RCL_HANDLER_IEEE_PRBS15_POLY

#define RCL_HANDLER_IEEE_PRBS15_POLY   0x80020000

Polynomial to use for PRBS15 data

Referenced by RCL_Handler_Ieee_TxTest().

§ RCL_HANDLER_IEEE_PRBS32_POLY

#define RCL_HANDLER_IEEE_PRBS32_POLY   0x00400007

Polynomial to use for PRBS32 data

Referenced by RCL_Handler_Ieee_TxTest().

§ RCL_HANDLER_IEEE_PRBS_INIT

#define RCL_HANDLER_IEEE_PRBS_INIT   0x0000001F

Referenced by RCL_Handler_Ieee_TxTest().

§ RCL_HANDLER_IEEE_RESTORE_NONE

#define RCL_HANDLER_IEEE_RESTORE_NONE   0x0000

Referenced by RCL_Handler_Ieee_TxTest().

§ RCL_HANDLER_IEEE_RESTORE_MODCTRL

#define RCL_HANDLER_IEEE_RESTORE_MODCTRL   0x0001

Referenced by RCL_Handler_Ieee_TxTest().

§ RCL_HANDLER_IEEE_RESTORE_WHITENING

#define RCL_HANDLER_IEEE_RESTORE_WHITENING   0x0002

Referenced by RCL_Handler_Ieee_TxTest().

§ RCL_HANDLER_IEEE_RESTORE_SFD

#define RCL_HANDLER_IEEE_RESTORE_SFD   0x0004

Referenced by RCL_Handler_Ieee_TxTest().

§ IEEE_PHY_HDR_LEN

#define IEEE_PHY_HDR_LEN   1

Referenced by RCL_Handler_Ieee_RxTx().

§ IEEE_MAC_FCF_LEN

#define IEEE_MAC_FCF_LEN   2

Referenced by RCL_Handler_Ieee_RxTx().

§ IEEE_MAC_CRC_LEN

#define IEEE_MAC_CRC_LEN   2

§ IEEE_TIMESTAMP_ADJUST

#define IEEE_TIMESTAMP_ADJUST   697U /* CC23XX: Sync found strobe comes 174.25 us after start of preamble */

§ IEEE_BACKOFF_PERIOD

#define IEEE_BACKOFF_PERIOD   RCL_SCHEDULER_SYSTIM_US(320)

Referenced by RCL_Handler_Ieee_RxTx().

§ IEEE_CCA_START_TIME_MARGIN

#define IEEE_CCA_START_TIME_MARGIN   RCL_SCHEDULER_SYSTIM_US(192)

Referenced by RCL_Handler_Ieee_RxTx().

§ RCL_HANDLER_IEEE_ACK_LENGTH_IDLE

#define RCL_HANDLER_IEEE_ACK_LENGTH_IDLE   0x00U

§ RCL_HANDLER_IEEE_ACK_LENGTH_ABORT

#define RCL_HANDLER_IEEE_ACK_LENGTH_ABORT   0xFFU

§ RCL_HANDLER_IEEE_ACK_LENGTH_MAX

#define RCL_HANDLER_IEEE_ACK_LENGTH_MAX   33U

§ IEEE_RSSI_MIN_VALUE

#define IEEE_RSSI_MIN_VALUE   (-128)

§ IEEE_THRESHOLD_NO_SYNC

#define IEEE_THRESHOLD_NO_SYNC   0x7F

§ IEEE_SOURCE_MATCHING_BUSY

#define IEEE_SOURCE_MATCHING_BUSY   ((uint16_t) -2)

§ COEX_GRANT_GLOBAL_ENABLE

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

§ COEX_REQUEST_GLOBAL_ENABLE

#define COEX_REQUEST_GLOBAL_ENABLE (   coexConfig)    (coexConfig.T1 != 0)

Enumeration Type Documentation

§ RCL_Handler_Ieee_TxState

Enumerator
txStateNoTx 
txStateNewAction 
txStateSetupCca 
txStateWaitForCca 
txStateStopToSetTx 
txStateSetTxTime 
txStateWaitForTx 
txStateTx 
txStateTxRx 
txStateTxRxAck 
txStateCheckAck 
txStateWaitForCmdEnd 
txStateFinished 

§ RCL_Handler_Ieee_RxState

Enumerator
rxStateNoRx 
rxStateWaitForStart 
rxStateRunning 

§ RCL_Handler_Ieee_TxAckState

Enumerator
txAckStatePending 
txAckStatePayloadExpected 
txAckStatePayloadComplete 
txAckStateAckAborted 

§ RCL_Handler_Ieee_EventType

Enumerator
noEvent 
customEvent 
customHardStop 

§ RCL_Handler_Ieee_SourceMatchUpdatePhase

Enumerator
noSrcMatchUpdate 
srcMatchUpdateStart 
srcMatchUpdateFinish 

Function Documentation

§ RCL_Handler_Ieee_processRxAction()

§ RCL_Handler_Ieee_txAckUpdate()

static RCL_IEEE_AckEntryResult RCL_Handler_Ieee_txAckUpdate ( RCL_CmdIeeeRxTx *  cmd,
uint32_t *  ackData,
uint8_t  numWords 
)
static

§ RCL_Handler_Ieee_updateRxCurBufferAndFifo()

static void RCL_Handler_Ieee_updateRxCurBufferAndFifo ( List_List *  rxBuffers)
static

§ RCL_Handler_Ieee_findPbeErrorEndStatus()

§ RCL_Handler_Ieee_maskEventsByFifoConf()

static uint32_t RCL_Handler_Ieee_maskEventsByFifoConf ( uint32_t  mask,
uint16_t  fifoConfVal,
bool  activeUpdate 
)
static

§ RCL_Handler_Ieee_updateStats()

static void RCL_Handler_Ieee_updateStats ( RCL_StatsIeee *  stats,
uint32_t  startTime 
)
static

§ RCL_Handler_Ieee_initStats()

static bool RCL_Handler_Ieee_initStats ( RCL_StatsIeee *  stats,
uint32_t  startTime 
)
static

§ RCL_Handler_Ieee_setCustomEventTime()

§ RCL_Handler_Ieee_restoreStopTime()

§ RCL_Handler_Ieee_updateSrcMatchTableShort()

§ RCL_Handler_IEEE_findNumExtraBytes()

static uint32_t RCL_Handler_IEEE_findNumExtraBytes ( uint32_t  fifoCfg)
static

§ RCL_Handler_Ieee_setCoexEndMode()

static void RCL_Handler_Ieee_setCoexEndMode ( void  )
static

§ RCL_Handler_Ieee_setCoexPriority()

static void RCL_Handler_Ieee_setCoexPriority ( bool  tx)
static

§ RCL_Handler_Ieee_processCoexTxPriority()

static void RCL_Handler_Ieee_processCoexTxPriority ( RCL_CmdIeee_TxAction *  txAction)
static

§ 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_Handler_Ieee_TxTest()

§ RCL_IEEE_Tx_submit()

RCL_CommandStatus RCL_IEEE_Tx_submit ( RCL_CmdIeeeRxTx *  cmd,
RCL_CmdIeee_TxAction *  txAction 
)

Update tx action.

Parameters
cmdExisting IEEE command to submit the TX on top of
txActionTX action to apply
Returns
RCL_CommandStatus result of the submission

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

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.

Parameters
cmd[in] IEEE command
stopType[in] Stop type; telling which situations the operation will stop
Returns
Status of the TX operation; if the operation is not finished, a wait is needed.

References ieeeHandlerState, RCL_CommandStatus_Active, RCL_CommandStatus_DescheduledApi, RCL_CommandStatus_Error_Param, RCL_CommandStatus_Finished, RCL_EventHandlerCmdUpdate, and RCL_Scheduler_postEvent().

§ RCL_IEEE_enterAck()

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

Parameters
cmdExisting IEEE command for which to enter ACK
ackDataPointer to data that will be appended; first part should be of type RCL_Buffer_DataEntry
numWordsNumber of 32-bit words provided at this point; 0 if entry is complete
Returns
Result telling if update was successful
Note
All pieces of data must be provided in portions of 32-bit words

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

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

Parameters
cmdExisting IEEE command for which to enter ACK
Returns
Result telling if update was successful

References RCL_HANDLER_IEEE_ACK_LENGTH_ABORT, RCL_Handler_Ieee_txAckUpdate(), and RCL_IEEE_AckError.

§ RCL_IEEE_readPartialFrame()

size_t RCL_IEEE_readPartialFrame ( RCL_CmdIeeeRxTx *  cmd,
RCL_Buffer_DataEntry *  dataEntry,
size_t  entrySize 
)

Read partially received frame into buffer.

Parameters
cmdExisting IEEE command receiving the frame
dataEntryEntry for storing data
entrySizeNumber of bytes available in entry, including header fields (should be a multiple of 4)
Returns
Number of bytes read into entry, including header fields

References data, ieeeHandlerState, LRF_getUncommittedFifoStatus(), LRF_peekRxFifoWords(), and RCL_CommandStatus_Active.

§ RCL_IEEE_updateRxAction()

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.

Parameters
cmdExisting IEEE command for which to re-read the RX action contents
Returns
Result telling if update was successful

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

RCL_IEEE_UpdateResult RCL_IEEE_updateSourceMatchingTableShort ( RCL_CmdIeeeRxTx *  cmd,
RCL_IEEE_SourceMatchingUpdate  description,
RCL_CmdIeee_PanIdAddr  newPanIdAddr 
)

§ RCL_IEEE_updateTxPower()

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.

Parameters
cmdExisting IEEE command for which to update the TX power
newTxPowerNew TX power value
Returns
Result telling if update was successful

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.

§ RCL_IEEE_getRxRssi()

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

Parameters
rxEntryReceived data entry
Returns
Reported RSSI of received frame

References ieeeHandlerState, LRF_RSSI_INVALID, and RCL_Handler_IEEE_findNumExtraBytes().

§ RCL_IEEE_getRxLqi()

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

Parameters
rxEntryReceived data entry
Returns
Reported LQI of received frame

References ieeeHandlerState, and RCL_Handler_IEEE_findNumExtraBytes().

§ RCL_IEEE_getRxTimestamp()

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.

Parameters
rxEntryReceived data entry
Returns
Timestamp of received frame

References IEEE_TIMESTAMP_ADJUST, and ieeeHandlerState.

Variable Documentation

§ ieeeHandlerState

§ lrfCoexConfiguration

const LRF_CoexConfiguration lrfCoexConfiguration

Referenced by LRF_enableCoexGrant().