透過集合功能整理內容 你可以依據偏好儲存及分類內容。

nl::Ble::BleLayer

#include <src/ble/BleLayer.h>

此類別為單一執行緒提供介面,藉以透過 BleLayer 平台介面函式提升堆疊,或藉由與 BLEEndPoint 相關聯的 WeaveConnection 物件向下堆疊。

總結

以下兩種方式可以連結 WeaveConnection (由 WeaveMessageLayer 定義) 與 BLE 連線:

首先,應用程式可以被動接收傳入的 BLE 連線,並透過對應的平台介面函式,將該收據產生的平台專屬 BLE_CONNECTION_OBJECT 傳送到 BleLayer。如此一來,BleLayer 會將 BLE_CONNECTION_OBJECT 包裝在 BLEEndPoint 中,並通知 WeaveMessageLayer 已收到新的 BLE 連線。接著,訊息圖層將新的 BLEEndPoint 物件包裝在 WeaveConnection 中,並透過訊息圖層將物件導向應用程式。

接著,應用程式可以主動建立連出 BLE 連線,例如連接 BLE 週邊裝置。接下來,系統會透過 WeaveMessageLayer 建立新的 WeaveConnection、為這種連線指派驗證類型,並透過 WeaveConnection::ConnectBle 繫結至 BLE_CONNECTION_OBJECT 以用於新的 BLE 連線。接著,這個函式會建立 WeaveConnection' 驗證類型成員變數變數所指定的安全工作階段類型。

繼承

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

建構函式和解構程式

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

行動應用程式狀態

void * mAppState

MState

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

[唯讀] 目前狀態

公開函式

布雷層

 BleLayer(
  void
)

處理連線錯誤

void HandleConnectionError(
  BLE_CONNECTION_OBJECT connObj,
  BLE_ERROR err
)

處理作業確認

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

收到 GATT 指示,表示已收到確認回條時,請致電給您。

已處理處理程序

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

收到 GATT 指示時呼叫。

處理已讀取

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 呼叫 ProcessConnectionError ,以避免這個 WeaveConnection 及其端點物件外洩。

處理訂閱完成

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

GATT 訂閱要求成功時呼叫。

如果平台對任何 Weave 服務屬性要求 GATT 取消訂閱,也就是要求取消 Weave 服務特性的現有 GATT 訂閱時,平台必須呼叫此函式。

處理訂閱

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

處理取消訂閱完成

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

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

處理取消訂閱

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

處理寫入確認

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

收到未完成的 GATT 寫入要求時,請呼叫確認。

處理寫入要求

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
)

排程工作

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

平台介面功能:

通話慣例:Weave 會取得透過這些函式收到的 PacketBuffers 擁有權,因此可以釋出這些方法,或傳遞堆疊資訊的擁有權。

除了每次呼叫以外,我們不保證對 UUID 引數的效期提供保證。

A 'true'傳回值表示 Weave 堆疊成功處理對應的訊息或狀態指示。'false'係指 Weave 堆疊失敗或選擇不處理。如果 'false,' Weave 堆疊 不會釋放或取得任何 PacketBuffer 引數的擁有權。這個合約可讓平台將 BLE 事件傳遞至 Weave,不必瞭解 Weave 重視的特徵。

當 GATT 訂閱設定為任何 Weave 服務特性時,平台必須呼叫此函式。

如果此函式傳回 true,Weave 已接受 BLE 連線並將其納入 WeaveConnection 物件中。如果 Weave 接受 BLE 連線,該平台「必須」向 Weave 通知是否取消訂閱,或是基礎的 BLE 連線已關閉,否則相關的 WeaveConnection 一律不會關閉或釋出。

停用

BLE_ERROR Shutdown(
  void
)