CC254x的微信AirSync调试笔记

一、前言

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

转载请注明:

二、常见问题及措施

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

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 BaseRequestno Md5DeviceTypeAndDeviceId field!has MacAddress field, Mac Address = 57 65 43 68 61 74 MacAddress BitLength = 48bitMac Address from broadcast record = 90:59:AF:0E:62:88Mac address 校验失败!has ProtoVersion field, ProtoVersion = 65540has AuthProto field, AuthProto = 1has AuthMethod field, AuthMethod = EAM_macNoEncryptno 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

措施:这个问题很多,,但是解决思路都固定,就是在 找错误码。

我的错误码是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 successDiscovered ServicesServiceUUID: 00001800-0000-1000-8000-00805f9b34fbServiceUUID: 00001801-0000-1000-8000-00805f9b34fbServiceUUID: 0000180a-0000-1000-8000-00805f9b34fbServiceUUID: 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 = 20data 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 = 16data 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 packAuthRequestPack: 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 BaseRequestno Md5DeviceTypeAndDeviceId field!has MacAddress field, Mac Address = 90 59 AF 0E 62 88 MacAddress BitLength = 48bitMac Address from broadcast record = 90:59:AF:0E:62:88Mac address checkout successhas ProtoVersion field, ProtoVersion = 65540has AuthProto field, AuthProto = 1has AuthMethod field, AuthMethod = EAM_macNoEncryptno AesSign field!has DeviceName field, DeviceName = mydevice**** send auth response ****data len = 14data dump = FE 01 00 0E 4E 21 00 01 0A 02 08 00 12 00 ——onDataReceived——data length = 16data 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 BaseRequesthas Challenge field, Challenge = 11 22 33 44 **** send init request response ****data len = 25data 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 = 20data 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 = 4data dump = 00 03 00 00 data receive seq = 4*** receive SendDataRequest ****date type = manufactureSvr datadata len = 16data dump = 0A 00 12 0C FE CF 00 01 00 12 00 01 00 03 00 00 **** send SendData Response(echo request) ****data len = 30data 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 fieldhas 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 = 22data 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 = 23data 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 = 14data dump = FE 01 00 0E 75 31 00 00 0A 00 12 00 18 01 **** send EnterDeviceChatView Push ****data len = 14data dump = FE 01 00 0E 75 32 00 00 0A 00 10 01 18 01 **** send Exit ChatView Push ****data len = 14data dump = FE 01 00 0E 75 32 00 00 0A 00 10 02 18 01 **** send Enter HtmlChatView Push ****data len = 14data dump = FE 01 00 0E 75 32 00 00 0A 00 10 01 18 02 **** send Exit HtmlChatView Push ****data len = 14data dump = FE 01 00 0E 75 32 00 00 0A 00 10 02 18 02 **** send enterBackground Push ****data len = 12data dump = FE 01 00 0C 75 33 00 00 0A 00 10 01 **** send enterForground Push ****data len = 12data dump = FE 01 00 0C 75 33 00 00 0A 00 10 02 **** send enterSleep Push ****data len = 12data dump = FE 01 00 0C 75 33 00 00 0A 00 10 03 *****Disconnected Device*****

人若软弱就是自己最大的敌人

CC254x的微信AirSync调试笔记

相关文章:

你感兴趣的文章:

标签云: