Operation

This module includes the platform abstraction for radio operations.

Summary

Functions

otPlatDiagRadioReceiveDone(otInstance *aInstance, otRadioFrame *aFrame, otError aError)
void
The radio driver calls this method to notify OpenThread diagnostics module of a received frame.
otPlatDiagRadioTransmitDone(otInstance *aInstance, otRadioFrame *aFrame, otError aError)
void
The radio driver calls this method to notify OpenThread diagnostics module that the transmission has completed.
otPlatRadioAddSrcMatchExtEntry(otInstance *aInstance, const otExtAddress *aExtAddress)
Add an extended address to the source address match table.
otPlatRadioAddSrcMatchShortEntry(otInstance *aInstance, otShortAddress aShortAddress)
Add a short address to the source address match table.
otPlatRadioClearSrcMatchExtEntries(otInstance *aInstance)
void
Clear all the extended/long addresses from source address match table.
otPlatRadioClearSrcMatchExtEntry(otInstance *aInstance, const otExtAddress *aExtAddress)
Remove an extended address from the source address match table.
otPlatRadioClearSrcMatchShortEntries(otInstance *aInstance)
void
Clear all short addresses from the source address match table.
otPlatRadioClearSrcMatchShortEntry(otInstance *aInstance, otShortAddress aShortAddress)
Remove a short address from the source address match table.
otPlatRadioDisable(otInstance *aInstance)
Disable the radio.
otPlatRadioEnable(otInstance *aInstance)
Enable the radio.
otPlatRadioEnableSrcMatch(otInstance *aInstance, bool aEnable)
void
Enable/Disable source address match feature.
otPlatRadioEnergyScan(otInstance *aInstance, uint8_t aScanChannel, uint16_t aScanDuration)
Begin the energy scan sequence on the radio.
otPlatRadioEnergyScanDone(otInstance *aInstance, int8_t aEnergyScanMaxRssi)
void
The radio driver calls this method to notify OpenThread that the energy scan is complete.
otPlatRadioFrameUpdated(otInstance *aInstance, otRadioFrame *aFrame)
void
The radio driver calls this method to notify OpenThread to process transmit security for the frame, this happens when the frame includes Header IE(s) that were updated before transmission.
otPlatRadioGetRssi(otInstance *aInstance)
int8_t
Get the most recent RSSI measurement.
otPlatRadioGetState(otInstance *aInstance)
Get current state of the radio.
otPlatRadioGetTransmitBuffer(otInstance *aInstance)
Get the radio transmit frame buffer.
otPlatRadioIsEnabled(otInstance *aInstance)
bool
Check whether radio is enabled or not.
otPlatRadioReceive(otInstance *aInstance, uint8_t aChannel)
Transition the radio from Sleep to Receive (turn on the radio).
otPlatRadioReceiveDone(otInstance *aInstance, otRadioFrame *aFrame, otError aError)
void
The radio driver calls this method to notify OpenThread of a received frame.
otPlatRadioSleep(otInstance *aInstance)
Transition the radio from Receive to Sleep (turn off the radio).
otPlatRadioTransmit(otInstance *aInstance, otRadioFrame *aFrame)
Begin the transmit sequence on the radio.
otPlatRadioTxDone(otInstance *aInstance, otRadioFrame *aFrame, otRadioFrame *aAckFrame, otError aError)
void
The radio driver calls this function to notify OpenThread that the transmit operation has completed, providing both the transmitted frame and, if applicable, the received ack frame.
otPlatRadioTxStarted(otInstance *aInstance, otRadioFrame *aFrame)
void
The radio driver calls this method to notify OpenThread that the transmission has started.

Functions

otPlatDiagRadioReceiveDone

void otPlatDiagRadioReceiveDone(
  otInstance *aInstance,
  otRadioFrame *aFrame,
  otError aError
)

The radio driver calls this method to notify OpenThread diagnostics module of a received frame.

This function is used when diagnostics is enabled.

Details
Parameters
[in] aInstance
The OpenThread instance structure.
[in] aFrame
A pointer to the received frame or NULL if the receive operation failed.
[in] aError
OT_ERROR_NONE when successfully received a frame, OT_ERROR_ABORT when reception was aborted and a frame was not received, OT_ERROR_NO_BUFS when a frame could not be received due to lack of rx buffer space.

otPlatDiagRadioTransmitDone

void otPlatDiagRadioTransmitDone(
  otInstance *aInstance,
  otRadioFrame *aFrame,
  otError aError
)

The radio driver calls this method to notify OpenThread diagnostics module that the transmission has completed.

This function is used when diagnostics is enabled.

Details
Parameters
[in] aInstance
The OpenThread instance structure.
[in] aFrame
A pointer to the frame that was transmitted.
[in] aError
OT_ERROR_NONE when the frame was transmitted, OT_ERROR_CHANNEL_ACCESS_FAILURE tx could not take place due to activity on the channel, OT_ERROR_ABORT when transmission was aborted for other reasons.

otPlatRadioAddSrcMatchExtEntry

otError otPlatRadioAddSrcMatchExtEntry(
  otInstance *aInstance,
  const otExtAddress *aExtAddress
)

