BLE

此模块包含用于 BLE 主机通信的平台抽象。

摘要

平台需要实现蓝牙 LE 4.2 或更高版本。

类型定义符

otBleRadioPacket typedef
表示 BLE 数据包。

函数

otPlatBleDisable(otInstance *aInstance)
禁用蓝牙低功耗无线电。
otPlatBleEnable(otInstance *aInstance)
启用蓝牙低功耗无线电。
otPlatBleGapAdvStart(otInstance *aInstance, uint16_t aInterval)
启动 BLE 通告程序。
otPlatBleGapAdvStop(otInstance *aInstance)
停止 BLE 通告程序。
otPlatBleGapDisconnect(otInstance *aInstance)
断开 BLE 连接。
otPlatBleGapOnConnected(otInstance *aInstance, uint16_t aConnectionId)
void
BLE 驱动程序调用此方法来通知 OpenThread 已连接 BLE 中央设备。
otPlatBleGapOnDisconnected(otInstance *aInstance, uint16_t aConnectionId)
void
BLE 驱动程序调用此方法来通知 OpenThread,其 BLE 中央设备已断开连接。
otPlatBleGattMtuGet(otInstance *aInstance, uint16_t *aMtu)
读取操作目前使用 ATT_MTU 值。
otPlatBleGattOnMtuUpdate(otInstance *aInstance, uint16_t aMtu)
void
BLE 驱动程序会调用此方法,以通知 OpenThread 已更新 ATT_MTU。
otPlatBleGattServerIndicate(otInstance *aInstance, uint16_t aHandle, const otBleRadioPacket *aPacket)
发送 ATT 句柄值指示。
otPlatBleGattServerOnWriteRequest(otInstance *aInstance, uint16_t aHandle, const otBleRadioPacket *aPacket)
void
BLE 驱动程序会调用此方法,以通知 OpenThread 已收到 ATT 写入请求数据包。

结构体

otBleRadioPacket

表示 BLE 数据包。

类型定义符

otBleRadioPacket

struct otBleRadioPacket otBleRadioPacket

表示 BLE 数据包。

函数

otPlatBleDisable

otError otPlatBleDisable(
  otInstance *aInstance
)

禁用蓝牙低功耗无线电。

停用后,BLE 堆栈将刷新事件队列,并且不会生成新事件。BLE 外围设备已关闭或进入低功耗休眠状态。堆栈使用的任何动态内存都应释放,但静态内存可以保留。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
返回值
OT_ERROR_NONE
已成功转换为已停用状态。
OT_ERROR_FAILED
无法停用 BLE 无线装置。

otPlatBleEnable

otError otPlatBleEnable(
  otInstance *aInstance
)

启用蓝牙低功耗无线电。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
返回值
OT_ERROR_NONE
已成功启用。
OT_ERROR_FAILED
无法启用 BLE 无线装置。

otPlatBleGapAdvStart

otError otPlatBleGapAdvStart(
  otInstance *aInstance,
  uint16_t aInterval
)

启动 BLE 通告程序。

BLE 设备应使用未应用过滤器的无定向通告。必须在所有广告通道(37、38 和 39)上发送一个 BLE 通告包。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[in] aInterval
后续通告包之间的时间间隔,以 OT_BLE_ADV_INTERVAL_UNIT 为单位。应在 OT_BLE_ADV_INTERVAL_MIN 和 OT_BLE_ADV_INTERVAL_MAX 范围内;如果是编译时设置的默认值,应在 OT_BLE_ADV_INTERVAL_DEFAULT 范围内。
返回值
OT_ERROR_NONE
广告程序已开始。
OT_ERROR_INVALID_STATE
BLE 设备处于无效状态。
OT_ERROR_INVALID_ARGS
提供的间隔值无效。

otPlatBleGapAdvStop

otError otPlatBleGapAdvStop(
  otInstance *aInstance
)

停止 BLE 通告程序。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
返回值
OT_ERROR_NONE
广告程序已停止。
OT_ERROR_INVALID_STATE
BLE 设备处于无效状态。

otPlatBleGapDisconnect

otError otPlatBleGapDisconnect(
  otInstance *aInstance
)

断开 BLE 连接。

