nl::Ble::BleLayer

#include <src/ble/BleLayer.h>

此類別提供單一執行緒的介面,可透過 BleLayer 平台介面函式在堆疊上向上移動資料,或透過與 BLEEndPoint 相關聯的 WeaveConnection 物件向下堆疊。

摘要

有兩種方法可以將 WeaveConnection (由 WeaveMessageLayer 定義) 與 BLE 連線建立關聯:

首先,應用程式可以被動接收傳入的 BLE 連線,並透過對應的平台介面函式,將這份收據產生的 BLE_CONNECTION_OBJECT 傳送給 BleLayer。這會導致 BleLayer 會將 BLE_CONNECTION_OBJECT 納入 BLEEndPoint,並在收到新的 BLE 組合時通知 WeaveMessageLayer。接著,訊息層會將新的 BLEEndPoint 物件納入 WeaveConnection 中,並透過訊息圖層的 OnConnectionReceived 回呼,將這個物件交給應用程式。

其次,應用程式可主動建立 BLE 連線,例如連接到 BLE 週邊裝置。然後,它會透過 WeaveMessageLayer 建立新的 WeaveConnection、為這個連線指派驗證類型,並將其繫結至 BLE_CONNECTION_OBJECT,透過 WeaveConnection::ConnectBle 為新的 BLE 連線繫結至 BLE_CONNECTION_OBJECT。接著,這個函式會建立 WeaveConnection 驗證類型成員變數指定的安全工作階段類型。

繼承

直接已知子類別:
  nl::Weave::DeviceLayer::Internal::BLEManagerImpl
  nl::Weave::DeviceLayer::Internal::BLEManagerImpl
  nl::Weave::DeviceLayer::Internal::BLEManagerImpl

建構函式和解構函式

BleLayer(void)

公開類型

