Bluetooth: Mesh: Remove usage of auto name in AD

The advertiser options to automatically add the name in the scan
response and the advertising data will be deprecated.

The Mesh files `proxy_srv.c` and `pb_gatt_srv.c` were using
BT_LE_ADV_OPT_USE_NAME. Add the device name in the advertising data
directly.

Signed-off-by: Théo Battrel <theo.battrel@nordicsemi.no>
This commit is contained in:
Théo Battrel 2024-04-19 12:28:01 +02:00 committed by Carles Cufí
commit f461ae574f
2 changed files with 25 additions and 20 deletions

View file

@ -33,16 +33,9 @@
#include <zephyr/logging/log.h>
LOG_MODULE_REGISTER(bt_mesh_pb_gatt_srv);
#if defined(CONFIG_BT_MESH_PB_GATT_USE_DEVICE_NAME)
#define ADV_OPT_USE_NAME BT_LE_ADV_OPT_USE_NAME
#else
#define ADV_OPT_USE_NAME 0
#endif
#define ADV_OPT_PROV \
(BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_SCANNABLE | \
BT_LE_ADV_OPT_ONE_TIME | ADV_OPT_USE_IDENTITY | \
ADV_OPT_USE_NAME)
BT_LE_ADV_OPT_ONE_TIME | ADV_OPT_USE_IDENTITY)
#define FAST_ADV_TIME (60LL * MSEC_PER_SEC)
@ -222,8 +215,10 @@ static const struct bt_data prov_ad[] = {
BT_DATA(BT_DATA_SVC_DATA16, prov_svc_data, sizeof(prov_svc_data)),
};
static size_t gatt_prov_adv_create(struct bt_data prov_sd[1])
static size_t gatt_prov_adv_create(struct bt_data prov_sd[2])
{
size_t prov_sd_len = 0;
const struct bt_mesh_prov *prov = bt_mesh_prov_get();
size_t uri_len;
@ -245,7 +240,17 @@ static size_t gatt_prov_adv_create(struct bt_data prov_sd[1])
prov_sd[0].data_len = uri_len;
prov_sd[0].data = (const uint8_t *)prov->uri;
return 1;
prov_sd_len += 1;
#if defined(CONFIG_BT_MESH_PB_GATT_USE_DEVICE_NAME)
prov_sd[1].type = BT_DATA_NAME_COMPLETE;
prov_sd[1].data_len = sizeof(CONFIG_BT_DEVICE_NAME) - 1;
prov_sd[1].data = CONFIG_BT_DEVICE_NAME;
prov_sd_len += 1;
#endif
return prov_sd_len;
}
static int gatt_send(struct bt_conn *conn,
@ -279,7 +284,7 @@ int bt_mesh_pb_gatt_srv_adv_start(void)
.options = ADV_OPT_PROV,
ADV_FAST_INT,
};
struct bt_data prov_sd[1];
struct bt_data prov_sd[2];
size_t prov_sd_len;
int64_t timestamp = fast_adv_timestamp;
int64_t elapsed_time = k_uptime_delta(&timestamp);

View file

@ -44,18 +44,12 @@ LOG_MODULE_REGISTER(bt_mesh_gatt);
*/
#define PROXY_RANDOM_UPDATE_INTERVAL (10 * 60 * MSEC_PER_SEC)
#if defined(CONFIG_BT_MESH_PROXY_USE_DEVICE_NAME)
#define ADV_OPT_USE_NAME BT_LE_ADV_OPT_USE_NAME
#else
#define ADV_OPT_USE_NAME 0
#endif
#define ADV_OPT_ADDR(private) (IS_ENABLED(CONFIG_BT_MESH_DEBUG_USE_ID_ADDR) ? \
BT_LE_ADV_OPT_USE_IDENTITY : (private) ? BT_LE_ADV_OPT_USE_NRPA : 0)
#define ADV_OPT_PROXY(private) \
(BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_SCANNABLE | ADV_OPT_ADDR(private) | \
BT_LE_ADV_OPT_ONE_TIME | ADV_OPT_USE_NAME)
BT_LE_ADV_OPT_ONE_TIME)
static void proxy_send_beacons(struct k_work *work);
static int proxy_send(struct bt_conn *conn,
@ -489,6 +483,12 @@ static const struct bt_data net_id_ad[] = {
BT_DATA(BT_DATA_SVC_DATA16, proxy_svc_data, NET_ID_LEN),
};
static const struct bt_data sd[] = {
#if defined(CONFIG_BT_MESH_PROXY_USE_DEVICE_NAME)
BT_DATA(BT_DATA_NAME_COMPLETE, CONFIG_BT_DEVICE_NAME, sizeof(CONFIG_BT_DEVICE_NAME) - 1),
#endif
};
static int randomize_bt_addr(void)
{
/* TODO: There appears to be no way to force an RPA/NRPA refresh. */
@ -531,7 +531,7 @@ static int enc_id_adv(struct bt_mesh_subnet *sub, uint8_t type,
err = bt_mesh_adv_gatt_start(
type == BT_MESH_ID_TYPE_PRIV_NET ? &slow_adv_param : &fast_adv_param,
duration, enc_id_ad, ARRAY_SIZE(enc_id_ad), NULL, 0);
duration, enc_id_ad, ARRAY_SIZE(enc_id_ad), sd, ARRAY_SIZE(sd));
if (err) {
LOG_WRN("Failed to advertise using type 0x%02x (err %d)", type, err);
return err;
@ -616,7 +616,7 @@ static int net_id_adv(struct bt_mesh_subnet *sub, int32_t duration)
memcpy(proxy_svc_data + 3, sub->keys[SUBNET_KEY_TX_IDX(sub)].net_id, 8);
err = bt_mesh_adv_gatt_start(&slow_adv_param, duration, net_id_ad,
ARRAY_SIZE(net_id_ad), NULL, 0);
ARRAY_SIZE(net_id_ad), sd, ARRAY_SIZE(sd));
if (err) {
LOG_WRN("Failed to advertise using Network ID (err %d)", err);
return err;