在与对等 BLE 设备断开连接时,BLE 设备应使用远程用户终止连接 (0x13) 原因代码。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
返回值
OT_ERROR_NONE
已启动断开连接程序。
OT_ERROR_INVALID_STATE
BLE 设备处于无效状态。

otPlatBleGapOnConnected

void otPlatBleGapOnConnected(
  otInstance *aInstance,
  uint16_t aConnectionId
)

BLE 驱动程序调用此方法来通知 OpenThread 已连接 BLE 中央设备。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[in] aConnectionId
开放连接的标识符。

otPlatBleGapOnDisconnected

void otPlatBleGapOnDisconnected(
  otInstance *aInstance,
  uint16_t aConnectionId
)

BLE 驱动程序调用此方法来通知 OpenThread,其 BLE 中央设备已断开连接。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[in] aConnectionId
已关闭连接的标识符。

otPlatBleGattMtuGet

otError otPlatBleGattMtuGet(
  otInstance *aInstance,
  uint16_t *aMtu
)

读取操作目前使用 ATT_MTU 值。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[out] aMtu
用于输出当前 ATT_MTU 值的指针。
返回值
OT_ERROR_NONE
ATT_MTU 值已放入 aMtu
OT_ERROR_FAILED
BLE 设备无法确定其 ATT_MTU。

otPlatBleGattOnMtuUpdate

void otPlatBleGattOnMtuUpdate(
  otInstance *aInstance,
  uint16_t aMtu
)

BLE 驱动程序会调用此方法,以通知 OpenThread 已更新 ATT_MTU。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[in] aMtu
更新后的 ATT_MTU 值。

otPlatBleGattServerIndicate

otError otPlatBleGattServerIndicate(
  otInstance *aInstance,
  uint16_t aHandle,
  const otBleRadioPacket *aPacket
)

发送 ATT 句柄值指示。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[in] aHandle
要指示的属性的句柄。
[in] aPacket
指向数据包的指针包含要指示的值。
返回值
OT_ERROR_NONE
已发送 ATT 标识名值指示。
OT_ERROR_INVALID_STATE
BLE 设备处于无效状态。
OT_ERROR_INVALID_ARGS
提供的句柄值、数据或数据长度无效。
OT_ERROR_NO_BUFS
未找到可用的内部缓冲区。

otPlatBleGattServerOnWriteRequest

void otPlatBleGattServerOnWriteRequest(
  otInstance *aInstance,
  uint16_t aHandle,
  const otBleRadioPacket *aPacket
)

BLE 驱动程序会调用此方法,以通知 OpenThread 已收到 ATT 写入请求数据包。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[in] aHandle
要写入的属性的句柄。
[in] aPacket
指向数据包的指针包含要写入该属性的值。

OT_BLE_ADV_INTERVAL_DEFAULT

 OT_BLE_ADV_INTERVAL_DEFAULT 100

通告包的默认时间间隔(毫秒)。

OT_BLE_ADV_INTERVAL_MAX

 OT_BLE_ADV_INTERVAL_MAX 0x4000

允许通告包的最长间隔时间,以 OT_BLE_ADV_INTERVAL_UNIT 为单位(10.24 秒)。

OT_BLE_ADV_INTERVAL_MIN

 OT_BLE_ADV_INTERVAL_MIN 0x0020

允许通告包的最小间隔,以 OT_BLE_ADV_INTERVAL_UNIT 为单位(20 毫秒)。

OT_BLE_ADV_INTERVAL_UNIT

 OT_BLE_ADV_INTERVAL_UNIT OT_BLE_TIMESLOT_UNIT

用于计算间隔时长的单位(0.625 毫秒)。

OT_BLE_ATT_MTU_MAX

 OT_BLE_ATT_MTU_MAX 67

允许的 ATT MTU 大小上限(必须大于等于 23)。

OT_BLE_DEFAULT_POWER

 OT_BLE_DEFAULT_POWER 0

BLE 的默认功率值。

OT_BLE_TIMESLOT_UNIT

 OT_BLE_TIMESLOT_UNIT 625

PHY 层上的时段时长,以微秒为单位(0.625 毫秒)。

资源

OpenThread API 参考文档源自 GitHub 上提供的源代码。如需了解详情,或者为我们的文档做贡献,请参阅资源