Nordic 公司自己做有 iBeacon的板子和 SDK,很少有人拥有这个SDK,我最近在朋友那也拿到了一个,但是还没有时间看。
现在我们用普通的SDK自带的 Beacon 例程来做开发,开发的时相信很多人是这样的:买别人已经做好的产品,拿回来操作几下,用nRF MCP 调试一下,就开始修改SDK了。
我也是这样子的,老实地说,然后就会碰到各种问题。
1、如何在SDK 自带的Beacon上设置 扫描请求包?
其实有个地方比较关键,就是将m_adv_params.type 写成 BLE_GAP_ADV_TYPE_ADV_IND,不然你怎么设置,MCP 都扫不到 请求包的。
1 memset(&m_adv_params, 0, sizeof(m_adv_params)); 2 3 m_adv_params.type = BLE_GAP_ADV_TYPE_ADV_IND; 4 m_adv_params.p_peer_addr = NULL; 5 m_adv_params.fp = BLE_GAP_ADV_FP_ANY; 6 m_adv_params.interval =NON_CONNECTABLE_ADV_INTERVAL; 7 m_adv_params.timeout =APP_CFG_NON_CONN_ADV_TIMEOUT;
2、为什么iOS 的MCP 扫描不到 advdata.p_manuf_specific_data?
呵呵。这个相信令很多不会开发 APP 的人来说是一个很头疼的事情,搞半天都母鸡抖是怎么回事。
iBeacon要求manuf_specific_data.company_identifier 值是 0x004C, 这样微信摇一摇才能摇得到。这个值是苹果公司的,Nordic 公司的是 0x0059。
iOS 系统 的MCP 会把0x004C进行过滤,所以你如果要用 MCP 或者lightblue其他调试工具来扫描的话,得不到 advdata.p_manuf_specific_data,怎么办呢?
将manuf_specific_data.company_identifier避开 0x004C咯? 可是微信摇一摇又不起作用了,咋办呢?
自己想办法,我只能告诉你,0x004C 是扫不到的。