1、QCC300X的蓝牙名称
QCC300X蓝牙名称修改要用 PSkey,而QCC512x_302X 没有明显的PSkey可供修改,这是其不同点。
Bluecore内部有些配置寄存器,称为PSKEY,这些寄存器不可随意更改,当然也有些是可以自定义修改的。量产时经常在ADK 与 Application 中修改,用Pstool 可以查看到名称值
2 、QCC300X蓝牙名称的PSkey
本地设备的“用户友好”名称
该PSKey保存本地设备的默认“用户友好”名称,HCI Read_Local_Name和Change_Local_Name命令和LMP_name_req/LMP_name_res事务使用该名称。
当固件启动时,设备名称从这个PSKey中提取。但是,如果本地主机通过调用HCI Change_Local_Name命令更改了本地设备的名称,那么新名称将保存在RAM中。随后读取设备名称的请求从RAM存储,而不是从这个PSKey。PSKey的值只有在固件重新启动后才会再次可见。
蓝牙v1.1 HCI规范要求设备的默认名称为“”;一个空字符串。这个PSKey的默认值(psrom)是“CSR - bc3”或类似的。因此,psrom值不符合HCI规范。如果这个PSKey被设置为不持有任何东西,也就是说,PSKey下没有存储uint16,那么HCI的默认值就会被获取。
在HCI和LMP中,名称以UTF-8字节序列传递。因为PS将数据存储在uint16s数组中,所以名称被打包在这个PSKey中,每个uint16包含两个八位字节。这种包装是重要的,当PS存储是小的,特别是在那里的PS是在EEPROM中举行。
从设备名称开始工作,第一个字符存储在PSKey的第一个uint16的下八位体中,第二个字符存储在第一个uint16的上八位体中,以此类推。如果名称是奇数字符,那么最后一个uint16的上八位元是'\0'。
这个PSKey最多可以保存20个uint16,将默认设备名称限制为40个字节。这个PSKey中的行为是未定义的,它包含超过20个uint16。(此大小约束不适用于通过HCI Change_Local_Name命令写入的名称。)
BlueCore3芯片的默认名称是“CSR - bc3”;当打包时,它变成{0x5343, 0x2052, 0x202d, 0x6362, 0x0033}。
这个PSKey从(HCI) 18中使用。X版本。HCI 17。X和早期的构建使用PSKEY_LOCAL_NAME0 -> PSKEY_LOCAL_NAME17和PSKEY_LOCAL_NAME_LENGTH。