码迷,mamicode.com
首页 > 微信 > 详细

CC254x的微信AirSync调试笔记

时间:2015-08-19 00:42:23      阅读:885      评论:0      收藏:0      [点我收藏+]

标签:微信   蓝牙   ble   cc254x   airsync   

一、前言

本尊自诩为IOT小能手,一直没涉足蓝牙实在说不过去。刚好上个月底的时候计划做个BLE设备,这阵子利用业余时间自学了BLE协议栈,了解了GATT,磕磕绊绊完成CC254x的微信AirSync。就在今晚,听着Coldplay的“Be my mirror, my sword and shield”雄心万丈,大千世界和AirSync都被我征服,终于完成了最后一步的测试。

转载请注明:http://blog.csdn.net/sadshen

二、常见问题及措施

我把自己遇到的几个问题及解决方案都记录在这边,应该会让一些朋友少走一些弯路。

1. 广播包中没有 manufacture specific data 字段,或不以MAC地址结尾。

技术分享
措施:广播包中必须带上0xFF的厂商自定义字段,09+ FF + 厂商ID(2 Bytes) + MAC(6 Bytes)。

2. Mac address 校验失败!

这是我之前调试的错误提示:

***** onTestIsValidAuthReqPack *****
result = false, is an invalid auth request pack: AuthRequestPack: FE 01 00 32 27 11 00 01 0A 00 18 84 80 04 20 01 28 02 3A 06 57 65 43 68 61 74 62 16 57 65 43 68 61 74 42 6C 75 65 74 6F 6F 74 68 44 65 76 69 63 65 00 
has BaseRequest
no Md5DeviceTypeAndDeviceId field!
has MacAddress field, Mac Address = 57 65 43 68 61 74 
MacAddress BitLength = 48bit
Mac Address from broadcast record = 90:59:AF:0E:62:88
Mac address 校验失败!
has ProtoVersion field, ProtoVersion = 65540
has AuthProto field, AuthProto = 1
has AuthMethod field, AuthMethod = EAM_macNoEncrypt
no AesSign field!
has DeviceName field, DeviceName = WeChatBluetoothDevice

措施:在AUTH REQ中也有Mac字段,需要保证MAC地址和广播包中的一样。

3. Read Characteristic is not read able!

4. Can not Start Indicate permision:Can not get configure descriptor

技术分享

措施:这两个处理,要保证Read Characteristic有可读权限,然后Read Char的值必须为MAC地址。

5. async write data error

技术分享

措施:这个问题很多,但是解决思路都固定,就是在https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html#GATT_FAILURE
找错误码。

我的错误码是03,说是手机没有写权限。

public static final int GATT_WRITE_NOT_PERMITTED 
Added in API level 18 GATT write operation is not permitted 

Constant Value: 3 (0x00000003) 

后来一查,果然我的Write CHAR没有write权限。

三、AirSync的完整日志

这边把完整的LOG日志提供出来,希望对其他调试AirSync的朋友有所帮助。

2015年8月18日星期二 中国标准时间下午9:42:07
*****************BLE: TwoWinter******************

***** onTestBroadcastRecord *****
result = true, Has 0xfee7 or standard service in broadcast record

广播包:02 01 06 03 02 E7 FE 09 FF 0D 00 90 59 AF 0E 62 88 0A 09 54 77 6F 57 69 6E 74 65 72 05 12 50 00 20 03 02 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

***** onTestManufatureData *****
resut= true, 广播包中 manufacture specific data 字段中MAC地址校验成功.

***** onDiscoverService *****
result = true, DiscoverService success
Discovered Services
ServiceUUID: 00001800-0000-1000-8000-00805f9b34fb
ServiceUUID: 00001801-0000-1000-8000-00805f9b34fb
ServiceUUID: 0000180a-0000-1000-8000-00805f9b34fb
ServiceUUID: 0000fee7-0000-1000-8000-00805f9b34fb


***** onTestHasWeChatService *****
result = true, has WeChatService or standard service

***** onTestHasIndicateCharacteristic *****
result = true, has WeChat Indicate Characteristic

***** onTestHasWriteCharacteristic *****
result = true, has Wechat Write Characteristic

***** onTestHasReadCharacteristic *****
result = true, Has WeChat read characteristic

***** onTestWriteCharacteristicPermisson *****
result = true, has Write permission

***** onTestIndicateCharacteristicPermisson *****
result = true, has Indication permission

***** onTestReadCharacteristicPermisson *****
result = true, Read Characteristic is read able

***** onTestStartIndicating *****
result = true, can Start Indicate

***** onConnected *****
result = true, connected

