From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> CCC value is 2 octects long so it needs to be converted using cpu_to_le16 in order to not fail in Big Endian architectures. --- unit/test-vcp.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/unit/test-vcp.c b/unit/test-vcp.c index ea1bc98766dd..2a08dca480b9 100644 --- a/unit/test-vcp.c +++ b/unit/test-vcp.c @@ -130,18 +130,10 @@ static void gatt_notify_cb(struct gatt_db_attribute *attrib, struct bt_att *att, void *user_data) { struct test_data *data = user_data; - struct notify notify; - - memset(¬ify, 0, sizeof(notify)); - - notify.handle = gatt_db_attribute_get_handle(attrib); - notify.ccc_handle = gatt_db_attribute_get_handle(ccc); - notify.value = (void *) value; - notify.len = len; + uint16_t handle = gatt_db_attribute_get_handle(attrib); if (!bt_gatt_server_send_notification(data->server, - notify.handle, notify.value, - notify.len, false)) + handle, value, len, false)) printf("%s: Failed to send notification\n", __func__); } @@ -154,8 +146,7 @@ static void gatt_ccc_read_cb(struct gatt_db_attribute *attrib, struct ccc_state *ccc; uint16_t handle; uint8_t ecode = 0; - const uint8_t *value = NULL; - size_t len = 0; + uint16_t value = 0; handle = gatt_db_attribute_get_handle(attrib); @@ -165,11 +156,11 @@ static void gatt_ccc_read_cb(struct gatt_db_attribute *attrib, goto done; } - len = sizeof(ccc->value); - value = (void *) &ccc->value; + value = cpu_to_le16(ccc->value); done: - gatt_db_attribute_read_result(attrib, id, ecode, value, len); + gatt_db_attribute_read_result(attrib, id, ecode, (void *)&value, + sizeof(value)); } static void test_server(const void *user_data) -- 2.43.0