@14 列舉
BleConnectionReceivedFunct)(BLEEndPoint *newEndPoint) typedef
void(*

公開屬性

OnWeaveBleConnectReceived
BleConnectionReceivedFunct
mAppState
void *
mState
enum nl::Ble::BleLayer::@14
[唯讀] 目前狀態

公用函式

HandleConnectionError(BLE_CONNECTION_OBJECT connObj, BLE_ERROR err)
void
HandleIndicationConfirmation(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
bool
當未判定的 GATT 指示收到正面收據確認時,請致電。
HandleIndicationReceived(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId, PacketBuffer *pBuf)
bool
在收到 GATT 指示時呼叫。
HandleReadReceived(BLE_CONNECTION_OBJECT connObj, BLE_READ_REQUEST_CONTEXT requestContext, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
bool
收到 GATT 讀取要求時呼叫。
HandleSubscribeComplete(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
bool
GATT 訂閱要求成功時呼叫。
HandleSubscribeReceived(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
bool
HandleUnsubscribeComplete(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
bool
GATT 取消訂閱要求成功時呼叫。
HandleUnsubscribeReceived(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
bool
HandleWriteConfirmation(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
bool
針對未處理的 GATT 寫入要求,收到正面收據確認時撥打電話。
HandleWriteReceived(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId, PacketBuffer *pBuf)
bool
收到 GATT 寫入要求時呼叫。
Init(BlePlatformDelegate *platformDelegate, BleApplicationDelegate *appDelegate, Weave::System::Layer *systemLayer)
NewBleEndPoint(BLEEndPoint **retEndPoint, BLE_CONNECTION_OBJECT connObj, BleRole role, bool autoClose)
ScheduleWork(nl::Weave::System::Layer::TimerCompleteFunct aComplete, void *aAppState)
nl::Weave::System::Error
平台介面函式:
Shutdown(void)

公開類型

@14

 @14

BleConnectionReceivedFunct

void(* BleConnectionReceivedFunct)(BLEEndPoint *newEndPoint)

公開屬性

OnWeaveBleConnectReceived

BleConnectionReceivedFunct OnWeaveBleConnectReceived

mAppState

void * mAppState

mState

enum nl::Ble::BleLayer::@14 mState

[唯讀] 目前狀態

公用函式

BleLayer

 BleLayer(
  void
)

HandleConnectionError

void HandleConnectionError(
  BLE_CONNECTION_OBJECT connObj,
  BLE_ERROR err
)

HandleIndicationConfirmation

bool HandleIndicationConfirmation(
  BLE_CONNECTION_OBJECT connObj,
  const WeaveBleUUID *svcId,
  const WeaveBleUUID *charId
)

當未判定的 GATT 指示收到正面收據確認時,請致電。

HandleIndicationReceived

bool HandleIndicationReceived(
  BLE_CONNECTION_OBJECT connObj,
  const WeaveBleUUID *svcId,
  const WeaveBleUUID *charId,
  PacketBuffer *pBuf
)

在收到 GATT 指示時呼叫。

HandleReadReceived

bool HandleReadReceived(
  BLE_CONNECTION_OBJECT connObj,
  BLE_READ_REQUEST_CONTEXT requestContext,
  const WeaveBleUUID *svcId,
  const WeaveBleUUID *charId
)

收到 GATT 讀取要求時呼叫。

BleLayer 透過 BleAdapter 執行的任何先前作業失敗時 (例如特性寫入要求或訂閱嘗試,或是 BLE 連線關閉時),平台必須呼叫此函式。

在大多數情況下,這會提示 Weave 關閉相關聯的 WeaveConnection,並通知平台已放棄基礎 BLE 連線。

注意:如果應用程式明確關閉與相關聯 WeaveConnection 的 BLE 連線,導致 BLE 連線關閉不會產生對 Weave 的呼叫,則必須使用 err = BLE_ERROR_APP_CLOSED_CONNECTION 呼叫 HandleConnectionError,以免這個 WeaveConnection 及其結束點物件外洩。

HandleSubscribeComplete

bool HandleSubscribeComplete(
  BLE_CONNECTION_OBJECT connObj,
  const WeaveBleUUID *svcId,
  const WeaveBleUUID *charId
)

GATT 訂閱要求成功時呼叫。

如果任何 Weave 服務慈善機構要求取消訂閱 GATT,平台必須呼叫這個函式,也就是取消 Weave 服務特性的現有 GATT 訂閱方案時。

HandleSubscribeReceived

bool HandleSubscribeReceived(
  BLE_CONNECTION_OBJECT connObj,
  const WeaveBleUUID *svcId,
  const WeaveBleUUID *charId
)

HandleUnsubscribeComplete

bool HandleUnsubscribeComplete(
  BLE_CONNECTION_OBJECT connObj,
  const WeaveBleUUID *svcId,
  const WeaveBleUUID *charId
)

GATT 取消訂閱要求成功時呼叫。

HandleUnsubscribeReceived

bool HandleUnsubscribeReceived(
  BLE_CONNECTION_OBJECT connObj,
  const WeaveBleUUID *svcId,
  const WeaveBleUUID *charId
)

HandleWriteConfirmation

bool HandleWriteConfirmation(
  BLE_CONNECTION_OBJECT connObj,
  const WeaveBleUUID *svcId,
  const WeaveBleUUID *charId
)

針對未處理的 GATT 寫入要求,收到正面收據確認時撥打電話。

HandleWriteReceived

bool HandleWriteReceived(
  BLE_CONNECTION_OBJECT connObj,
  const WeaveBleUUID *svcId,
  const WeaveBleUUID *charId,
  PacketBuffer *pBuf
)

收到 GATT 寫入要求時呼叫。

Init

BLE_ERROR Init(
  BlePlatformDelegate *platformDelegate,
  BleApplicationDelegate *appDelegate,
  Weave::System::Layer *systemLayer
)

NewBleEndPoint

BLE_ERROR NewBleEndPoint(
  BLEEndPoint **retEndPoint,
  BLE_CONNECTION_OBJECT connObj,
  BleRole role,
  bool autoClose
)

ScheduleWork

nl::Weave::System::Error ScheduleWork(
  nl::Weave::System::Layer::TimerCompleteFunct aComplete,
  void *aAppState
)

平台介面函式:

呼叫慣例:Weave 取得透過這些函式接收到的 PacketBuffers 擁有權,並會釋放這些函式或將擁有權傳遞至堆疊。

每次呼叫之外,UUID 引數的生命週期都不會提供任何保證。

Weave 堆疊成功處理對應的訊息或狀態指示,「false」表示 Weave 堆疊失敗或選擇不處理。如果值為「false」,Weave 堆疊不會釋出或取得任何 PacketBuffer 引數的擁有權。簽署這份合約可讓平台將 BLE 事件傳遞給 Weave,不必知道 Weave 重視哪些特徵。

為所有 Weave 服務合約建立 GATT 訂閱項目後,平台必須呼叫這個函式。

如果此函式傳回 true,Weave 已接受 BLE 連線,並納入 WeaveConnection 物件中。如果 Weave 接受 BLE 連線,該平台「必須」通知 Weave,表示取消訂閱或基礎 BLE 連線已關閉,或者相關聯的 WeaveConnection 不會關閉或釋放。

關機

BLE_ERROR Shutdown(
  void
)