BLE

這個單元包含 BLE 主機通訊的平台抽象化機制。

摘要

平台必須實作藍牙 LE 4.2 以上版本。

Typedefs

otBleRadioPacket typedef
代表 BLE 封包。

函式

otPlatBleDisable(otInstance *aInstance)
停用藍牙低功耗無線電。
otPlatBleEnable(otInstance *aInstance)
啟用藍牙低功耗無線電。
otPlatBleGapAdvStart(otInstance *aInstance, uint16_t aInterval)
啟動 BLE 廣告程序。
otPlatBleGapAdvStop(otInstance *aInstance)
停止 BLE 廣告程序。
otPlatBleGapDisconnect(otInstance *aInstance)
中斷連線 BLE 連線。
otPlatBleGapOnConnected(otInstance *aInstance, uint16_t aConnectionId)
void
BLE 驅動程式會呼叫此方法,通知 OpenThread 已連接 BLE Central 裝置。
otPlatBleGapOnDisconnected(otInstance *aInstance, uint16_t aConnectionId)
void
BLE 驅動程式會呼叫此方法來通知 OpenThread,通知 BLE Central 裝置已中斷連線。
otPlatBleGattMtuGet(otInstance *aInstance, uint16_t *aMtu)
讀取目前使用 ATT_MTU 值。
otPlatBleGattOnMtuUpdate(otInstance *aInstance, uint16_t aMtu)
void
BLE 驅動程式會呼叫此方法來通知 OpenThread 已更新 ATT_MTU。
otPlatBleGattServerIndicate(otInstance *aInstance, uint16_t aHandle, const otBleRadioPacket *aPacket)
傳送 ATT 帳號代碼值指示。
otPlatBleGattServerOnWriteRequest(otInstance *aInstance, uint16_t aHandle, const otBleRadioPacket *aPacket)
void
BLE 驅動程式會呼叫此方法,通知 OpenThread 已收到 ATT 寫入要求封包。

結構

otBleRadioPacket

代表 BLE 封包。

Typedefs

otBleRadioPacket

struct otBleRadioPacket otBleRadioPacket

代表 BLE 封包。

函式

otPlatBleDisable

otError otPlatBleDisable(
  otInstance *aInstance
)

停用藍牙低功耗無線電。

停用後,BLE 堆疊將清除事件佇列,不會產生新事件。BLE 週邊裝置已關閉或進入低電量睡眠狀態。您應釋放堆疊使用的任何動態記憶體,但靜態記憶體可能會保留。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
傳回值
OT_ERROR_NONE
已成功轉換為停用狀態。
OT_ERROR_FAILED
無法停用 BLE 無線電。

otPlatBleEnable

otError otPlatBleEnable(
  otInstance *aInstance
)

啟用藍牙低功耗無線電。

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

otPlatBleGapAdvStart

otError otPlatBleGapAdvStart(
  otInstance *aInstance,
  uint16_t aInterval
)

啟動 BLE 廣告程序。

BLE 裝置應在未套用任何篩選條件的情況下使用非導向內容的廣告。您必須在所有廣告管道 (37、38 和 39) 上傳送一個 BLE 廣告封包。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aInterval
後續廣告封包的間隔間隔,單位為 OT_BLE_ADV_INTERVAL_UNIT 單位。如果是在編譯時設定的預設值,則為 OT_BLE_ADV_INTERVAL_MIN 和 OT_BLE_ADV_INTERVAL_MAX 範圍或 OT_BLE_ADV_INTERVAL_DEFAULT 範圍內。
傳回值
OT_ERROR_NONE
已啟動廣告程序。
OT_ERROR_INVALID_STATE
BLE 裝置處於無效狀態。
OT_ERROR_INVALID_ARGS
提供的間隔值無效。

otPlatBleGapAdvStop

otError otPlatBleGapAdvStop(
  otInstance *aInstance
)

停止 BLE 廣告程序。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
傳回值
OT_ERROR_NONE
廣告程序已停止。
OT_ERROR_INVALID_STATE
BLE 裝置處於無效狀態。

otPlatBleGapDisconnect

otError otPlatBleGapDisconnect(
  otInstance *aInstance
)

中斷連線 BLE 連線。

