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 是掃不到的。