原相藍牙Mouse 開發二三事(2)為鼠標更名(上)-藍牙門診部接診文章



自從在藍牙門診部坐診以來,藍牙的問題越來越多,涉及方面越來越廣,上回說到原相藍牙鼠標的案例,雖然通過有線的方式,插在電腦上,可以做為電腦的一個設備,顯得很酷。

然而無線藍牙的方式,更加灑脫!

在藍牙設備滿天飄的年代,到底哪個是我的藍牙呢?

先以原相BLE 藍牙晶片PAR2822方案為例,談一談原相鼠標藍牙名稱的修改。


1、藍牙名稱設置

在 ms_param_profile_1.h 中有以下兩個定義:
#define DEVICE_NAME "BT Mouse"
#define COMPLETE_DEV_NAME "BT Mouse"

這兩個可供修改

DEVICE_NAME 是藍牙搜索到的名稱, COMPLETE_DEV_NAME 理論上是完成連接後的名稱顯示


2、代碼解說

在 void ble_adv_start(uint8_t pairing_en) 中

#if (CONFIG_DEV_NAME_TYPE == SHORTENED_LOCAL_NAME)
adv_data[adv_data_sz + 1] = 0x08;
#elif (CONFIG_DEV_NAME_TYPE == COMPLETE_LOCAL_NAME)
adv_data[adv_data_sz + 1] = 0x09;
#endif​


取決於 CONFIG_DEV_NAME_TYPE,其中定義如下:


/* Device Name Config */
#define SHORTENED_LOCAL_NAME 0
#define COMPLETE_LOCAL_NAME 1
#define CONFIG_DEV_NAME_TYPE COMPLETE_LOCAL_NAME​


在 static void _ble_att_read_cb(struct gap_att_read_evt* evt) 中,也有以下代碼,決定藍牙的名稱:

#if (CONFIG_DEV_NAME_TYPE == SHORTENED_LOCAL_NAME)
memcpy(&dev_name[0], (const uint8_t*)COMPLETE_DEV_NAME, strlen(COMPLETE_DEV_NAME));
dev_name_sz = strlen(COMPLETE_DEV_NAME);
#elif (CONFIG_DEV_NAME_TYPE == COMPLETE_LOCAL_NAME)
memcpy(&dev_name[0], (const uint8_t*)DEVICE_NAME, strlen(DEVICE_NAME));
dev_name_sz = strlen(DEVICE_NAME);
#endif​


綜述:

從代碼上分析,藍牙名稱起關鍵決定作用的是DEVICE_NAME  等定義,可以進行修改,客戶可以自行修改。我讓我的藍牙名稱改成“那就不是事兒”,天空飄著六個字怎麼樣?
名字是中文的嗎?這個可以有嗎?以後有機會詳細!


這次博文就到這了


大大通方案與博文,十分精彩,引人入勝,如果不在登錄狀態的看官,大大通則視為“匆匆之過客”很快就“不見廬山真面目”了,看的正過癮啊!

各位看官!不要著急!只需一個小小的動作而已:登錄!

請掃描下面二維碼註冊:


請多多關注小編與大大通平台,我們會不斷分享最新的熱點技術

好啦,謝謝大家觀看啦!我們下期見!

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論