一、参考例子
https://bbs.21ic.com/icview-3135376-1-1.html
二、修改
在上面例子拿到的是有问题,上面是放到广播包,
这里应该将用户自定义(ADTYPE = 0xFF)的数据,放到 扫描回复包里面
我们直接使用 Peripheral
例子来修改
修改部分:
static uint8 scanRspData[ ] =
{
// complete name
#if 0
0x12, // length of this data
GAP_ADTYPE_LOCAL_NAME_COMPLETE,
'S',
'i',
'm',
'p',
'l',
'e',
' ',
'P',
'e',
'r',
'i',
'p',
'h',
'e',
'r',
'a',
'l',
// connection interval range
0x05, // length of this data
GAP_ADTYPE_SLAVE_CONN_INTERVAL_RANGE,
LO_UINT16( DEFAULT_DESIRED_MIN_CONN_INTERVAL ), // 100ms
HI_UINT16( DEFAULT_DESIRED_MIN_CONN_INTERVAL ),
LO_UINT16( DEFAULT_DESIRED_MAX_CONN_INTERVAL ), // 1s
HI_UINT16( DEFAULT_DESIRED_MAX_CONN_INTERVAL ),
// Tx power level
0x02, // length of this data
GAP_ADTYPE_POWER_LEVEL,
0 // 0dBm
#endif
26,0xff,//长度 + 自定义数据 ff
0x4c,0x00,0x02,0x15,//Apple's fixed iBeacon advertising prefix
0xe2,0xc5,0x6d,0xb5,0xdf,0xfb,0x48,0xd2,0xb0,0x60,0xd0,0xf5,0xa7,0x10,0x96,0xe0,//iBeacon profile uuid
0x00,0x00,//0x88,0xab,//major
0x00,0x00,//0x04,0x012,//minor
0XC7,//0xb4// -76 的补码 1米的数据 The 2's complement of the calibrated Tx Power
};
三、对于一些数据的解析
参考一下别家的ibeacon数据
// advert data for iBeacon
static uint8 advertData[] =
{
0x02, // length of this data
GAP_ADTYPE_FLAGS,
DEFAULT_DISCOVERABLE_MODE | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED,
0x1A, // length of this data including the data type byte
GAP_ADTYPE_MANUFACTURER_SPECIFIC, // manufacturer specific adv data type
0x4c, // Company ID - Fixed
0x00, // Company ID - Fixed
0x02, // Data Type - Fixed
0x15, // Data Length - Fixed
0xFD, // UUID
0xA5, // UUID
0x06, // UUID
0x93, // UUID
0xA4, // UUID
0xE2, // UUID
0x4F, // UUID
0xB1, // UUID
0xAF, // UUID
0xCF, // UUID
0xC6, // UUID
0xEB, // UUID
0x07, // UUID
0x64, // UUID
0x78, // UUID
0x25, // UUID
0x27, // Major
0x74, // Major
0x6b,//0x04, // Minor
0xed,//0xb0, // Minor
0xc5 // Power - The 2's complement of the calibrated Tx Power
};
四、操作步骤
- 使用
locate
APP 找到对应的ibeacon - 在1米的时候,点击一下校准
- 将校准拿到的RSSI ,放到ibeacon数据的最后一个字节因为是负数,所以填入的是补码
- 搞定