Radio Control Layer (RCL)
ieee.c File Reference
#include <stdint.h>
#include <stdlib.h>
#include <string.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_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
 

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 }
 

Functions

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)
 
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 packet. More...
 
RCL_IEEE_AckEntryResult RCL_IEEE_cancelAck (RCL_CmdIeeeRxTx *cmd)
 Cancel transmission of ACK in response to received packet. More...
 
RCL_Buffer_DataEntry * RCL_IEEE_getPartialFrame (RCL_CmdIeeeRxTx *cmd, uint8_t *numBytesAvail)
 Give pointer where a partially received frame can be read. More...
 
size_t RCL_IEEE_readPartialFrame (RCL_CmdIeeeRxTx *cmd, RCL_Buffer_DataEntry *dataEntry, size_t entrySize)
 Read partially received frame into buffer. 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
 
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 immAckExpected
 
bool temperatureRestart
 
uint8_t expSeqNo
 
bool restoreThresh
 
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
 
      } rxTx
 
   } 
 
ieeeHandlerState
 

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

§ .__unnamed__.rxTx

struct .__unnamed__.rxTx
Data Fields
uint32_t ccaTxStartTime
uint32_t * ackData
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 immAckExpected
bool temperatureRestart
uint8_t expSeqNo
bool restoreThresh
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

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_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

Referenced by RCL_Handler_Ieee_RxTx().

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 

Function Documentation

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

RCL_Events RCL_Handler_Ieee_RxTx ( RCL_Command *  cmd,
LRF_Events  lrfEvents,
RCL_Events  rclEventsIn 
)

References RCL_SchedulerState::actualStartTime, RCL_SchedulerStopInfo::apiStopEnabled, RCL_CmdIeee_PanConfig::autoAckMode, RCL_CmdIeee_PanIdAddr::combined, customEvent, customHardStop, RCL_CmdIeee_PanConfig::defaultPend, RCL_FeatureControl::enableTemperatureMonitoring, RCL_CmdIeee_SourceMatchingTableShort::entryEnable, RCL_CmdIeee_SourceMatchingTableShort::framePending, RCL_SchedulerState::gracefulStopInfo, hal_power_release_swtcxo_update_constraint(), hal_power_set_swtcxo_update_constraint(), hal_setup_sync_found_cap(), IEEE_BACKOFF_PERIOD, IEEE_CCA_START_TIME_MARGIN, IEEE_MAC_FCF_LEN, IEEE_PHY_HDR_LEN, IEEE_THRESHOLD_NO_SYNC, ieeeHandlerState, RCL_CmdIeee_PanConfig::localExtAddr, RCL_CmdIeee_PanConfig::localPanId, RCL_CmdIeee_PanConfig::localShortAddr, LRF_clearHwInterrupt(), LRF_disable(), LRF_disableHwInterrupt(), LRF_disableSynthRefsys(), LRF_disableTemperatureMonitoring(), LRF_enable(), LRF_enableHwInterrupt(), LRF_enableSynthRefsys(), LRF_enableTemperatureMonitoring(), LRF_EventOpDone, LRF_EventOpError, LRF_EventRfesoft0, LRF_EventRxBufFull, LRF_EventRxCtrlAck, LRF_EventRxEmpty, LRF_EventRxIgnored, LRF_EventRxNok, LRF_EventRxOk, LRF_EventTxAck, LRF_EventTxCtrl, 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(), RCL_CmdIeee_PanConfig::maxFrameVersion, noEvent, RCL_CmdIeee_SourceMatchingTableShort::numEntries, RCL_CmdIeee_PanConfig::panCoord, RCL_Buffer_bytesToWords, 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_ImmAckProvidedFrame, 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_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_maskEventsByFifoConf(), RCL_Handler_Ieee_restoreStopTime(), 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, RCL_CmdIeee_SourceMatchingTableShort::shortEntry, RCL_CmdIeee_PanConfig::sourceMatchingTableExt, RCL_CmdIeee_PanConfig::sourceMatchingTableShort, 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 packet.

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 packet.

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

RCL_Buffer_DataEntry* RCL_IEEE_getPartialFrame ( RCL_CmdIeeeRxTx *  cmd,
uint8_t *  numBytesAvail 
)

Give pointer where a partially received frame can be read.

Parameters
[in]cmdExisting IEEE command receiving the frame
[out]numBytesAvailNumber of bytes available to read
Returns
Pointer to read from; NULL if no data is available
Note
The data is only guaranteed valid until the frame reception is finished

References ieeeHandlerState, RCL_CommandStatus_Active, and RXF_UNWRAPPED_BASE_ADDR.

Referenced by RCL_IEEE_readPartialFrame().

§ 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
Returns
Number of bytes read into entry, including header fields

References data, and RCL_IEEE_getPartialFrame().

Variable Documentation

§ ieeeHandlerState