Skip to content

Commit 4f6aae1

Browse files
committed
[nrf fromtree] bluetooth: dis: add Kconfig for disabling optional characteristics
Added new Kconfig option set that allows the user to control the presence of the following optional characteristics: - Manufacturer Name String - Model Number String Depreacted the old configuration that can be deleted in the future Zephyr releases. Signed-off-by: Kamil Piszczek <[email protected]> (cherry picked from commit 7c828bd)
1 parent 8a64a2e commit 4f6aae1

File tree

4 files changed

+90
-7
lines changed

4 files changed

+90
-7
lines changed

drivers/bluetooth/hci/Kconfig.nxp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,10 @@ endif
4848

4949
if BT_NXP
5050

51-
config BT_DIS_MANUF
51+
config BT_DIS_MANUF_NAME
52+
default y
53+
54+
config BT_DIS_MANUF_NAME_STR
5255
default "NXP"
5356

5457
config BT_HCI_ACL_FLOW_CONTROL

samples/bluetooth/peripheral_dis/prj.conf

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ CONFIG_BT_PERIPHERAL=y
33

44
CONFIG_BT_DIS=y
55
CONFIG_BT_DIS_PNP=n
6-
CONFIG_BT_DIS_MODEL="Zephyr Model"
7-
CONFIG_BT_DIS_MANUF="Zephyr"
6+
CONFIG_BT_DIS_MODEL_NUMBER=y
7+
CONFIG_BT_DIS_MANUF_NAME=y
88
CONFIG_BT_DIS_SERIAL_NUMBER=y
99
CONFIG_BT_DIS_FW_REV=y
1010
CONFIG_BT_DIS_HW_REV=y
1111
CONFIG_BT_DIS_SW_REV=y
12+
CONFIG_BT_DIS_MODEL_NUMBER_STR="Zephyr Model"
13+
CONFIG_BT_DIS_MANUF_NAME_STR="Zephyr"
1214
CONFIG_BT_DIS_SERIAL_NUMBER_STR="Zephyr Serial"
1315
CONFIG_BT_DIS_FW_REV_STR="Zephyr Firmware"
1416
CONFIG_BT_DIS_HW_REV_STR="Zephyr Hardware"

subsys/bluetooth/services/Kconfig.dis

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,57 @@ config BT_DIS_STR_MAX
2323
Bluetooth DIS string storage size. Storage can be up to 248 bytes
2424
long (excluding NULL termination).
2525

26-
config BT_DIS_MODEL
27-
string "Model name"
26+
config BT_DIS_MODEL_NUMBER
27+
bool "Model number characteristic"
28+
depends on !BT_DIS_MODEL_DEPRECATED_USED
29+
default y
30+
help
31+
Enable model number characteristic in Device Information Service.
32+
33+
config BT_DIS_MODEL_NUMBER_STR
34+
string "Model number"
35+
depends on BT_DIS_MODEL_NUMBER
2836
default SOC
37+
help
38+
Configure model number string that can be read with the model number characteristic
39+
in Device Information Service.
40+
41+
config BT_DIS_MODEL
42+
string "Model name [DEPRECATED]"
2943
help
3044
The device model inside Device Information Service.
45+
This option is deprecated. Use BT_DIS_MODEL_NUMBER and BT_DIS_MODEL_NUMBER_STR instead.
3146

32-
config BT_DIS_MANUF
47+
config BT_DIS_MODEL_DEPRECATED_USED
48+
bool
49+
default y if BT_DIS_MODEL != ""
50+
select DEPRECATED
51+
52+
config BT_DIS_MANUF_NAME
53+
bool "Manufacturer name characteristic"
54+
depends on !BT_DIS_MANUF_DEPRECATED_USED
55+
default y
56+
help
57+
Enable manufacturer name characteristic in Device Information Service.
58+
59+
config BT_DIS_MANUF_NAME_STR
3360
string "Manufacturer name"
61+
depends on BT_DIS_MANUF_NAME
3462
default "Manufacturer"
63+
help
64+
Configure manufacturer name string that can be read with the manufacturer name
65+
characteristic in Device Information Service.
66+
67+
config BT_DIS_MANUF
68+
string "Manufacturer name [DEPRECATED]"
3569
help
3670
The device manufacturer inside Device Information Service.
71+
This option is deprecated. Use BT_DIS_MANUF_NAME and BT_DIS_MANUF_NAME_STR instead.
72+
73+
config BT_DIS_MANUF_DEPRECATED_USED
74+
bool
75+
default y if BT_DIS_MANUF != ""
76+
select DEPRECATED
3777

