ZHCACZ5 August   2023 CC2564C

 

  1.   1
  2.   摘要
  3.   商标
  4. 引言
  5. 运行蓝牙代码
  6. 演示应用程序
    1. 3.1 演示应用程序上的设备 1(服务器)设置
    2. 3.2 演示应用程序上的设备 2(客户端)设置
    3. 3.3 从设备 2 启动连接
    4. 3.4 确定支持的服务
    5. 3.5 客户端和服务器之间的数据传输
    6. 3.6 多个 SPPLE 连接指南
  7. 使用 LightBlue 应用在 iOS 设备上演示 SPP LE
    1. 4.1 LightBlue 概述
    2. 4.2 SPP LE 服务概述
      1. 4.2.1 特性
  8. LightBlue 作为客户端/SPPLEDemo 作为服务器
    1. 5.1 连接设备
    2. 5.2 启用通知
    3. 5.3 从 LightBlue 中发送数据/在 SPPLEDemo 中接收数据
    4. 5.4 从 SPPLEDemo 中发送数据/在 LightBlue 中接收数据
  9. LightBlue 作为服务器/SPPLEDemo 作为客户端
    1. 6.1 连接设备
    2. 6.2 从 LightBlue 中发送数据/在 SPPLEDemo 中接收数据
    3. 6.3 从 SPPLEDemo 中发送数据/在 LightBlue 中接收数据
  10. 应用程序命令
  11. 常规命令
    1. 8.1 帮助 (DisplayHelp)
    2. 8.2 获取本地地址
    3. 8.3 设置波特率
    4. 8.4 退出
  12. BR/EDR 命令
  13. 10GAPLE 命令
    1. 10.1  设置可发现性模式
    2. 10.2  设置可连接性模式
    3. 10.3  设置可配对性模式
    4. 10.4  更改配对参数
    5. 10.5  广播 LE
    6. 10.6  启动扫描
    7. 10.7  停止扫描
    8. 10.8  连接 LE
    9. 10.9  断开 LE
    10. 10.10 LE 配对
    11. 10.11 LE 通行密钥响应
    12. 10.12 LE 查询加密
    13. 10.13 设置通行密钥
    14. 10.14 发现 GAPS
    15. 10.15 获取本地名称
    16. 10.16 设置本地名称
    17. 10.17 获取远程名称
    18. 10.18 LE 用户确认响应
    19. 10.19 启用仅 SC
    20. 10.20 重新生成 P256 本地密钥
    21. 10.21 SC 生成 OOB 本地参数
    22. 10.22 设置本地外观
    23. 10.23 获取本地外观
  14. 11SPPLE 命令
    1. 11.1 发现 SPPLE
    2. 11.2 注册 SPPLE
    3. 11.3 LE 发送
    4. 11.4 配置 SPPLE
    5. 11.5 LE 读取
    6. 11.6 环回
    7. 11.7 显示原始模式数据
    8. 11.8 自动读取模式
  15. 12参考文献
  16. 13修订历史记录

LE 读取

说明

以下函数负责读取由存在连接的远程设备发送的数据。此函数在成功执行时返回零,而在出现错误时返回负值。根据 SPPLE 的设备角色是服务器还是客户端,调用的 API 函数为 GATT_Handle_Value_Notification 或 GATT_Write_Without_Response_Request;这两个函数分别通知接收额度特性或向传输额度特性发送无响应的写入数据包。

参数

唯一需要的参数是所连接的远程设备的蓝牙地址。

命令调用示例

  • “LeRead 001bdc05b617”尝试读取 BD_ADDR 为 001bdc05b617 的蓝牙设备的数据。
  • “LeRead 000275e126FF”尝试读取 BD_ADDR 为 000275e126FF 的蓝牙设备的数据。

可能的返回值

  • (0) 成功读取了数据
  • (-6) INVALID_PARAMETERS_ERROR
  • (-1) BTPS_ERROR_INVALID_PARAMETER
  • (-2) BTPS_ERROR_INVALID_BLUETOOTH_STACK_ID
  • (-67) BTPS_ERROR_RFCOMM_NOT_INITIALIZED
  • (-85) BTPS_ERROR_SPP_NOT_INITIALIZED
  • (-86) BTPS_ERROR_SPP_PORT_NOT_OPENED

API 调用

GATT_Handle_Value_Notification(BluetoothStackID, SPPLEServiceID, ConnectionID, SPPLE_RX_CREDITS_CHARACTERISTIC_ATTRIBUTE_OFFSET, WORD_SIZE, (Byte_t*)&Credits)

或者

GATT_Write_Without_Response_Request(BluetoothStackID, ConnectionID, DeviceInfo->ClientInfo.Tx_Credit_Characteristic, WORD_SIZE, &Credits)

API 原型

int BTPSAPI GATT_Handle_Value_Notification(unsigned int BluetoothStackID, unsigned int ServiceID, unsigned int ConnectionID, Word_t AttributeOffset, Word_tAttributeValueLength, Byte_t *AttributeValue)

或者

int BTPSAPI GATT_Write_Without_Response_Request(unsigned int BluetoothStackID, unsigned int ConnectionID, Word_t AttributeHandle, Word_t AttributeLength, void*AttributeValue)

API 说明

第一个 API 函数用于向远程 GATT 客户端发送句柄/值通知。此函数的第一个参数是本地蓝牙协议栈的 ID。第二个参数是发送句柄/值通知的服务的 ID。第三个参数指定接收句柄/值通知的连接的 ID。第四个参数指定正在通知的属性在服务表(通过调用 GATT_Register_Service() 函数注册)中的偏移量。第五个参数是正在通知的属性值的长度(以字节为单位)。第六个参数是指向要通知的实际属性值的指针。此函数返回一个非负值,该值表示已通知的属性值的实际长度;如果出现错误,则返回负的错误代码。

提供第二个 API 函数是为了能够针对指定的属性向远程设备执行无响应的写入请求。该函数的第一个参数是本地蓝牙协议栈的 ID,依次后跟所连接远程设备的连接 ID、要写入的属性的句柄、要写入的值数据的长度(以字节为单位)以及要写入的实际值。此函数返回成功写入的字节数或负的错误代码。