無線電操作

這個模組包含無線電作業的平台抽象化機制。

摘要

函式

otPlatDiagRadioReceiveDone(otInstance *aInstance, otRadioFrame *aFrame, otError aError)
void
無線電驅動程式會呼叫此方法來通知已接收影格的 OpenThread 診斷模組。
otPlatDiagRadioTransmitDone(otInstance *aInstance, otRadioFrame *aFrame, otError aError)
void
無線電驅動程式會呼叫此方法來通知 OpenThread 診斷模組,表示傳輸已完成。
otPlatRadioAddCalibratedPower(otInstance *aInstance, uint8_t aChannel, int16_t aActualPower, const uint8_t *aRawPowerSetting, uint16_t aRawPowerSettingLength)
將指定聲道的校正功率新增至電源校正表。
otPlatRadioAddSrcMatchExtEntry(otInstance *aInstance, const otExtAddress *aExtAddress)
將擴充地址新增至來源地址對照表。
otPlatRadioAddSrcMatchShortEntry(otInstance *aInstance, otShortAddress aShortAddress)
在來源地址對照表中新增短地址。
otPlatRadioClearCalibratedPowers(otInstance *aInstance)
清除電源校正表中所有校正的功率。
otPlatRadioClearSrcMatchExtEntries(otInstance *aInstance)
void
清除來源地址對照表中的所有延伸/長地址。
otPlatRadioClearSrcMatchExtEntry(otInstance *aInstance, const otExtAddress *aExtAddress)
從來源地址對照表中移除延伸地址。
otPlatRadioClearSrcMatchShortEntries(otInstance *aInstance)
void
清除來源地址對照表中的所有短地址。
otPlatRadioClearSrcMatchShortEntry(otInstance *aInstance, otShortAddress aShortAddress)
從來源地址對照表中移除簡短地址。
otPlatRadioConfigureEnhAckProbing(otInstance *aInstance, otLinkMetrics aLinkMetrics, otShortAddress aShortAddress, const otExtAddress *aExtAddress)
針對特定發起者啟用/停用或更新無線電中的增強型探測器。
otPlatRadioDisable(otInstance *aInstance)
停用電台。
otPlatRadioEnable(otInstance *aInstance)
啟用電台。
otPlatRadioEnableCsl(otInstance *aInstance, uint32_t aCslPeriod, otShortAddress aShortAddr, const otExtAddress *aExtAddr)
啟用或停用 CSL 接收器。
otPlatRadioEnableSrcMatch(otInstance *aInstance, bool aEnable)
void
啟用/停用來源地址比對功能。
otPlatRadioEnergyScan(otInstance *aInstance, uint8_t aScanChannel, uint16_t aScanDuration)
開始無線電上的能量掃描序列。
otPlatRadioEnergyScanDone(otInstance *aInstance, int8_t aEnergyScanMaxRssi)
void
無線電驅動程式會呼叫此方法來通知 OpenThread,表示能源掃描已完成。
otPlatRadioGetCoexMetrics(otInstance *aInstance, otRadioCoexMetrics *aCoexMetrics)
取得無線電共存指標。
otPlatRadioGetCslAccuracy(otInstance *aInstance)
uint8_t
取得當地無線電時鐘目前預估最差的精確度 (與名目值之間的最大 ± 偏差,以 PPM 為單位)。
otPlatRadioGetCslUncertainty(otInstance *aInstance)
uint8_t
固定的不確定性 (即
otPlatRadioGetPreferredChannelMask(otInstance *aInstance)
uint32_t
取得裝置偏好的電台遮罩。
otPlatRadioGetRawPowerSetting(otInstance *aInstance, uint8_t aChannel, uint8_t *aRawPowerSetting, uint16_t *aRawPowerSettingLength)
取得指定頻道的原始功率設定。
otPlatRadioGetRegion(otInstance *aInstance, uint16_t *aRegionCode)
取得區碼。
otPlatRadioGetRssi(otInstance *aInstance)
int8_t
取得最新的 RSSI 測量。
otPlatRadioGetState(otInstance *aInstance)
取得電台的目前狀態。
otPlatRadioGetSupportedChannelMask(otInstance *aInstance)
uint32_t
取得裝置支援的電台遮罩。
otPlatRadioGetTransmitBuffer(otInstance *aInstance)
取得無線電傳輸畫面緩衝區。
otPlatRadioIsCoexEnabled(otInstance *aInstance)
bool
檢查是否啟用無線電 Coex。
otPlatRadioIsEnabled(otInstance *aInstance)
bool
檢查電台是否已啟用。
otPlatRadioReceive(otInstance *aInstance, uint8_t aChannel)
將電台從「休眠」改為「接收」(開啟無線電)。
otPlatRadioReceiveAt(otInstance *aInstance, uint8_t aChannel, uint32_t aStart, uint32_t aDuration)
為特定時間和時間長度安排無線電接收時間。
otPlatRadioReceiveDone(otInstance *aInstance, otRadioFrame *aFrame, otError aError)
void
無線電驅動程式會呼叫此方法,通知已收到影格的 OpenThread。
otPlatRadioSetChannelMaxTransmitPower(otInstance *aInstance, uint8_t aChannel, int8_t aMaxPower)
設定特定聲道的最大傳輸功率。
otPlatRadioSetChannelTargetPower(otInstance *aInstance, uint8_t aChannel, int16_t aTargetPower)
為指定管道設定目標功率。
otPlatRadioSetCoexEnabled(otInstance *aInstance, bool aEnabled)
啟用無線電 Coex。
otPlatRadioSetRegion(otInstance *aInstance, uint16_t aRegionCode)
設定區碼。
otPlatRadioSleep(otInstance *aInstance)
將無線電從「接收」改為「休眠」(關閉無線電)。
otPlatRadioTransmit(otInstance *aInstance, otRadioFrame *aFrame)
開始廣播上的傳輸序列。
otPlatRadioTxDone(otInstance *aInstance, otRadioFrame *aFrame, otRadioFrame *aAckFrame, otError aError)
void
無線電驅動程式會呼叫此函式來通知 OpenThread,通知 OpenThread 傳輸作業已經完成,並提供傳輸的影格及接收的確認框架 (如果適用)。
otPlatRadioTxStarted(otInstance *aInstance, otRadioFrame *aFrame)
void
無線電驅動程式會呼叫這個方法,通知 OpenThread 傳輸已開始。
otPlatRadioUpdateCslSampleTime(otInstance *aInstance, uint32_t aCslSampleTime)
void
更新無線電驅動程式中的 CSL 取樣時間。

函式

otPlatDiagRadioReceiveDone

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

無線電驅動程式會呼叫此方法來通知已接收影格的 OpenThread 診斷模組。

會在啟用診斷時使用。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aFrame
如果接收作業失敗,會指向收到的影格或 NULL。
[in] aError
OT_ERROR_NONE 發生時,成功收到影格時 OT_ERROR_ABORT (在接收時遭到取消且未收到影格);如果因為 rx 緩衝區空間而無法接收影格,OT_ERROR_NO_BUFS

otPlatDiagRadioTransmitDone

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

無線電驅動程式會呼叫此方法來通知 OpenThread 診斷模組,表示傳輸已完成。

會在啟用診斷時使用。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aFrame
指向已傳輸影格的指標。
[in] aError
OT_ERROR_NONE 影格發生時,因頻道上的活動而無法進行 OT_ERROR_CHANNEL_ACCESS_FAILURE Tx;因其他原因而取消傳輸時,Tx_ERROR_ABORT。

otPlatRadioAddCalibratedPower

otError otPlatRadioAddCalibratedPower(
  otInstance *aInstance,
  uint8_t aChannel,
  int16_t aActualPower,
  const uint8_t *aRawPowerSetting,
  uint16_t aRawPowerSettingLength
)

將指定聲道的校正功率新增至電源校正表。

aActualPower 是無線電硬體模組的參數設為 aRawPowerSetting 時,實際測量到的輸出功率。

原始電源設定是不透明位元組陣列。OpenThread 沒有定義原始電源設定的格式。格式與無線電硬體相關,且應由平台無線電驅動程式中的開發人員定義。舉例來說,如果無線電硬體同時含有無線電晶片和 FEM 晶片,原始電源設定可以是無線電電源暫存器和 FEM 增益值。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aChannel
廣播頻道。
[in] aActualPower
實際功率,單位為 0.01dBm。
[in] aRawPowerSetting
指向原始功率設定位元組陣列的指標。
[in] aRawPowerSettingLength
aRawPowerSetting 的長度。
傳回值
OT_ERROR_NONE
已成功將校正的功率新增至電源校正表。
OT_ERROR_NO_BUFS
電源校正表中沒有可用項目。
OT_ERROR_INVALID_ARGS
aChannelaActualPoweraRawPowerSetting 無效,或電源校正資料表中已有 aActualPower
OT_ERROR_NOT_IMPLEMENTED
這項功能尚未實作。

otPlatRadioAddSrcMatchExtEntry

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

將擴充地址新增至來源地址對照表。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aExtAddress
要新增的擴充位址,以小端位元組順序儲存。
傳回值
OT_ERROR_NONE
已成功將擴充地址新增至來源對照表。
OT_ERROR_NO_BUFS
來源對照表中沒有任何項目。

otPlatRadioAddSrcMatchShortEntry

otError otPlatRadioAddSrcMatchShortEntry(
  otInstance *aInstance,
  otShortAddress aShortAddress
)

在來源地址對照表中新增短地址。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aShortAddress
要新增的短地址。
傳回值
OT_ERROR_NONE
已成功將短地址新增至來源對照表。
OT_ERROR_NO_BUFS
來源對照表中沒有任何項目。

otPlatRadioClearCalibratedPowers

otError otPlatRadioClearCalibratedPowers(
  otInstance *aInstance
)

清除電源校正表中所有校正的功率。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
傳回值
OT_ERROR_NONE
已成功清除電源校正表中所有校正的功率。
OT_ERROR_NOT_IMPLEMENTED
這項功能尚未實作。

otPlatRadioClearSrcMatchExtEntries

void otPlatRadioClearSrcMatchExtEntries(
  otInstance *aInstance
)

清除來源地址對照表中的所有延伸/長地址。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。

otPlatRadioClearSrcMatchExtEntry

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

從來源地址對照表中移除延伸地址。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aExtAddress
要移除的擴充位址,以小端位元組順序儲存。
傳回值
OT_ERROR_NONE
已成功從來源對照表中移除擴充地址。
OT_ERROR_NO_ADDRESS
延伸地址不在來源地址對照表中。

otPlatRadioClearSrcMatchShortEntries

void otPlatRadioClearSrcMatchShortEntries(
  otInstance *aInstance
)

清除來源地址對照表中的所有短地址。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。

otPlatRadioClearSrcMatchShortEntry

otError otPlatRadioClearSrcMatchShortEntry(
  otInstance *aInstance,
  otShortAddress aShortAddress
)

從來源地址對照表中移除簡短地址。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aShortAddress
要移除的短地址。
傳回值
OT_ERROR_NONE
已成功從來源對照表中移除短地址。
OT_ERROR_NO_ADDRESS
短地址不在來源地址對照表中。

otPlatRadioConfigureEnhAckProbing

otError otPlatRadioConfigureEnhAckProbing(
  otInstance *aInstance,
  otLinkMetrics aLinkMetrics,
  otShortAddress aShortAddress,
  const otExtAddress *aExtAddress
)

針對特定發起者啟用/停用或更新無線電中的增強型探測器。

由特定探測發起者設定強化型 Proxy 探測功能後,傳送至該節點的強化型 IE 應包含含有連結指標資料的供應商專屬 IE。此方法會通知無線電開始/停止收集連結指標資料,並納入供應商專用 IE,其中含有傳送給該探測啟動者的增強型 IE 資料。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aLinkMetrics
這個參數會指定要查詢的指標。依據規格 4.11.3.4.4.6,最多可以指定 2 個指標。如果 aLinkMetrics 為位元 0,探測功能就會停用。
[in] aShortAddress
探測器的簡短地址。
[in] aExtAddress
探測器的擴充來源地址。aExtAddr 不得為 NULL
傳回值
OT_ERROR_NONE
已成功設定強化型探測器。
OT_ERROR_INVALID_ARGS
aExtAddressNULL
OT_ERROR_NOT_FOUND
嘗試清除時,找不到 aShortAddress 指定的啟動器。
OT_ERROR_NO_BUFS
無法再支援更多發起人。
OT_ERROR_NOT_IMPLEMENTED
這項功能未實作。

otPlatRadioDisable

otError otPlatRadioDisable(
  otInstance *aInstance
)

停用電台。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
傳回值
OT_ERROR_NONE
已成功轉換至「已停用」
OT_ERROR_INVALID_STATE
無線電沒有處於休眠狀態。

otPlatRadioEnable

otError otPlatRadioEnable(
  otInstance *aInstance
)

啟用電台。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
傳回值
OT_ERROR_NONE
已成功啟用。
OT_ERROR_FAILED
無法啟用電台。

otPlatRadioEnableCsl

otError otPlatRadioEnableCsl(
  otInstance *aInstance,
  uint32_t aCslPeriod,
  otShortAddress aShortAddr,
  const otExtAddress *aExtAddr
)

啟用或停用 CSL 接收器。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aCslPeriod
CSL 週期,0 代表停用 CSL。CSL 句點是 10 個符號的單位。
[in] aShortAddr
CSL 接收端的對等點的簡短來源位址。
[in] aExtAddr
CSL 接收端的對等點的擴充來源位址。
傳回值
kErrorNotImplemented
無線電驅動程式不支援 CSL。
kErrorFailed
其他平台特有錯誤。
kErrorNone
已成功啟用或停用 CSL。

otPlatRadioEnableSrcMatch

void otPlatRadioEnableSrcMatch(
  otInstance *aInstance,
  bool aEnable
)

啟用/停用來源地址比對功能。

來源地址比對功能可控制無線電圖層如何針對回應來自子項的資料要求指令傳送的堆疊,決定「影格待處理」位元。

如果停用,無線電圖層必須將所有 kView 上的「FramePending」設為資料要求指令。

如果啟用,無線電圖層就會根據來源地址對照表,決定是否要在資料要求指令的堆疊中設定或清除「影格待處理」位元。

來源地址對照表提供了有待處理影格的子項清單。來源地址對照表可以是短地址或延伸/長地址。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aEnable
啟用/停用來源地址比對功能。

otPlatRadioEnergyScan

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

開始無線電上的能量掃描序列。

當無線電提供 OT_RADIO_CAPS_ENERGY_SCAN 功能時,會使用這個值。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aScanChannel
要掃描能源的頻道。
[in] aScanDuration
掃描管道的時間長度 (以毫秒為單位)。
傳回值
OT_ERROR_NONE
已成功開始掃描頻道。
OT_ERROR_BUSY
無線電正在掃描能量。
OT_ERROR_NOT_IMPLEMENTED
收音機不支援掃描能源。

otPlatRadioEnergyScanDone

void otPlatRadioEnergyScanDone(
  otInstance *aInstance,
  int8_t aEnergyScanMaxRssi
)

無線電驅動程式會呼叫此方法來通知 OpenThread,表示能源掃描已完成。

當無線電提供 OT_RADIO_CAPS_ENERGY_SCAN 功能時,會使用這個值。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aEnergyScanMaxRssi
已掃描頻道的 RSSI 數量上限。

otPlatRadioGetCoexMetrics

otError otPlatRadioGetCoexMetrics(
  otInstance *aInstance,
  otRadioCoexMetrics *aCoexMetrics
)

取得無線電共存指標。

啟用 OPENTHREAD_CONFIG_PLATFORM_RADIO_COEX_ENABLE 功能時使用。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[out] aCoexMetrics
共存指標結構的指標。
傳回值
OT_ERROR_NONE
已成功擷取 Coex 指標。
OT_ERROR_INVALID_ARGS
aCoexMetrics 為空值。

otPlatRadioGetCslAccuracy

uint8_t otPlatRadioGetCslAccuracy(
  otInstance *aInstance
)

取得當地無線電時鐘目前預估最差的精確度 (與名目值之間的最大 ± 偏差,以 PPM 為單位)。

這是用來安排 CSL 作業的時鐘。

如果導入作業並未估算當前值,而是傳回固定值,則這個值必須針對導入作業的所有可能運作條件 (氣溫、壓力等) 而言,最低的準確率。

詳細說明
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
傳回
目前的 CSL rx/tx 排程偏移 (在 PPM 中)。

otPlatRadioGetCslUncertainty

uint8_t otPlatRadioGetCslUncertainty(
  otInstance *aInstance
)

固定的不確定性 (即

隨機時基誤差),以 10 微秒為單位。

此元素可指定在傳輸時間實際抵達時,相較於經過時間而計算出的最差案例常數正正負數 (以當地無線電時鐘為準)。除了經過時間累積的不確定性外,CSL 管道樣本 (「RX 回溯期」) 必須延長兩倍,這樣在出現隨機抵達時間時基誤差時,本機接收器保證能偵測到實際傳輸作業。

詳細說明
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
傳回
CSL 不確定性,單位為 10 單位。

otPlatRadioGetPreferredChannelMask

uint32_t otPlatRadioGetPreferredChannelMask(
  otInstance *aInstance
)

取得裝置偏好的電台遮罩。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
傳回
偏好廣播頻道遮罩。

otPlatRadioGetRawPowerSetting

otError otPlatRadioGetRawPowerSetting(
  otInstance *aInstance,
  uint8_t aChannel,
  uint8_t *aRawPowerSetting,
  uint16_t *aRawPowerSettingLength
)

取得指定頻道的原始功率設定。

平台無線電層應根據無線電層定義格式剖析原始電源設定,並設定每個無線電硬體模組的參數。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aChannel
廣播頻道。
[out] aRawPowerSetting
指向原始功率設定位元組陣列的指標。
[in,out] aRawPowerSettingLength
在輸入內容時指標指向 aRawPowerSetting 的大小。在輸出上,指標指向原始功率設定資料的長度。
傳回值
OT_ERROR_NONE
已成功取得目標功率。
OT_ERROR_INVALID_ARGS
aChannel 無效、aRawPowerSettingaRawPowerSettingLength 為空值或過短。
OT_ERROR_NOT_FOUND
找不到 aChannel 的原始電源設定。

otPlatRadioGetRegion

otError otPlatRadioGetRegion(
  otInstance *aInstance,
  uint16_t *aRegionCode
)

取得區碼。

無線電區域格式為 ISO 3166 alpha-2 代碼的 2 個位元組 ASCII 表示法。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[out] aRegionCode
無線電區域。
傳回值
OT_ERROR_INVALID_ARGS
aRegionCode 為空值。
OT_ERROR_FAILED
其他平台特有錯誤。
OT_ERROR_NONE
已成功取得區碼。
OT_ERROR_NOT_IMPLEMENTED
這項功能未實作。

otPlatRadioGetRssi

int8_t otPlatRadioGetRssi(
  otInstance *aInstance
)

取得最新的 RSSI 測量。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
傳回
dBm 中的 RSSI (如果有效)。127 表示 RSSI 無效。

otPlatRadioGetState

otRadioState otPlatRadioGetState(
  otInstance *aInstance
)

取得電台的目前狀態。

OpenThread 不需要。這可用於偵錯和/或應用程式特定用途。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
傳回
無線電的目前狀態。

otPlatRadioGetSupportedChannelMask

uint32_t otPlatRadioGetSupportedChannelMask(
  otInstance *aInstance
)

取得裝置支援的電台遮罩。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
傳回
受電台支援的頻道遮罩。

otPlatRadioGetTransmitBuffer

otRadioFrame * otPlatRadioGetTransmitBuffer(
  otInstance *aInstance
)

取得無線電傳輸畫面緩衝區。

OpenThread 在這個緩衝區中構成 IEEE 802.15.4 影格,然後呼叫 otPlatRadioTransmit() 來要求傳輸。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
傳回
指向傳輸影格緩衝區的指標。

otPlatRadioIsCoexEnabled

bool otPlatRadioIsCoexEnabled(
  otInstance *aInstance
)

檢查是否啟用無線電 Coex。

啟用 OPENTHREAD_CONFIG_PLATFORM_RADIO_COEX_ENABLE 功能時使用。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
傳回
如果已啟用無線電 Coex,則為 TRUE,否則為 FALSE。

otPlatRadioIsEnabled

bool otPlatRadioIsEnabled(
  otInstance *aInstance
)

檢查電台是否已啟用。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
傳回
如果無線電已啟用,則為 TRUE。否則為 FALSE。

otPlatRadioReceive

otError otPlatRadioReceive(
  otInstance *aInstance,
  uint8_t aChannel
)

將電台從「休眠」改為「接收」(開啟無線電)。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aChannel
用於接收的頻道。
傳回值
OT_ERROR_NONE
已成功轉換至「接收」。
OT_ERROR_INVALID_STATE
無線電功能已停用或傳輸。

otPlatRadioReceiveAt

otError otPlatRadioReceiveAt(
  otInstance *aInstance,
  uint8_t aChannel,
  uint32_t aStart,
  uint32_t aDuration
)

為特定時間和時間長度安排無線電接收時間。

詳細說明
參數
[in] aChannel
要接收的廣播頻道。
[in] aStart
相對於當地無線電時鐘的接收視窗開始時間,請參閱 otPlatRadioGetNow。無線電接收器 SHALL 已開啟,可在視窗開始時接收影格 SHR 的第一個符號。
[in] aDuration
以當地無線電時鐘測量的接收視窗持續時間,以微秒為單位。除非裝置仍在接收影格,否則無線電「應」在這段時間後關閉 (如需傳送 ACK 影格,則須切換至 TX 模式)。如果是第二種情況,無線電 SHALL 會保持在接收模式,直到螢幕上顯示成功或失敗為止。
傳回值
OT_ERROR_NONE
已成功排定接收時間。
OT_ERROR_FAILED
無法安排接收視窗的時間。

otPlatRadioReceiveDone

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

無線電驅動程式會呼叫此方法,通知已收到影格的 OpenThread。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aFrame
如果接收作業失敗,會指向收到的影格或 NULL。
[in] aError
OT_ERROR_NONE 發生時,成功收到影格時 OT_ERROR_ABORT (在接收時遭到取消且未收到影格);如果因為 rx 緩衝區空間而無法接收影格,OT_ERROR_NO_BUFS

otPlatRadioSetChannelMaxTransmitPower

otError otPlatRadioSetChannelMaxTransmitPower(
  otInstance *aInstance,
  uint8_t aChannel,
  int8_t aMaxPower
)

設定特定聲道的最大傳輸功率。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aChannel
廣播頻道。
[in] aMaxPower
dBm 中傳送 OT_RADIO_RSSI_INVALID 的最大功率會停用這個頻道。
傳回值
OT_ERROR_NOT_IMPLEMENTED
未實作這項功能
OT_ERROR_INVALID_ARGS
指定的頻道無效。
OT_ERROR_FAILED
其他平台特有錯誤。
OT_ERROR_NONE
已成功設定最大傳輸功率。

otPlatRadioSetChannelTargetPower

otError otPlatRadioSetChannelTargetPower(
  otInstance *aInstance,
  uint8_t aChannel,
  int16_t aTargetPower
)

為指定管道設定目標功率。

無線電驅動程式應將實際的輸出功率設為小於或等於目標功率,並盡可能靠近目標功率。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aChannel
廣播頻道。
[in] aTargetPower
目標功率 (0.01dBm)。如果傳送 INT16_MAX,這個頻道就會停用目標功率。
傳回值
OT_ERROR_NONE
已成功設定目標功率。
OT_ERROR_INVALID_ARGS
aChannelaTargetPower 無效。
OT_ERROR_NOT_IMPLEMENTED
這項功能未實作。

otPlatRadioSetCoexEnabled

otError otPlatRadioSetCoexEnabled(
  otInstance *aInstance,
  bool aEnabled
)

啟用無線電 Coex。

啟用 OPENTHREAD_CONFIG_PLATFORM_RADIO_COEX_ENABLE 功能時使用。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aEnabled
設為 TRUE 即可啟用無線電 Coex,否則為 FALSE。
傳回值
OT_ERROR_NONE
已成功啟用。
OT_ERROR_FAILED
無法啟用無線電 Coex。

otPlatRadioSetRegion

otError otPlatRadioSetRegion(
  otInstance *aInstance,
  uint16_t aRegionCode
)

設定區碼。

無線電區域格式為 ISO 3166 alpha-2 代碼的 2 個位元組 ASCII 表示法。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aRegionCode
無線電區代碼。aRegionCode >> 8 是第一個 ASCII 字元,aRegionCode & 0xff 則是第二個 ASCII 字元。
傳回值
OT_ERROR_FAILED
其他平台特有錯誤。
OT_ERROR_NONE
已成功設定區碼。
OT_ERROR_NOT_IMPLEMENTED
這項功能未實作。

otPlatRadioSleep

otError otPlatRadioSleep(
  otInstance *aInstance
)

將無線電從「接收」改為「休眠」(關閉無線電)。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
傳回值
OT_ERROR_NONE
成功轉換至「睡眠」。
OT_ERROR_BUSY
無線電正在傳輸中。
OT_ERROR_INVALID_STATE
電台已停用。

otPlatRadioTransmit

otError otPlatRadioTransmit(
  otInstance *aInstance,
  otRadioFrame *aFrame
)

開始廣播上的傳輸序列。

呼叫端必須在 otPlatRadioGetTransmitBuffer() 提供的緩衝區中形成 IEEE 802.15.4 影格,才能要求傳輸。otRadioFrame 結構中也會包含聲道和傳輸功率。

傳輸序列由下列元件組成:

  1. 將無線電從下列其中一種狀態轉換為「傳輸」:
    • 在裝置閒置或不支援 OT_RADIO_CAPS_SLEEP_TO_TX 時接收 RX
    • 如果裝置在閒置時 RX 關閉,且支援 OT_RADIO_CAPS_SLEEP_TO_TX,則為休眠狀態。
  2. 使用指定通道和指定的傳輸功率傳輸通道。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aFrame
指向要傳輸的影格的指標。
傳回值
OT_ERROR_NONE
已成功轉換至「傳輸」。
OT_ERROR_INVALID_STATE
無線電未處於接收狀態。

otPlatRadioTxDone

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

無線電驅動程式會呼叫此函式來通知 OpenThread,通知 OpenThread 傳輸作業已經完成,並提供傳輸的影格及接收的確認框架 (如果適用)。

當無線電提供 OT_RADIO_CAPS_TRANSMIT_SEC 功能時,無線電平台層會以安全影格計數器和無線電維護的索引鍵索引值更新 aFrame

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aFrame
指向已傳輸影格的指標。
[in] aAckFrame
指向 ACK 框架的指標,如果未收到 ACK,則為 NULL。
[in] aError
OT_ERROR_NONE 傳送影格時,系統傳送影格卻未收到 OT_ERROR_NO_ACK 時,由於頻道上發生的活動,因此無法發生 OT_ERROR_CHANNEL_ACCESS_FAILURE Tx;因其他原因而取消傳輸作業時無法執行 OT_ERROR_ABORT。

otPlatRadioTxStarted

void otPlatRadioTxStarted(
  otInstance *aInstance,
  otRadioFrame *aFrame
)

無線電驅動程式會呼叫這個方法,通知 OpenThread 傳輸已開始。

詳細說明
參數
[in] aInstance
指向 OpenThread 執行個體結構的指標。
[in] aFrame
指向傳輸中框架的指標。

otPlatRadioUpdateCslSampleTime

void otPlatRadioUpdateCslSampleTime(
  otInstance *aInstance,
  uint32_t aCslSampleTime
)

更新無線電驅動程式中的 CSL 取樣時間。

透過 CSL IE 傳送 ACK 時,取樣時間會以副本的形式儲存在無線電驅動程式中,以計算階段。CSL 接收器的 CSL 範例 (window) 延伸自取樣時間之前與之後。CSL 取樣時間會標示 CSL 取樣視窗中的時間戳記,如果在「理想條件」中收到的影格,在沒有不準確/時鐘偏移的情況下,就會得到這個時間戳記。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aCslSampleTime
下一個取樣時間,以微秒為單位。這是影格 MHR 第一個符號的時間。

資源

OpenThread API 參考資料主題源自原始碼,請前往 GitHub 取得。如要瞭解詳情或對說明文件做出貢獻,請參閱資源