由于苹果APP无法读到设备广播时的MAC地址,所以想在广播的时候在暴露一次MAC地址,如果把MAC地址添加到广播数据里面呢?
uint8_t app_set_adv_data(uint16_t disc_mode) 修改改函数,把你的MAC地址在这里跟着写进去。个人看法,不知道对不对
最好是像这样,添加到manufature data后面,但这个芯片广播的时候好像没看到manufature datawyq165 发表于 2015-5-20 17:52
uint8_t app_set_adv_data(uint16_t disc_mode) 修改改函数,把你的MAC地址在这里跟着写进去。个人看法,不 …
2楼说得基本对,在广播数据添加,但是格式上有要求,具体得看蓝牙spec v4.0
贴上我的一段代码,应该能帮上
app_env.adv_data[len+0] = 0x07;
app_env.adv_data[len+1] = 0xFF;
get_mac_addr(&app_env.adv_data[len+2]);
len += 8;
FireBLE_blue 发表于 2015-5-21 11:13
2楼说得基本对,在广播数据添加,但是格式上有要求,具体得看蓝牙spec v4.0
贴上我的一段代码,应该能帮上 …
get_mac_addr是你自己实现的吗,咋我放里面报错呢?
是的,具体实现如下:
void get_mac_addr(uint8_t *p_mac_addr)
{
uint8_t mac_addr[6];
nvds_tag_len_t add_lenth = 6;
if (NVDS_OK != nvds_get(NVDS_TAG_BD_ADDRESS, &add_lenth, mac_addr))
{
// NVDS is empty, use default name
p_mac_addr[0] = 0x08;
p_mac_addr[1] = 0x7C;
p_mac_addr[2] = 0xBE;
p_mac_addr[3] = 0x00;
p_mac_addr[4] = 0x00;
p_mac_addr[5] = 0x00;
}
else
{
for ( uint8_t i = 6; i >0;)
{
i--;
p_mac_addr[5-i]= mac_addr[i];
}
}
}
