WQ7033使用SPP与APP进行通信
在进行WQ7033开发时候, 往往会有连接手机APP的需求, 连接手机APP, 往往会使用SPP, BLE等方式与手机APP进行连接.
本文重点介绍的是使用WQ7033 SDK中的SPP模块来与手机APP进行连接通信
WQ7033 SPP介绍
SPP是蓝牙串口协议Serial Port Profile, 在蓝牙设备之间建立虚拟的串口来进行数据通信. 可以用来和上位机进行数据的收发, 这里需要注意的是苹果手机不开放SPP协议.
一般SPP用来连接产线SPP蓝牙设备做发送一些测试命令做生产测试, 连接安卓手机用SPP与APP进行通信
WQ7033中的SPP是使用APP_SPP模块进行管理的
APP_SPP模块的主要功能有:
- 注册SPP连接断开的回调, 注册SPP接收到数据的回调
- 发送SPP数据到客户端
- 接收SPP客户端发送来的数据
WQ7033 SPP的使用
不同产品手机APP可能会使用不同的通信协议, 上层定义了一个ECONN模块(互联互通)来对不同APP通信进行匹配, ECONN模块作为设备端与手机APP交互入口, 负责响应APP发送的命令, 响应APP请求以及上报设备状态和行为等功能
以下代码都放在自定义的econn代码中实现, 如何新增自定义的econn代码可以参考文章: 自定义ECONN代码
-
注册自定义的SPP Service
使用app_spp_register_service()函数注册SPP服务的UUID, 连接状态回调函数和接收对方SPP数据回调函数的注册
定义了一个自定义的128位SPP UUID, 并在econn_init的时候注册了SPP连接状态回调和数据回调函数
-
使用安卓SPP工具进行连接
打开安卓SPP调试工具, 点击连接, 并输入注册的128位UUID, 如下图填入uuid
连接成功后会进入注册的回调, log显示如图, 代表SPP连接成功
-
SPP数据的发送
发送SPP数据到对端, 使用app_spp_send_data()或app_spp_send_data_ext()将数据发送到对方SPP. 比如这里 ANC模式发生改变的时候, 发送了一个自定义的10字节的数据
手机端SPP接收到一个10字节的数据
-
SPP数据的接收
当接收到对端发来的SPP数据, 会收到BT CORE传来的BT_EVT_SPP_DATA事件, 并进入到之前注册接收数据回调中, 如下图手机端发送了一个自定义的0xaa00bb11cc22 6个字节的数据
耳机端进入到注册的数据接收回调, 并正确接收到了6个字节的数据把接收到的数据dump出来