在广播中加入名称:设置广播数据结构体 ble_advdata_t成员中名称类型即可;
init.advdata.name_type = BLE_ADVDATA_FULL_NAME;//广播中加入的名称类型:全称
在广播中加入UUID
在广播中加入名称,UUID,在广播回包中加入MAC地址:
void LE_Advertising_Init (void)
{
ret_code_t err_code;
ble_advertising_init_t init;
memset (&init, 0, sizeof (init));
init.advdata.name_type = BLE_ADVDATA_FULL_NAME;//广播中加入的名称类型:全称
init.advdata.include_appearance = false;//不包含外观
init.advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;//Flag:一般可发现模式,不支持 BR/EDR
init.advdata.uuids_complete.uuid_cnt = sizeof (BLE_ADV_UUIDs) / sizeof (BLE_ADV_UUIDs[0]);
init.advdata.uuids_complete.p_uuids = BLE_ADV_UUIDs;//广播中加入UUID
init.config.ble_adv_fast_enabled = true;//启动快速广播
//设置广播间隔和广播持续时间
init.config.ble_adv_fast_interval = BLE_ADV_INTERVAL;
init.config.ble_adv_fast_timeout = 0;
init.evt_handler = on_adv_evt;//注册回调函数
//=======添加广播回包==========
//定义一个数组,存放自定义的数据,因为 ble_advdata_manuf_data_t 中
//是通过指针来引用数据的,所以必须要定义存放自定义数据的变量,将
//变量的地址赋值给 ble_advdata_manuf_data_t
uint8_t my_adv_manuf_data[6];
//获取mac地址
ble_gap_addr_t bleAddr;//定义结构体变量
sd_ble_gap_addr_get(&bleAddr);//调用获取地址函数
for(uint8_t i = 0; i < 6; i++)//将地址赋值给
{
my_adv_manuf_data[i] = bleAddr.addr[5 - i]; // 逆序赋值MAC地址
#ifdef DEBUG
NRF_LOG_DEBUG("bleAddr:%02x", my_adv_manuf_data[i]);
#endif
}
ble_advdata_manuf_data_t manuf_specific_data;//广播数据结构体中的 p_manuf_specific_data
//初始化 厂商自定义数据
manuf_specific_data.company_identifier = 0x0201;//制造商 ID,0x0059 是 Nordic 的 ID
manuf_specific_data.data.p_data = my_adv_manuf_data;//指向制造商自定义的数据
manuf_specific_data.data.size = sizeof(my_adv_manuf_data);//制造商自定义的数据大小(字节数)
init.srdata.p_manuf_specific_data = &manuf_specific_data;//广播回包中加入制造商自定义数据
// init.advdata.p_manuf_specific_data = &manuf_specific_data;//广播回包中加入制造商自定义数据
//=================
//初始化广播
err_code = ble_advertising_init (&BLE_ADVERTISING_INS, &init);
APP_ERROR_CHECK (err_code);
ble_advertising_conn_cfg_tag_set (&BLE_ADVERTISING_INS, APP_BLE_CONN_CFG_TAG);
err_code = sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_ADV, BLE_ADVERTISING_INS.adv_handle, 8);
}