與對等 BLE 裝置中斷連線時,BLE 裝置應使用遠端使用者終止連線 (0x13) 原因代碼。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
傳回值
OT_ERROR_NONE
已開始中斷連線程序。
OT_ERROR_INVALID_STATE
BLE 裝置處於無效狀態。

otPlatBleGapOnConnected

void otPlatBleGapOnConnected(
  otInstance *aInstance,
  uint16_t aConnectionId
)

BLE 驅動程式會呼叫此方法,通知 OpenThread 已連接 BLE Central 裝置。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aConnectionId
開放連線的 ID。

otPlatBleGapOnDisconnected

void otPlatBleGapOnDisconnected(
  otInstance *aInstance,
  uint16_t aConnectionId
)

BLE 驅動程式會呼叫此方法來通知 OpenThread,通知 BLE Central 裝置已中斷連線。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aConnectionId
已關閉連線的 ID。

otPlatBleGattMtuGet

otError otPlatBleGattMtuGet(
  otInstance *aInstance,
  uint16_t *aMtu
)

讀取目前使用 ATT_MTU 值。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[out] aMtu
輸出目前 ATT_MTU 值的指標。
傳回值
OT_ERROR_NONE
ATT_MTU 值已加入「aMtu」中。
OT_ERROR_FAILED
BLE 裝置無法判斷其 ATT_MTU。

otPlatBleGattOnMtuUpdate

void otPlatBleGattOnMtuUpdate(
  otInstance *aInstance,
  uint16_t aMtu
)

BLE 驅動程式會呼叫此方法來通知 OpenThread 已更新 ATT_MTU。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aMtu
更新後的 ATT_MTU 值。

otPlatBleGattServerIndicate

otError otPlatBleGattServerIndicate(
  otInstance *aInstance,
  uint16_t aHandle,
  const otBleRadioPacket *aPacket
)

傳送 ATT 帳號代碼值指示。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aHandle
要指定的屬性控制代碼。
[in] aPacket
封包的指標包含要指定的值。
傳回值
OT_ERROR_NONE
已傳送 ATT 帳號代碼值指示。
OT_ERROR_INVALID_STATE
BLE 裝置處於無效狀態。
OT_ERROR_INVALID_ARGS
輸入的值、資料或資料長度無效。
OT_ERROR_NO_BUFS
找不到可用的內部緩衝區。

otPlatBleGattServerOnWriteRequest

void otPlatBleGattServerOnWriteRequest(
  otInstance *aInstance,
  uint16_t aHandle,
  const otBleRadioPacket *aPacket
)

BLE 驅動程式會呼叫此方法,通知 OpenThread 已收到 ATT 寫入要求封包。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aHandle
要寫入的屬性控點。
[in] aPacket
封包的指標包含要寫入該屬性的值。

巨集

OT_BLE_ADV_INTERVAL_DEFAULT

 OT_BLE_ADV_INTERVAL_DEFAULT 100

廣告封包的預設間隔 (毫秒)。

OT_BLE_ADV_INTERVAL_MAX

 OT_BLE_ADV_INTERVAL_MAX 0x4000

OT_BLE_ADV_INTERVAL_UNIT 單位廣告封包的允許間隔上限 (10.24 秒)。

OT_BLE_ADV_INTERVAL_MIN

 OT_BLE_ADV_INTERVAL_MIN 0x0020

廣告封包的允許間隔下限,單位為 OT_BLE_ADV_INTERVAL_UNIT (20 毫秒)。

OT_BLE_ADV_INTERVAL_UNIT

 OT_BLE_ADV_INTERVAL_UNIT OT_BLE_TIMESLOT_UNIT

用於計算間隔時間長度的單位 (0.625 毫秒)。

OT_BLE_ATT_MTU_MAX

 OT_BLE_ATT_MTU_MAX 67

允許的 ATT MTU 大小上限 (必須大於或等於 23)。

OT_BLE_DEFAULT_POWER

 OT_BLE_DEFAULT_POWER 0

BLE 的預設電源值。

OT_BLE_TIMESLOT_UNIT

 OT_BLE_TIMESLOT_UNIT 625

在 PHY 圖層上的時段時間長度,以微秒 (0.625 毫秒) 為單位。

資源

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