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 中,并通过消息层的 OnConnectionReceived 回调将此对象传递给应用。
其次,应用可以主动建立传出 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::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
移动应用状态
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 及其端点对象发生泄露。
HandleSubscriptionsComplete
bool HandleSubscribeComplete( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId )
在 GATT 订阅请求成功时调用。
当对任何 Weave 服务字符提出 GATT 退订(即取消针对 Weave 服务特征的现有 GATT 订阅)时,平台必须调用此函数。
HandleSubscriptionsReceived
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 )
新端点
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 接受通过这些函数接收的 PacketBuffer 的所有权,并释放这些函数或将所有权传递到堆栈中。
每次调用后,都无法保证 UUID 参数的生命周期。
'true' 返回值表示 Weave 堆栈成功处理了相应的消息或状态指示。'false' 表示 Weave 堆栈失败或选择不处理此问题。如果出现 'false,' Weave 堆栈,将不会释放或获得任何 PacketBuffer 参数。此协定可让平台将 BLE 事件传递给 Weave,而无需知道 Weave 关注的哪些特性。
在为任何 Weave 服务字符建立 GATT 订阅后,平台必须调用此函数。
如果此函数返回 true,则表示 Weave 已接受 BLE 连接并将其封装在 WeaveConnection 对象中。如果 Weave 接受 BLE 连接,则平台必须在订阅被取消或底层 BLE 连接关闭时通知 Weave,或者相关联的 WeaveConnection 永远不会被关闭或释放。