涂鸦蓝牙协议简单说明(成为我的粉丝可以看涂鸦蓝牙SDK的移值初级教程)

本文主要是介绍涂鸦蓝牙协议简单说明(成为我的粉丝可以看涂鸦蓝牙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协商的keyAES-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的移值初级教程)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/786386

相关文章

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

使用EasyExcel实现简单的Excel表格解析操作

《使用EasyExcel实现简单的Excel表格解析操作》:本文主要介绍如何使用EasyExcel完成简单的表格解析操作,同时实现了大量数据情况下数据的分次批量入库,并记录每条数据入库的状态,感兴... 目录前言固定模板及表数据格式的解析实现Excel模板内容对应的实体类实现AnalysisEventLis