3878
config BT_DIS_PNP
3979
bool "PnP_ID characteristic"

subsys/bluetooth/services/dis.c

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,20 @@ static uint8_t dis_system_id[8] = {BT_BYTES_LIST_LE40((uint64_t)CONFIG_BT_DIS_SY
5858
#endif
5959

6060
#if defined(CONFIG_BT_DIS_SETTINGS)
61+
#if defined(CONFIG_BT_DIS_MODEL_NUMBER)
62+
BUILD_ASSERT(sizeof(CONFIG_BT_DIS_MODEL_NUMBER_STR) <= CONFIG_BT_DIS_STR_MAX + 1);
63+
static uint8_t dis_model[CONFIG_BT_DIS_STR_MAX + 1] = CONFIG_BT_DIS_MODEL_NUMBER_STR;
64+
#elif defined(CONFIG_BT_DIS_MODEL_DEPRECATED_USED)
6165
BUILD_ASSERT(sizeof(CONFIG_BT_DIS_MODEL) <= CONFIG_BT_DIS_STR_MAX + 1);
62-
BUILD_ASSERT(sizeof(CONFIG_BT_DIS_MANUF) <= CONFIG_BT_DIS_STR_MAX + 1);
6366
static uint8_t dis_model[CONFIG_BT_DIS_STR_MAX + 1] = CONFIG_BT_DIS_MODEL;
67+
#endif
68+
#if defined(CONFIG_BT_DIS_MANUF_NAME)
69+
BUILD_ASSERT(sizeof(CONFIG_BT_DIS_MANUF_NAME_STR) <= CONFIG_BT_DIS_STR_MAX + 1);
70+
static uint8_t dis_manuf[CONFIG_BT_DIS_STR_MAX + 1] = CONFIG_BT_DIS_MANUF_NAME_STR;
71+
#elif defined(CONFIG_BT_DIS_MANUF_DEPRECATED_USED)
72+
BUILD_ASSERT(sizeof(CONFIG_BT_DIS_MANUF) <= CONFIG_BT_DIS_STR_MAX + 1);
6473
static uint8_t dis_manuf[CONFIG_BT_DIS_STR_MAX + 1] = CONFIG_BT_DIS_MANUF;
74+
#endif
6575
#if defined(CONFIG_BT_DIS_SERIAL_NUMBER)
6676
BUILD_ASSERT(sizeof(CONFIG_BT_DIS_SERIAL_NUMBER_STR) <= CONFIG_BT_DIS_STR_MAX + 1);
6777
static uint8_t dis_serial_number[CONFIG_BT_DIS_STR_MAX + 1] = CONFIG_BT_DIS_SERIAL_NUMBER_STR;
@@ -114,8 +124,16 @@ static uint8_t dis_ieee_rcdl[CONFIG_BT_DIS_STR_MAX + 1] = CONFIG_BT_DIS_IEEE_RCD
114124

115125
#else /* CONFIG_BT_DIS_SETTINGS */
116126

127+
#if defined(CONFIG_BT_DIS_MODEL_NUMBER)
128+
#define BT_DIS_MODEL_REF CONFIG_BT_DIS_MODEL_NUMBER_STR
129+
#elif defined(CONFIG_BT_DIS_MODEL_DEPRECATED_USED)
117130
#define BT_DIS_MODEL_REF CONFIG_BT_DIS_MODEL
131+
#endif
132+
#if defined(CONFIG_BT_DIS_MANUF_NAME)
133+
#define BT_DIS_MANUF_REF CONFIG_BT_DIS_MANUF_NAME_STR
134+
#elif defined(CONFIG_BT_DIS_MANUF_DEPRECATED_USED)
118135
#define BT_DIS_MANUF_REF CONFIG_BT_DIS_MANUF
136+
#endif
119137
#define BT_DIS_SERIAL_NUMBER_STR_REF CONFIG_BT_DIS_SERIAL_NUMBER_STR
120138
#define BT_DIS_FW_REV_STR_REF CONFIG_BT_DIS_FW_REV_STR
121139
#define BT_DIS_HW_REV_STR_REF CONFIG_BT_DIS_HW_REV_STR
@@ -128,12 +146,20 @@ static uint8_t dis_ieee_rcdl[CONFIG_BT_DIS_STR_MAX + 1] = CONFIG_BT_DIS_IEEE_RCD
128146

129147
#endif /* CONFIG_BT_DIS_SETTINGS */
130148

149+
#define BT_DIS_READ_STR_USED \
150+
(CONFIG_BT_DIS_MODEL_NUMBER || CONFIG_BT_DIS_MODEL_DEPRECATED_USED || \
151+
CONFIG_BT_DIS_MANUF_NAME || CONFIG_BT_DIS_MANUF_DEPRECATED_USED || \
152+
CONFIG_BT_DIS_SERIAL_NUMBER || CONFIG_BT_DIS_FW_REV || CONFIG_BT_DIS_HW_REV || \
153+
CONFIG_BT_DIS_SW_REV || CONFIG_BT_DIS_IEEE_RCDL)
154+
155+
#if BT_DIS_READ_STR_USED
131156
static ssize_t read_str(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf,
132157
uint16_t len, uint16_t offset)
133158
{
134159
return bt_gatt_attr_read(conn, attr, buf, len, offset, attr->user_data,
135160
strlen(attr->user_data));
136161
}
162+
#endif
137163

138164
#if CONFIG_BT_DIS_PNP
139165
static ssize_t read_pnp_id(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf,
@@ -226,10 +252,16 @@ static ssize_t read_udi(struct bt_conn *conn, const struct bt_gatt_attr *attr, v
226252
BT_GATT_SERVICE_DEFINE(
227253
dis_svc, BT_GATT_PRIMARY_SERVICE(BT_UUID_DIS),
228254

255+
#if defined(CONFIG_BT_DIS_MODEL_NUMBER) || defined(CONFIG_BT_DIS_MODEL_DEPRECATED_USED)
229256
BT_GATT_CHARACTERISTIC(BT_UUID_DIS_MODEL_NUMBER, BT_GATT_CHRC_READ, BT_GATT_PERM_READ,
230257
read_str, NULL, BT_DIS_MODEL_REF),
258+
#endif
259+
260+
#if defined(CONFIG_BT_DIS_MANUF_NAME) || defined(CONFIG_BT_DIS_MANUF_DEPRECATED_USED)
231261
BT_GATT_CHARACTERISTIC(BT_UUID_DIS_MANUFACTURER_NAME, BT_GATT_CHRC_READ, BT_GATT_PERM_READ,
232262
read_str, NULL, BT_DIS_MANUF_REF),
263+
#endif
264+
233265
#if CONFIG_BT_DIS_PNP
234266
BT_GATT_CHARACTERISTIC(BT_UUID_DIS_PNP_ID, BT_GATT_CHRC_READ, BT_GATT_PERM_READ,
235267
read_pnp_id, NULL, &dis_pnp_id),
@@ -309,7 +341,10 @@ static int dis_set(const char *name, size_t len_rd, settings_read_cb read_cb, vo
309341
int nlen;
310342
const char *next;
311343

344+
ARG_UNUSED(len);
345+
312346
nlen = settings_name_next(name, &next);
347+
#if defined(CONFIG_BT_DIS_MANUF_NAME) || defined(CONFIG_BT_DIS_MANUF_DEPRECATED_USED)
313348
if (!strncmp(name, "manuf", nlen)) {
314349
len = read_cb(store, &dis_manuf, sizeof(dis_manuf) - 1);
315350
if (len < 0) {
@@ -321,6 +356,8 @@ static int dis_set(const char *name, size_t len_rd, settings_read_cb read_cb, vo
321356
}
322357
return 0;
323358
}
359+
#endif
360+
#if defined(CONFIG_BT_DIS_MODEL_NUMBER) || defined(CONFIG_BT_DIS_MODEL_DEPRECATED_USED)
324361
if (!strncmp(name, "model", nlen)) {
325362
len = read_cb(store, &dis_model, sizeof(dis_model) - 1);
326363
if (len < 0) {
@@ -332,6 +369,7 @@ static int dis_set(const char *name, size_t len_rd, settings_read_cb read_cb, vo
332369
}
333370
return 0;
334371
}
372+
#endif
335373
#if defined(CONFIG_BT_DIS_SERIAL_NUMBER)
336374
if (!strncmp(name, "serial", nlen)) {
337375
len = read_cb(store, &dis_serial_number, sizeof(dis_serial_number) - 1);

0 commit comments

Comments
 (0)