nRF51822 配对之device_manager_init 调用,以及保证 用户数据存储 的Flash 操作不与device manager 模块冲突...
? ? 昨天 遇到了一個煩心的問題,被老外客戶懟了兩句,惱火,很想發火,發現英文不夠用,算了,就不跟直腸的鬼佬一般見識。說正事。
最近的一個nRF51822+MT2503 錢包防丟項目,準備接近量產了。昨天做APP的老外發現設備沒有 配對綁定功能,就不明真相的說為什么一開始不加上。
WTF,記住MAC地址就可以了啊,做銷售的老外以為沒有配對綁定功能的意思是手機不能連接上,做APP的老外才真正配對綁定功能是為看手機省電和連接方便,..好吧,
加上去。
? ?據說,配對功能就是為了 手機綁定設備后,可以直接啟動連接設備而不用首先進行掃描,一直掃描的話太耗電。
還有,蘋果手機的一些藍牙功能也需要配對完成才能用。否則是用不了的。
下面是老外的原話:
@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
? ?流程應該是這樣的:
1.手機與設備首次進行了連接,
2.手機向設備請求綁定(配對,bond&pair)
3.設備如果有配對功能,返回自身的一些配對信息給手機,否則就啥都不管,或者回一句,“我不支持配對功能”
4.設備本身將手機發來的手機配對信息進行存儲
5.手機接收到設備返回的配對信息后,也進行儲存
6.下次連接,手機可能不需要掃描就可以直接啟動連接設備(經過和經驗豐富的老外溝通后,我認為是這樣),
設備接受連接后也會檢查配對信息是否正確,正確了就返回告訴手機
7.直接進行通信。
以上是這兩天的收獲,感謝老外和我的技術支持。
下面開始移植 device manager 模塊,也就是 設備的綁定配對功能,
。。。。
我就不寫了,還是直接給個鏈接跳去看論壇上人家的做法吧,
https://devzone.nordicsemi.com/tutorials/15/
?
下面是第二個關鍵的問題,因在移植 device manager 這個模塊的代碼之前,加有對 pstorage 的操作, 而device manager 里面也有,這時候就有點沖突了,因為pstorage_init 只需要調用一次。
OK,那就把 我自己的?pstorage_init() 刪掉,但還是不行,pstorage_register 分配了同一塊地址(返回0x00000007)。。。導致錯誤,復位。。
后來再進去,發現下面這塊代碼的時候出了錯:
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 這個宏的問題,原來是1,OK ,改成2 ,問題完美解決。。。
#define PSTORAGE_NUM_OF_PAGES 2// 1。。。
?
轉載于:https://www.cnblogs.com/ceibacity/p/7233254.html
總結
以上是生活随笔為你收集整理的nRF51822 配对之device_manager_init 调用,以及保证 用户数据存储 的Flash 操作不与device manager 模块冲突...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sudo: Cannot execute
- 下一篇: zabbix v3.0安装部署【转】