Add an extended address to the source address match table.

Details
Parameters
[in] aInstance
The OpenThread instance structure.
[in] aExtAddress
The extended address to be added stored in little-endian byte order.
Return Values
OT_ERROR_NONE
Successfully added extended address to the source match table.
OT_ERROR_NO_BUFS
No available entry in the source match table.

otPlatRadioAddSrcMatchShortEntry

otError otPlatRadioAddSrcMatchShortEntry(
  otInstance *aInstance,
  otShortAddress aShortAddress
)

Add a short address to the source address match table.

Details
Parameters
[in] aInstance
The OpenThread instance structure.
[in] aShortAddress
The short address to be added.
Return Values
OT_ERROR_NONE
Successfully added short address to the source match table.
OT_ERROR_NO_BUFS
No available entry in the source match table.

otPlatRadioClearSrcMatchExtEntries

void otPlatRadioClearSrcMatchExtEntries(
  otInstance *aInstance
)

Clear all the extended/long addresses from source address match table.

Details
Parameters
[in] aInstance
The OpenThread instance structure.

otPlatRadioClearSrcMatchExtEntry

otError otPlatRadioClearSrcMatchExtEntry(
  otInstance *aInstance,
  const otExtAddress *aExtAddress
)

Remove an extended address from the source address match table.

Details
Parameters
[in] aInstance
The OpenThread instance structure.
[in] aExtAddress
The extended address to be removed stored in little-endian byte order.
Return Values
OT_ERROR_NONE
Successfully removed the extended address from the source match table.
OT_ERROR_NO_ADDRESS
The extended address is not in source address match table.

otPlatRadioClearSrcMatchShortEntries

void otPlatRadioClearSrcMatchShortEntries(
  otInstance *aInstance
)

Clear all short addresses from the source address match table.

Details
Parameters
[in] aInstance
The OpenThread instance structure.

otPlatRadioClearSrcMatchShortEntry

otError otPlatRadioClearSrcMatchShortEntry(
  otInstance *aInstance,
  otShortAddress aShortAddress
)

Remove a short address from the source address match table.

Details
Parameters
[in] aInstance
The OpenThread instance structure.
[in] aShortAddress
The short address to be removed.
Return Values
OT_ERROR_NONE
Successfully removed short address from the source match table.
OT_ERROR_NO_ADDRESS
The short address is not in source address match table.

otPlatRadioDisable

otError otPlatRadioDisable(
  otInstance *aInstance
)

Disable the radio.

Details
Parameters
[in] aInstance
The OpenThread instance structure.
Return Values
OT_ERROR_NONE
Successfully transitioned to Disabled.

otPlatRadioEnable

otError otPlatRadioEnable(
  otInstance *aInstance
)

Enable the radio.

Details
Parameters
[in] aInstance
The OpenThread instance structure.
Return Values
OT_ERROR_NONE
Successfully enabled.
OT_ERROR_FAILED
The radio could not be enabled.

otPlatRadioEnableSrcMatch

void otPlatRadioEnableSrcMatch(
  otInstance *aInstance,
  bool aEnable
)

Enable/Disable source address match feature.

The source address match feature controls how the radio layer decides the "frame pending" bit for acks sent in response to data request commands from children.

If disabled, the radio layer must set the "frame pending" on all acks to data request commands.

If enabled, the radio layer uses the source address match table to determine whether to set or clear the "frame pending" bit in an ack to a data request command.

The source address match table provides the list of children for which there is a pending frame. Either a short address or an extended/long address can be added to the source address match table.

Details
Parameters
[in] aInstance
The OpenThread instance structure.
[in] aEnable
Enable/disable source address match feature.

otPlatRadioEnergyScan

otError otPlatRadioEnergyScan(
  otInstance *aInstance,
  uint8_t aScanChannel,
  uint16_t aScanDuration
)

Begin the energy scan sequence on the radio.

This function is used when radio provides OT_RADIO_CAPS_ENERGY_SCAN capability.

Details
Parameters
[in] aInstance
The OpenThread instance structure.
[in] aScanChannel
The channel to perform the energy scan on.
[in] aScanDuration
The duration, in milliseconds, for the channel to be scanned.
Return Values
OT_ERROR_NONE
Successfully started scanning the channel.
OT_ERROR_NOT_IMPLEMENTED
The radio doesn't support energy scanning.

otPlatRadioEnergyScanDone

void otPlatRadioEnergyScanDone(
  otInstance *aInstance,
  int8_t aEnergyScanMaxRssi
)

The radio driver calls this method to notify OpenThread that the energy scan is complete.

This function is used when radio provides OT_RADIO_CAPS_ENERGY_SCAN capability.

Details
Parameters
[in] aInstance
The OpenThread instance structure.
[in] aEnergyScanMaxRssi
The maximum RSSI encountered on the scanned channel.

otPlatRadioFrameUpdated

void otPlatRadioFrameUpdated(
  otInstance *aInstance,
  otRadioFrame *aFrame
)

The radio driver calls this method to notify OpenThread to process transmit security for the frame, this happens when the frame includes Header IE(s) that were updated before transmission.

