微信蓝牙外设协议培训资料

上传人:夏** 文档编号:547977477 上传时间:2024-02-13 格式:DOCX 页数:54 大小:745.80KB
返回 下载 相关 举报
微信蓝牙外设协议培训资料_第1页
第1页 / 共54页
微信蓝牙外设协议培训资料_第2页
第2页 / 共54页
微信蓝牙外设协议培训资料_第3页
第3页 / 共54页
微信蓝牙外设协议培训资料_第4页
第4页 / 共54页
微信蓝牙外设协议培训资料_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《微信蓝牙外设协议培训资料》由会员分享,可在线阅读,更多相关《微信蓝牙外设协议培训资料(54页珍藏版)》请在金锄头文库上搜索。

1、微信蓝牙牙外设协协议Projjectt BllueSShaddow V1.0.3Tenccentt Coonfiidenntiaal文档变更更日志01初稿20一三三/100/902针对常见见问题,增增加说明明20一三三/100/一八八03针对常见见问题,增增加说明明。修改包头头结构。20一三三/111/504第二期初初稿增加177条prrotoobuff协议,废废弃1条,修修改1条20一三三/111/26605暂时去掉掉二期的的内容(117条pprottobuuf),在一期期的基础础上增加加三条协协议,并并修改aauthh协议。加入加密解密部分说明。20144/2/1206修改uuuid的的规

2、定。补充协议字段和错误码。补充加密部分细节。20144/2/2707修改加密密协议,增增加例子子。补充不不加密的的协议。补充错误码。20144/3/407 . 11修改prrotoo里的UsserIId,Chhallleannge字字段。20144/3/707. 2规定低功功耗蓝牙牙广播包包必须包包含maac地址址。InnitRRespp增加可可选字段段以支持持自动同同步模式式,修改改解码失失败错误误码。20144/4/307 . 33修改SeendDDataa, SSenddDattaPuush两两条协议议,增加加typpe字段段,用来来区分是是发送给给厂商服服务器,还还是发送送给公众众平台

3、服服务器。20144/4/240 . 7 . 4修改blle蓝牙牙serrvicce uuuidd的值。20144/4/250 . 7 . 5公众平台台协议手手环修改改:增加加BasseReespoonsee字段。20144/4/301 . 0 . 1提升版本本号为11.0.1 BBetaa20144/6/91 . 0 . 2增加Reead Chaaraccterristticss,以支支持ioos多aapp连连接。增加httml jsaapi支支持。公众平台台协议手手环修改改:增加加rtcc时间支支持。废弃一些些字段,修修改协议议名字为为SenndDaata,RRecvvDatta等。201

4、44/7/一五1 . 0 . 3增加蓝牙牙扫描绑定定相关规规范。20144/8/一八目录概要5整体架构构5主要功能能5蓝牙BLLE模拟拟成流66协议71绑定77扫码绑定定8蓝牙扫描描绑定882扫描和和连接993 流994 包1104 包结结构1005 定长长包头1116 变长长包体1117身份验验证和加加密1228 不加加密的方方法1449 会话话约定一一五10 时时序一五五11 RReadd Chharaacteerissticcs一五五12 其其他166微信的PProttobuuf协议议161 概述述162 命令令列表1163 错误误码1774 JSSAPII19函数199事件211附录2

5、221 PrrotooBuff协议介介绍2222 蓝牙牙硬件一一些规定定233 Ioos BBLE设设备的截截图2334包的二二进制例例子2555 包的的数据流流图2666 包的的时序图图277 加解解密字段段288 Mdd5DeevicceTyypeAAndDDeviiceIId的例例子2999 CBBC例子子3010 CCRC332例子子3111 微微信蓝牙牙外设pprotto文件件3112 微微信公众众平台pprotto文件件35一三 JJsAppi例子子37概要该文档规规范了蓝蓝牙设备备和手机机上的微微信的通通信协议议协议支持持经典蓝蓝牙和44.0 BLEE蓝牙,目目前支持持ioss和

6、anndriiod两两个系统统,后续续会扩展展到其他他系统。整体架构构厂商服务务器和外外设,由由厂商开开发完成成。微信会提提供服务务器的接接口以对对接厂商商的服务器器,会提提供手机机的接口口(如本本文规定定的蓝牙牙协议)以以对接厂厂商的外外设。主要功能能该协议打打通了设设备和厂厂商服务务器之间间的数据据链路,也也就是支支持将设设备上的的数据发发送到厂厂商的服服务器上上,也支支持将厂厂商的数数据发送送到设备备。厂商的数数据对于于微信来来说,是是黑盒,微微信不对对设备数数据做分分析。该协议也也打通了了设备和和微信服服务器之之间的数数据链路路。设备和微微信服务务器之间间的数据据格式由由微信规规定,例

7、例如登录录,新消消息通知知等。蓝牙BLLE模拟拟成流微信支持持蓝牙BBLE。微信规定定了蓝牙牙BLEE设备需需要先模模拟成流流(即strreamm,输入入输出流流)。经典蓝蓝牙的RRFCOOMM,就就是一个个流。流流具有的的特性有有:a. 可以传输输无限长长度的数数据 b. 双工,读读写可以以并发,互互不干扰扰。显然,蓝蓝牙BLLE无法法传输无无限长度度的数据据,为了了实现这这个目的的,需要要定义一一个规范范。蓝牙设备备需暴露露两个特特征值(Characteristics):Write特征值,Indication特征值。蓝牙设备从Write特征值接受数据,从Indication特征值发送数据。

