otRadioFrame

#include <radio.h>

Represents an IEEE 802.15.4 radio frame.

Summary

Public attributes

mAckFrameCounter
uint32_t
ACK security frame counter (applicable when mAckedWithSecEnhAck is set).
mAckKeyId
uint8_t
ACK security key index (applicable when mAckedWithSecEnhAck is set).
mAckedWithFramePending
bool
This indicates if this frame was acknowledged with frame pending set.
mAckedWithSecEnhAck
bool
This indicates if this frame was acknowledged with secured enhance ACK.
mAesKey
The key material used for AES-CCM frame security.
mChannel
uint8_t
Channel used to transmit/receive the frame.
mCslPresent
bool
Set to true if CSL header IE is present.
mCsmaCaEnabled
bool
Set to true to enable CSMA-CA for this packet, false otherwise.
mIeInfo
The pointer to the Header IE(s) related information.
mInfo
union otRadioFrame::@18
The union of transmit and receive information for a radio frame.
mIsARetx
bool
Indicates whether the frame is a retransmission or not.
mIsHeaderUpdated
bool
Indicates whether frame counter and CSL IEs are properly updated in the header.
mIsSecurityProcessed
bool
True if SubMac should skip the AES processing of this frame.
mLength
uint16_t
Length of the PSDU.
mLqi
uint8_t
Link Quality Indicator for received frames.
mMaxCsmaBackoffs
uint8_t
Maximum number of backoffs attempts before declaring CCA failure.
mMaxFrameRetries
uint8_t
Maximum number of retries allowed after a transmission failure.
mPsdu
uint8_t *
The PSDU.
mRadioType
uint8_t
Radio link type - should be ignored by radio driver.
mRssi
int8_t
Received signal strength indicator in dBm for received frames.
mRxChannelAfterTxDone
uint8_t
The RX channel after frame TX is done (after all frame retries - ack received, or timeout, or abort).
mRxInfo
struct otRadioFrame::@18::@20
Structure representing radio frame receive information.
mTimestamp
uint64_t
The time of the local radio clock in microseconds when the end of the SFD was present at the local antenna.
mTxDelay
uint32_t
The delay time in microseconds for this transmission referenced to mTxDelayBaseTime.
mTxDelayBaseTime
uint32_t
The base time in microseconds for scheduled transmissions relative to the local radio clock, see otPlatRadioGetNow and mTxDelay.
mTxInfo
struct otRadioFrame::@18::@19
Structure representing radio frame transmit information.
mTxPower
int8_t
The transmit power in dBm.

Public attributes

mAckFrameCounter

uint32_t otRadioFrame::mAckFrameCounter

ACK security frame counter (applicable when mAckedWithSecEnhAck is set).

mAckKeyId

uint8_t otRadioFrame::mAckKeyId

ACK security key index (applicable when mAckedWithSecEnhAck is set).

mAckedWithFramePending

bool otRadioFrame::mAckedWithFramePending

This indicates if this frame was acknowledged with frame pending set.

mAckedWithSecEnhAck

bool otRadioFrame::mAckedWithSecEnhAck

This indicates if this frame was acknowledged with secured enhance ACK.

mAesKey

const otMacKeyMaterial * otRadioFrame::mAesKey

The key material used for AES-CCM frame security.

mChannel

uint8_t otRadioFrame::mChannel

Channel used to transmit/receive the frame.

mCslPresent

bool otRadioFrame::mCslPresent

Set to true if CSL header IE is present.

mCsmaCaEnabled

bool otRadioFrame::mCsmaCaEnabled

Set to true to enable CSMA-CA for this packet, false otherwise.

mIeInfo

otRadioIeInfo * otRadioFrame::mIeInfo

The pointer to the Header IE(s) related information.

mInfo

union otRadioFrame::@18 otRadioFrame::mInfo

The union of transmit and receive information for a radio frame.

mIsARetx

bool otRadioFrame::mIsARetx

Indicates whether the frame is a retransmission or not.

mIsHeaderUpdated

bool otRadioFrame::mIsHeaderUpdated

Indicates whether frame counter and CSL IEs are properly updated in the header.

If the platform layer does not provide OT_RADIO_CAPS_TRANSMIT_SEC capability, it can ignore this flag.

If the platform provides OT_RADIO_CAPS_TRANSMIT_SEC capability, then platform is expected to handle tx security processing and assignment of frame counter. In this case the following behavior is expected:

