本帖最后由 冒汗的心情 于 2016-4-15 10:45 编辑
CC2541连接微信的精简协议和完整协议
微信精简协议规定:
设备需要广播包带上微信的service,并在manufature data里带上mac地址。
微信Service uuid:0xFEE7
manufature specific data:需以MAC地址(6字节)结尾。并且manufaturespecific data长度需大于等于8字节(最前两个字节为company id,没有的话随便填)。
微信service下面需包含一个读特征值,uuid为:0xFEC9,内容为6字节MAC地址(ios系统其他软件连上设备之后,微信会去读该特征值,以确定设备MAC地址)。
精简协议和完整协议是一样的。
adverData 和 scanResponseData 如下:
[html] view plain copy 在CODE上查看代码片派生到我的代码片
// GAP Profile - Name attribute for SCAN RSP data
static uint8 scanResponseData[]=
{
0x0E, // length of this data
GAP_ADTYPE_LOCAL_NAME_COMPLETE, //0X09
'W',
'P',
'I',
'A',
'T',
'U',
'_',
'W',
'e',
'c',
'h',
'a',
't',
0x05, // length of this data
GAP_ADTYPE_SLAVE_CONN_INTERVAL_RANGE, //0X12
//MIN
LO_UINT16( DEFAULT_DESIRED_MIN_CONN_INTERVAL ), // 100ms
HI_UINT16( DEFAULT_DESIRED_MIN_CONN_INTERVAL ),
//MAX
LO_UINT16( DEFAULT_DESIRED_MAX_CONN_INTERVAL ), // 1s
HI_UINT16( DEFAULT_DESIRED_MAX_CONN_INTERVAL ),
0x02, // length of this data
//TX Power Level
GAP_ADTYPE_POWER_LEVEL, //0x0A
0 // 0dBm
};
#define ADVERT_MAC_ADDR 11
uint8 advertData[]=
{
// Flags; this sets the device to use limited discoverable
// mode (advertises for 30 seconds at a time) instead of general
// discoverable mode (advertises indefinitely)
0x02, // length of this data
GAP_ADTYPE_FLAGS, //0x01
DEFAULT_DISCOVERABLE_MODE | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED,
// service UUID, to notify central devices what services are included
// in this peripheral
0x03, // length of this data
//some of the UUID's, but not all
GAP_ADTYPE_16BIT_MORE, //0x02
LO_UINT16( WECHAT_SERV_UUID ),
HI_UINT16( WECHAT_SERV_UUID ),
0x09, // length of this data (9 Bytes )
GAP_ADTYPE_MANUFACTURER_SPECIFIC, //0xFF
/*TI Pre-Amble*/
0x0D,
0x00,
/*Device MAC (6 Bytes)*/
0,0,0,0,0,0
};
微信协议要在广播包里加 MAC 地址,所以要在后面加一个度 MAC 地址的程序。
注:微信精简协议微信已经不主推了,所以也不要做了,AirSync 协议还是很流行的
|