我是靠谱客的博主 激情铅笔,最近开发中收集的这篇文章主要介绍涂鸦蓝牙协议简单说明(成为我的粉丝可以看涂鸦蓝牙SDK的移值初级教程),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、广播和 服务

广播包

LenTypeValueDescription
0x020x010x06Discovery Mode
0x030x020XA201Service: More 16-bit UUIDs available
0x0C或者 0x140x160x01,0xA2,type(0-pid,1product_key)PID或者 product_key(8或者 16字节 )Service Data

在这里插入图片描述

扫描响应包

LenTypeValueDescription
0x030x09“TY”Complete local name
0x190xffanufacturer Specific Data

服务和特征值

UUIDProperties说明
0x2B11Write提供手机APP 向BLE 设备发送消息或取相应消息
0x2B10Notify提供给BLE 设备向超级APP 发送通知信息

说明:每个版本的服务和特征的UUID不一样。

二、数据协议

本协议数据项使用Big-Endian编码,即多个字节表示一个数据项时,先发送高字节。

2.1、功能码

功能码功能备注
0x0000查询设备信息
0x0001发起配对
0x0002命令下发
0x0003设备状态查询
0x0004设置密码保留
0x0005设备解绑
0x0006设备重置
0x000COTA开始升级
0x000DOTA升级文件信息
0x000EOTA升级文件偏移请求
0x000FOTA数据
0x0010OTA升级结束
0x8001状态上报
0x8002设备调试信息显示
0x8003记录型状态数据上报
0x8011设备获取实时时间1
0x8012设备获取实时时间2

2.2、协议部分

4Byte4Byte2Byte2ByteNByte2Byte
SNACK_SN功能码LENDATACRC16

2.3、 数据部分

1Byte16 ByteN Byte
加密FLAGAES-CBC IV帧数据的明文或者密文
加密FLAG:0- 未加密,明文;
1-secret_key_1;
2- secret_key_2;
3- secret_key_3;
4- secret_key_4;
5- session_key;
6- ECDH协商的key

AES-CBC IV:每次加密用随机数生成,明文传输,如果加密FLAG为0,则没有IV域存在。

2.3、分包数据结构

包头包头包头包头数据 部分
分包序号 (<=4B)帧数据长度 (<=4B)协议版本标识 (4bit)保留 (4bit)数据 部分
采用类似 MQTT 可变长度描述采用类似 MQTT 可变长度描述,表示后续帧数据长度协议版号保留N

三、 配网流程

1、App请求连接;
2、App下发连接更新参数;
3、App获取设备信息;
4、App配对请求;
5、配网成功,下发dp查询命令和时间;
6、剩下根据产品上传DP数据;

四、数据处理的流程

1、 tuya_ble_gatt_receive_data函数接收蓝牙底层数据,且打包成一个消息;
2、 tuya_ble_main_tasks_exec函数处理消息,打包成数据事件;
3、 tuya_ble_handle_ble_data_evt函数分发数据事件;
4、 tuya_ble_commonData_rx_proc函数处理数据事件;
5、 ble_data_unpack函数进行组包;
6、 tuya_ble_decryption函数解密;
7、 ble_cmd_data_crc_check函数判断CRC,校验正确后产生消息;

8、 tuya_ble_main_tasks_exec函数处理消息,打包成命令事件;
9、 tuya_ble_handle_ble_cmd_evt函数调用下面的函数
10、tuya_ble_evt_process函数进行分发命令事件;
根据APP下发的命令处理对于的事件
11、 tuya_ble_handle_dev_info_req函数(设备信息获取命令)/tuya_ble_handle_pair_req函数(配对请求命令);
12、 tuya_ble_commData_send函数发送;
13、 tuya_ble_encryption函数加密

14、 trsmitr_send_pkg_encode函数进行数据分包;
15、 tuya_ble_gatt_send_data_enqueue产生事件;

16、tuya_ble_main_tasks_exec函数处理事件,且调用如下函数;
17、 tuya_ble_gatt_send_data_handle处理蓝牙数据;
18、 tuya_ble_gatt_send_data调用蓝牙底层发送出去;

五、 升级流程
1、 APP下发升级请求;
2、 APP下发升级文件信息;【重点是校验和文件大小】
3、 APP下发升级文件偏移请求;
4、 APP下发升级数据;【一直循环这个步骤,直到数据发送完】
5、 APP下发升级结束;
在这里插入图片描述

六、涂鸦SDK说明

在这里插入图片描述
App文件夹:串口协议和产测协议;
Doc文件夹:空的;
Example文件夹:简单的例子;
extern_components文件夹:
在这里插入图片描述
Port文件夹:蓝牙 SDK 所需要的接口抽象,需要我们根据具体的芯片平台移植实现。(下面会讲解要实现那些接口函数)
Sdk文件夹:里面的文件都要添加到工程中;
tuya_ble_config.h:涂鸦的配置文件;
在这里插入图片描述

最后

以上就是激情铅笔为你收集整理的涂鸦蓝牙协议简单说明(成为我的粉丝可以看涂鸦蓝牙SDK的移值初级教程)的全部内容,希望文章能够帮你解决涂鸦蓝牙协议简单说明(成为我的粉丝可以看涂鸦蓝牙SDK的移值初级教程)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部