When mIsHeaderUpdated is set, it indicates that OpenThread core has already set the frame counter and CSL IEs (if security is enabled) in the prepared frame. The counter is ensured to match the counter value from the previous attempts of the same frame. The platform should not assign or change the frame counter (but may still need to perform security processing depending on mIsSecurityProcessed flag).

If mIsHeaderUpdated is not set, then the frame counter and key CSL IE not set in the frame by OpenThread core and it is the responsibility of the radio platform to assign them. The platform must update the frame header (assign counter and CSL IE values) before sending the frame over the air, however if the the transmission gets aborted and the frame is never sent over the air (e.g., channel access error) the platform may choose to not update the header. If the platform updates the header, it must also set this flag before passing the frame back from the otPlatRadioTxDone() callback.

mIsSecurityProcessed

bool otRadioFrame::mIsSecurityProcessed

True if SubMac should skip the AES processing of this frame.

mLength

uint16_t otRadioFrame::mLength

Length of the PSDU.

mLqi

uint8_t otRadioFrame::mLqi

Link Quality Indicator for received frames.

mMaxCsmaBackoffs

uint8_t otRadioFrame::mMaxCsmaBackoffs

Maximum number of backoffs attempts before declaring CCA failure.

mMaxFrameRetries

uint8_t otRadioFrame::mMaxFrameRetries

Maximum number of retries allowed after a transmission failure.

mPsdu

uint8_t * otRadioFrame::mPsdu

The PSDU.

mRadioType

uint8_t otRadioFrame::mRadioType

Radio link type - should be ignored by radio driver.

mRssi

int8_t otRadioFrame::mRssi

Received signal strength indicator in dBm for received frames.

mRxChannelAfterTxDone

uint8_t otRadioFrame::mRxChannelAfterTxDone

The RX channel after frame TX is done (after all frame retries - ack received, or timeout, or abort).

Radio platforms can choose to fully ignore this. OT stack will make sure to call otPlatRadioReceive() with the desired RX channel after a frame TX is done and signaled in otPlatRadioTxDone() callback. Radio platforms that don't provide OT_RADIO_CAPS_TRANSMIT_RETRIES must always ignore this.

This is intended for situations where there may be delay in interactions between OT stack and radio, as an example this is used in RCP/host architecture to make sure RCP switches to PAN channel more quickly. In particular, this can help with CSL tx to a sleepy child, where the child may use a different channel for CSL than the PAN channel. After frame tx, we want the radio/RCP to go back to the PAN channel quickly to ensure that parent does not miss tx from child afterwards, e.g., child responding to the earlier CSL transmitted frame from parent using PAN channel while radio still staying on CSL channel.

The switch to the RX channel MUST happen after the frame TX is fully done, i.e., after all retries and when ack is received (when "Ack Request" flag is set on the TX frame) or ack timeout. Note that ack is expected on the same channel that frame is sent on.

mRxInfo

struct otRadioFrame::@18::@20 otRadioFrame::mRxInfo

Structure representing radio frame receive information.

mTimestamp

uint64_t otRadioFrame::mTimestamp

The time of the local radio clock in microseconds when the end of the SFD was present at the local antenna.

The platform should update this field before otPlatRadioTxStarted() is fired for each transmit attempt.

mTxDelay

uint32_t otRadioFrame::mTxDelay

The delay time in microseconds for this transmission referenced to mTxDelayBaseTime.

Note: mTxDelayBaseTime + mTxDelay SHALL point to the point in time when the end of the SFD will be present at the local antenna, relative to the local radio clock.

mTxDelayBaseTime

uint32_t otRadioFrame::mTxDelayBaseTime

The base time in microseconds for scheduled transmissions relative to the local radio clock, see otPlatRadioGetNow and mTxDelay.

mTxInfo

struct otRadioFrame::@18::@19 otRadioFrame::mTxInfo

Structure representing radio frame transmit information.

mTxPower

int8_t otRadioFrame::mTxPower

The transmit power in dBm.

If the platform layer does not provide OT_RADIO_CAPS_TRANSMIT_FRAME_POWER capability, it can ignore this value.

If the value is OT_RADIO_POWER_INVALID, then the platform should ignore this value and transmit the frame with its default transmit power.

Otherwise, the platform should transmit this frame with the maximum power no larger than minimal of the following values:

  1. mTxPower,
  2. The power limit set by otPlatRadioSetChannelTargetPower(),
  3. The power limit set by otPlatRadioSetChannelMaxTransmitPower(),
  4. The power limit set by otPlatRadioSetRegion().

Resources

OpenThread API Reference topics originate from the source code, available on GitHub. For more information, or to contribute to our documentation, refer to Resources.