From 5f3595e47c0735021a49fba45958097d7635e9e3 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Wed, 14 Aug 2019 18:09:07 +0300 Subject: [PATCH] Bluetooth: GATT: Fix using variable size storage for CCC This removes the necessity of registering the storage for CCC and make it part of the declaration itself. Fixes #18547 Signed-off-by: Luiz Augusto von Dentz --- include/bluetooth/gatt.h | 21 +++++++++------------ samples/bluetooth/peripheral/src/cts.c | 3 +-- samples/bluetooth/peripheral/src/main.c | 3 +-- samples/bluetooth/peripheral_csc/src/main.c | 6 ++---- samples/bluetooth/peripheral_esp/src/main.c | 5 ++--- samples/bluetooth/peripheral_hids/src/hog.c | 3 +-- samples/bluetooth/peripheral_ht/src/hts.c | 3 +-- samples/boards/bbc_microbit/pong/src/ble.c | 4 +--- subsys/bluetooth/host/gatt.c | 20 ++++++++++---------- subsys/bluetooth/mesh/proxy.c | 10 ++-------- subsys/bluetooth/services/bas.c | 4 +--- subsys/bluetooth/services/hrs.c | 3 +-- subsys/bluetooth/shell/gatt.c | 8 +------- subsys/mgmt/smp_bt.c | 3 +-- tests/bluetooth/gatt/src/main.c | 3 +-- tests/bluetooth/tester/src/gatt.c | 3 +-- 16 files changed, 36 insertions(+), 66 deletions(-) diff --git a/include/bluetooth/gatt.h b/include/bluetooth/gatt.h index 4c85e4ebf6..19e0d99e12 100644 --- a/include/bluetooth/gatt.h +++ b/include/bluetooth/gatt.h @@ -568,8 +568,7 @@ struct bt_gatt_ccc_cfg { /* Internal representation of CCC value */ struct _bt_gatt_ccc { - struct bt_gatt_ccc_cfg *cfg; - size_t cfg_len; + struct bt_gatt_ccc_cfg cfg[BT_GATT_CCC_MAX]; u16_t value; void (*cfg_changed)(const struct bt_gatt_attr *attr, u16_t value); @@ -623,31 +622,29 @@ ssize_t bt_gatt_attr_write_ccc(struct bt_conn *conn, * * Helper macro to declare a Managed CCC attribute. * - * @param _cfg Initial configuration. * @param _changed Configuration changed callback. * @param _write Configuration write callback. * @param _match Configuration match callback. */ -#define BT_GATT_CCC_MANAGED(_cfg, _changed, _write, _match) \ +#define BT_GATT_CCC_MANAGED(_changed, _write, _match) \ BT_GATT_ATTRIBUTE(BT_UUID_GATT_CCC, \ BT_GATT_PERM_READ | BT_GATT_PERM_WRITE, \ bt_gatt_attr_read_ccc, bt_gatt_attr_write_ccc, \ - (&(struct _bt_gatt_ccc) { .cfg = _cfg, \ - .cfg_len = ARRAY_SIZE(_cfg), \ - .cfg_changed = _changed, \ - .cfg_write = _write, \ - .cfg_match = _match })) + (&(struct _bt_gatt_ccc) { \ + .cfg = {}, \ + .cfg_changed = _changed, \ + .cfg_write = _write, \ + .cfg_match = _match })) /** @def BT_GATT_CCC * @brief Client Characteristic Configuration Declaration Macro. * * Helper macro to declare a CCC attribute. * - * @param _cfg Initial configuration. * @param _cfg_changed Configuration changed callback. */ -#define BT_GATT_CCC(_cfg, _cfg_changed) \ - BT_GATT_CCC_MANAGED(_cfg, _cfg_changed, NULL, NULL) +#define BT_GATT_CCC(_cfg_changed) \ + BT_GATT_CCC_MANAGED(_cfg_changed, NULL, NULL) /** @brief Read Characteristic Extended Properties Attribute helper * diff --git a/samples/bluetooth/peripheral/src/cts.c b/samples/bluetooth/peripheral/src/cts.c index 3cc40ba52b..d7217aa454 100644 --- a/samples/bluetooth/peripheral/src/cts.c +++ b/samples/bluetooth/peripheral/src/cts.c @@ -22,7 +22,6 @@ #include #include -static struct bt_gatt_ccc_cfg ct_ccc_cfg[BT_GATT_CCC_MAX] = {}; static u8_t ct[10]; static u8_t ct_update; @@ -63,7 +62,7 @@ BT_GATT_SERVICE_DEFINE(cts_cvs, BT_GATT_CHRC_NOTIFY | BT_GATT_CHRC_WRITE, BT_GATT_PERM_READ | BT_GATT_PERM_WRITE, read_ct, write_ct, ct), - BT_GATT_CCC(ct_ccc_cfg, ct_ccc_cfg_changed), + BT_GATT_CCC(ct_ccc_cfg_changed), ); static void generate_current_time(u8_t *buf) diff --git a/samples/bluetooth/peripheral/src/main.c b/samples/bluetooth/peripheral/src/main.c index a1450edcaa..a1f053eed5 100644 --- a/samples/bluetooth/peripheral/src/main.c +++ b/samples/bluetooth/peripheral/src/main.c @@ -65,7 +65,6 @@ static ssize_t write_vnd(struct bt_conn *conn, const struct bt_gatt_attr *attr, return len; } -static struct bt_gatt_ccc_cfg vnd_ccc_cfg[BT_GATT_CCC_MAX] = {}; static u8_t simulate_vnd; static u8_t indicating; static struct bt_gatt_indicate_params ind_params; @@ -195,7 +194,7 @@ BT_GATT_SERVICE_DEFINE(vnd_svc, BT_GATT_PERM_READ_ENCRYPT | BT_GATT_PERM_WRITE_ENCRYPT, read_vnd, write_vnd, vnd_value), - BT_GATT_CCC(vnd_ccc_cfg, vnd_ccc_cfg_changed), + BT_GATT_CCC(vnd_ccc_cfg_changed), BT_GATT_CHARACTERISTIC(&vnd_auth_uuid.uuid, BT_GATT_CHRC_READ | BT_GATT_CHRC_WRITE, BT_GATT_PERM_READ_AUTHEN | diff --git a/samples/bluetooth/peripheral_csc/src/main.c b/samples/bluetooth/peripheral_csc/src/main.c index 719f8e03dc..c8103e1bf9 100644 --- a/samples/bluetooth/peripheral_csc/src/main.c +++ b/samples/bluetooth/peripheral_csc/src/main.c @@ -76,8 +76,6 @@ /* Cycling Speed and Cadence Service declaration */ -static struct bt_gatt_ccc_cfg csc_meas_ccc_cfg[BT_GATT_CCC_MAX]; -static struct bt_gatt_ccc_cfg ctrl_point_ccc_cfg[BT_GATT_CCC_MAX]; static u32_t cwr; /* Cumulative Wheel Revolutions */ static u8_t supported_locations[] = CSC_SUPPORTED_LOCATIONS; static u8_t sensor_location; /* Current Sensor Location */ @@ -204,7 +202,7 @@ BT_GATT_SERVICE_DEFINE(csc_svc, BT_GATT_PRIMARY_SERVICE(BT_UUID_CSC), BT_GATT_CHARACTERISTIC(BT_UUID_CSC_MEASUREMENT, BT_GATT_CHRC_NOTIFY, 0x00, NULL, NULL, NULL), - BT_GATT_CCC(csc_meas_ccc_cfg, csc_meas_ccc_cfg_changed), + BT_GATT_CCC(csc_meas_ccc_cfg_changed), BT_GATT_CHARACTERISTIC(BT_UUID_SENSOR_LOCATION, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, read_location, NULL, &sensor_location), @@ -214,7 +212,7 @@ BT_GATT_SERVICE_DEFINE(csc_svc, BT_GATT_CHRC_WRITE | BT_GATT_CHRC_INDICATE, BT_GATT_PERM_WRITE, NULL, write_ctrl_point, &sensor_location), - BT_GATT_CCC(ctrl_point_ccc_cfg, ctrl_point_ccc_cfg_changed), + BT_GATT_CCC(ctrl_point_ccc_cfg_changed), ); struct sc_ctrl_point_ind { diff --git a/samples/bluetooth/peripheral_esp/src/main.c b/samples/bluetooth/peripheral_esp/src/main.c index f23b01c15b..16bf01177d 100644 --- a/samples/bluetooth/peripheral_esp/src/main.c +++ b/samples/bluetooth/peripheral_esp/src/main.c @@ -96,7 +96,6 @@ struct temperature_sensor { s16_t ref_val; /* Reference temperature */ }; - struct bt_gatt_ccc_cfg ccc_cfg[BT_GATT_CCC_MAX]; struct es_measurement meas; }; @@ -299,7 +298,7 @@ BT_GATT_SERVICE_DEFINE(ess_svc, BT_GATT_DESCRIPTOR(BT_UUID_ES_TRIGGER_SETTING, BT_GATT_PERM_READ, read_temp_trigger_setting, NULL, &sensor_1), - BT_GATT_CCC(sensor_1.ccc_cfg, temp_ccc_cfg_changed), + BT_GATT_CCC(temp_ccc_cfg_changed), /* Temperature Sensor 2 */ BT_GATT_CHARACTERISTIC(BT_UUID_TEMPERATURE, @@ -314,7 +313,7 @@ BT_GATT_SERVICE_DEFINE(ess_svc, BT_GATT_DESCRIPTOR(BT_UUID_ES_TRIGGER_SETTING, BT_GATT_PERM_READ, read_temp_trigger_setting, NULL, &sensor_2), - BT_GATT_CCC(sensor_2.ccc_cfg, temp_ccc_cfg_changed), + BT_GATT_CCC(temp_ccc_cfg_changed), /* Humidity Sensor */ BT_GATT_CHARACTERISTIC(BT_UUID_HUMIDITY, BT_GATT_CHRC_READ, diff --git a/samples/bluetooth/peripheral_hids/src/hog.c b/samples/bluetooth/peripheral_hids/src/hog.c index 4f40bfe619..c4d0a8341c 100644 --- a/samples/bluetooth/peripheral_hids/src/hog.c +++ b/samples/bluetooth/peripheral_hids/src/hog.c @@ -55,7 +55,6 @@ static struct hids_report input = { .type = HIDS_INPUT, }; -static struct bt_gatt_ccc_cfg input_ccc_cfg[BT_GATT_CCC_MAX] = {}; static u8_t simulate_input; static u8_t ctrl_point; static u8_t report_map[] = { @@ -151,7 +150,7 @@ BT_GATT_SERVICE_DEFINE(hog_svc, BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY, BT_GATT_PERM_READ_AUTHEN, read_input_report, NULL, NULL), - BT_GATT_CCC(input_ccc_cfg, input_ccc_changed), + BT_GATT_CCC(input_ccc_changed), BT_GATT_DESCRIPTOR(BT_UUID_HIDS_REPORT_REF, BT_GATT_PERM_READ, read_report, NULL, &input), BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_CTRL_POINT, diff --git a/samples/bluetooth/peripheral_ht/src/hts.c b/samples/bluetooth/peripheral_ht/src/hts.c index baed303f9f..3ccdacb1a6 100644 --- a/samples/bluetooth/peripheral_ht/src/hts.c +++ b/samples/bluetooth/peripheral_ht/src/hts.c @@ -22,7 +22,6 @@ #include #include -static struct bt_gatt_ccc_cfg htmc_ccc_cfg[BT_GATT_CCC_MAX] = {}; static u8_t simulate_htm; static u8_t indicating; static struct bt_gatt_indicate_params ind_params; @@ -47,7 +46,7 @@ BT_GATT_SERVICE_DEFINE(hts_svc, BT_GATT_PRIMARY_SERVICE(BT_UUID_HTS), BT_GATT_CHARACTERISTIC(BT_UUID_HTS_MEASUREMENT, BT_GATT_CHRC_INDICATE, BT_GATT_PERM_NONE, NULL, NULL, NULL), - BT_GATT_CCC(htmc_ccc_cfg, htmc_ccc_cfg_changed), + BT_GATT_CCC(htmc_ccc_cfg_changed), /* more optional Characteristics */ ); diff --git a/samples/boards/bbc_microbit/pong/src/ble.c b/samples/boards/bbc_microbit/pong/src/ble.c index 15e9d1cb86..0f02c4feeb 100644 --- a/samples/boards/bbc_microbit/pong/src/ble.c +++ b/samples/boards/bbc_microbit/pong/src/ble.c @@ -496,8 +496,6 @@ static void ble_timeout(struct k_work *work) } } -static struct bt_gatt_ccc_cfg pong_ccc_cfg[BT_GATT_CCC_MAX]; - static void pong_ccc_cfg_changed(const struct bt_gatt_attr *attr, u16_t val) { printk("val %u\n", val); @@ -514,7 +512,7 @@ BT_GATT_SERVICE_DEFINE(pong_svc, BT_GATT_PRIMARY_SERVICE(&pong_svc_uuid.uuid), BT_GATT_CHARACTERISTIC(&pong_chr_uuid.uuid, BT_GATT_CHRC_NOTIFY, BT_GATT_PERM_NONE, NULL, NULL, NULL), - BT_GATT_CCC(pong_ccc_cfg, pong_ccc_cfg_changed), + BT_GATT_CCC(pong_ccc_cfg_changed), ); void ble_init(void) diff --git a/subsys/bluetooth/host/gatt.c b/subsys/bluetooth/host/gatt.c index 1c34cac822..3ded47ae55 100644 --- a/subsys/bluetooth/host/gatt.c +++ b/subsys/bluetooth/host/gatt.c @@ -507,7 +507,7 @@ BT_GATT_SERVICE_DEFINE(_1_gatt_svc, */ BT_GATT_CHARACTERISTIC(BT_UUID_GATT_SC, BT_GATT_CHRC_INDICATE, BT_GATT_PERM_NONE, NULL, NULL, NULL), - BT_GATT_CCC(sc_ccc_cfg, sc_ccc_cfg_changed), + BT_GATT_CCC(sc_ccc_cfg_changed), #if defined(CONFIG_BT_GATT_CACHING) BT_GATT_CHARACTERISTIC(BT_UUID_GATT_CLIENT_FEATURES, BT_GATT_CHRC_READ | BT_GATT_CHRC_WRITE, @@ -1182,9 +1182,9 @@ static void clear_ccc_cfg(struct bt_gatt_ccc_cfg *cfg) } static struct bt_gatt_ccc_cfg *find_ccc_cfg(const struct bt_conn *conn, - const struct _bt_gatt_ccc *ccc) + struct _bt_gatt_ccc *ccc) { - for (size_t i = 0; i < ccc->cfg_len; i++) { + for (size_t i = 0; i < ARRAY_SIZE(ccc->cfg); i++) { if (conn) { if (conn->id == ccc->cfg[i].id && !bt_conn_addr_le_cmp(conn, &ccc->cfg[i].peer)) { @@ -1203,7 +1203,7 @@ ssize_t bt_gatt_attr_read_ccc(struct bt_conn *conn, u16_t len, u16_t offset) { struct _bt_gatt_ccc *ccc = attr->user_data; - struct bt_gatt_ccc_cfg *cfg; + const struct bt_gatt_ccc_cfg *cfg; u16_t value; cfg = find_ccc_cfg(conn, ccc); @@ -1224,7 +1224,7 @@ static void gatt_ccc_changed(const struct bt_gatt_attr *attr, int i; u16_t value = 0x0000; - for (i = 0; i < ccc->cfg_len; i++) { + for (i = 0; i < ARRAY_SIZE(ccc->cfg); i++) { if (ccc->cfg[i].value > value) { value = ccc->cfg[i].value; } @@ -1515,7 +1515,7 @@ static u8_t notify_cb(const struct bt_gatt_attr *attr, void *user_data) ccc = attr->user_data; /* Notify all peers configured */ - for (i = 0; i < ccc->cfg_len; i++) { + for (i = 0; i < ARRAY_SIZE(ccc->cfg); i++) { struct bt_gatt_ccc_cfg *cfg = &ccc->cfg[i]; struct bt_conn *conn; int err; @@ -1729,7 +1729,7 @@ static u8_t connected_cb(const struct bt_gatt_attr *attr, void *user_data) ccc = attr->user_data; - for (i = 0; i < ccc->cfg_len; i++) { + for (i = 0; i < ARRAY_SIZE(ccc->cfg); i++) { /* Ignore configuration for different peer */ if (bt_conn_addr_le_cmp(conn, &ccc->cfg[i].peer)) { continue; @@ -1771,7 +1771,7 @@ static u8_t disconnected_cb(const struct bt_gatt_attr *attr, void *user_data) /* Checking if all values are disabled */ value_used = false; - for (i = 0; i < ccc->cfg_len; i++) { + for (i = 0; i < ARRAY_SIZE(ccc->cfg); i++) { struct bt_gatt_ccc_cfg *cfg = &ccc->cfg[i]; /* Ignore configurations with disabled value */ @@ -3359,11 +3359,11 @@ void bt_gatt_disconnected(struct bt_conn *conn) #define CCC_STORE_MAX 48 -static struct bt_gatt_ccc_cfg *ccc_find_cfg(const struct _bt_gatt_ccc *ccc, +static struct bt_gatt_ccc_cfg *ccc_find_cfg(struct _bt_gatt_ccc *ccc, const bt_addr_le_t *addr, u8_t id) { - for (size_t i = 0; i < ccc->cfg_len; i++) { + for (size_t i = 0; i < ARRAY_SIZE(ccc->cfg); i++) { if (id == ccc->cfg[i].id && !bt_addr_le_cmp(&ccc->cfg[i].peer, addr)) { return &ccc->cfg[i]; diff --git a/subsys/bluetooth/mesh/proxy.c b/subsys/bluetooth/mesh/proxy.c index c6cccc2778..c8047efb89 100644 --- a/subsys/bluetooth/mesh/proxy.c +++ b/subsys/bluetooth/mesh/proxy.c @@ -636,8 +636,6 @@ static bool prov_ccc_write(struct bt_conn *conn, return true; } -static struct bt_gatt_ccc_cfg prov_ccc_cfg[BT_GATT_CCC_MAX] = {}; - /* Mesh Provisioning Service Declaration */ static struct bt_gatt_attr prov_attrs[] = { BT_GATT_PRIMARY_SERVICE(BT_UUID_MESH_PROV), @@ -650,8 +648,7 @@ static struct bt_gatt_attr prov_attrs[] = { BT_GATT_CHARACTERISTIC(BT_UUID_MESH_PROV_DATA_OUT, BT_GATT_CHRC_NOTIFY, BT_GATT_PERM_NONE, NULL, NULL, NULL), - BT_GATT_CCC_MANAGED(prov_ccc_cfg, prov_ccc_changed, prov_ccc_write, - NULL), + BT_GATT_CCC_MANAGED(prov_ccc_changed, prov_ccc_write, NULL), }; static struct bt_gatt_service prov_svc = BT_GATT_SERVICE(prov_attrs); @@ -754,8 +751,6 @@ static bool proxy_ccc_write(struct bt_conn *conn, return true; } -static struct bt_gatt_ccc_cfg proxy_ccc_cfg[BT_GATT_CCC_MAX] = {}; - /* Mesh Proxy Service Declaration */ static struct bt_gatt_attr proxy_attrs[] = { BT_GATT_PRIMARY_SERVICE(BT_UUID_MESH_PROXY), @@ -769,8 +764,7 @@ static struct bt_gatt_attr proxy_attrs[] = { BT_GATT_CHRC_NOTIFY, BT_GATT_PERM_NONE, NULL, NULL, NULL), - BT_GATT_CCC_MANAGED(proxy_ccc_cfg, proxy_ccc_changed, proxy_ccc_write, - NULL), + BT_GATT_CCC_MANAGED(proxy_ccc_changed, proxy_ccc_write, NULL), }; static struct bt_gatt_service proxy_svc = BT_GATT_SERVICE(proxy_attrs); diff --git a/subsys/bluetooth/services/bas.c b/subsys/bluetooth/services/bas.c index 8b4fe65a42..f38c1d933c 100644 --- a/subsys/bluetooth/services/bas.c +++ b/subsys/bluetooth/services/bas.c @@ -25,8 +25,6 @@ #include LOG_MODULE_REGISTER(bas); -static struct bt_gatt_ccc_cfg blvl_ccc_cfg[BT_GATT_CCC_MAX] = {}; - static u8_t battery_level = 100U; static void blvl_ccc_cfg_changed(const struct bt_gatt_attr *attr, @@ -55,7 +53,7 @@ BT_GATT_SERVICE_DEFINE(bas, BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY, BT_GATT_PERM_READ, read_blvl, NULL, &battery_level), - BT_GATT_CCC(blvl_ccc_cfg, blvl_ccc_cfg_changed), + BT_GATT_CCC(blvl_ccc_cfg_changed), ); static int bas_init(struct device *dev) diff --git a/subsys/bluetooth/services/hrs.c b/subsys/bluetooth/services/hrs.c index 187575171a..4aa65ec8ca 100644 --- a/subsys/bluetooth/services/hrs.c +++ b/subsys/bluetooth/services/hrs.c @@ -25,7 +25,6 @@ #include LOG_MODULE_REGISTER(hrs); -static struct bt_gatt_ccc_cfg hrmc_ccc_cfg[BT_GATT_CCC_MAX] = {}; static u8_t hrs_blsc; static void hrmc_ccc_cfg_changed(const struct bt_gatt_attr *attr, u16_t value) @@ -49,7 +48,7 @@ BT_GATT_SERVICE_DEFINE(hrs_svc, BT_GATT_PRIMARY_SERVICE(BT_UUID_HRS), BT_GATT_CHARACTERISTIC(BT_UUID_HRS_MEASUREMENT, BT_GATT_CHRC_NOTIFY, BT_GATT_PERM_NONE, NULL, NULL, NULL), - BT_GATT_CCC(hrmc_ccc_cfg, hrmc_ccc_cfg_changed), + BT_GATT_CCC(hrmc_ccc_cfg_changed), BT_GATT_CHARACTERISTIC(BT_UUID_HRS_BODY_SENSOR, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, read_blsc, NULL, NULL), BT_GATT_CHARACTERISTIC(BT_UUID_HRS_CONTROL_POINT, BT_GATT_CHRC_WRITE, diff --git a/subsys/bluetooth/shell/gatt.c b/subsys/bluetooth/shell/gatt.c index 364ddecb77..e410d461da 100644 --- a/subsys/bluetooth/shell/gatt.c +++ b/subsys/bluetooth/shell/gatt.c @@ -524,7 +524,6 @@ static struct db_stats { u16_t attr_count; u16_t chrc_count; u16_t ccc_count; - size_t ccc_cfg; } stats; static u8_t print_attr(const struct bt_gatt_attr *attr, void *user_data) @@ -544,10 +543,7 @@ static u8_t print_attr(const struct bt_gatt_attr *attr, void *user_data) if (!bt_uuid_cmp(attr->uuid, BT_UUID_GATT_CCC) && attr->write == bt_gatt_attr_write_ccc) { - struct _bt_gatt_ccc *cfg = attr->user_data; - stats.ccc_count++; - stats.ccc_cfg += cfg->cfg_len; } shell_print(shell, "attr %p handle 0x%04x uuid %s perm 0x%02x", @@ -590,7 +586,6 @@ static int cmd_show_db(const struct shell *shell, size_t argc, char *argv[]) total_len += stats.chrc_count * sizeof(struct bt_gatt_chrc); total_len += stats.attr_count * sizeof(struct bt_gatt_attr); total_len += stats.ccc_count * sizeof(struct _bt_gatt_ccc); - total_len += stats.ccc_cfg * sizeof(struct bt_gatt_ccc_cfg); shell_print(shell, "================================================="); shell_print(shell, "Total: %u services %u attributes (%u bytes)", @@ -624,7 +619,6 @@ static const struct bt_uuid_128 vnd1_echo_uuid = BT_UUID_INIT_128( 0xf5, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12); -static struct bt_gatt_ccc_cfg vnd1_ccc_cfg[BT_GATT_CCC_MAX] = {}; static u8_t echo_enabled; static void vnd1_ccc_cfg_changed(const struct bt_gatt_attr *attr, u16_t value) @@ -737,7 +731,7 @@ static struct bt_gatt_attr vnd1_attrs[] = { BT_GATT_CHRC_WRITE_WITHOUT_RESP | BT_GATT_CHRC_NOTIFY, BT_GATT_PERM_WRITE, NULL, write_vnd1, NULL), - BT_GATT_CCC(vnd1_ccc_cfg, vnd1_ccc_cfg_changed), + BT_GATT_CCC(vnd1_ccc_cfg_changed), }; static struct bt_gatt_service vnd1_svc = BT_GATT_SERVICE(vnd1_attrs); diff --git a/subsys/mgmt/smp_bt.c b/subsys/mgmt/smp_bt.c index be7b01767d..60d96e61e3 100644 --- a/subsys/mgmt/smp_bt.c +++ b/subsys/mgmt/smp_bt.c @@ -69,7 +69,6 @@ static void smp_bt_ccc_changed(const struct bt_gatt_attr *attr, u16_t value) { } -static struct bt_gatt_ccc_cfg smp_bt_ccc[BT_GATT_CCC_MAX] = {}; static struct bt_gatt_attr smp_bt_attrs[] = { /* SMP Primary Service Declaration */ BT_GATT_PRIMARY_SERVICE(&smp_bt_svc_uuid), @@ -79,7 +78,7 @@ static struct bt_gatt_attr smp_bt_attrs[] = { BT_GATT_CHRC_NOTIFY, BT_GATT_PERM_WRITE, NULL, smp_bt_chr_write, NULL), - BT_GATT_CCC(smp_bt_ccc, smp_bt_ccc_changed), + BT_GATT_CCC(smp_bt_ccc_changed), }; static struct bt_gatt_service smp_bt_svc = BT_GATT_SERVICE(smp_bt_attrs); diff --git a/tests/bluetooth/gatt/src/main.c b/tests/bluetooth/gatt/src/main.c index 98def6f8a3..6c18d2df5a 100644 --- a/tests/bluetooth/gatt/src/main.c +++ b/tests/bluetooth/gatt/src/main.c @@ -32,7 +32,6 @@ static const struct bt_uuid_128 test1_nfy_uuid = BT_UUID_INIT_128( 0xf5, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12); -static struct bt_gatt_ccc_cfg test1_ccc_cfg[BT_GATT_CCC_MAX] = {}; static u8_t nfy_enabled; static void test1_ccc_cfg_changed(const struct bt_gatt_attr *attr, u16_t value) @@ -84,7 +83,7 @@ static struct bt_gatt_attr test1_attrs[] = { BT_GATT_CHARACTERISTIC(&test1_nfy_uuid.uuid, BT_GATT_CHRC_NOTIFY, BT_GATT_PERM_NONE, NULL, NULL, &nfy_enabled), - BT_GATT_CCC(test1_ccc_cfg, test1_ccc_cfg_changed), + BT_GATT_CCC(test1_ccc_cfg_changed), }; static struct bt_gatt_service test1_svc = BT_GATT_SERVICE(test1_attrs); diff --git a/tests/bluetooth/tester/src/gatt.c b/tests/bluetooth/tester/src/gatt.c index c69f146c18..1da5908acd 100644 --- a/tests/bluetooth/tester/src/gatt.c +++ b/tests/bluetooth/tester/src/gatt.c @@ -463,7 +463,6 @@ fail: static bool ccc_added; -static struct bt_gatt_ccc_cfg ccc_cfg[BT_GATT_CCC_MAX] = {}; static u8_t ccc_value; static void ccc_cfg_changed(const struct bt_gatt_attr *attr, u16_t value) @@ -471,7 +470,7 @@ static void ccc_cfg_changed(const struct bt_gatt_attr *attr, u16_t value) ccc_value = value; } -static struct bt_gatt_attr ccc = BT_GATT_CCC(ccc_cfg, ccc_cfg_changed); +static struct bt_gatt_attr ccc = BT_GATT_CCC(ccc_cfg_changed); static struct bt_gatt_attr *add_ccc(const struct bt_gatt_attr *attr) {