分享

cc2541 cc2640 接入微信AirSync协议

 昱雄藏书 2018-08-15

手头一款cc2640的穿戴设备要接入微信硬件平台,前期接到任务还是很忐忑的,因为毕竟不熟悉微信这块的东西,所以前期也走了不少弯路,现在已经在cc2640和cc2541上实现了功能,以下是自己在微信接入方面的一点心得:</p><p>            首先微信官方是有demo参考的,但是只有nordic的nrf51的代码和文档,至于TI的暂时还没有找到,论坛里面有个cc2541的demo,不过核心代码都是封装成库提供的,没有什么利用价值,如果是cc2541的开发,前期可以直接使用调试,cc2640就只能呵呵了。没有demo只能自己动手调试了,动手之前先下载安装微信官方的调试app  AirSyncDebugger,这样就可以先不管微信服务器端的开发,直接调试蓝牙部分(注意:由于使用安卓手机调试,经常遇到修改了错误之后,debugger依旧提示错误,重开蓝牙,重进app即可)。由于之前一直在用2541和2640在做开发,所以广播和微信服务0xfee7的添加很容易实现了。           广播中添加mac地址,如果为了快速测试可以手动添加mac地址,但是这只能用来测试,实际项目中需要自动获取mac地址,使用下面api获取mac地址:GAPRole_GetParameter(GAPROLE_BD_ADDR, macaddr);   另外,mac地址添加进广播的时候,注意字节序。          广播数据格式示例:




  1. {
  2. 0x02, // length of first data structure (2 bytes excluding length byte)
  3. GAP_ADTYPE_FLAGS, // AD Type = Flags
  4. DEFAULT_DISCOVERABLE_MODE | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED,
  5. // service UUID, to notify central devices what services are included
  6. // in this peripheral
  7. 0x05, // length of second data structure (7 bytes excluding length byte)
  8. GAP_ADTYPE_16BIT_MORE, // list of 16-bit UUID's available, but not complete list
  9. LO_UINT16( xxx_SERV_UUID ), // Alert Service (Proximity Profile)
  10. HI_UINT16( xxx_SERV_UUID ),
  11. LO_UINT16( WECHAT_SERV_UUID ), // Buzzer set Service (Proximity / Find Me Profile)
  12. HI_UINT16( WECHAT_SERV_UUID ),
  13. 0x09,
  14. GAP_ADTYPE_MANUFACTURER_SPECIFIC,
  15. // 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  16. /*TI Pre-Amble*/
  17. 0x0D,
  18. 0x00,
  19. /*Device MAC (6 Bytes)*/
  20. 0,0,0,0,0,0
  21. };


    添加wechat的service,如下定义(具体步骤可参靠ti工程中的service添加流程):

  1. #define WECHAT_SERV_UUID 0xFEE7
  2. #define WECHAT_WRITE_UUID 0xFEC7
  3. #define WECHAT_INDICATE_UUID 0xFEC8
  4. #define WECHAT_READ_UUID 0xFEC9


            广播数据和微信服务添加好后,用debugger可以跑通第一步了,这是个好的开始,然后可以参照腾讯给出的nrf51的demo进行协议移植,在熟悉ble协议基础上,这个过程也不是太难,需要花一些时候了解处理流程,然后添加到2640或者2541sdk里面。

            需要用到的文件如下:


            除了这些文件之外 , 还需要自己的wechatservice.c    wechatservice.h服务文件,然后就是wechatApp.c文件,wechatApp.c需要自己写,也就是处理微信的收发数据的文件,这个文件就是提取nrf51的demo中微信处理流程的文件。


          当然写起来容易,移植可能会花一定时间去熟悉微信协议,nrf51的sdk流程之类的,还要对数据进行组包和拆包。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多