Hi JRs:
如下图里的信息是我用 苹果手机的 eBeacon AP 搜索到的附件 Beacon 设备
请教下,红框里的 ID 值是哪来的?是什么 ID?
谢谢
Viki Shi:
应该是自定义uuid
user6198971:
回复 Viki Shi:
Hi ViKi:
请问你说的自定义是怎么定义的呢?我没有定义的。谢谢
Viki Shi:
回复 user6198971:
是那些beacon设备定义的,这些附近的设备都是你自己的吗?
user6198971:
回复 Viki Shi:
Hi ViKi:
我们的设备是这样的:目前只生产过一次,大概是在 2 年前生产的;
现在准备生产第二代的 Beacon 设备,HW 上只是比 一代的少个 Key;
目前 二代的 HW 还没生产出来,所以我 Debug 用的都是 一代的产品;
我问过之前研究一代产品的工程师,他们都没有写过这个值,而我自己下载软件(现在这包新的 SDK),也会出现这个 ID,那我怀疑这个 ID 不是我们写的?所以请问这个 ID 是哪来的?表示什么信息?
谢谢
Viki Shi:
回复 user6198971:
就是UUID,app据此区分不同的beacon设备。详解请看这边:www.cnblogs.com/…/5995674.html
user6198971:
回复 Viki Shi:
Hi ViKi:
谢谢,这篇文档我看完了,其实我的问题还是没能解决。
我还是没明白,这个 UUID 是哪来的?
从我现在的测试来看,这些 UUID 是唯一的,每个Beacon 设备都一个唯一且固定的值,肯定是有某个地方写进去(或者在哪算出来的)。
谢谢
Viki Shi:
回复 user6198971:
写在adverdata里的,以ibeacon的格式为例:
static beaconAdvData_t beaconAdv =
{
// Flags; this sets the device to use general discoverable mode
0x02, // length of this data
GAP_ADTYPE_FLAGS,
0x06,
0x1A, // length of this data including the data type byte
0xFF, // type
0x4C, // company ID[0]
0x00, // company ID[1]
0x02, // beacon type[0]
0x15, // beacon type[1]
0xA3, // UUID LSB
0x22,
0x37,
0xE7,
0x3E,
0xC0,
0xC5,
0x84,
0x86,
0x4B,
0xB9,
0x99,
0xF9,
0x82,
0x03,
0xF7, // UUID MSB
0x00, //major[0] (major and minor fields can be set as desired)
0x00, //major[1]
0x00, //minor[0]
0x00, //minor[1]
0x00 //measured power (can be set later)
};
user6198971:
回复 Viki Shi:
Hi ViKi:
不是的,我们代码里 adverdata 数组里的 UUID 都是 0,所以肯定不是 adverdata 里的 UUID。
Viki Shi:
回复 user6198971:
UUID可以直接填充到adverdata里,也可以根据代码设计,更新并填充给GAP层发送出来。一般一家公司beacon产品的UUID是通过一个算法计算出来,填充到广播包里。比如在TI 的例程里,是通过以下函数填充的:
static void MicroEddystoneBeacon_initUID(void){ // Set Eddystone UID frame with meaningless numbers for example. // This need to be replaced with some algorithm-based formula // for production. eddystoneUID.namespaceID[0] = 0x00; eddystoneUID.namespaceID[1] = 0x01; eddystoneUID.namespaceID[2] = 0x02; eddystoneUID.namespaceID[3] = 0x03; eddystoneUID.namespaceID[4] = 0x04; eddystoneUID.namespaceID[5] = 0x05; eddystoneUID.namespaceID[6] = 0x06; eddystoneUID.namespaceID[7] = 0x07; eddystoneUID.namespaceID[8] = 0x08; eddystoneUID.namespaceID[9] = 0x09;
eddystoneUID.instanceID[0] = 0x04; eddystoneUID.instanceID[1] = 0x51; eddystoneUID.instanceID[2] = 0x40; eddystoneUID.instanceID[3] = 0x00; eddystoneUID.instanceID[4] = 0xB0; eddystoneUID.instanceID[5] = 0x00;}
user6198971:
回复 Viki Shi:
Hi ViKi:
UUID 的填充我们也规划了自己的方法。可是我的问题是:图片里红框中的这一串值是哪来的?因为我现在并没有写UUID,ID 全是原始的,那怎么会有这串值的?
请看上面问题的图片,第二个红框的部分,也就是 FIH_BCN_V1.010 那一栏里的:
我手头的 Beacon 设备在 2 年前生产的;
我现在从 TI 网站新下载了 simplelink_cc2640r2_sdk_4_20_00_04 的 SDK 包,编译后下载到 Beacon 设备里;
用苹果手机的 eBeacon APK 搜索,这台 Beacon 设备无论是下载两年前的软件还是下载现在新的软件,eBeacon APK 搜索到这个设备时的 ID(就是红框里的值)都是这个 UUID。所以我怀疑这个 ID 不是我们写的,那问题来了,这个 ID 是哪来的?由谁写进去的(或者计算出来)?
谢谢