原相蓝牙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次,发文人进小黑屋喔~

评论