日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

nRF51822 配对之device_manager_init 调用,以及保证 用户数据存储 的Flash 操作不与device manager 模块冲突...

發(fā)布時(shí)間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nRF51822 配对之device_manager_init 调用,以及保证 用户数据存储 的Flash 操作不与device manager 模块冲突... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? 昨天 遇到了一個(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。