------onDataReceived------
data length = 20
data dump = FE 01 00 24 27 11 00 01 0A 00 18 84 80 04 20 01 28 02 3A 06 
data receive seq = 0

------onDataReceived------
data length = 16
data dump = 90 59 AF 0E 62 88 62 08 6D 79 64 65 76 69 63 65 
data receive seq = 1

***** onTestRecvAuthReqtWhenStartedIndicating *****
result = true, received auth request pack

***** onTestIsValidAuthReqPack *****
result = true, is a valid auth request pack
AuthRequestPack: FE 01 00 24 27 11 00 01 0A 00 18 84 80 04 20 01 28 02 3A 06 90 59 AF 0E 62 88 62 08 6D 79 64 65 76 69 63 65 
has BaseRequest
no Md5DeviceTypeAndDeviceId field!
has MacAddress field, Mac Address = 90 59 AF 0E 62 88 
MacAddress BitLength = 48bit
Mac Address from broadcast record = 90:59:AF:0E:62:88
Mac address checkout success
has ProtoVersion field, ProtoVersion = 65540
has AuthProto field, AuthProto = 1
has AuthMethod field, AuthMethod = EAM_macNoEncrypt
no AesSign field!
has DeviceName field, DeviceName = mydevice


**** send auth response ****
data len = 14
data dump = FE 01 00 0E 4E 21 00 01 0A 02 08 00 12 00 

------onDataReceived------
data length = 16
data dump = FE 01 00 10 27 13 00 02 0A 00 1A 04 11 22 33 44 
data receive seq = 2

***** onTestRecvInitReqPack *****
result = true, received init request pack

***** onTestIsValidInitReqPack *****
result = true, valid init request pack: has BaseRequest
has Challenge field, Challenge = 11 22 33 44 


**** send init request response ****
data len = 25
data dump = FE 01 00 19 4E 23 00 02 0A 02 08 00 10 B4 24 18 F8 AC 01 20 D1 BB CA BF 07 

------onDataReceived------
data length = 20
data dump = FE 01 00 18 27 12 00 03 0A 00 12 0C FE CF 00 01 00 12 00 01 
data receive seq = 3

------onDataReceived------
data length = 4
data dump = 00 03 00 00 
data receive seq = 4

*** receive SendDataRequest ****
date type = manufactureSvr data
data len = 16
data dump = 0A 00 12 0C FE CF 00 01 00 12 00 01 00 03 00 00 

**** send SendData Response(echo request) ****
data len = 30
data dump = FE 01 00 1E 4E 22 00 03 0A 02 08 00 12 10 0A 00 12 0C FE CF 00 01 00 12 00 01 00 03 00 00 

***** onTestIsValidSendDataRequest *****
result = true, is a valid SendDataRequest pack: has BaseRequest field
has Data field, data = FE CF 00 01 00 12 00 01 00 03 00 00 
no Type field, use default manufactureSvr data type


**** send ManufactureSvr Push ****
data len = 22
data dump = FE 01 00 16 75 31 00 00 0A 00 12 08 31 32 33 34 35 36 37 38 18 00 

**** send Html Push ****
data len = 23
data dump = FE 01 00 17 75 31 00 00 0A 00 12 08 31 32 33 34 35 36 37 38 18 91 4E 

**** send wxWristBand Push ****
data len = 14
data dump = FE 01 00 0E 75 31 00 00 0A 00 12 00 18 01 

**** send EnterDeviceChatView Push ****
data len = 14
data dump = FE 01 00 0E 75 32 00 00 0A 00 10 01 18 01 

**** send Exit ChatView Push ****
data len = 14
data dump = FE 01 00 0E 75 32 00 00 0A 00 10 02 18 01 

**** send Enter HtmlChatView Push ****
data len = 14
data dump = FE 01 00 0E 75 32 00 00 0A 00 10 01 18 02 

**** send Exit HtmlChatView Push ****
data len = 14
data dump = FE 01 00 0E 75 32 00 00 0A 00 10 02 18 02 

**** send enterBackground Push ****
data len = 12
data dump = FE 01 00 0C 75 33 00 00 0A 00 10 01 

**** send enterForground Push ****
data len = 12
data dump = FE 01 00 0C 75 33 00 00 0A 00 10 02 

**** send enterSleep Push ****
data len = 12
data dump = FE 01 00 0C 75 33 00 00 0A 00 10 03 

*****Disconnected Device*****

版权声明:本文为博主原创文章,未经博主允许不得转载。

CC254x的微信AirSync调试笔记

标签:微信   蓝牙   ble   cc254x   airsync   

原文地址:http://blog.csdn.net/sadshen/article/details/47761801

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!