微信airSync服务建立过程

微信airSync的指定UUID如下:

#define WE_CHAT_SRV_UUID             0xFEE7  //服务
#define WE_CHAT_WIRTE_UUID         0xFEC7  //写特性
#define WE_CHAT_INDICATE_UUID    0xFEC8  //提示特性
#define WE_READ_UUID                      0xFEC9  //读特性

数据接收:微信app向设备push数据通过write特性,在on_write函数中调用data_consume。

数据发送:设备从indicate特性发送数据。在data_produce打包完成后发送数据。

read特性用于暴露自身mac。

协议测试过程中需要依次处理三步:auth、init、sendata。

auth、init在主函数的main_process函数中被调用,senddata在auth、init处理完成之后在data_consume中被调用。数据准备过程需要调用data_produce函数。数据包头有固定的格式,如下:

typedef struct
{
        unsigned char bMagicNumber;
        unsigned char bVer;
        unsigned short nLength;
        unsigned short nCmdId;
        unsigned short nSeq;
} WeChat_fixHead_t;
  其中魔鬼数字为0xFE,版本为0x01,长度为包头和包体之和,命令码内容为:CMD_AUTH / CMD_INIT / CMD_SENDDAT,序列号不能为0,对应的request和response必须保持一致。封包过程注意对包头中的命令码、长度、序列号转码,解包过程中注意对包头中的长度、命令码转码。

  数据准备好之后进行发送,每包数据长度不能超过20字节。多包数据进行发送的时候需要使用到indi_confirm,即通过indicate发送数据,每收到一个确认信息后发送下一包数据。组包过程就是对request进行回应。

data_consume函数被调用在系统抛上来的write事件中。


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值