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 连接的 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
[READ-ONLY] 当前状态

公共函数

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

[READ-ONLY] 当前状态

公共函数

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 拥有通过这些函数接收的 PacketBuffer 的所有权,并释放它们或向堆栈中传递所有权。

除了每次调用之外,系统不会对 UUID 参数的生命周期提供任何保证。

“true”返回值表示 Weave 堆栈成功处理了相应的消息或状态指示。“false”表示 Weave 堆栈失败或选择不处理此问题。如果为“false”,Weave 堆栈将不会释放任何 PacketBuffer 参数或取得其所有权。该协定让平台能够将 BLE 事件传递给 Weave,而无需知道 Weave 关注哪些特征。

当已针对任何 Weave 服务特征建立 GATT 订阅时,平台必须调用此函数。

如果此函数返回 true,Weave 已接受 BLE 连接并将其封装在 WeaveConnection 对象中。如果 Weave 接受 BLE 连接,则当订阅被取消或底层 BLE 连接关闭时,平台必须通知 Weave,否则关联的 WeaveConnection 将永远不会关闭或释放。

关停

BLE_ERROR Shutdown(
  void
)