nRF51822 配对之device_manager_init 调用,以及保证 用户数据存储 的Flash 操作不与device manager 模块冲突...
? ? 昨天 遇到了一個(gè)煩心的問題,被老外客戶懟了兩句,惱火,很想發(fā)火,發(fā)現(xiàn)英文不夠用,算了,就不跟直腸的鬼佬一般見識(shí)。說正事。
最近的一個(gè)nRF51822+MT2503 錢包防丟項(xiàng)目,準(zhǔn)備接近量產(chǎn)了。昨天做APP的老外發(fā)現(xiàn)設(shè)備沒有 配對(duì)綁定功能,就不明真相的說為什么一開始不加上。
WTF,記住MAC地址就可以了啊,做銷售的老外以為沒有配對(duì)綁定功能的意思是手機(jī)不能連接上,做APP的老外才真正配對(duì)綁定功能是為看手機(jī)省電和連接方便,..好吧,
加上去。
? ?據(jù)說,配對(duì)功能就是為了 手機(jī)綁定設(shè)備后,可以直接啟動(dòng)連接設(shè)備而不用首先進(jìn)行掃描,一直掃描的話太耗電。
還有,蘋果手機(jī)的一些藍(lán)牙功能也需要配對(duì)完成才能用。否則是用不了的。
下面是老外的原話:
@ceiba if device paired, Android system save BT device profile in system and can get Bluetooth device object to connect to it (trying to connect). If profile doesn't exist in system, need always scan nearby devices and compare saved addresses to get device and connect it
? ?流程應(yīng)該是這樣的:
1.手機(jī)與設(shè)備首次進(jìn)行了連接,
2.手機(jī)向設(shè)備請(qǐng)求綁定(配對(duì),bond&pair)
3.設(shè)備如果有配對(duì)功能,返回自身的一些配對(duì)信息給手機(jī),否則就啥都不管,或者回一句,“我不支持配對(duì)功能”
4.設(shè)備本身將手機(jī)發(fā)來的手機(jī)配對(duì)信息進(jìn)行存儲(chǔ)
5.手機(jī)接收到設(shè)備返回的配對(duì)信息后,也進(jìn)行儲(chǔ)存
6.下次連接,手機(jī)可能不需要掃描就可以直接啟動(dòng)連接設(shè)備(經(jīng)過和經(jīng)驗(yàn)豐富的老外溝通后,我認(rèn)為是這樣),
設(shè)備接受連接后也會(huì)檢查配對(duì)信息是否正確,正確了就返回告訴手機(jī)
7.直接進(jìn)行通信。
以上是這兩天的收獲,感謝老外和我的技術(shù)支持。
下面開始移植 device manager 模塊,也就是 設(shè)備的綁定配對(duì)功能,
。。。。
我就不寫了,還是直接給個(gè)鏈接跳去看論壇上人家的做法吧,
https://devzone.nordicsemi.com/tutorials/15/
?
下面是第二個(gè)關(guān)鍵的問題,因在移植 device manager 這個(gè)模塊的代碼之前,加有對(duì) pstorage 的操作, 而device manager 里面也有,這時(shí)候就有點(diǎn)沖突了,因?yàn)閜storage_init 只需要調(diào)用一次。
OK,那就把 我自己的?pstorage_init() 刪掉,但還是不行,pstorage_register 分配了同一塊地址(返回0x00000007)。。。導(dǎo)致錯(cuò)誤,復(fù)位。。
后來再進(jìn)去,發(fā)現(xiàn)下面這塊代碼的時(shí)候出了錯(cuò):
1 #define MODULE_ID_RANGE_CHECK(ID) \ 2 if ((((ID)->module_id) >= PSTORAGE_NUM_OF_PAGES) || \ 3 (m_app_table[(ID)->module_id].cb == NULL)) \ 4 { \ 5 return NRF_ERROR_INVALID_PARAM; \ 6 }哦,原來是?PSTORAGE_NUM_OF_PAGES 這個(gè)宏的問題,原來是1,OK ,改成2 ,問題完美解決。。。
#define PSTORAGE_NUM_OF_PAGES 2// 1。。。
?
轉(zhuǎn)載于:https://www.cnblogs.com/ceibacity/p/7233254.html
總結(jié)
以上是生活随笔為你收集整理的nRF51822 配对之device_manager_init 调用,以及保证 用户数据存储 的Flash 操作不与device manager 模块冲突...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sudo: Cannot execute
- 下一篇: zabbix v3.0安装部署【转】