8、Indiicattionn特征值值类型是是byttes。这里我们们约定,把把一个特特征值一一次传输输的数据据,称为为一帧(不不同类型型的特征征值一次次传输的的数据长长度是不不一样的的)。注意:应应用层上上的数据据包(例例如1k大小小),会会分散成成许多帧帧来传输输。蓝牙设备备写过程程:1. 分帧:假假设蓝牙牙手环上上有1kk数据,要发给手机微信。由于一个特征值长度有限(如20个字节),显然需要分多次才能传输完成。1k数据,要分成1024字节/ 20字节=51 个帧。剩下的4个字节,不足一帧(20个字节),需补齐为一帧并对剩下的16个字节赋0。总共是52帧。2. 发送第一一个帧:把第一一个帧的内

9、容容放入特特征值里里面。然然后通知知手机读读取数据据,通知知有两种种方式,IIndiicattionn 和nnotiify,这这里使用用Inddicaatioon方式式,即带带响应的的通知。当通知知完成的的时候,可可以认为为手机已已经读完完数据。这这就完成成了发送送第一个个帧。3. 按照2的的步骤,依次发送剩下的帧。蓝牙设备备读过程程:当蓝牙设设备发现现读特征征值收到到数据的的时候,就就接收数数据,并追加加到设备备的buuf里。注意:蓝蓝牙设备备必须等等微信aapp订订阅了CCharractteriistiics之之后,才才能inndiccatee数据,否否者会造造成设备备发送数数据丢失失的问

10、题题。协议1绑定用户绑定定设备有有两种方方式:扫扫码和蓝蓝牙扫描描。这两种方方式都需需要先向向微信公公众平台台注册授授权设备备(具体体apii参见公公众平台台文档)。扫码绑定定用户通过过扫描设设备二维维码绑定定设备(获获取二维维码的方方法见公公众平台台文档)。用户场景景:用户户打开扫扫一扫界界面,扫扫码设备备二维码码,出现现公众号号页面。用用户点击击关注,进进行绑定定设备。扫码绑定定并不需需要设备备在身边边。蓝牙扫描描绑定用户通过过扫描周周边的蓝蓝牙设备备进行绑绑定。用户场景景(可确确认设备备):用用户先关关注公众众号,点点击绑定定设备,进进入绑定定说明页页。同时时,微信信开始扫扫描设备备。用

11、户户操作设设备确认认(如点点击设备备上的按按钮,或或者双击击设备),设备广播特殊的包(称为确认包),微信监听到包之后,开始关注并绑定。蓝牙扫描描绑定需需要设备备在身边边。蓝牙扫描描绑定的的设备分分为两种种:可确认(如如有按钮钮,或者者可以双双击)的的设备。大大部分设设备属于于可确认认设备。无法确认认的设备备(无法法确认的的设备,出出于安全全性的考考虑,可可用扫码码绑定)可确认的的设备,当当用户进进行设备备确认时时(如双双击手环环,或者者按按钮钮),需要要广播特特殊的包包(称为确认认包,具具体格式式见附录录)。2扫描和和连接进入特定定界面后后,微信信会开始始扫描设设备。低功耗蓝蓝牙设备备需要在在

12、广播包包里广播播:a. 微信规定定的seerviice uuiid(具具体见附附录)。b. 厂商自定定义字段段里,包包含maac地址址(具体体见附录录)。并且需要要包含指指定的CCharractteriistiics(具具体见附附录)。Andrriodd经典蓝蓝牙设备备需要暴暴露一个个指定uuuidd的rffcommm服务务(具体体见附录录)。Ios经经典蓝牙牙需要通通过mffi认证证,并且且SeriialNNumbber需需为maac地址址(字符符串形式式)。扫描到设设备后,微微信会连连接设备备(Ioss经典蓝蓝牙需要要用户手手动在设设置界面面里面连接接上设备备)。3流经典蓝牙牙使用RRFC

13、OOMM通通信(是是个流),蓝牙BLE也模拟成流。4包流之上运运载的是是一个紧紧接着一一个的业业务逻辑辑的数据据包。数据包的的发送方方和接受受方:设设备厂商服服务器,或或者设备备微信服服务器。把设备-厂商商服务器器/微信信服务器器的请求求称为RReq,回回包称为为Respp。一个个请求,对对应着一一个回包包。把厂商服服务器/微信服服务器-设备备的请求求称为PPushhReqq,没有回包包(即没没有PuushRRespp这样的的包)。4 包结结构由定长包包头和变变长包体体组成。变长包体Protoalbuf打包的二进制数据定长包头struct BpFixHeadunsigned char bMag

14、icNumber;unsigned char bVer;unsigned short nLength;unsigned short nCmdId;unsigned short nSeq;包包的二进进制例子子见附录录。5 定长长包头字段类型说明bMaggicNNumbberunsiigneed ccharr填0xFFEbVerrunsiigneed ccharr包格式版版本号,填1nLenngthhunsiigneed sshorrt为包头+包体的的长度nCmddIdunsiigneed sshorrt命令号,如ECII_reeq_aauthh,ECII_reesp_senndDaataTToMaanuffacttureerSvvr等nSeqqunsiigneed sshorrt递增。一个Reeq对应应一个RRespp,并且且它们的的nSeeq相同同,并且且永不为为0。Pushh的nSSeq永永远为00;6 变长长包体为Prootobbuf(pprottobuuf的介介绍见附附录)打打包的结结构。例例如AuuthRReq。一个包体体里面只只有一个个Reqq,或者者一个RRespp,或者者一个PPushhReqq。每个Reeq/RRespp/PusshReeq都有对应应的EmmCmddId,例如AuthReq的命令号为ECI_req_auth。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 市场营销

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号