本专栏由非官方人员 王小小海 所著,其内容主要记录了在开发5340的过程中遇到的一些问题和解决方法,还有一些应用的例程。作者本人也是在实践应用中遇到的问题,想着把这些问题分享给可能遇到的朋友。仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。
本专栏不涉及基础的安装和环境搭建问题,本例程开发使用最新版本的NCS 2.0.0开发,还请注意!。
所有分享内容
笔记分享
- 【笔记分享】NCS下radio_test添加FEM
- 【笔记分享】5340基于 BLE LBS 自定义网络核固件点亮LED并合并固件
- 【笔记分享】5340基于LBS自定义网络核双核DFU实现
- 【笔记分享】5340 设置public address 和 random address
NCS 下 5340 设置 public address 和 random address 记录
最近有朋友问我 5340 怎么设置public address 和 random address ,就写一个分享贴分享一下:
具体看代码分享:
void ble_set_mac(bt_addr_t* addr , uint8_t type) {
struct net_buf *buf;
int err;
static bt_addr_le_t static_addr;
// type == 0 为 public address
if(type == 0)
{
buf = bt_hci_cmd_create(SDC_HCI_OPCODE_CMD_VS_ZEPHYR_WRITE_BD_ADDR , sizeof(*addr));
if(!buf) {
LOG_WRN("BD Addr failed!");
return ;
}
net_buf_add_mem(buf, addr, sizeof(*addr));
err = bt_hci_cmd_send_sync(SDC_HCI_OPCODE_CMD_VS_ZEPHYR_WRITE_BD_ADDR , buf, NULL);
if(err) {
LOG_WRN("hci cmd send failed!");
}
}
else
{
memcpy(&static_addr.a.val , addr->val , 6);
BT_ADDR_SET_STATIC(&static_addr.a);
static_addr.type = BT_ADDR_LE_RANDOM;
err = bt_id_create(&static_addr, NULL);
if (err) {
LOG_WRN("Failed to create ID");
}
}
}
void main(void)
{
int ret;
/* Enable Bluetooth. */
ret = bt_enable(NULL);
if (ret) {
LOG_ERR("Bluetooth init failed (err %d)\n", ret);
return;
}
// 一定要放在这里不然不能初始化成功
ble_set_mac(&bt_addr , 0);
....
}
如果配置不成功,需要在pj.conf里面使能 CONFIG_BT_HCI_VS=y
和CONFIG_BT_HCI_VS_EXT=y
本系列文章大多数是本人遇到和解决过的问题,难有疏忽之处,有什么问题或者不明白的地方,欢迎留言询问!