This function is used when feature OPENTHREAD_CONFIG_HEADER_IE_SUPPORT is enabled.

Details
Parameters
[in] aInstance
The OpenThread instance structure.
[in] aFrame
The radio frame which needs to process transmit security.

otPlatRadioGetRssi

int8_t otPlatRadioGetRssi(
  otInstance *aInstance
)

Get the most recent RSSI measurement.

Details
Parameters
[in] aInstance
The OpenThread instance structure.
Returns
The RSSI in dBm when it is valid. 127 when RSSI is invalid.

otPlatRadioGetState

otRadioState otPlatRadioGetState(
  otInstance *aInstance
)

Get current state of the radio.

This function is not required by OpenThread. It may be used for debugging and/or application-specific purposes.

Details
Parameters
[in] aInstance
The OpenThread instance structure.
Returns
Current state of the radio.

otPlatRadioGetTransmitBuffer

otRadioFrame * otPlatRadioGetTransmitBuffer(
  otInstance *aInstance
)

Get the radio transmit frame buffer.

OpenThread forms the IEEE 802.15.4 frame in this buffer then calls otPlatRadioTransmit() to request transmission.

Details
Parameters
[in] aInstance
The OpenThread instance structure.
Returns
A pointer to the transmit frame buffer.

otPlatRadioIsEnabled

bool otPlatRadioIsEnabled(
  otInstance *aInstance
)

Check whether radio is enabled or not.

Details
Parameters
[in] aInstance
The OpenThread instance structure.
Returns
TRUE if the radio is enabled, FALSE otherwise.

otPlatRadioReceive

otError otPlatRadioReceive(
  otInstance *aInstance,
  uint8_t aChannel
)

Transition the radio from Sleep to Receive (turn on the radio).

Details
Parameters
[in] aInstance
The OpenThread instance structure.
[in] aChannel
The channel to use for receiving.
Return Values
OT_ERROR_NONE
Successfully transitioned to Receive.
OT_ERROR_INVALID_STATE
The radio was disabled or transmitting.

otPlatRadioReceiveDone

void otPlatRadioReceiveDone(
  otInstance *aInstance,
  otRadioFrame *aFrame,
  otError aError
)

The radio driver calls this method to notify OpenThread of a received frame.

Details
Parameters
[in] aInstance
The OpenThread instance structure.
[in] aFrame
A pointer to the received frame or NULL if the receive operation failed.
[in] aError
OT_ERROR_NONE when successfully received a frame, OT_ERROR_ABORT when reception was aborted and a frame was not received, OT_ERROR_NO_BUFS when a frame could not be received due to lack of rx buffer space.

otPlatRadioSleep

otError otPlatRadioSleep(
  otInstance *aInstance
)

Transition the radio from Receive to Sleep (turn off the radio).

Details
Parameters
[in] aInstance
The OpenThread instance structure.
Return Values
OT_ERROR_NONE
Successfully transitioned to Sleep.
OT_ERROR_BUSY
The radio was transmitting.
OT_ERROR_INVALID_STATE
The radio was disabled.

otPlatRadioTransmit

otError otPlatRadioTransmit(
  otInstance *aInstance,
  otRadioFrame *aFrame
)

Begin the transmit sequence on the radio.

The caller must form the IEEE 802.15.4 frame in the buffer provided by otPlatRadioGetTransmitBuffer() before requesting transmission. The channel and transmit power are also included in the otRadioFrame structure.

The transmit sequence consists of:

  1. Transitioning the radio to Transmit from Receive.
  2. Transmits the psdu on the given channel and at the given transmit power.

Details
Parameters
[in] aInstance
The OpenThread instance structure.
[in] aFrame
A pointer to the frame to be transmitted.
Return Values
OT_ERROR_NONE
Successfully transitioned to Transmit.
OT_ERROR_INVALID_STATE
The radio was not in the Receive state.

otPlatRadioTxDone

void otPlatRadioTxDone(
  otInstance *aInstance,
  otRadioFrame *aFrame,
  otRadioFrame *aAckFrame,
  otError aError
)

The radio driver calls this function to notify OpenThread that the transmit operation has completed, providing both the transmitted frame and, if applicable, the received ack frame.

Details
Parameters
[in] aInstance
The OpenThread instance structure.
[in] aFrame
A pointer to the frame that was transmitted.
[in] aAckFrame
A pointer to the ACK frame, NULL if no ACK was received.
[in] aError
OT_ERROR_NONE when the frame was transmitted, OT_ERROR_NO_ACK when the frame was transmitted but no ACK was received, OT_ERROR_CHANNEL_ACCESS_FAILURE tx could not take place due to activity on the channel, OT_ERROR_ABORT when transmission was aborted for other reasons.

otPlatRadioTxStarted

void otPlatRadioTxStarted(
  otInstance *aInstance,
  otRadioFrame *aFrame
)

The radio driver calls this method to notify OpenThread that the transmission has started.

Details
Parameters
[in] aInstance
A pointer to the OpenThread instance structure.
[in] aFrame
A pointer to the frame that is being transmitted.