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)
|
typedefvoid(*
|
公開屬性 |
|
---|---|
OnWeaveBleConnectReceived
|
BleConnectionReceivedFunct
|
mAppState
|
void *
|
mState
|
enum nl::Ble::BleLayer::@14
[唯讀] 目前狀態
|
公開類型
@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 不會關閉或釋放。