From patchwork Mon Apr 7 20:01:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 878770 Received: from mail-vk1-f182.google.com (mail-vk1-f182.google.com [209.85.221.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DB2191EE032 for ; Mon, 7 Apr 2025 20:01:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056095; cv=none; b=JvhrbnwG8WmtDBQzHmzzaqcJZsLHSL8O7OujpNWjRPcu0P6anM8qo6yCBaMpgROZraeH5KwnV07lTPA2Vn0B2IFvN3JIK1pwpHx7OAbhDu30oepBIs5fK4PT5nqb9b7Z+RR0rbOj5Y+69TXdkMlQPHe5Jha88KDMxFjF9Xrti5I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056095; c=relaxed/simple; bh=+ZvmQNa5yIl86i4EQl9vxmXMU/IuzIO5hvKbXs7M2Bc=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=f/PSFOezaij9nBEHKPUsIgN9GzvqlECpbwy5ndRWDWbRxK0G+DH+Mkhi2Q+WvV+NuBrx8LKp6xefP/Y/x5yxzs/p/ddvITNwnWYMHuo+iKwYJZs0p7+QC9UbNo0nfwdjSY9+zF8sultPMZZJ3am8aDoRw+qU4JZGZ9dIfw7vZig= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ali07jx6; arc=none smtp.client-ip=209.85.221.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ali07jx6" Received: by mail-vk1-f182.google.com with SMTP id 71dfb90a1353d-51eb18130f9so2559368e0c.3 for ; Mon, 07 Apr 2025 13:01:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744056090; x=1744660890; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=xd6U/z0kBI9dOurDIgmF95BXv3OdYTfiJ7bE4h6+gGM=; b=ali07jx6D5xTv8+soICMp9vZOsGcYXj6XE6zO3syl3rIz/hl//eoyavQlaDQx37Gbw SEXXViTQcdDOpEFZzsqyiv/v2BYu0il85SHNTvKoC1HupFf3csNEo0HZaznOPsMC4l5v QtQ55FQJUz9wEEuUNSX+SNPgsiu3cqUxdLMyJqI0jRat7YFdGtvZ1O4VGdTDEpKWXUW7 AW3lMNJF6dQwtsVLLx6GkCu9WKEsKJkz8pKc61yB/XuroZVn+NN/WrO3qxoFVqBSmQ/i 3RhNefFZ6vmJj2YaT+QaQDNjOnZVy97k5LuqBEsDHtlrNmf9qCIMUPh6IiUqyrMqWD2F L6Sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744056090; x=1744660890; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xd6U/z0kBI9dOurDIgmF95BXv3OdYTfiJ7bE4h6+gGM=; b=oVoPX/9zTYoWtoAVcDu3YFUl27B34OxyKIIoxF1Ja2OyD69hy0gEOkzTX1fJ8X5Wmx n5QgxmbI2JCJ0E6vry+VqNeK2cRX4oqtj+45CpD6Vsdy7KHdeWd8If06ffZle4CY6YGr T777MfMG46zyvQLX3W1VO4HjcKEy0B5TL1TdmaQxtbjDq8YP5OBXQ9wF6Oze34cLiXiJ 8vVrJ+L3Q2HelP7vuUWLXPixN4IAXJNPgFOcnWNPqAzytWI2mDFEVWWo6aF6GXXq2oDd XCbUIq8FC/TJdP/WXGtDdVjfYmf9Af24teOmHv2g0Vh7YajfcruuEA2nd3Vqpk3lozBG qUVw== X-Gm-Message-State: AOJu0Yz+I3MT7uVo/BhfEXSCSbTk4FXRDHMU3NoMqyKlLE4hcZf2vZ4c KRFRkb/hhlIsFZReCQ/GurPJow5ptJRmlvHVtQfWReuDMfJQM00L/lMbsL1x X-Gm-Gg: ASbGnctFcKC3oDXxeeqdP92byMzlWCK8VOPG9AuzxOtDr1cNBVzXmvFtWmiKCUn6Ej3 ulkPoldnYE0QkLAeKs+IBTcUIZV20wUPUQRb2NQmRNN5bxeHu/VoiTv3ejxkdUwoXxyW9j5GVDK M+4hGLiNJALWOsJaCemuUWlWMQbbtGWfLDy6F5wUWA3k4GHu69crBxlPqXf/GXp8l+tbsZLTZ0q 7WXK24a+8gnhu6y7fNsBi2sF8pYDiQizGlr0HgbNKGyP/WZj4qFB83LosGsjxUUix9uV3v2bnRl UFCfWW8gagWSAz99q19zRhlC03UkKSo1s7E3h2gUNE5r42jXVt88ip+n1GbzSesG4Fl82xw4Hsu U8FxQ7EQWnRkZHg== X-Google-Smtp-Source: AGHT+IESlhGlIEzvlB25MqCPaihOrGZi8cU6biX11VwXsUqt7giPE42pSsxuqF8BpLBZ1e4Z5OvmyA== X-Received: by 2002:a05:6122:a09:b0:520:42d3:91c1 with SMTP id 71dfb90a1353d-527645a5e5dmr10168368e0c.10.1744056090325; Mon, 07 Apr 2025 13:01:30 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-5279b691f07sm69140e0c.41.2025.04.07.13.01.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 13:01:28 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 01/15] test-bap: Introduce DISC tests for LC3 Date: Mon, 7 Apr 2025 16:01:07 -0400 Message-ID: <20250407200124.881534-2-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250407200124.881534-1-luiz.dentz@gmail.com> References: <20250407200124.881534-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz 4.7.2 Unicast Server – Audio Capability Exposure (Page 32): Test Purpose Verify that a Unicast Server IUT can allow audio capability discovery with an Audio Sink reading the values of the Sink PAC characteristic and the Sink Audio Locations characteristic on the IUT, or with an Audio Source reading the values of the Source PAC characteristic and the Source Audio Locations characteristic on the IUT. Test Summary ------------ BAP/USR/DISC/BV-01-C Passed BAP/USR/DISC/BV-02-C Passed BAP/USR/DISC/BV-06-C Passed BAP/USR/DISC/BV-07-C Passed BAP/USR/DISC/BV-03-C Passed BAP/USR/DISC/BV-04-C Passed BAP/USR/DISC/BV-05-C Passed Total: 7, Passed: 7 (100.0%), Failed: 0, Not Run: 0 --- src/shared/lc3.h | 2 +- unit/test-bap.c | 347 ++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 299 insertions(+), 50 deletions(-) diff --git a/src/shared/lc3.h b/src/shared/lc3.h index e7a9277ec349..a6f65eedecc5 100644 --- a/src/shared/lc3.h +++ b/src/shared/lc3.h @@ -48,7 +48,7 @@ #define LC3_FRAME_COUNT (LC3_TYPE_BASE + 4) #define LC3_CAPABILITIES(_freq, _duration, _chan_count, _len_min, _len_max) \ - UTIL_IOV_INIT(0x02, LC3_FREQ, _freq, _freq >> 8, \ + UTIL_IOV_INIT(0x03, LC3_FREQ, _freq, _freq >> 8, \ 0x02, LC3_DURATION, _duration, \ 0x02, LC3_CHAN_COUNT, _chan_count, \ 0x05, LC3_FRAME_LEN, _len_min, _len_min >> 8, \ diff --git a/unit/test-bap.c b/unit/test-bap.c index 0c190d7fe15a..cabb9b296ee2 100644 --- a/unit/test-bap.c +++ b/unit/test-bap.c @@ -30,6 +30,7 @@ #include "src/shared/att.h" #include "src/shared/gatt-db.h" #include "src/shared/gatt-client.h" +#include "src/shared/gatt-server.h" #include "src/shared/bap.h" #include "src/shared/lc3.h" @@ -48,12 +49,16 @@ struct test_config { struct test_data { struct bt_gatt_client *client; + struct bt_gatt_server *server; struct gatt_db *db; + struct queue *ccc_states; struct bt_bap *bap; + unsigned int id; struct bt_bap_pac *snk; struct bt_bap_pac *src; struct bt_bap_pac *bsrc; struct bt_bap_pac *bsnk; + struct bt_bap_pac_qos *qos; struct iovec *base; struct iovec *caps; struct test_config *cfg; @@ -62,6 +67,19 @@ struct test_data { struct iovec *iov; }; +struct notify { + uint16_t handle, ccc_handle; + uint8_t *value; + uint16_t len; + bt_gatt_server_conf_func_t conf; + void *user_data; +}; + +struct ccc_state { + uint16_t handle; + uint16_t value; +}; + /* * Frequencies: 8Khz 11Khz 16Khz 22Khz 24Khz 32Khz 44.1Khz 48Khz * Duration: 7.5 ms 10 ms @@ -71,6 +89,12 @@ struct test_data { static struct iovec lc3_caps = LC3_CAPABILITIES(LC3_FREQ_ANY, LC3_DURATION_ANY, 3u, 26, 240); +static struct bt_bap_pac_qos lc3_qos = { + .location = 0x00000003, + .supported_context = 0x0fff, + .context = 0x0fff +}; + #define iov_data(args...) ((const struct iovec[]) { args }) #define define_test(name, setup, function, _cfg, args...) \ @@ -78,6 +102,7 @@ static struct iovec lc3_caps = LC3_CAPABILITIES(LC3_FREQ_ANY, LC3_DURATION_ANY, const struct iovec iov[] = { args }; \ static struct test_data data; \ data.caps = &lc3_caps; \ + data.qos = &lc3_qos; \ data.cfg = _cfg; \ data.iovcnt = ARRAY_SIZE(iov_data(args)); \ data.iov = util_iov_dup(iov, ARRAY_SIZE(iov_data(args))); \ @@ -284,7 +309,7 @@ static const struct iovec setup_data[] = { * Handle: 0x0022 * Error: Attribute Not Found (0x0a) */ - IOV_DATA(0x01, 0x08, 0x23, 0x00, 0x0a), + IOV_DATA(0x01, 0x08, 0x22, 0x00, 0x0a), /* ACL Data TX: Handle 42 flags 0x00 dlen 11 * ATT: Read By Type Request (0x08) len 6 * Handle range: 0x0001-0xffff @@ -338,6 +363,172 @@ static void test_setup(const void *user_data) gatt_db_unref(db); } +static bool ccc_state_match(const void *a, const void *b) +{ + const struct ccc_state *ccc = a; + uint16_t handle = PTR_TO_UINT(b); + + return ccc->handle == handle; +} + +static struct ccc_state *find_ccc_state(struct test_data *data, + uint16_t handle) +{ + return queue_find(data->ccc_states, ccc_state_match, + UINT_TO_PTR(handle)); +} + +static struct ccc_state *get_ccc_state(struct test_data *data, + uint16_t handle) +{ + struct ccc_state *ccc; + + ccc = find_ccc_state(data, handle); + if (ccc) + return ccc; + + ccc = new0(struct ccc_state, 1); + ccc->handle = handle; + queue_push_tail(data->ccc_states, ccc); + + return ccc; +} + +static void gatt_notify_cb(struct gatt_db_attribute *attrib, + struct gatt_db_attribute *ccc, + const uint8_t *value, size_t len, + struct bt_att *att, void *user_data) +{ + struct test_data *data = user_data; + uint16_t handle = gatt_db_attribute_get_handle(attrib); + + if (!data->server) + return; + + if (!bt_gatt_server_send_notification(data->server, + handle, value, len, false)) + printf("%s: Failed to send notification\n", __func__); +} + +static void gatt_ccc_read_cb(struct gatt_db_attribute *attrib, + unsigned int id, uint16_t offest, + uint8_t opcode, struct bt_att *att, + void *user_data) +{ + struct test_data *data = user_data; + struct ccc_state *ccc; + uint16_t handle; + uint8_t ecode = 0; + uint16_t value = 0; + + handle = gatt_db_attribute_get_handle(attrib); + + ccc = get_ccc_state(data, handle); + if (!ccc) { + ecode = BT_ATT_ERROR_UNLIKELY; + goto done; + } + + value = cpu_to_le16(ccc->value); + +done: + gatt_db_attribute_read_result(attrib, id, ecode, (void *)&value, + sizeof(value)); +} + +static void test_setup_pacs(struct test_data *data) +{ + if (!data->cfg) + return; + + if (data->cfg->src) { + if (data->cfg->vs) + data->snk = bt_bap_add_vendor_pac(data->db, + "test-bap-snk", + BT_BAP_SINK, 0x0ff, + 0x0001, 0x0001, + NULL, data->caps, NULL); + else + data->snk = bt_bap_add_pac(data->db, "test-bap-snk", + BT_BAP_SINK, LC3_ID, + NULL, data->caps, NULL); + g_assert(data->snk); + } + + if (data->cfg->snk) { + if (data->cfg->vs) + data->src = bt_bap_add_vendor_pac(data->db, + "test-bap-src", + BT_BAP_SOURCE, 0x0ff, + 0x0001, 0x0001, + NULL, data->caps, NULL); + else + data->src = bt_bap_add_pac(data->db, "test-bap-src", + BT_BAP_SOURCE, LC3_ID, + NULL, data->caps, NULL); + g_assert(data->src); + } +} + +static void setup_complete_cb(const void *user_data) +{ + tester_setup_complete(); +} + +static void test_setup_server(const void *user_data) +{ + struct test_data *data = (void *)user_data; + struct bt_att *att; + struct gatt_db *db; + struct io *io; + + io = tester_setup_io(setup_data, ARRAY_SIZE(setup_data)); + g_assert(io); + + tester_io_set_complete_func(setup_complete_cb); + + db = gatt_db_new(); + g_assert(db); + + gatt_db_ccc_register(db, gatt_ccc_read_cb, NULL, gatt_notify_cb, data); + + data->ccc_states = queue_new(); + + /* If there is no configuration, add a sink PAC since otherwise bt_bap + * won't even register the required services. + */ + if (!data->cfg) { + data->snk = bt_bap_add_pac(db, "test-bap-snk", + BT_BAP_SINK, LC3_ID, + data->qos, data->caps, + NULL); + data->src = bt_bap_add_pac(db, "test-bap-src", + BT_BAP_SOURCE, LC3_ID, + data->qos, data->caps, + NULL); + g_assert(data->snk); + g_assert(data->src); + } else { + test_setup_pacs(data); + } + + att = bt_att_new(io_get_fd(io), false); + g_assert(att); + + bt_att_set_debug(att, BT_ATT_DEBUG, print_debug, "bt_att:", NULL); + + data->server = bt_gatt_server_new(db, att, 64, 0); + g_assert(data->server); + + bt_gatt_server_set_debug(data->server, print_debug, "bt_gatt_server:", + NULL); + + tester_io_send(); + + bt_att_unref(att); + gatt_db_unref(db); +} + static void test_complete_cb(const void *user_data) { tester_test_passed(); @@ -455,40 +646,6 @@ static void bap_ready(struct bt_bap *bap, void *user_data) bt_bap_foreach_pac(bap, BT_BAP_SOURCE, pac_found, user_data); } -static void test_client_config(struct test_data *data) -{ - if (!data->cfg) - return; - - if (data->cfg->src) { - if (data->cfg->vs) - data->snk = bt_bap_add_vendor_pac(data->db, - "test-bap-snk", - BT_BAP_SINK, 0x0ff, - 0x0001, 0x0001, - NULL, data->caps, NULL); - else - data->snk = bt_bap_add_pac(data->db, "test-bap-snk", - BT_BAP_SINK, LC3_ID, - NULL, data->caps, NULL); - g_assert(data->snk); - } - - if (data->cfg->snk) { - if (data->cfg->vs) - data->src = bt_bap_add_vendor_pac(data->db, - "test-bap-src", - BT_BAP_SOURCE, 0x0ff, - 0x0001, 0x0001, - NULL, data->caps, NULL); - else - data->src = bt_bap_add_pac(data->db, "test-bap-src", - BT_BAP_SOURCE, LC3_ID, - NULL, data->caps, NULL); - g_assert(data->src); - } -} - static void test_client(const void *user_data) { struct test_data *data = (void *)user_data; @@ -502,7 +659,7 @@ static void test_client(const void *user_data) data->db = gatt_db_new(); g_assert(data->db); - test_client_config(data); + test_setup_pacs(data); data->bap = bt_bap_new(data->db, bt_gatt_client_get_db(data->client)); g_assert(data->bap); @@ -697,6 +854,7 @@ static void test_teardown(const void *user_data) { struct test_data *data = (void *)user_data; + bt_bap_unregister(data->id); bt_bap_unref(data->bap); bt_gatt_client_unref(data->client); util_iov_free(data->iov, data->iovcnt); @@ -708,6 +866,8 @@ static void test_teardown(const void *user_data) bt_bap_remove_pac(data->bsrc); bt_bap_remove_pac(data->bsnk); gatt_db_unref(data->db); + bt_gatt_server_unref(data->server); + data->server = NULL; queue_destroy(data->streams, NULL); @@ -741,7 +901,7 @@ static void test_teardown(const void *user_data) * 1 channel (0x01) * 2 channels (0x02) * Codec Specific Capabilities #3: len 0x05 type 0x04 - * Frame Length: 30 (0x001e) - 240 (0x00f0) + * Frame Length: 26 (0x001a) - 240 (0x00f0) * ATT: Read Request (0x0a) len 2 * Handle: 0x0006 Type: Sink Audio Location (0x2bca) * ATT: Read Response (0x0b) len 4 @@ -760,7 +920,7 @@ static void test_teardown(const void *user_data) #define DISC_SNK_LC3 \ DISC_SNK_PAC(0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x03, 0x01, \ 0xff, 0x00, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x05, 0x04, \ - 0x1e, 0x00, 0xf0, 0x00, 0x00) + 0x1a, 0x00, 0xf0, 0x00, 0x00) /* ATT: Read Request (0x0a) len 2 * Handle: 0x0009 Type: Source PAC (0x2bcb) @@ -789,7 +949,7 @@ static void test_teardown(const void *user_data) * 1 channel (0x01) * 2 channels (0x02) * Codec Specific Capabilities #3: len 0x05 type 0x04 - * Frame Length: 30 (0x001e) - 240 (0x00f0) + * Frame Length: 26 (0x001e) - 240 (0x00f0) * ATT: Read Request (0x0a) len 2 * Handle: 0x000c Type: Source Audio Location (0x2bcc) * ATT: Read Response (0x0b) len 4 @@ -809,39 +969,39 @@ static void test_teardown(const void *user_data) #define DISC_SRC_LC3 \ DISC_SRC_PAC(0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x03, 0x01, \ 0xff, 0x00, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x05, 0x04, \ - 0x1e, 0x00, 0xf0, 0x00, 0x00) + 0x1a, 0x00, 0xf0, 0x00, 0x00) /* ATT: Read Request (0x0a) len 2 * Handle: 0x000f Type: Available Audio Contexts (0x2bcd) * ATT: Read Response (0x0b) len 4 - * Value: ff0f0e00 + * Value: ff0fff0f * Handle: 0x000f Type: Available Audio Contexts (0x2bcd) */ #define DISC_CTX(_caps...) \ DISC_SRC_PAC(_caps), \ IOV_DATA(0x0a, 0x0f, 0x00), \ - IOV_DATA(0x0b, 0xff, 0x0f, 0x0e, 0x00) + IOV_DATA(0x0b, 0xff, 0x0f, 0xff, 0x0f) #define DISC_CTX_LC3 \ DISC_CTX(0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x03, 0x01, \ 0xff, 0x00, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x05, 0x04, \ - 0x1e, 0x00, 0xf0, 0x00, 0x00) + 0x1a, 0x00, 0xf0, 0x00, 0x00) /* ATT: Read Request (0x0a) len 2 * Handle: 0x0012 Type: Supported Audio Contexts (0x2bce) * ATT: Read Response (0x0b) len 4 - * Value: ff0f0e00 + * Value: ff0fff0f * Handle: 0x0012 Type: Supported Audio Contexts (0x2bce) */ #define DISC_SUP_CTX(_caps...) \ DISC_CTX(_caps), \ IOV_DATA(0x0a, 0x12, 0x00), \ - IOV_DATA(0x0b, 0xff, 0x0f, 0x0e, 0x00) + IOV_DATA(0x0b, 0xff, 0x0f, 0xff, 0x0f) #define DISC_SUP_CTX_LC3 \ DISC_SUP_CTX(0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x03, 0x01, \ 0xff, 0x00, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x05, 0x04, \ - 0x1e, 0x00, 0xf0, 0x00, 0x00) + 0x1a, 0x00, 0xf0, 0x00, 0x00) /* ATT: Read Request (0x0a) len 2 * Handle: 0x0016 Type: Sink ASE (0x2bc4) @@ -878,7 +1038,7 @@ static void test_teardown(const void *user_data) #define DISC_SNK_ASE_LC3 \ DISC_SNK_ASE(0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x03, 0x01, \ 0xff, 0x00, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x05, 0x04, \ - 0x1e, 0x00, 0xf0, 0x00, 0x00) + 0x1a, 0x00, 0xf0, 0x00, 0x00) /* ATT: Read Request (0x0a) len 2 * Handle: 0x001c Type: Source ASE (0x2bc5) @@ -922,9 +1082,13 @@ static void test_teardown(const void *user_data) #define DISC_SRC_ASE_LC3 \ DISC_SRC_ASE(0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x03, 0x01, \ 0xff, 0x00, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x05, 0x04, \ - 0x1e, 0x00, 0xf0, 0x00, 0x00) + 0x1a, 0x00, 0xf0, 0x00, 0x00) -static void test_disc(void) +#define DISC_ASE_LC3 \ + DISC_SNK_ASE_LC3, \ + DISC_SRC_ASE_LC3 + +static void test_ucl_disc(void) { /* The IUT discovers the characteristics specified in the PAC * Characteristic and Location Characteristic columns in Table 4.4. @@ -964,6 +1128,91 @@ static void test_disc(void) DISC_SRC_ASE_LC3); } +static void bap_attached(struct bt_bap *bap, void *user_data) +{ + struct test_data *data = (void *)user_data; + + if (tester_use_debug()) + tester_debug("bap %p session attached", bap); + + data->bap = bap; + + bt_bap_set_debug(data->bap, print_debug, "bt_bap:", NULL); + + if (data->cfg && data->cfg->state_func) + bt_bap_state_register(data->bap, data->cfg->state_func, NULL, + data, NULL); +} + +static void test_server(const void *user_data) +{ + struct test_data *data = (void *)user_data; + struct io *io; + + io = tester_setup_io(data->iov, data->iovcnt); + g_assert(io); + + tester_io_set_complete_func(test_complete_cb); + + test_setup_pacs(data); + + data->id = bt_bap_register(bap_attached, NULL, data); + g_assert(data->id); + + tester_io_send(); +} + +static void test_usr_disc(void) +{ + /* BAP/USR/DISC/BV-01-C [Expose Audio Sink Capabilities] + * BAP/USR/DISC/BV-02-C [Expose Audio Source Capabilities] + * + * The specified PAC Characteristic and the Location Characteristic, + * if supported, are read on the IUT. + */ + define_test("BAP/USR/DISC/BV-01-C", test_setup_server, test_server, + NULL, DISC_SNK_LC3); + define_test("BAP/USR/DISC/BV-02-C", test_setup_server, test_server, + NULL, DISC_SRC_LC3); + + /* BAP/UCL/DISC/BV-06-C [Discover Available Audio Contexts] + * + * The IUT successfully reads the value of the Available Audio Contexts + * characteristic on the Lower Tester. + */ + define_test("BAP/USR/DISC/BV-06-C", test_setup_server, test_server, + NULL, DISC_CTX_LC3); + + /* BAP/USR/DISC/BV-07-C [Expose Supported Audio Contexts] + * + * The IUT successfully returns the value of its Supported Audio + * Contexts characteristic when read by the Lower Tester. + */ + define_test("BAP/USR/DISC/BV-07-C", test_setup_server, test_server, + NULL, DISC_SUP_CTX_LC3); + + /* BAP/USR/DISC/BV-03-C [Expose Sink ASE_ID] + * BAP/USR/DISC/BV-04-C [Expose Source ASE_ID] + * BAP/USR/DISC/BV-05-C [Expose Sink and Source ASE_ID] + * + * The IUT successfully returns the values of each ASE characteristic + * read by the Lower Tester. The value of the ASE_ID field is unique + * for each ASE characteristic. + */ + define_test("BAP/USR/DISC/BV-03-C", test_setup_server, test_server, + NULL, DISC_SNK_ASE_LC3); + define_test("BAP/USR/DISC/BV-04-C", test_setup_server, test_server, + NULL, DISC_SRC_ASE_LC3); + define_test("BAP/USR/DISC/BV-05-C", test_setup_server, test_server, + NULL, DISC_ASE_LC3); +} + +static void test_disc(void) +{ + test_ucl_disc(); + test_usr_disc(); +} + /* ATT: Write Command (0x52) len 23 * Handle: 0x0022 * Data: 0101010202_cfg From patchwork Mon Apr 7 20:01:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 879799 Received: from mail-vk1-f174.google.com (mail-vk1-f174.google.com [209.85.221.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0BAAF21C16B for ; Mon, 7 Apr 2025 20:01:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056097; cv=none; b=mGOEGg8AvTMk4CZO/pCjg+rPowYPlsSXpIYhSNfS/uYsQDAtVPC0fPbdV2FAVhJ6u2IESR/A2bj/aaxDLBKiph+OfngbpYdv7traWqtsSldbpafE+I/a+SXjd8emup9J2Wo2LssdStdiGFcm7Da2O0jZyTKHWvA+YLCizJGyGHM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056097; c=relaxed/simple; bh=lV9Er+Su+VuJRn8I3P/Z5RcbhKDljCbZ7qikSHJHQD8=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=UApe7QEBYFrY+AZXijVjLCIbAzuY6ZFYXKLjprcoqVp52JUxwlPPeDuxgglJ3KID57z0l1hhuERCwin2P7ZjAeCqpvAxYG5NoHN45UdlctZwb5nhBKhDmQ6K9wUgVRg/8gdbTZemjwjgxcsqFv0OnPYXE4JyZY+9g4uLyn5BZDw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=dZKoR+14; arc=none smtp.client-ip=209.85.221.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dZKoR+14" Received: by mail-vk1-f174.google.com with SMTP id 71dfb90a1353d-523dc190f95so2339065e0c.1 for ; Mon, 07 Apr 2025 13:01:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744056093; x=1744660893; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=oH5zIz3fH+HzePqUrVUnHeTuTck/L6WwKXLj9XMwPLs=; b=dZKoR+143krivt61Y1TITdhFA4SLA5ykJnvcwS1ymaZbva9F575Vxn0K/96JjNAmt4 +8FvlekwlyUxOgg77p7AxWbFBCy95DnfMjDH8MF7lmLxTB2tNkBunVusuA8bi6x9gBX3 CXQoLgvaWuk98nkK1jdbnb2o50GqcutH3ppghdXpjKwg1vCb170C+6OqkUCZug1SUYDp 1YSjZHVzlv09qF00H2Zgj7aCDTRvAi9ffPQ/gMrK4Bq6Gpo8+8oiFlr+FIaSDWMbRn1W gxxcR3IN10/GZSuB6o5cXh99ytU/+RQABiRAzVC6QT5cEncZ3+gpFrl2dwpYdnMnnn88 05Ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744056093; x=1744660893; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oH5zIz3fH+HzePqUrVUnHeTuTck/L6WwKXLj9XMwPLs=; b=cQ/Cj7RncoSqYIKamfO3ZknLSIt1j4NKZiZsR/SS8AyPY1rcYx/XyLKreuOJBWEzr8 iP776WPEOz2XnAl5p/Qqyh2g8pIxeHjGmSFBJPm/tEho9GRmdopz6TbgosnD8tsC6QXY PhB2kcp2NOLhfvTHbVpjgCbmiavHmtWpsQdp6FvtY3uVbIoNYiHTATKOd+PQ7+DkYYS9 3B5efiwC/AcLn53Qpch1dQDrj9bEIiuF/jKXnvznnW8YT38juof65DrwG9pdxvH+f7I7 Uvcn0fxnm+bLjf58DIwl7hb8A8GmWagbvnXtTcWDOpzhMdirMVcVfdMSXngkOJbEYywT PZ/Q== X-Gm-Message-State: AOJu0YyTRjLCX94fFrqPWvLbTLLUlJoA5gRdrUgg3RwcLxs+9KCJ/YWw 3i1ztUGtU4/Yt2CwcITjaRAZLvHNqoQiI7ozO/Yo+5cxdvjMCKSsJOlweyY4 X-Gm-Gg: ASbGncuAXN8vqAEWzBwLGNP7TcBeIPdDJedXx/Ff9WHiBi8XgUs8E+vt9taNoqQKx8g 8d0yu/Rm+9IASYcpl4rwEBfnJYPSey76cNhI6Udcckzs4wEP/mIM0W20rzYlw9WwPvLRweV4yM8 ANzWa7k3aYnox7E7e10eoayb5jrg8NMLZwGFEAGn2wNj3+whQvsPzet5iz6qXuFlajfrGuA3bIg 5f2SUMVu+YhY6pYDbf8mdo4oqsdi8dz+Hs1ChlLfGcAIiHZPxkpj2HCC8ialwM1ATDyUVxQqo54 mFsaQ7xJQmnmTyPTfNYHXcFnlxzr40AqVI0euTJItB6EHwcpQ3xxoJl/lSjI3faHdQBDwhUPdu1 E2Nt5cumRlBV4lg== X-Google-Smtp-Source: AGHT+IFHfHC3de5HKBPKDXuPvwHUw3rJHNk72kbnIiGpdZuu3UN4J8ejejQAd5hSmeKRVs/LmHRAKw== X-Received: by 2002:a05:6122:16a6:b0:520:4539:4b4c with SMTP id 71dfb90a1353d-527730d8095mr7413302e0c.9.1744056092696; Mon, 07 Apr 2025 13:01:32 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-5279b691f07sm69140e0c.41.2025.04.07.13.01.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 13:01:31 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 02/15] test-bap: Introduce USR/SCC tests for LC3 Date: Mon, 7 Apr 2025 16:01:08 -0400 Message-ID: <20250407200124.881534-3-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250407200124.881534-1-luiz.dentz@gmail.com> References: <20250407200124.881534-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz 4.9.1 Unicast Server as Audio Sink Performs Config Codec – LC3 Test Purpose: Verify that a Unicast Server Audio Sink IUT can perform a Config Codec operation initiated by a Unicast Client for an ASE in the Idle state, the Codec Configured state. Pass Veridict: The IUT sends a Response_Code of 0x00 (Success) in response to each Config Codec operation. 4.9.2 Unicast Server as Audio Source Performs Config Codec – LC3 Test Purpose: Verify that a Unicast Server Audio Source IUT can perform a Config Codec operation initiated by a Unicast Client for an ASE in the Idle state, the Codec Configured state. Pass verdict: The IUT sends a Response_Code of 0x00 (Success) in response to each Config Codec operation. Test Summary ------------ BAP/USR/SCC/BV-001-C [USR SNK Config Codec, LC3 8_1] Passed BAP/USR/SCC/BV-002-C [USR SNK Config Codec, LC3 8_2] Passed BAP/USR/SCC/BV-003-C [USR SNK Config Codec, LC3 16_1] Passed BAP/USR/SCC/BV-004-C [USR SNK Config Codec, LC3 16_2] Passed BAP/USR/SCC/BV-005-C [USR SNK Config Codec, LC3 24_1] Passed BAP/USR/SCC/BV-006-C [USR SNK Config Codec, LC3 24_2] Passed BAP/USR/SCC/BV-007-C [USR SNK Config Codec, LC3 32_1] Passed BAP/USR/SCC/BV-008-C [USR SNK Config Codec, LC3 32_2] Passed BAP/USR/SCC/BV-009-C [USR SNK Config Codec, LC3 44.1_1] Passed BAP/USR/SCC/BV-010-C [USR SNK Config Codec, LC3 44.1_2] Passed BAP/USR/SCC/BV-011-C [USR SNK Config Codec, LC3 48_1] Passed BAP/USR/SCC/BV-012-C [USR SNK Config Codec, LC3 48_2] Passed BAP/USR/SCC/BV-013-C [USR SNK Config Codec, LC3 48_3] Passed BAP/USR/SCC/BV-014-C [USR SNK Config Codec, LC3 48_4] Passed BAP/USR/SCC/BV-015-C [USR SNK Config Codec, LC3 48_5] Passed BAP/USR/SCC/BV-016-C [USR SNK Config Codec, LC3 48_6] Passed BAP/USR/SCC/BV-017-C [USR SRC Config Codec, LC3 8_1] Passed BAP/USR/SCC/BV-018-C [USR SRC Config Codec, LC3 8_2] Passed BAP/USR/SCC/BV-019-C [USR SRC Config Codec, LC3 16_1] Passed BAP/USR/SCC/BV-020-C [USR SRC Config Codec, LC3 16_2] Passed BAP/USR/SCC/BV-021-C [USR SRC Config Codec, LC3 24_1] Passed BAP/USR/SCC/BV-022-C [USR SRC Config Codec, LC3 24_2] Passed BAP/USR/SCC/BV-023-C [USR SRC Config Codec, LC3 32_1] Passed BAP/USR/SCC/BV-024-C [USR SRC Config Codec, LC3 32_2] Passed BAP/USR/SCC/BV-025-C [USR SRC Config Codec, LC3 44.1_1] Passed BAP/USR/SCC/BV-026-C [USR SRC Config Codec, LC3 44.1_2] Passed BAP/USR/SCC/BV-027-C [USR SRC Config Codec, LC3 48_1] Passed BAP/USR/SCC/BV-028-C [USR SRC Config Codec, LC3 48_2] Passed BAP/USR/SCC/BV-029-C [USR SRC Config Codec, LC3 48_3] Passed BAP/USR/SCC/BV-030-C [USR SRC Config Codec, LC3 48_4] Passed BAP/USR/SCC/BV-031-C [USR SRC Config Codec, LC3 48_5] Passed BAP/USR/SCC/BV-032-C [USR SRC Config Codec, LC3 48_6] Passed Total: 32, Passed: 32 (100.0%), Failed: 0, Not Run: 0 --- unit/test-bap.c | 234 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 202 insertions(+), 32 deletions(-) diff --git a/unit/test-bap.c b/unit/test-bap.c index cabb9b296ee2..dc199f4871e1 100644 --- a/unit/test-bap.c +++ b/unit/test-bap.c @@ -90,9 +90,11 @@ static struct iovec lc3_caps = LC3_CAPABILITIES(LC3_FREQ_ANY, LC3_DURATION_ANY, 3u, 26, 240); static struct bt_bap_pac_qos lc3_qos = { + .phy = 0x02, + .rtn = 0x01, .location = 0x00000003, .supported_context = 0x0fff, - .context = 0x0fff + .context = 0x0fff, }; #define iov_data(args...) ((const struct iovec[]) { args }) @@ -402,12 +404,18 @@ static void gatt_notify_cb(struct gatt_db_attribute *attrib, struct test_data *data = user_data; uint16_t handle = gatt_db_attribute_get_handle(attrib); - if (!data->server) + if (tester_use_debug()) + tester_debug("handle 0x%04x len %zd", handle, len); + + if (!data->server) { + if (tester_use_debug()) + tester_debug("data->server %p", data->server); return; + } if (!bt_gatt_server_send_notification(data->server, handle, value, len, false)) - printf("%s: Failed to send notification\n", __func__); + tester_debug("%s: Failed to send notification", __func__); } static void gatt_ccc_read_cb(struct gatt_db_attribute *attrib, @@ -475,6 +483,19 @@ static void setup_complete_cb(const void *user_data) tester_setup_complete(); } +static int pac_config(struct bt_bap_stream *stream, struct iovec *cfg, + struct bt_bap_qos *qos, bt_bap_pac_config_t cb, + void *user_data) +{ + cb(stream, 0); + + return 0; +} + +static struct bt_bap_pac_ops ucast_pac_ops = { + .config = pac_config, +}; + static void test_setup_server(const void *user_data) { struct test_data *data = (void *)user_data; @@ -494,23 +515,19 @@ static void test_setup_server(const void *user_data) data->ccc_states = queue_new(); - /* If there is no configuration, add a sink PAC since otherwise bt_bap - * won't even register the required services. - */ - if (!data->cfg) { - data->snk = bt_bap_add_pac(db, "test-bap-snk", - BT_BAP_SINK, LC3_ID, + data->snk = bt_bap_add_pac(db, "test-bap-snk", BT_BAP_SINK, LC3_ID, data->qos, data->caps, NULL); - data->src = bt_bap_add_pac(db, "test-bap-src", - BT_BAP_SOURCE, LC3_ID, + g_assert(data->snk); + + bt_bap_pac_set_ops(data->snk, &ucast_pac_ops, NULL); + + data->src = bt_bap_add_pac(db, "test-bap-src", BT_BAP_SOURCE, LC3_ID, data->qos, data->caps, NULL); - g_assert(data->snk); - g_assert(data->src); - } else { - test_setup_pacs(data); - } + g_assert(data->src); + + bt_bap_pac_set_ops(data->src, &ucast_pac_ops, NULL); att = bt_att_new(io_get_fd(io), false); g_assert(att); @@ -675,15 +692,6 @@ static void test_client(const void *user_data) bt_bap_attach(data->bap, data->client); } -static int pac_config(struct bt_bap_stream *stream, struct iovec *cfg, - struct bt_bap_qos *qos, bt_bap_pac_config_t cb, - void *user_data) -{ - cb(stream, 0); - - return 0; -} - static struct bt_bap_pac_ops bcast_pac_ops = { .config = pac_config, }; @@ -1154,8 +1162,6 @@ static void test_server(const void *user_data) tester_io_set_complete_func(test_complete_cb); - test_setup_pacs(data); - data->id = bt_bap_register(bap_attached, NULL, data); g_assert(data->id); @@ -1221,13 +1227,13 @@ static void test_disc(void) * Data: 0101010000 * ATT: Handle Value Notification (0x1b) len 37 * Handle: 0x0016 - * Data: 01010102010a00204e00409c00204e00409c00_cfg + * Data: 01010002010a00204e00409c00204e00409c00_cfg */ #define SCC_SNK(_cfg...) \ IOV_DATA(0x52, 0x22, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, _cfg), \ IOV_DATA(0x1b, 0x22, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00), \ IOV_NULL, \ - IOV_DATA(0x1b, 0x16, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x0a, 0x00, \ + IOV_DATA(0x1b, 0x16, 0x00, 0x01, 0x01, 0x00, 0x02, 0x01, 0x0a, 0x00, \ 0x20, 0x4e, 0x00, 0x40, 0x9c, 0x00, 0x20, 0x4e, 0x00, \ 0x40, 0x9c, 0x00, _cfg) @@ -1412,13 +1418,13 @@ static struct test_config cfg_snk_48_6 = { * Data: 0101030000 * ATT: Handle Value Notification (0x1b) len 37 * Handle: 0x001c - * Data: 03010102010a00204e00409c00204e00409c00_cfg + * Data: 03010002010a00204e00409c00204e00409c00_cfg */ #define SCC_SRC(_cfg...) \ IOV_DATA(0x52, 0x22, 0x00, 0x01, 0x01, 0x03, 0x02, 0x02, _cfg), \ IOV_DATA(0x1b, 0x22, 0x00, 0x01, 0x01, 0x03, 0x00, 0x00), \ IOV_NULL, \ - IOV_DATA(0x1b, 0x1c, 0x00, 0x03, 0x01, 0x01, 0x02, 0x01, 0x0a, 0x00, \ + IOV_DATA(0x1b, 0x1c, 0x00, 0x03, 0x01, 0x00, 0x02, 0x01, 0x0a, 0x00, \ 0x20, 0x4e, 0x00, 0x40, 0x9c, 0x00, 0x20, 0x4e, 0x00, \ 0x40, 0x9c, 0x00, _cfg) @@ -1600,7 +1606,7 @@ static struct test_config cfg_src_48_6 = { * formatted in an LTV structure with the length, type, and value * specified in Table 4.10. */ -static void test_scc_cc_lc3(void) +static void test_ucl_scc_cc_lc3(void) { define_test("BAP/UCL/SCC/BV-001-C [UCL SRC Config Codec, LC3 8_1]", test_setup, test_client, &cfg_snk_8_1, SCC_SNK_8_1); @@ -1668,6 +1674,170 @@ static void test_scc_cc_lc3(void) test_setup, test_client, &cfg_src_48_6, SCC_SRC_48_6); } + +/* 4.9 Unicast Server Configuration */ +static void test_usr_scc_cc_lc3(void) +{ + /* 4.9.1 Unicast Server as Audio Sink Performs Config Codec – LC3 + * + * Test Purpose: + * Verify that a Unicast Server Audio Sink IUT can perform a Config + * Codec operation initiated by a Unicast Client for an ASE in the Idle + * state, the Codec Configured state. + * + * Pass Veridict: + * The IUT sends a Response_Code of 0x00 (Success) in response to each + * Config Codec operation. + * + * BAP/USR/SCC/BV-001-C [USR SNK Config Codec, LC3 8_1] + * BAP/USR/SCC/BV-002-C [USR SNK Config Codec, LC3 8_2] + * BAP/USR/SCC/BV-003-C [USR SNK Config Codec, LC3 16_1] + * BAP/USR/SCC/BV-004-C [USR SNK Config Codec, LC3 16_2] + * BAP/USR/SCC/BV-005-C [USR SNK Config Codec, LC3 24_1] + * BAP/USR/SCC/BV-006-C [USR SNK Config Codec, LC3 24_2] + * BAP/USR/SCC/BV-007-C [USR SNK Config Codec, LC3 32_1] + * BAP/USR/SCC/BV-008-C [USR SNK Config Codec, LC3 32_2] + * BAP/USR/SCC/BV-009-C [USR SNK Config Codec, LC3 44.1_1] + * BAP/USR/SCC/BV-010-C [USR SNK Config Codec, LC3 44.1_2] + * BAP/USR/SCC/BV-011-C [USR SNK Config Codec, LC3 48_1] + * BAP/USR/SCC/BV-012-C [USR SNK Config Codec, LC3 48_2] + * BAP/USR/SCC/BV-013-C [USR SNK Config Codec, LC3 48_3] + * BAP/USR/SCC/BV-014-C [USR SNK Config Codec, LC3 48_4] + * BAP/USR/SCC/BV-015-C [USR SNK Config Codec, LC3 48_5] + * BAP/USR/SCC/BV-016-C [USR SNK Config Codec, LC3 48_6] + */ + define_test("BAP/USR/SCC/BV-001-C [USR SNK Config Codec, LC3 8_1]", + test_setup_server, test_server, &cfg_snk_8_1, + SCC_SNK_8_1); + define_test("BAP/USR/SCC/BV-002-C [USR SNK Config Codec, LC3 8_2]", + test_setup_server, test_server, &cfg_snk_8_2, + SCC_SNK_8_2); + define_test("BAP/USR/SCC/BV-003-C [USR SNK Config Codec, LC3 16_1]", + test_setup_server, test_server, &cfg_snk_16_1, + SCC_SNK_16_1); + define_test("BAP/USR/SCC/BV-004-C [USR SNK Config Codec, LC3 16_2]", + test_setup_server, test_server, &cfg_snk_16_2, + SCC_SNK_16_2); + define_test("BAP/USR/SCC/BV-005-C [USR SNK Config Codec, LC3 24_1]", + test_setup_server, test_server, &cfg_snk_24_1, + SCC_SNK_24_1); + define_test("BAP/USR/SCC/BV-006-C [USR SNK Config Codec, LC3 24_2]", + test_setup_server, test_server, &cfg_snk_24_2, + SCC_SNK_24_2); + define_test("BAP/USR/SCC/BV-007-C [USR SNK Config Codec, LC3 32_1]", + test_setup_server, test_server, &cfg_snk_32_1, + SCC_SNK_32_1); + define_test("BAP/USR/SCC/BV-008-C [USR SNK Config Codec, LC3 32_2]", + test_setup_server, test_server, &cfg_snk_32_2, + SCC_SNK_32_2); + define_test("BAP/USR/SCC/BV-009-C [USR SNK Config Codec, LC3 44.1_1]", + test_setup_server, test_server, &cfg_snk_44_1, + SCC_SNK_44_1); + define_test("BAP/USR/SCC/BV-010-C [USR SNK Config Codec, LC3 44.1_2]", + test_setup_server, test_server, &cfg_snk_44_2, + SCC_SNK_44_2); + define_test("BAP/USR/SCC/BV-011-C [USR SNK Config Codec, LC3 48_1]", + test_setup_server, test_server, &cfg_snk_48_1, + SCC_SNK_48_1); + define_test("BAP/USR/SCC/BV-012-C [USR SNK Config Codec, LC3 48_2]", + test_setup_server, test_server, &cfg_snk_48_2, + SCC_SNK_48_2); + define_test("BAP/USR/SCC/BV-013-C [USR SNK Config Codec, LC3 48_3]", + test_setup_server, test_server, &cfg_snk_48_3, + SCC_SNK_48_3); + define_test("BAP/USR/SCC/BV-014-C [USR SNK Config Codec, LC3 48_4]", + test_setup_server, test_server, &cfg_snk_48_4, + SCC_SNK_48_4); + define_test("BAP/USR/SCC/BV-015-C [USR SNK Config Codec, LC3 48_5]", + test_setup_server, test_server, &cfg_snk_48_5, + SCC_SNK_48_5); + define_test("BAP/USR/SCC/BV-016-C [USR SNK Config Codec, LC3 48_6]", + test_setup_server, test_server, &cfg_snk_48_6, + SCC_SNK_48_6); + /* 4.9.2 Unicast Server as Audio Source Performs Config Codec – LC3 + * + * Test Purpose + * Verify that a Unicast Server Audio Source IUT can perform a Config + * Codec operation initiated by a Unicast Client for an ASE in the Idle + * state, the Codec Configured state. + * + * Pass verdict + * The IUT sends a Response_Code of 0x00 (Success) in response to each + * Config Codec operation. + * + * BAP/USR/SCC/BV-017-C [USR SRC Config Codec, LC3 8_1] + * BAP/USR/SCC/BV-018-C [USR SRC Config Codec, LC3 8_2] + * BAP/USR/SCC/BV-019-C [USR SRC Config Codec, LC3 16_1] + * BAP/USR/SCC/BV-020-C [USR SRC Config Codec, LC3 16_2] + * BAP/USR/SCC/BV-021-C [USR SRC Config Codec, LC3 24_1] + * BAP/USR/SCC/BV-022-C [USR SRC Config Codec, LC3 24_2] + * BAP/USR/SCC/BV-023-C [USR SRC Config Codec, LC3 32_1] + * BAP/USR/SCC/BV-024-C [USR SRC Config Codec, LC3 32_2] + * BAP/USR/SCC/BV-025-C [USR SRC Config Codec, LC3 44.1_1] + * BAP/USR/SCC/BV-026-C [USR SRC Config Codec, LC3 44.1_2] + * BAP/USR/SCC/BV-027-C [USR SRC Config Codec, LC3 48_1] + * BAP/USR/SCC/BV-028-C [USR SRC Config Codec, LC3 48_2] + * BAP/USR/SCC/BV-029-C [USR SRC Config Codec, LC3 48_3] + * BAP/USR/SCC/BV-030-C [USR SRC Config Codec, LC3 48_4] + * BAP/USR/SCC/BV-031-C [USR SRC Config Codec, LC3 48_5] + * BAP/USR/SCC/BV-032-C [USR SRC Config Codec, LC3 48_6] + */ + define_test("BAP/USR/SCC/BV-017-C [USR SRC Config Codec, LC3 8_1]", + test_setup_server, test_server, &cfg_src_8_1, + SCC_SRC_8_1); + define_test("BAP/USR/SCC/BV-018-C [USR SRC Config Codec, LC3 8_2]", + test_setup_server, test_server, &cfg_src_8_2, + SCC_SRC_8_2); + define_test("BAP/USR/SCC/BV-019-C [USR SRC Config Codec, LC3 16_1]", + test_setup_server, test_server, &cfg_src_16_1, + SCC_SRC_16_1); + define_test("BAP/USR/SCC/BV-020-C [USR SRC Config Codec, LC3 16_2]", + test_setup_server, test_server, &cfg_src_16_2, + SCC_SRC_16_2); + define_test("BAP/USR/SCC/BV-021-C [USR SRC Config Codec, LC3 24_1]", + test_setup_server, test_server, &cfg_src_24_1, + SCC_SRC_24_1); + define_test("BAP/USR/SCC/BV-022-C [USR SRC Config Codec, LC3 24_2]", + test_setup_server, test_server, &cfg_src_24_2, + SCC_SRC_24_2); + define_test("BAP/USR/SCC/BV-023-C [USR SRC Config Codec, LC3 32_1]", + test_setup_server, test_server, &cfg_src_32_1, + SCC_SRC_32_1); + define_test("BAP/USR/SCC/BV-024-C [USR SRC Config Codec, LC3 32_2]", + test_setup_server, test_server, &cfg_src_32_2, + SCC_SRC_32_2); + define_test("BAP/USR/SCC/BV-025-C [USR SRC Config Codec, LC3 44.1_1]", + test_setup_server, test_server, &cfg_src_44_1, + SCC_SRC_44_1); + define_test("BAP/USR/SCC/BV-026-C [USR SRC Config Codec, LC3 44.1_2]", + test_setup_server, test_server, &cfg_src_44_2, + SCC_SRC_44_2); + define_test("BAP/USR/SCC/BV-027-C [USR SRC Config Codec, LC3 48_1]", + test_setup_server, test_server, &cfg_src_48_1, + SCC_SRC_48_1); + define_test("BAP/USR/SCC/BV-028-C [USR SRC Config Codec, LC3 48_2]", + test_setup_server, test_server, &cfg_src_48_2, + SCC_SRC_48_2); + define_test("BAP/USR/SCC/BV-029-C [USR SRC Config Codec, LC3 48_3]", + test_setup_server, test_server, &cfg_src_48_3, + SCC_SRC_48_3); + define_test("BAP/USR/SCC/BV-030-C [USR SRC Config Codec, LC3 48_4]", + test_setup_server, test_server, &cfg_src_48_4, + SCC_SRC_48_4); + define_test("BAP/USR/SCC/BV-031-C [USR SRC Config Codec, LC3 48_5]", + test_setup_server, test_server, &cfg_src_48_5, + SCC_SRC_48_5); + define_test("BAP/USR/SCC/BV-032-C [USR SRC Config Codec, LC3 48_6]", + test_setup_server, test_server, &cfg_src_48_6, + SCC_SRC_48_6); +} + +static void test_scc_cc_lc3(void) +{ + test_ucl_scc_cc_lc3(); + test_usr_scc_cc_lc3(); +} + static struct test_config cfg_snk_vs = { .cc = IOV_NULL, .qos = QOS_UCAST, From patchwork Mon Apr 7 20:01:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 878769 Received: from mail-vk1-f177.google.com (mail-vk1-f177.google.com [209.85.221.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A078D2206B6 for ; Mon, 7 Apr 2025 20:01:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056099; cv=none; b=Rdz2oSa0HOcApyWO7igwJEkKn099qzHwo/XKCkLMGwlojooXVvmCEnxN3L4SbKUPAKjqsgB6Z7cEXNreNoDXzAaOFid891U+HiDORg6NR1ZP744QRqhm9rgaLKhTMtYP0nZZdEzfeKpNFOHjMd6XGFdh0EgKj52lylg/6HXwDHE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056099; c=relaxed/simple; bh=KQ6zjReTABiBm3jtq26ekRlm8NKBE4mxeC93WXb6TPw=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=CxsCBSiYhbWK6IWjh+Ur2+MnKLmYD6yo1QbmabRx+93pGo1K414nekjwXivnST3w0CYOQsABnoVmQriKQ+jYTYH3B6gKvSB1tKCBU6oz755BQjxa0PYynCrapvYDpdAMdfRzPEA9fxeL7xtDVOpaXaceRn4qEHfR7doqm6FvBYI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=UryfL7kn; arc=none smtp.client-ip=209.85.221.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UryfL7kn" Received: by mail-vk1-f177.google.com with SMTP id 71dfb90a1353d-5262475372eso2189124e0c.2 for ; Mon, 07 Apr 2025 13:01:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744056096; x=1744660896; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=PnW6bQ2pyqKtX+lZBOs0Rlk2R9hc1cl6F5/z4bS5Tbw=; b=UryfL7kn4AuJUSFpCQdIaDKZplDg1saeWbuczObxwZl9/iuljrQOCNKyPTw4WCaLQA njw6fX74sfj6+M0OlXD/Kq6QMC0g+3zzklAI0Xvs7AcKk9ORwKrcFWmj15GlGlIBz+ZI SYdM4ISOethLeQqSwqaBtJra/Gje2reSOY/67Kov2VBx9/hLYYo+4PFdbsPpP6b+EFzl YpiZrQSof3UsmXjwc1E62gEs/UMSwWAymhdZMGjIIChLJJh40zT0rDluaeF4fYSyZY4G p3h0Nbyvnc32DUnGdEMLH6N3jtRW7qsxvsebRz/Tsp/aIocffIniWfarhMi2LE8d8gUr y5zA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744056096; x=1744660896; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PnW6bQ2pyqKtX+lZBOs0Rlk2R9hc1cl6F5/z4bS5Tbw=; b=bCcYbQ41KHFZ5LpkmMv2w6cjPOsekxB3suPt0vqBeGlVTTfCfPBDhjiBYPlEtpKCpu exk5ljIvAquv295vU23ocwXXvm8RJHX72zDHgkd34Sw4YCacrcY1ZebuQRUDMtRb5haN xWwhliupWvZT5c0zJ3TR2mszJLtTuyYdarsyxfWnn8lFBLJLDqOXIL8l9Rb5bnSi6m8r k3JaSJLPP97csq7LQiaV4QWGUf5nlBmOjxAsZuG90frGJDdcN8h7jHljUr/9nH73u93A RiL1OTF81DMW5syD8CIAO12+joyPn3SPJ5t7Jg56wq1pLeWE1NbnWqrLZ4xCUk6Z8fjA l5Iw== X-Gm-Message-State: AOJu0Yxq2J6uDnWv/iC9YNvfg9qvLI08QBI78DOklLGEN6m/gqhGvfQp tN2mOseMhuhvuDZp8XugPZEz37lyjpNoARrIfakiHwDUSQkFRvKVBbRuBHyF X-Gm-Gg: ASbGnct+I8O9vHtRP9JzREGABgmeTMGv/bjJxi5BouV8I9Ow9o8sa8lA2Vvbp+/FvRx r2eOzjR1xkDwgWTE4cmcIBsuJUl2ktUo7PD13YkC0GZKVH3Wc/AGzPpHR0cbjVLX0bfwAUNqRkA poUgU743zIqWfDN/xhiyKvs5ef2LnqvkZuiwBVD8CtQMVFcrk2JYupm9DSJm7dA8LTEnQU8SNnj J7Yh7JlVALQ1JbaxusF4oGuSZ5Jj9qWvpHR//euJHqx194mNZfP1XA+oqNJSf+B0NuaN63m1Br2 Y1owUuGyHC1pekBoY5OEXMmulXI3v+evAT+UpQPivPcFRhvJ6UmL0IIjGkbdmroIR6q/2ZYcA2c fS2/ztManvMnd4g== X-Google-Smtp-Source: AGHT+IGUE1BZB0Q99Ebc/E9d8wJXMr81AJ66fILFeXZi3mTRMMbSn0OzK2dtV3wsKbDWzyQhp2HBjQ== X-Received: by 2002:a05:6122:8288:b0:525:aecb:6306 with SMTP id 71dfb90a1353d-52765dc9a76mr9768345e0c.11.1744056095798; Mon, 07 Apr 2025 13:01:35 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-5279b691f07sm69140e0c.41.2025.04.07.13.01.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 13:01:35 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 03/15] test-bap: Introduce USR/SCC - VS tests for LC3 Date: Mon, 7 Apr 2025 16:01:09 -0400 Message-ID: <20250407200124.881534-4-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250407200124.881534-1-luiz.dentz@gmail.com> References: <20250407200124.881534-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz BAP/USR/SCC/BV-033-C [USR SNK Config Codec, VS] Test Purpose: Verify that a Unicast Server Audio Sink IUT can perform a Config Codec operation initiated by a Unicast Client for a vendor-specific codec for an ASE in the Idle state, the Codec Configured state, and the QoS Configured state. Pass verdict: The IUT sends a notification of the ASE Control Point characteristic with the Response_Code field set to 0x00 (Success) for the requested ASE_ID and opcode. Test Summary ------------ BAP/USR/SCC/BV-033-C [USR SNK Config Codec, VS] Passed BAP/USR/SCC/BV-034-C [USR SRC Config Codec, VS] Passed Total: 2, Passed: 2 (100.0%), Failed: 0, Not Run: 0 --- unit/test-bap.c | 69 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 62 insertions(+), 7 deletions(-) diff --git a/unit/test-bap.c b/unit/test-bap.c index dc199f4871e1..470f59d387e5 100644 --- a/unit/test-bap.c +++ b/unit/test-bap.c @@ -515,16 +515,30 @@ static void test_setup_server(const void *user_data) data->ccc_states = queue_new(); - data->snk = bt_bap_add_pac(db, "test-bap-snk", BT_BAP_SINK, LC3_ID, - data->qos, data->caps, + if (data->cfg && data->cfg->vs) + data->snk = bt_bap_add_vendor_pac(db, "test-bap-snk", + BT_BAP_SINK, 0x0ff, + 0x0001, 0x0001, + data->qos, NULL, NULL); + else + data->snk = bt_bap_add_pac(db, "test-bap-snk", BT_BAP_SINK, + LC3_ID, data->qos, + data->caps, NULL); g_assert(data->snk); bt_bap_pac_set_ops(data->snk, &ucast_pac_ops, NULL); - data->src = bt_bap_add_pac(db, "test-bap-src", BT_BAP_SOURCE, LC3_ID, - data->qos, data->caps, + if (data->cfg && data->cfg->vs) + data->src = bt_bap_add_vendor_pac(db, "test-bap-snk", + BT_BAP_SOURCE, 0x0ff, + 0x0001, 0x0001, + data->qos, NULL, NULL); + else + data->src = bt_bap_add_pac(db, "test-bap-src", BT_BAP_SOURCE, + LC3_ID, data->qos, + data->caps, NULL); g_assert(data->src); bt_bap_pac_set_ops(data->src, &ucast_pac_ops, NULL); @@ -1756,12 +1770,12 @@ static void test_usr_scc_cc_lc3(void) SCC_SNK_48_6); /* 4.9.2 Unicast Server as Audio Source Performs Config Codec – LC3 * - * Test Purpose + * Test Purpose: * Verify that a Unicast Server Audio Source IUT can perform a Config * Codec operation initiated by a Unicast Client for an ASE in the Idle * state, the Codec Configured state. * - * Pass verdict + * Pass verdict: * The IUT sends a Response_Code of 0x00 (Success) in response to each * Config Codec operation. * @@ -1873,7 +1887,7 @@ static struct test_config cfg_src_vs = { * parameter is formatted with octet 0 set to 0xFF, octets 1–2 set to * TSPX_VS_Company_ID, and octets 3–4 set to TSPX_VS_Codec_ID. */ -static void test_scc_cc_vs(void) +static void test_ucl_scc_cc_vs(void) { define_test("BAP/UCL/SCC/BV-033-C [UCL SRC Config Codec, VS]", test_setup, test_client, &cfg_snk_vs, SCC_SNK_VS); @@ -1881,6 +1895,47 @@ static void test_scc_cc_vs(void) test_setup, test_client, &cfg_src_vs, SCC_SRC_VS); } +static void test_usr_scc_cc_vs(void) +{ + /* BAP/USR/SCC/BV-033-C [USR SNK Config Codec, VS] + * + * Test Purpose: + * Verify that a Unicast Server Audio Sink IUT can perform a Config + * Codec operation initiated by a Unicast Client for a vendor-specific + * codec for an ASE in the Idle state, the Codec Configured state, and + * the QoS Configured state. + * + * Pass verdict: + * The IUT sends a notification of the ASE Control Point characteristic + * with the Response_Code field set to 0x00 (Success) for the requested + * ASE_ID and opcode. + */ + define_test("BAP/USR/SCC/BV-033-C [USR SNK Config Codec, VS]", + test_setup_server, test_server, &cfg_snk_vs, + SCC_SNK_VS); + /* BAP/USR/SCC/BV-034-C [USR SRC Config Codec, VS] + * + * Test Purpose: + * Verify that a Unicast Server Audio Source IUT can perform a Config + * Codec operation initiated by a Unicast Client for a vendor-specific + * codec for a Source ASE in the Idle state. + * + * Pass verdict: + * The IUT sends a notification of the ASE Control Point characteristic + * with the Response_Code field set to 0x00 (Success) for the requested + * ASE_ID and opcode. + */ + define_test("BAP/USR/SCC/BV-034-C [USR SRC Config Codec, VS]", + test_setup_server, test_server, &cfg_src_vs, + SCC_SRC_VS); +} + +static void test_scc_cc_vs(void) +{ + test_ucl_scc_cc_vs(); + test_usr_scc_cc_vs(); +} + static struct test_config cfg_snk_8_1_1 = { .cc = LC3_CONFIG_8_1, .qos = LC3_QOS_8_1_1, From patchwork Mon Apr 7 20:01:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 879798 Received: from mail-vk1-f176.google.com (mail-vk1-f176.google.com [209.85.221.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C5DBF221573 for ; Mon, 7 Apr 2025 20:01:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056101; cv=none; b=VzQnx569Am5oT/Kg7CHUyF8Xba94HfF9T74/Ap/93oz0oz2o6vpvZjoQDXnGTHGPMh1BVBgmIK3hQQxiXIeY+mvxriHXe5tFPwv23EbEaZivbLRpvfT+OOuhSkenR2r6qPTb3x0v4j7NgFJOt+CBvBJp/zHqH/m107luBytRCCs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056101; c=relaxed/simple; bh=MgGuLFJ2DjfVF7ek98JsWFIEL2sH9WB3iOfFHAUb3Oc=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=KWMQ+W3Ik9JnaFykefyYUkN6iDdqNJiS9k40P3BM+R6+UyUMnVZN9Ozv4wRS+4Xab3r15sfF+iuL8C5hDQ6B/UNUOm7X+MLw2Hc7YcHZlQ5iSvql370rtz/D+lbFw1ycustk6ANsE2giNbhFi8cnI47fmlm6s6OTLp1ADmZQ8rA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Y8CReIDE; arc=none smtp.client-ip=209.85.221.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Y8CReIDE" Received: by mail-vk1-f176.google.com with SMTP id 71dfb90a1353d-5240317b3e0so1729375e0c.0 for ; Mon, 07 Apr 2025 13:01:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744056098; x=1744660898; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=gA3QOuG3Dd4SRx2ENqGs0NC8RCaJrlEWYszAo+sPZBU=; b=Y8CReIDEq2XG6Xn65tf74fAcMVPyg7os/yqIUCehivu9ODZL5ffAj0EnQ87lqVHuaI VInojYBqSYOUgizBVuokecgkD5uAbrA3NeHj6GLkK+gNR8svkI57u94ZLnnDpu4zwQkR v5mME58vAh7huQ6SjsvRBUolTAPyy1UPN/bp+Vl13Q9a4nSIarWAxRhbVhf3ouZcc0Av ZMUy8XDdARVtUV2llLgCw+zmrEQ7NVjWXkdNMZHl6LjSorzTvO2kbOAimdsoyC+zixVN 56z08ioNtLGD/JBe5o2hi2zC1MpchAeHYtQfyeISftSwowdJGgxZoVkVLdsxjy4BdKzP hhxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744056098; x=1744660898; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gA3QOuG3Dd4SRx2ENqGs0NC8RCaJrlEWYszAo+sPZBU=; b=MMS5t6BQ2rrx2KPqfYieH8imHGq+Gr9GLrDT2Fj9lAWUl12cjjt1QBHI5A3wLfAh7t Lsey7eaYC8jOBbaLJPI4SIWcRduohKT2SXeVYuwEdEL4d0mOYA6J0z8rt1d3npHnhFaY r01cJwwwIOL6bkNWKeI+CpSjVrX8qz88tajycWTyOgkQRQihdvG/ZZNdra3LiKBylL2H sAuveLkwITy08srWkp+00WeCl6F5JzBjyYJKXhn4jmcvfDiKqs69IjrI+43gaTbUDX7F I05PEQwlHjj9LQpnCufP7djNsErKC4YocT/QyW7nzzkNPgYIsTnW2nGCYwF59GsUQrwR UCYA== X-Gm-Message-State: AOJu0YwqKgk40vF5Oa0qsWeY6SX1nHzBUnA38eD65XBN6gOKVq1keY/3 VboAyi+oDWHm21ZBi0iBON1v4tghUqkyQYEa0koBr37GKKIU0PDNoQ4pAf0Y X-Gm-Gg: ASbGncvJr/znOiHuENDhHhCnMUyWpxX9UhLMqWYbAxuuge6b05UcIEF26W4vTTAEf5P 0iSslxa8Ax1oZcMC2ZUQPCCIBO2p9j0nSOZDBYKAa143Dm1oPlHL/NYfgWD5BEvutA6+T3uxKGE /Qg/DuHxhRAnl8VgrHvD7wOLHsFidQP7W6w5/XsoL2ANjaLC8XzzdMkwUH/eJ1ypLPXAbhSoX8W ozLhJ3Wwj6YPc786g2z50UY9TBL97oJRUrfp6LgrDGVoguLLqvdNKVlnFgmiisLY74vdarNNk/m +FQIkapO/hkFw7w4Gio0omBM//CXUfzltxqmmlkMVjAwg2AvIlqi9uX4crOAGIUZDOKJC/5CIpO swZPfNgpVPsU76CO7DsASbYjP X-Google-Smtp-Source: AGHT+IHep4LxOlVAJNRD960TW2FMEEwNgSAXFXfL5/KVCOSB5+4SGlHhnddbQhJvXo+He+YFurOr/g== X-Received: by 2002:a05:6122:2016:b0:520:6773:e5bf with SMTP id 71dfb90a1353d-52765c22e36mr8360589e0c.1.1744056097706; Mon, 07 Apr 2025 13:01:37 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-5279b691f07sm69140e0c.41.2025.04.07.13.01.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 13:01:36 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 04/15] test-bap: Introduce USR/SCC QoS tests for LC3 Date: Mon, 7 Apr 2025 16:01:10 -0400 Message-ID: <20250407200124.881534-5-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250407200124.881534-1-luiz.dentz@gmail.com> References: <20250407200124.881534-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz Unicast Server Performs Config QoS – LC3 Test Purpose: Verify that a Unicast Server IUT can perform a Config QoS operation initiated by a Unicast Client for the LC3 codec. Pass verdict: In step 2, the IUT sends a notification of the ASE Control Point characteristic with Response_Code set to Success (0x00) for the requested ASE_ID and opcode. In step 3, the notified ASE characteristic value is correctly formatted, has the ASE_ID field set to Test_ASE_ID, the ASE_State field set to 0x02 (QoS Configured), and the Additional_ASE_Parameters field containing the CIG_ID, CIS_ID, and QoS configuration values requested in step 2. Test Summary ------------ BAP/USR/SCC/BV-069-C [USR SNK Config QoS, LC3 8_1_1] Passed BAP/USR/SCC/BV-070-C [USR SNK Config QoS, LC3 8_2_1] Passed BAP/USR/SCC/BV-071-C [USR SNK Config QoS, LC3 16_1_1] Passed BAP/USR/SCC/BV-072-C [USR SNK Config QoS, LC3 16_2_1] Passed BAP/USR/SCC/BV-073-C [USR SNK Config QoS, LC3 24_1_1] Passed BAP/USR/SCC/BV-074-C [USR SNK Config QoS, LC3 24_2_1] Passed BAP/USR/SCC/BV-075-C [USR SNK Config QoS, LC3 32_1_1] Passed BAP/USR/SCC/BV-076-C [USR SNK Config QoS, LC3 32_2_1] Passed BAP/USR/SCC/BV-077-C [USR SNK Config QoS, LC3 44.1_1_1] Passed BAP/USR/SCC/BV-078-C [USR SNK Config QoS, LC3 44.1_2_1] Passed BAP/USR/SCC/BV-079-C [USR SNK Config QoS, LC3 48_1_1] Passed BAP/USR/SCC/BV-080-C [USR SNK Config QoS, LC3 48_2_1] Passed BAP/USR/SCC/BV-081-C [USR SNK Config QoS, LC3 48_3_1] Passed BAP/USR/SCC/BV-082-C [USR SNK Config QoS, LC3 48_4_1] Passed BAP/USR/SCC/BV-083-C [USR SNK Config QoS, LC3 48_5_1] Passed BAP/USR/SCC/BV-084-C [USR SNK Config QoS, LC3 48_6_1] Passed BAP/USR/SCC/BV-085-C [USR SRC Config QoS, LC3 8_1_1] Passed BAP/USR/SCC/BV-086-C [USR SRC Config QoS, LC3 8_2_1] Passed BAP/USR/SCC/BV-087-C [USR SRC Config QoS, LC3 16_1_1] Passed BAP/USR/SCC/BV-088-C [USR SRC Config QoS, LC3 16_2_1] Passed BAP/USR/SCC/BV-089-C [USR SRC Config QoS, LC3 24_1_1] Passed BAP/USR/SCC/BV-090-C [USR SRC Config QoS, LC3 24_2_1] Passed BAP/USR/SCC/BV-091-C [USR SRC Config QoS, LC3 32_1_1] Passed BAP/USR/SCC/BV-092-C [USR SRC Config QoS, LC3 32_2_1] Passed BAP/USR/SCC/BV-093-C [USR SRC Config QoS, LC3 44.1_1_1] Passed BAP/USR/SCC/BV-094-C [USR SRC Config QoS, LC3 44.1_2_1] Passed BAP/USR/SCC/BV-095-C [USR SRC Config QoS, LC3 48_1_1] Passed BAP/USR/SCC/BV-096-C [USR SRC Config QoS, LC3 48_2_1] Passed BAP/USR/SCC/BV-097-C [USR SRC Config QoS, LC3 48_3_1] Passed BAP/USR/SCC/BV-098-C [USR SRC Config QoS, LC3 48_4_1] Passed BAP/USR/SCC/BV-099-C [USR SRC Config QoS, LC3 48_5_1] Passed BAP/USR/SCC/BV-100-C [USR SRC Config QoS, LC3 48_6_1] Passed BAP/USR/SCC/BV-101-C [USR SNK Config QoS, LC3 8_1_2] Passed BAP/USR/SCC/BV-102-C [USR SNK Config QoS, LC3 8_2_2] Passed BAP/USR/SCC/BV-103-C [USR SNK Config QoS, LC3 16_1_2] Passed BAP/USR/SCC/BV-104-C [USR SNK Config QoS, LC3 16_2_2] Passed BAP/USR/SCC/BV-105-C [USR SNK Config QoS, LC3 24_1_2] Passed BAP/USR/SCC/BV-106-C [USR SNK Config QoS, LC3 24_2_2] Passed BAP/USR/SCC/BV-107-C [USR SNK Config QoS, LC3 32_1_2] Passed BAP/USR/SCC/BV-108-C [USR SNK Config QoS, LC3 32_2_2] Passed BAP/USR/SCC/BV-109-C [USR SNK Config QoS, LC3 44.1_1_2] Passed BAP/USR/SCC/BV-110-C [USR SNK Config QoS, LC3 44.1_2_2] Passed BAP/USR/SCC/BV-111-C [USR SNK Config QoS, LC3 48_1_2] Passed BAP/USR/SCC/BV-112-C [USR SNK Config QoS, LC3 48_2_2] Passed BAP/USR/SCC/BV-113-C [USR SNK Config QoS, LC3 48_3_2] Passed BAP/USR/SCC/BV-114-C [USR SNK Config QoS, LC3 48_4_2] Passed BAP/USR/SCC/BV-115-C [USR SNK Config QoS, LC3 48_5_2] Passed BAP/USR/SCC/BV-116-C [USR SNK Config QoS, LC3 48_6_2] Passed BAP/USR/SCC/BV-117-C [USR SRC Config QoS, LC3 8_1_2] Passed BAP/USR/SCC/BV-118-C [USR SRC Config QoS, LC3 8_2_2] Passed BAP/USR/SCC/BV-119-C [USR SRC Config QoS, LC3 16_1_2] Passed BAP/USR/SCC/BV-120-C [USR SRC Config QoS, LC3 16_2_2] Passed BAP/USR/SCC/BV-121-C [USR SRC Config QoS, LC3 24_1_2] Passed BAP/USR/SCC/BV-122-C [USR SRC Config QoS, LC3 24_2_2] Passed BAP/USR/SCC/BV-123-C [USR SRC Config QoS, LC3 32_1_2] Passed BAP/USR/SCC/BV-124-C [USR SRC Config QoS, LC3 32_2_2] Passed BAP/USR/SCC/BV-125-C [USR SRC Config QoS, LC3 44.1_1_2] Passed BAP/USR/SCC/BV-126-C [USR SRC Config QoS, LC3 44.1_2_2] Passed BAP/USR/SCC/BV-127-C [USR SRC Config QoS, LC3 48_1_2] Passed BAP/USR/SCC/BV-128-C [USR SRC Config QoS, LC3 48_2_2] Passed BAP/USR/SCC/BV-129-C [USR SRC Config QoS, LC3 48_3_2] Passed BAP/USR/SCC/BV-130-C [USR SRC Config QoS, LC3 48_4_2] Passed BAP/USR/SCC/BV-131-C [USR SRC Config QoS, LC3 48_5_2] Passed BAP/USR/SCC/BV-132-C [USR SRC Config QoS, LC3 48_6_2] Passed Total: 64, Passed: 64 (100.0%), Failed: 0, Not Run: 0 --- unit/test-bap.c | 221 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 219 insertions(+), 2 deletions(-) diff --git a/unit/test-bap.c b/unit/test-bap.c index 470f59d387e5..4bd5ef8b9847 100644 --- a/unit/test-bap.c +++ b/unit/test-bap.c @@ -2268,7 +2268,7 @@ static struct test_config cfg_src_48_6_1 = { */ #define QOS_SRC(_qos...) \ IOV_DATA(0x52, 0x22, 0x00, 0x02, 0x01, 0x03, 0x00, 0x00, _qos), \ - IOV_DATA(0x1b, 0x22, 0x00, 0x02, 0x01, 0x01, 0x00, 0x00), \ + IOV_DATA(0x1b, 0x22, 0x00, 0x02, 0x01, 0x03, 0x00, 0x00), \ IOV_NULL, \ IOV_DATA(0x1b, 0x1c, 0x00, 0x03, 0x02, 0x00, 0x00, _qos) @@ -2744,7 +2744,7 @@ static struct test_config cfg_src_48_6_2 = { * The IUT successfully writes to the ASE Control Point characteristic with the * opcode set to 0x02 (Config QoS) and the specified parameters. */ -static void test_scc_qos_lc3(void) +static void test_ucl_scc_qos_lc3(void) { define_test("BAP/UCL/SCC/BV-035-C [UCL SRC Config QoS, LC3 8_1_1]", test_setup, test_client, &cfg_snk_8_1_1, @@ -2940,6 +2940,223 @@ static void test_scc_qos_lc3(void) SCC_SRC_48_6_2); } +/* 4.9.5 Unicast Server Performs Config QoS – LC3 + * + * Test Purpose: + * Verify that a Unicast Server IUT can perform a Config QoS operation + * initiated by a Unicast Client for the LC3 codec. + *. + * Pass verdict: + * In step 2, the IUT sends a notification of the ASE Control Point + * characteristic with Response_Code set to Success (0x00) for the requested + * ASE_ID and opcode. + * In step 3, the notified ASE characteristic value is correctly formatted, has + * the ASE_ID field set to Test_ASE_ID, the ASE_State field set to 0x02 + * (QoS Configured), and the Additional_ASE_Parameters field containing the + * CIG_ID, CIS_ID, and QoS configuration values requested in step 2. + */ +static void test_usr_scc_qos_lc3(void) +{ + define_test("BAP/USR/SCC/BV-069-C [USR SNK Config QoS, LC3 8_1_1]", + test_setup_server, test_server, &cfg_snk_8_1_1, + SCC_SNK_8_1_1); + define_test("BAP/USR/SCC/BV-070-C [USR SNK Config QoS, LC3 8_2_1]", + test_setup_server, test_server, &cfg_snk_8_2_1, + SCC_SNK_8_2_1); + define_test("BAP/USR/SCC/BV-071-C [USR SNK Config QoS, LC3 16_1_1]", + test_setup_server, test_server, &cfg_snk_16_1_1, + SCC_SNK_16_1_1); + define_test("BAP/USR/SCC/BV-072-C [USR SNK Config QoS, LC3 16_2_1]", + test_setup_server, test_server, &cfg_snk_16_2_1, + SCC_SNK_16_2_1); + define_test("BAP/USR/SCC/BV-073-C [USR SNK Config QoS, LC3 24_1_1]", + test_setup_server, test_server, &cfg_snk_24_1_1, + SCC_SNK_24_1_1); + define_test("BAP/USR/SCC/BV-074-C [USR SNK Config QoS, LC3 24_2_1]", + test_setup_server, test_server, &cfg_snk_24_2_1, + SCC_SNK_24_2_1); + define_test("BAP/USR/SCC/BV-075-C [USR SNK Config QoS, LC3 32_1_1]", + test_setup_server, test_server, &cfg_snk_32_1_1, + SCC_SNK_32_1_1); + define_test("BAP/USR/SCC/BV-076-C [USR SNK Config QoS, LC3 32_2_1]", + test_setup_server, test_server, &cfg_snk_32_2_1, + SCC_SNK_32_2_1); + define_test("BAP/USR/SCC/BV-077-C [USR SNK Config QoS, LC3 44.1_1_1]", + test_setup_server, test_server, &cfg_snk_44_1_1, + SCC_SNK_44_1_1); + define_test("BAP/USR/SCC/BV-078-C [USR SNK Config QoS, LC3 44.1_2_1]", + test_setup_server, test_server, &cfg_snk_44_2_1, + SCC_SNK_44_2_1); + define_test("BAP/USR/SCC/BV-079-C [USR SNK Config QoS, LC3 48_1_1]", + test_setup_server, test_server, &cfg_snk_48_1_1, + SCC_SNK_48_1_1); + define_test("BAP/USR/SCC/BV-080-C [USR SNK Config QoS, LC3 48_2_1]", + test_setup_server, test_server, &cfg_snk_48_2_1, + SCC_SNK_48_2_1); + define_test("BAP/USR/SCC/BV-081-C [USR SNK Config QoS, LC3 48_3_1]", + test_setup_server, test_server, &cfg_snk_48_3_1, + SCC_SNK_48_3_1); + define_test("BAP/USR/SCC/BV-082-C [USR SNK Config QoS, LC3 48_4_1]", + test_setup_server, test_server, &cfg_snk_48_4_1, + SCC_SNK_48_4_1); + define_test("BAP/USR/SCC/BV-083-C [USR SNK Config QoS, LC3 48_5_1]", + test_setup_server, test_server, &cfg_snk_48_5_1, + SCC_SNK_48_5_1); + define_test("BAP/USR/SCC/BV-084-C [USR SNK Config QoS, LC3 48_6_1]", + test_setup_server, test_server, &cfg_snk_48_6_1, + SCC_SNK_48_6_1); + define_test("BAP/USR/SCC/BV-085-C [USR SRC Config QoS, LC3 8_1_1]", + test_setup_server, test_server, &cfg_src_8_1_1, + SCC_SRC_8_1_1); + define_test("BAP/USR/SCC/BV-086-C [USR SRC Config QoS, LC3 8_2_1]", + test_setup_server, test_server, &cfg_src_8_2_1, + SCC_SRC_8_2_1); + define_test("BAP/USR/SCC/BV-087-C [USR SRC Config QoS, LC3 16_1_1]", + test_setup_server, test_server, &cfg_src_16_1_1, + SCC_SRC_16_1_1); + define_test("BAP/USR/SCC/BV-088-C [USR SRC Config QoS, LC3 16_2_1]", + test_setup_server, test_server, &cfg_src_16_2_1, + SCC_SRC_16_2_1); + define_test("BAP/USR/SCC/BV-089-C [USR SRC Config QoS, LC3 24_1_1]", + test_setup_server, test_server, &cfg_src_24_1_1, + SCC_SRC_24_1_1); + define_test("BAP/USR/SCC/BV-090-C [USR SRC Config QoS, LC3 24_2_1]", + test_setup_server, test_server, &cfg_src_24_2_1, + SCC_SRC_24_2_1); + define_test("BAP/USR/SCC/BV-091-C [USR SRC Config QoS, LC3 32_1_1]", + test_setup_server, test_server, &cfg_src_32_1_1, + SCC_SRC_32_1_1); + define_test("BAP/USR/SCC/BV-092-C [USR SRC Config QoS, LC3 32_2_1]", + test_setup_server, test_server, &cfg_src_32_2_1, + SCC_SRC_32_2_1); + define_test("BAP/USR/SCC/BV-093-C [USR SRC Config QoS, LC3 44.1_1_1]", + test_setup_server, test_server, &cfg_src_44_1_1, + SCC_SRC_44_1_1); + define_test("BAP/USR/SCC/BV-094-C [USR SRC Config QoS, LC3 44.1_2_1]", + test_setup_server, test_server, &cfg_src_44_2_1, + SCC_SRC_44_2_1); + define_test("BAP/USR/SCC/BV-095-C [USR SRC Config QoS, LC3 48_1_1]", + test_setup_server, test_server, &cfg_src_48_1_1, + SCC_SRC_48_1_1); + define_test("BAP/USR/SCC/BV-096-C [USR SRC Config QoS, LC3 48_2_1]", + test_setup_server, test_server, &cfg_src_48_2_1, + SCC_SRC_48_2_1); + define_test("BAP/USR/SCC/BV-097-C [USR SRC Config QoS, LC3 48_3_1]", + test_setup_server, test_server, &cfg_src_48_3_1, + SCC_SRC_48_3_1); + define_test("BAP/USR/SCC/BV-098-C [USR SRC Config QoS, LC3 48_4_1]", + test_setup_server, test_server, &cfg_src_48_4_1, + SCC_SRC_48_4_1); + define_test("BAP/USR/SCC/BV-099-C [USR SRC Config QoS, LC3 48_5_1]", + test_setup_server, test_server, &cfg_src_48_5_1, + SCC_SRC_48_5_1); + define_test("BAP/USR/SCC/BV-100-C [USR SRC Config QoS, LC3 48_6_1]", + test_setup_server, test_server, &cfg_src_48_6_1, + SCC_SRC_48_6_1); + define_test("BAP/USR/SCC/BV-101-C [USR SNK Config QoS, LC3 8_1_2]", + test_setup_server, test_server, &cfg_snk_8_1_2, + SCC_SNK_8_1_2); + define_test("BAP/USR/SCC/BV-102-C [USR SNK Config QoS, LC3 8_2_2]", + test_setup_server, test_server, &cfg_snk_8_2_2, + SCC_SNK_8_2_2); + define_test("BAP/USR/SCC/BV-103-C [USR SNK Config QoS, LC3 16_1_2]", + test_setup_server, test_server, &cfg_snk_16_1_2, + SCC_SNK_16_1_2); + define_test("BAP/USR/SCC/BV-104-C [USR SNK Config QoS, LC3 16_2_2]", + test_setup_server, test_server, &cfg_snk_16_2_2, + SCC_SNK_16_2_2); + define_test("BAP/USR/SCC/BV-105-C [USR SNK Config QoS, LC3 24_1_2]", + test_setup_server, test_server, &cfg_snk_24_1_2, + SCC_SNK_24_1_2); + define_test("BAP/USR/SCC/BV-106-C [USR SNK Config QoS, LC3 24_2_2]", + test_setup_server, test_server, &cfg_snk_24_2_2, + SCC_SNK_24_2_2); + define_test("BAP/USR/SCC/BV-107-C [USR SNK Config QoS, LC3 32_1_2]", + test_setup_server, test_server, &cfg_snk_32_1_2, + SCC_SNK_32_1_2); + define_test("BAP/USR/SCC/BV-108-C [USR SNK Config QoS, LC3 32_2_2]", + test_setup_server, test_server, &cfg_snk_32_2_2, + SCC_SNK_32_2_2); + define_test("BAP/USR/SCC/BV-109-C [USR SNK Config QoS, LC3 44.1_1_2]", + test_setup_server, test_server, &cfg_snk_44_1_2, + SCC_SNK_44_1_2); + define_test("BAP/USR/SCC/BV-110-C [USR SNK Config QoS, LC3 44.1_2_2]", + test_setup_server, test_server, &cfg_snk_44_2_2, + SCC_SNK_44_2_2); + define_test("BAP/USR/SCC/BV-111-C [USR SNK Config QoS, LC3 48_1_2]", + test_setup_server, test_server, &cfg_snk_48_1_2, + SCC_SNK_48_1_2); + define_test("BAP/USR/SCC/BV-112-C [USR SNK Config QoS, LC3 48_2_2]", + test_setup_server, test_server, &cfg_snk_48_2_2, + SCC_SNK_48_2_2); + define_test("BAP/USR/SCC/BV-113-C [USR SNK Config QoS, LC3 48_3_2]", + test_setup_server, test_server, &cfg_snk_48_3_2, + SCC_SNK_48_3_2); + define_test("BAP/USR/SCC/BV-114-C [USR SNK Config QoS, LC3 48_4_2]", + test_setup_server, test_server, &cfg_snk_48_4_2, + SCC_SNK_48_4_2); + define_test("BAP/USR/SCC/BV-115-C [USR SNK Config QoS, LC3 48_5_2]", + test_setup_server, test_server, &cfg_snk_48_5_2, + SCC_SNK_48_5_2); + define_test("BAP/USR/SCC/BV-116-C [USR SNK Config QoS, LC3 48_6_2]", + test_setup_server, test_server, &cfg_snk_48_6_2, + SCC_SNK_48_6_2); + define_test("BAP/USR/SCC/BV-117-C [USR SRC Config QoS, LC3 8_1_2]", + test_setup_server, test_server, &cfg_src_8_1_2, + SCC_SRC_8_1_2); + define_test("BAP/USR/SCC/BV-118-C [USR SRC Config QoS, LC3 8_2_2]", + test_setup_server, test_server, &cfg_src_8_2_2, + SCC_SRC_8_2_2); + define_test("BAP/USR/SCC/BV-119-C [USR SRC Config QoS, LC3 16_1_2]", + test_setup_server, test_server, &cfg_src_16_1_2, + SCC_SRC_16_1_2); + define_test("BAP/USR/SCC/BV-120-C [USR SRC Config QoS, LC3 16_2_2]", + test_setup_server, test_server, &cfg_src_16_2_2, + SCC_SRC_16_2_2); + define_test("BAP/USR/SCC/BV-121-C [USR SRC Config QoS, LC3 24_1_2]", + test_setup_server, test_server, &cfg_src_24_1_2, + SCC_SRC_24_1_2); + define_test("BAP/USR/SCC/BV-122-C [USR SRC Config QoS, LC3 24_2_2]", + test_setup_server, test_server, &cfg_src_24_2_2, + SCC_SRC_24_2_2); + define_test("BAP/USR/SCC/BV-123-C [USR SRC Config QoS, LC3 32_1_2]", + test_setup_server, test_server, &cfg_src_32_1_2, + SCC_SRC_32_1_2); + define_test("BAP/USR/SCC/BV-124-C [USR SRC Config QoS, LC3 32_2_2]", + test_setup_server, test_server, &cfg_src_32_2_2, + SCC_SRC_32_2_2); + define_test("BAP/USR/SCC/BV-125-C [USR SRC Config QoS, LC3 44.1_1_2]", + test_setup_server, test_server, &cfg_src_44_1_2, + SCC_SRC_44_1_2); + define_test("BAP/USR/SCC/BV-126-C [USR SRC Config QoS, LC3 44.1_2_2]", + test_setup_server, test_server, &cfg_src_44_2_2, + SCC_SRC_44_2_2); + define_test("BAP/USR/SCC/BV-127-C [USR SRC Config QoS, LC3 48_1_2]", + test_setup_server, test_server, &cfg_src_48_1_2, + SCC_SRC_48_1_2); + define_test("BAP/USR/SCC/BV-128-C [USR SRC Config QoS, LC3 48_2_2]", + test_setup_server, test_server, &cfg_src_48_2_2, + SCC_SRC_48_2_2); + define_test("BAP/USR/SCC/BV-129-C [USR SRC Config QoS, LC3 48_3_2]", + test_setup_server, test_server, &cfg_src_48_3_2, + SCC_SRC_48_3_2); + define_test("BAP/USR/SCC/BV-130-C [USR SRC Config QoS, LC3 48_4_2]", + test_setup_server, test_server, &cfg_src_48_4_2, + SCC_SRC_48_4_2); + define_test("BAP/USR/SCC/BV-131-C [USR SRC Config QoS, LC3 48_5_2]", + test_setup_server, test_server, &cfg_src_48_5_2, + SCC_SRC_48_5_2); + define_test("BAP/USR/SCC/BV-132-C [USR SRC Config QoS, LC3 48_6_2]", + test_setup_server, test_server, &cfg_src_48_6_2, + SCC_SRC_48_6_2); +} + +static void test_scc_qos_lc3(void) +{ + test_ucl_scc_qos_lc3(); + test_usr_scc_qos_lc3(); +} + static struct test_config cfg_snk_qos_vs = { .cc = IOV_NULL, .qos = QOS_UCAST, From patchwork Mon Apr 7 20:01:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 878768 Received: from mail-vk1-f170.google.com (mail-vk1-f170.google.com [209.85.221.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 840411B87F0 for ; Mon, 7 Apr 2025 20:01:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056105; cv=none; b=eZ3n1tMtrEcLAGF6oOZQ63p2de3lDHOR/wWhnabUxNQ5CvdGJCNQuXLs0rsp6lRWBbGyIZHVCVxDYG2/RwxiX7XkJWIrBeHbHwAR47OdowYZ9NHdfYaWVnEjsBNrAF0WiPemM3XL37t8wkBv/WEDZlYhjB43aS8V33jEcWzMbfw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056105; c=relaxed/simple; bh=k4mTeg3N2nFLrcmIeFZW+iYlyOpN0M4pQPLjJ92/wXQ=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=CMqXnoujox9V31ZMu7iWsE8kCDM2upKKqgkn5gGA4R1NdY9PtYHwm4oN6ztJ+g9UD6PDzUh/0ey4VpgYaiyxkZRAfMM7Sftt3ca4n2J7yFOyVSpQGe3goION5d7QS84bZQnDcZrWEb205BTDO88xb51pBtnaCZ0P0VeD613SzDU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=CrGpvFfe; arc=none smtp.client-ip=209.85.221.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CrGpvFfe" Received: by mail-vk1-f170.google.com with SMTP id 71dfb90a1353d-523edc385caso1944934e0c.3 for ; Mon, 07 Apr 2025 13:01:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744056102; x=1744660902; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=MVaX20wo7w1Y3NZXUbSGU27hwlvxAUbfzuc80lnuofE=; b=CrGpvFfeKmLgfVQxcZZzYcbd7wLkJZ6jJe/PRKIMeeeaxauyCIDCCI5u3JaLm4DHCg aA9iwSSm6liV9wuBmkjEkYfa2hrCpCqQXHa+AST3Vnjy1ciSImrUsOlrbR1w9JxjRpZb XuCdqCmq7Qns0Btz+CLKdQ5yF1mH7ntmOZZEIGgBJMoEM0fzSqzLX/3HsxnLBXAH8Z// zuwXOmhrIIA4S75EzYneALSfkSAlmJ8XtV+7zyYh1oksne3paM0lqDvQag1qeNt4H5MI dlS3V74iljW9GKzTMVFtzLIpMoTpOgcgKpiL6ZXkDEdxXZwZ//bFYfTlvH6CRscI/aWy hkFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744056102; x=1744660902; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MVaX20wo7w1Y3NZXUbSGU27hwlvxAUbfzuc80lnuofE=; b=i2x6gOZCUhVI/iEAjH21RXgqGh+OM3hfZz041KyI3T7g1XSo7uW4ovF4n7eeKCIC92 ywbQHtd4rgf0DnmN6p/ZfQFGTpn7kMWkqmvBD/BLnFbSEjA6zR5FIgfnNh19RCv+YSUO e4gtXF1c0ljQP/Zua44GALpeRwrdxZ5nKMx3YK40iwhPX0iK550Qu77ySI4GWNlXAPvd Zihtd0ztS9WvgBW/CQwwH0v+TpKP6lRr+s3dhwoZhuJk896RUYPolNXCv4HvFQsoyGmu zKUAHL+vYoCRaCS3qpHBiWXVOlYT2MG4GTAGqPU8tlyRLJtiT1CtWwhGNdf/zwLHWhzQ eZjQ== X-Gm-Message-State: AOJu0YyN8B3RoJ8AKX2P4kwOBhoX70rFvcUF4BhWUP5UyLUPZFXL/VrU YdQwuoI1qoGeoj/2eASDcldKq+brZId4yoVQed3MXPLvM+//UKrfko33P+4w X-Gm-Gg: ASbGnct3cx+rTZNnVxz8Q8PQPDAf0oavJLexH81/s0A6uiNOLa2o/XOHFr4fn+FK/8X xbDQBerItv0AFY9xt+SJ8y9k8J6MrKvAyx5P+M6821tjiwoFr1gdWB7T5R8QBs8MBnx/Y2xwZzi lxZwJ4rp4HiWyhGRx+sPda/eN7FixU0WnGMQNDIuFougjKxz9DtQaV/TRnguTYY/vWbQTaZhgcs jQfXMPDisgXn8T+j8DF1PML1+stW3PV+vNmTh+rRun1674yS1ZX+I11PHJeaVr528VatMzTy1wR IbCl9EPj/4k5u8HPeYGwtkFAMXN++Dnukl3GfXjUezl+r0PPXdw5vWXku6MmpnzytYYH5QkNfXc P6jR613aVQzH3Lw== X-Google-Smtp-Source: AGHT+IEQvWSapHhG0j0oicIlGPO7vfYqt1K8WxYDja5vDgffK/u/XDhBkLo6Mc2uXh6B/jfvZTNrGQ== X-Received: by 2002:a05:6122:17a7:b0:526:19e6:fa34 with SMTP id 71dfb90a1353d-5276443fbf8mr9100658e0c.1.1744056099816; Mon, 07 Apr 2025 13:01:39 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-5279b691f07sm69140e0c.41.2025.04.07.13.01.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 13:01:38 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 05/15] test-bap: Introduce USR/SCC QoS tests for VS Date: Mon, 7 Apr 2025 16:01:11 -0400 Message-ID: <20250407200124.881534-6-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250407200124.881534-1-luiz.dentz@gmail.com> References: <20250407200124.881534-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz Unicast Server Performs Config QoS – Vendor-Specific Test Purpose: Verify that a Unicast Server IUT can handle a Config QoS operation for a vendor-specific codec. Pass verdict: The IUT sends a notification of the ASE Control Point characteristic with Response_Code set to Success (0x00) for the requested ASE_ID and opcode Test Summary ------------ BAP/USR/SCC/BV-133-C [USR SNK Config QoS, VS] Passed BAP/USR/SCC/BV-134-C [USR SRC Config QoS, VS] Passed Total: 2, Passed: 2 (100.0%), Failed: 0, Not Run: 0 --- unit/test-bap.c | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/unit/test-bap.c b/unit/test-bap.c index 4bd5ef8b9847..7edb8d8a9b7d 100644 --- a/unit/test-bap.c +++ b/unit/test-bap.c @@ -2940,7 +2940,7 @@ static void test_ucl_scc_qos_lc3(void) SCC_SRC_48_6_2); } -/* 4.9.5 Unicast Server Performs Config QoS – LC3 +/* Unicast Server Performs Config QoS – LC3 * * Test Purpose: * Verify that a Unicast Server IUT can perform a Config QoS operation @@ -3191,16 +3191,42 @@ static struct test_config cfg_src_qos_vs = { * The IUT successfully writes to the ASE Control Point characteristic with the * opcode set to 0x02 (Config QoS) and the specified parameters. */ -static void test_scc_qos_vs(void) +static void test_ucl_scc_qos_vs(void) { define_test("BAP/UCL/SCC/BV-099-C [UCL SNK Config QoS, VS]", test_setup, test_client, &cfg_src_qos_vs, SCC_SRC_QOS_VS); - define_test("BAP/UCL/SCC/BV-100-C [UCL SRC QoS Codec, VS]", + define_test("BAP/UCL/SCC/BV-100-C [UCL SRC Config QoS, VS]", test_setup, test_client, &cfg_snk_qos_vs, SCC_SNK_QOS_VS); } +/* Unicast Server Performs Config QoS – Vendor-Specific + * + * Test Purpose: + * Verify that a Unicast Server IUT can handle a Config QoS operation for a + * vendor-specific codec. + * + * Pass verdict: + * The IUT sends a notification of the ASE Control Point characteristic with + * Response_Code set to Success (0x00) for the requested ASE_ID and opcode. + */ +static void test_usr_scc_qos_vs(void) +{ + define_test("BAP/USR/SCC/BV-133-C [USR SNK Config QoS, VS]", + test_setup_server, test_server, &cfg_snk_qos_vs, + SCC_SNK_QOS_VS); + define_test("BAP/USR/SCC/BV-134-C [USR SRC Config QoS, VS]", + test_setup, test_client, &cfg_src_qos_vs, + SCC_SRC_QOS_VS); +} + +static void test_scc_qos_vs(void) +{ + test_ucl_scc_qos_vs(); + test_usr_scc_qos_vs(); +} + static struct test_config cfg_snk_enable = { .cc = LC3_CONFIG_16_2, .qos = LC3_QOS_16_2_1, From patchwork Mon Apr 7 20:01:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 879797 Received: from mail-vk1-f170.google.com (mail-vk1-f170.google.com [209.85.221.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F366721D3D1 for ; Mon, 7 Apr 2025 20:01:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056105; cv=none; b=GNOGwJ6aQMAKXtr1buv3IkfHKV8xt/ScvF7hbN0EQ0NG4yCWsKQqjzS4H0XWs4dzu2xX89qHrRHZWsuZyrldrXRzx/jDnbP4cSkF0RoImDe0NLuR4e5BjY8t/qNCLUtpvVh6mFTA4E+MhG6IfxTSErmh4aOkfN4XD5lqFtwi7oA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056105; c=relaxed/simple; bh=FTq5/V+iogtJeZkC/UenAFmUAy06o6f90boKqROll7Y=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LfN/N/Vdq0xix9atoms+IXSq5W2OHG0H7FlebCgfOxZODDBt+PG/n6b98xhXUhkMdr47l9gGNZwKh/NcBuXAKXOcm+vvwJnwllnLxjlDrnSqCepc5bmwDRMu3x4DW6J44UoeNuDy9WE8wjEqjnWl3Rt91N1WhAxWjgFqA8H44co= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=dJ3qlR94; arc=none smtp.client-ip=209.85.221.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dJ3qlR94" Received: by mail-vk1-f170.google.com with SMTP id 71dfb90a1353d-520847ad493so4492427e0c.1 for ; Mon, 07 Apr 2025 13:01:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744056102; x=1744660902; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=t/ot1Gcq7j/PUQT5etOON0qwHsX7Yfvn6hVkJYnsevY=; b=dJ3qlR94YMNXzKVvojG7+2ngL91w6hzv8tDLwa6ztLbcbrg/KLyeLn7w9D5awwz7Zr q8Vn9ElD/JjOOLrMiS7lE1IMNM7e/Sb0g9rjQUgFJJG3qkBPtFr/hPIJu+0UZQeucF3R HFkysHGNGYSUYTlVZAmBIaZ7dxCnLDTNS2xFkKHY0BjYFDZWvWFUyI43iKdqjcHiQieP 1YfpbLePKnmGZ6WUzveryKLOmvkEgjellkTerrg+yEs3wEpQIhqKxesGLiz06YK4L3VG hWdH8bilYePAZNSXww05ZglHUP9ptx2fflChJtLiQjt4oKa1ne+jPdmVfkzJSm53ZC4C uj3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744056102; x=1744660902; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=t/ot1Gcq7j/PUQT5etOON0qwHsX7Yfvn6hVkJYnsevY=; b=LMCaPvhqRJG/kSO7tSI/13OnSvstii4g+Y4utM9gGC4U5sYl7fIxC842cuxa6/fH7t gWIrC2SmfWc0FrydEUi75Ped112h/Er9AEiros/5ooAM6nzNlUkLllxRzjH1N0p/NU/v GiPLo0phwBis14Xw0+VCBYrYRZSRpqFvZtsDjGMFFxzvTtAhytuznoCUkk970iBzBFeK 5svBk1pPTjPybv5ofOJEqqxMqyQ3GK4WtmxTMT5POzTTGWirjXVlxy0BSHBOZc5CCuQR QnPBF54rnFCBgiC1ersk1WfpWlAlc5gtIwWdZmRANAoeSgLqMkUBXvF6oL26WMm+D5tK pr+w== X-Gm-Message-State: AOJu0YytQoSIFS+0WtWET/s8SIaXNR2ttaaBGIJdZ7dRJllrKNRPW8DR g6Av5723Eoqq8exUDhW+tOQUinfnZs1HoEd6zOye4XKl7QCqjPm6IpSt2MQH X-Gm-Gg: ASbGncvGmpUd2QGtaO9zT7hcclexWd/ujzOg0rdS5rJQQ/ItmYL9MEjoxHLeuLfBjuG 5epEZHEFQClekynZ+ZcMrX9MdJVaVJtGX0oY5lLaIQ0eSIc31xivdkIfUgL+39yDVfmT7yGUFon hbzkIwRg+O9xp4wP71cyV/hzSI62Ts2o27Q4v0AN0Xj3V5ZE94baN2eS04udQUI+1suwrDcw6F5 LAMV21OonMrIYdbjZ79VuiKfte/TUxBfeKcxLZP9jmtF5pfAeEp243oLZq2F+K8G0KbduMKgw89 0N954wTiNz1F6pBZMZDtt9M2n6t72HtxFV+u2INTjJxhyu7k/PxQHgvHOwbvGFoA6XshAhe35os mr0/03PZUDsFNfw== X-Google-Smtp-Source: AGHT+IEoDhxrpqAbtBLUlLB5QToAdd2aI5YpFHjF4wRucyRyBMDktjcOkUUY6IkweZvNmYbFmSDJog== X-Received: by 2002:a05:6122:251f:b0:520:61ee:c7f9 with SMTP id 71dfb90a1353d-52773051a54mr7821456e0c.7.1744056101740; Mon, 07 Apr 2025 13:01:41 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-5279b691f07sm69140e0c.41.2025.04.07.13.01.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 13:01:40 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 06/15] test-bap: Introduce USR/SCC Enable tests for LC3 Date: Mon, 7 Apr 2025 16:01:12 -0400 Message-ID: <20250407200124.881534-7-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250407200124.881534-1-luiz.dentz@gmail.com> References: <20250407200124.881534-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz Unicast Server Performs Client-Initiated Enable Operation Test Purpose: Verify that a Unicast Server IUT can handle a client-initiated Enable operation for an ASE with a Unicast Client that is either in the Audio Sink role or the Audio Source role. Pass verdict: The IUT sends a notification of the ASE Control Point characteristic with Response_Code set to 0x00 (Success) for the requested ASE_ID and opcode. Test Summary ------------ BAP/USR/SCC/BV-135-C [USR SNK Enable] Passed BAP/USR/SCC/BV-136-C [UCL SRC Enable] Passed Total: 2, Passed: 2 (100.0%), Failed: 0, Not Run: 0 --- unit/test-bap.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/unit/test-bap.c b/unit/test-bap.c index 7edb8d8a9b7d..5edcc739b675 100644 --- a/unit/test-bap.c +++ b/unit/test-bap.c @@ -3273,7 +3273,7 @@ static struct test_config cfg_src_enable = { #define SRC_ENABLE \ IOV_DATA(0x52, 0x22, 0x00, 0x03, 0x01, 0x03, 0x04, 0x03, 0x02, 0x01, \ 00), \ - IOV_DATA(0x1b, 0x22, 0x00, 0x03, 0x01, 0x01, 0x00, 0x00), \ + IOV_DATA(0x1b, 0x22, 0x00, 0x03, 0x01, 0x03, 0x00, 0x00), \ IOV_NULL, \ IOV_DATA(0x1b, 0x1c, 0x00, 0x03, 0x03, 0x00, 0x00, 0x04, 0x03, 0x02, \ 0x01, 0x00) @@ -3291,7 +3291,7 @@ static struct test_config cfg_src_enable = { * The IUT successfully writes to the ASE Control Point characteristic with the * opcode set to 0x03 (Enable) and the specified parameters. */ -static void test_scc_enable(void) +static void test_ucl_scc_enable(void) { define_test("BAP/UCL/SCC/BV-101-C [UCL SRC Enable]", test_setup, test_client, &cfg_snk_enable, @@ -3301,6 +3301,33 @@ static void test_scc_enable(void) SCC_SRC_ENABLE); } +/* Unicast Server Performs Client-Initiated Enable Operation + * + * Test Purpose: + * Verify that a Unicast Server IUT can handle a client-initiated Enable + * operation for an ASE with a Unicast Client that is either in the Audio Sink + * role or the Audio Source role. + * + * Pass verdict: + * The IUT sends a notification of the ASE Control Point characteristic with + * Response_Code set to 0x00 (Success) for the requested ASE_ID and opcode. + */ +static void test_usr_scc_enable(void) +{ + define_test("BAP/USR/SCC/BV-135-C [USR SNK Enable]", + test_setup_server, test_server, &cfg_snk_enable, + SCC_SNK_ENABLE); + define_test("BAP/USR/SCC/BV-136-C [UCL SRC Enable]", + test_setup_server, test_server, &cfg_src_enable, + SCC_SRC_ENABLE); +} + +static void test_scc_enable(void) +{ + test_ucl_scc_enable(); + test_usr_scc_enable(); +} + static struct test_config cfg_snk_disable = { .cc = LC3_CONFIG_16_2, .qos = LC3_QOS_16_2_1, From patchwork Mon Apr 7 20:01:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 878767 Received: from mail-vk1-f179.google.com (mail-vk1-f179.google.com [209.85.221.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 517F01B87F0 for ; Mon, 7 Apr 2025 20:01:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056111; cv=none; b=he8gLpKypWpcKdhXjZoZTSwCht4Fhsw67d2yy46Q2htMhxTpltl3dQmFXCJ8zCvmTHiVLxxl7/oIOmMzlgjjTccajQhwcAs3U/GnHJPPmhk++f6Gf91Hkm12PKd6Pb9ut4GvQt6/mB3YQ1/is8xLsS50U8VTTusjfPpfy4QJOU4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056111; c=relaxed/simple; bh=csyXIAGZsx/4/kbyX+yl4X0nadT51zQGk9f42m+3hFI=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BPKGIlEWU52yd/1jm4CTM6FEs2kcPkhsu5cwIVE4nXjdEZcjuF+c6WclIzf/KcQ5BP3+6X/IBSuFXzCh0Gwts4/GAJo3KsuQZz/C7kBavs0a8Y9Ney27HahyMUDP9zaKwQdtt7Gynqm109afXMzDSHNbl8MyHLj4DgaBcn9u7PQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=jCOL7vT0; arc=none smtp.client-ip=209.85.221.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jCOL7vT0" Received: by mail-vk1-f179.google.com with SMTP id 71dfb90a1353d-5240b014f47so2125113e0c.1 for ; Mon, 07 Apr 2025 13:01:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744056108; x=1744660908; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=abiJZqZPSgloceKnqEePK/H3ytaF6NiSgkualltBJX8=; b=jCOL7vT04sG/lKChlMg+fhHBPZ/67puFh9+jnhN6EX85WOQLM9Pk/xwYQUXe8LrMgw Qg8r8Avy2sWfbOeAJyh6vE2eWpIoatFlRwhnsZeJUI9NhzHZgkJIZBcxcpPVzR9aZjRd MzxwtibeNCBwyAvBtGrN1n8l4kKyqJDUn0+Apxjm3EetmgFiXbSJNPmAAgnYOvm9+5OD 0AsR0MfL6jCxQuYRGan6V0PEq87dVmxXLxrTe7TRRa2fs3RpvF/7eN6bDUu7OtEcBKhz KCusY5WHUyVunScXFSpUJwMS1+hfRacZ1k7Wxfv2GDEuk/31b/DbWKOU25laCVTRBs4f krog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744056108; x=1744660908; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=abiJZqZPSgloceKnqEePK/H3ytaF6NiSgkualltBJX8=; b=BYyWOeqQMW0rtuIzaiJnJ9XSMmLRTVxkLR748uyILy2dSTHuqy7qf66Z8izFKoRMfk BAab06L3aPkhSTlvUwMA+TCsIju2Z3NTJ1umPPooM4dnQuLRWlQpJ49frStcXH4DJEGA g3wYkMvEjzy7jLRXlxObqPtdQMUwP3MGO/n9REW0tI6vBHlKaOlpnfrNZ4Lk5Wtklxx2 5IkikO+prY//EAjYDelNrLFul2QN4xFdynCrLvEQEspHUcT6v+HBw8cADmr/oG1Sp7u0 0g4RyAp7xLKwJhpc5FmoRzJPhKp2GyOt3fTOaO3cuxnvXGv9nfcWuB0907XhyvmUBJgk YVuA== X-Gm-Message-State: AOJu0YzAARqoqDr5S0snaFFOhOuuKxofuaa9U97kJKoP7b0ZkGgsw3i1 ubZjQgwuf5wubLjMbI/r2g3Ee7y/P4Py6HXrlkD0PONho+80qIKl4gSTMk7E X-Gm-Gg: ASbGnctpOg7xgvvhrZFUsBGPL9JUFOA62xZpSj3H5DncdI9GjI+F0MiIuN53/66IyeZ T3vxr1+0/jinRCSHq1d/2hVhXQb4LgMyZTmavFAUzmuPba0YzWnUQttgxdliUqV3lhKq/naUCSX B1kJr6UolHF+wR6EPSc4zIqtxLyhw2OQzYNQzaJqKcz7P1oEOgnP3ILcwjQVCeOp4bKoBEFVHct lYz4fYA6reLmKV1GtloERqCDoaER1SPYWDnDZrtm1bRY3c7dULFa3VFkdpnplllqvphCJqY5XrL RmL+5ZIdviMTyvIyeBJeLvuCVvR6qMREIdy9d04ouAtW5lcT7mtTQ+z3ozgIS+rEwzzeX6LfCLB 4C5k30ILtLW+XbA== X-Google-Smtp-Source: AGHT+IEW94Rxxu78ixBOn6SUaL6RJ1ze6R1Cd8XuZd/53w3moKrv7h6JKFzgHHKhUvQ+IE2E3Xggig== X-Received: by 2002:a05:6122:181d:b0:520:61ee:c815 with SMTP id 71dfb90a1353d-527645b9e94mr10128888e0c.10.1744056105570; Mon, 07 Apr 2025 13:01:45 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-5279b691f07sm69140e0c.41.2025.04.07.13.01.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 13:01:43 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 07/15] test-bap: Introduce USR/SCC Enable tests for LC3 Date: Mon, 7 Apr 2025 16:01:13 -0400 Message-ID: <20250407200124.881534-8-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250407200124.881534-1-luiz.dentz@gmail.com> References: <20250407200124.881534-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz Unicast Server Performs Client-Initiated Disable Operation Test Purpose: Verify that a Unicast Server IUT can perform a client-initiated Disable operation for an ASE in the Enabling or Streaming state. Pass verdict: The IUT sends a notification of the ASE Control Point characteristic. Test Summary ------------ BAP/USR/SCC/BV-137-C [USR SRC Disable in Enabling State] Passed BAP/USR/SCC/BV-138-C [USR SNK Disable in Enabling or Streaming state] Passed BAP/USR/SCC/BV-139-C [USR SRC Disable in Streaming State] Passed Total: 3, Passed: 3 (100.0%), Failed: 0, Not Run: 0 --- unit/test-bap.c | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/unit/test-bap.c b/unit/test-bap.c index 5edcc739b675..73dac275907e 100644 --- a/unit/test-bap.c +++ b/unit/test-bap.c @@ -3349,8 +3349,8 @@ static struct test_config cfg_snk_disable = { IOV_DATA(0x52, 0x22, 0x00, 0x05, 0x01, 0x01), \ IOV_DATA(0x1b, 0x22, 0x00, 0x05, 0x01, 0x01, 0x00, 0x00), \ IOV_NULL, \ - IOV_DATA(0x1b, 0x16, 0x00, 0x01, 0x02, 0x00, 0x00, 0x4c, 0x1d, 0x00, \ - 0x00, 0x02, 0x1a, 0x00, 0x02, 0x08, 0x00, 0x40, 0x9c, \ + IOV_DATA(0x1b, 0x16, 0x00, 0x01, 0x02, 0x00, 0x00, 0x10, 0x27, 0x00, \ + 0x00, 0x02, 0x28, 0x00, 0x02, 0x0a, 0x00, 0x40, 0x9c, \ 0x00) #define SCC_SNK_DISABLE \ @@ -3378,9 +3378,8 @@ static struct test_config cfg_src_disable = { IOV_DATA(0x52, 0x22, 0x00, 0x05, 0x01, 0x03), \ IOV_DATA(0x1b, 0x22, 0x00, 0x05, 0x01, 0x03, 0x00, 0x00), \ IOV_NULL, \ - IOV_DATA(0x1b, 0x1c, 0x00, 0x03, 0x05, 0x00, 0x00, 0x4c, 0x1d, 0x00, \ - 0x00, 0x02, 0x1a, 0x00, 0x04, 0x08, 0x00, 0x40, 0x9c, \ - 0x00) + IOV_DATA(0x1b, 0x1c, 0x00, 0x03, 0x05, 0x00, 0x00, 0x04, 0x03, 0x02, \ + 0x01, 0x00) #define SCC_SRC_DISABLE \ SCC_SRC_ENABLE, \ ASE_SRC_DISABLE @@ -3439,7 +3438,7 @@ static struct test_config cfg_src_disable_streaming = { * The IUT successfully writes to the ASE Control Point characteristic with the * opcode set to 0x05 (Disable) and the specified parameters. */ -static void test_scc_disable(void) +static void test_ucl_scc_disable(void) { define_test("BAP/UCL/SCC/BV-103-C [UCL SNK Disable in Enabling State]", test_setup, test_client, &cfg_src_disable, @@ -3453,6 +3452,35 @@ static void test_scc_disable(void) SCC_SRC_DISABLE_STREAMING); } +/* Unicast Server Performs Client-Initiated Disable Operation + * + * Test Purpose: + * Verify that a Unicast Server IUT can perform a client-initiated Disable + * operation for an ASE in the Enabling or Streaming state. + * + * Pass verdict: + * The IUT sends a notification of the ASE Control Point characteristic. + */ +static void test_usr_scc_disable(void) +{ + define_test("BAP/USR/SCC/BV-137-C [USR SRC Disable in Enabling State]", + test_setup_server, test_server, &cfg_src_disable, + SCC_SRC_DISABLE); + define_test("BAP/USR/SCC/BV-138-C [USR SNK Disable in Enabling or " + "Streaming state]", + test_setup_server, test_server, &cfg_snk_disable, + SCC_SNK_DISABLE); + define_test("BAP/USR/SCC/BV-139-C [USR SRC Disable in Streaming State]", + test_setup, test_client, &cfg_src_disable_streaming, + SCC_SRC_DISABLE_STREAMING); +} + +static void test_scc_disable(void) +{ + test_ucl_scc_disable(); + test_usr_scc_disable(); +} + static void bap_release(struct bt_bap_stream *stream, uint8_t code, uint8_t reason, void *user_data) From patchwork Mon Apr 7 20:01:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 879796 Received: from mail-vk1-f170.google.com (mail-vk1-f170.google.com [209.85.221.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F1351156C69 for ; Mon, 7 Apr 2025 20:01:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056112; cv=none; b=p/+mlXmC29OKDy6Ew2APT3BqKYI+0jfd1OXQOoDhTT9iGTQZovfYqtDbdVdGf3gudZTNrGbI5XFOcMpQDoBbATlLLKYpL6PMk1FBAWuSrPN77kSgn9AVvIu1i35UzAkMrKWj69y8TAWuNh7wFem0KI8k4cdgnVLmLhpiurY4VSk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056112; c=relaxed/simple; bh=q+bzEpMAgO/dm2IDtUxLQbhY+OelrCiqWbUkR5l4eVk=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ui6f38ZZBe9ULfP383suOVmKFJiujTduu6K3v5+ntk+gA0zthPYg9b2UmTtO1SokJoEv4a9yeIGyd8IHym+LFzqlTwMl7sbNC/hvAbcLQogTXR37h+7qQBBWzVSZuQ0KjOU3kzFuAaK3c3CFe04b4BibWVS1OGZyvSp+HHoKE18= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=h4c3smms; arc=none smtp.client-ip=209.85.221.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="h4c3smms" Received: by mail-vk1-f170.google.com with SMTP id 71dfb90a1353d-525b44ec88aso2393138e0c.3 for ; Mon, 07 Apr 2025 13:01:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744056108; x=1744660908; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=GAeqKX0B+ER9flIVAP9swP6exuU6A7E3O5ep9bCGOhs=; b=h4c3smmsDn7Gn3/7++GuGfojk/GypDnJy6h924UC2ZxPOtgxnoU0ZWpnG+2LJoLmYZ LtElEX/y8Rp/23BxMPZCFBYX3meycWfRWDAvKWh4YzsndQz2J86nA4Ac2PMZe4bjvGzK yC+HGu7n+4lqban2AsRqKb30Hh+cWqwqCwT0HciDn2LP0wTR43fqFNrUZ+UGIajHEw2S MqO2NX/z5ktwSTjwyvNtpGZ9cEKst+EYAWhjgLMOIZVAooXjzUqiZcr4gA7hfSjb7VBR yNcJRsuGK+fummFpJtW580nazaKhdYGhdIsCB7v/K1jWsTDL6VMpvRrvAL66Ly84M/kz BUlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744056108; x=1744660908; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GAeqKX0B+ER9flIVAP9swP6exuU6A7E3O5ep9bCGOhs=; b=LvdJX5t1KpJrdJMkHPPgJu9fCl786bEsjqtZkKTNc+m6GzYfPsupu6dGV0IbmWzXY/ HsKumfOOApl5jOT653HGicqNmzX9qB/86Cle5hKMXXB/KCalJOXb1dGY7gXz9gRkC15d CUur9A+nB/FSzxFFMXqRtWPw2rBgFHqGg9Cnd/L/I14autQo1P8vYxIr56fTKt5uvTTb MQBY5kGHPiX1BgS2sz0wZL/lVoHqMdob+Qc7QWtQAfxOoPAcKL1AurFDK7T99Q1gVgf1 8CW2EVrdAcGlEM9qeEhlJ94On2tXvzxhAlSTu7M09OzJ4BqzeqjXI9SYiz0DFKtO5IxY suYg== X-Gm-Message-State: AOJu0Yy/14e5lUav6nxND3fKWl3/zYnjupeAOWKoewPNEJFlS6Ac5of6 632bbUgthfHjj65qpfR2qu/brNMeNOWCE2nM6DwUxHSigyIMvIVm6rVFoxzg X-Gm-Gg: ASbGncs9pWjvqtuK3ICfQlSYaSS2Mua//waLcqBQ7CyRx0Isukgy2C7+sdGiYBQJ47j U2aL9qWE9QzNZ8PKf1xC1PRMcYNiCtrEV7SojI6OE1EQ+moxF2+am96GFkswIpAB1l9hVia/Zb+ QdY/ThmeYa2j8N//LmPee5r0wEASVP3/HWdRx17Zy7pYeGTH9V4HQErTx2HVzDWjDNg+PiVnldN fRhfyctJZwWjJX0GjxNmmv/+YNjR2T2S7zqsxddsQanAhUElNTzlXN1uyaUaAlk/qKvkz6KPAaB OshOWdVGHWd92nipd2a9HarfvzRCEjemSEn4OrnM+i0Z/bwu0RQRyTL14oqzKvJ015qSpIYvtaK sW41h9F7bBncJ3A== X-Google-Smtp-Source: AGHT+IEpO3pT0vBDt34cyUljj9IBGUOIbVvRzV58ySlxAa74eqfOJl3ckCiP2DyxwoVPCcRZRu7NIw== X-Received: by 2002:a05:6122:8288:b0:525:aecb:6306 with SMTP id 71dfb90a1353d-52765dc9a76mr9771066e0c.11.1744056108488; Mon, 07 Apr 2025 13:01:48 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-5279b691f07sm69140e0c.41.2025.04.07.13.01.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 13:01:47 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 08/15] shared/bap: Fix not always sending Releasing state Date: Mon, 7 Apr 2025 16:01:14 -0400 Message-ID: <20250407200124.881534-9-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250407200124.881534-1-luiz.dentz@gmail.com> References: <20250407200124.881534-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz In order for states to be sent the stream cannot be freed since pending_states could be pending due to be processing a CP operation, so this attempts to grap a reference to the stream so it is not freed while states are pending. --- src/shared/bap.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/shared/bap.c b/src/shared/bap.c index 650bea2f4e8d..dbeb43fe509d 100644 --- a/src/shared/bap.c +++ b/src/shared/bap.c @@ -1130,11 +1130,9 @@ static void stream_notify_release(struct bt_bap_stream *stream) DBG(stream->bap, "stream %p", stream); - memset(&status, 0, sizeof(status)); status.id = ep->id; - ep->state = BT_BAP_STREAM_STATE_RELEASING; - status.state = ep->state; + status.state = BT_ASCS_ASE_STATE_RELEASING; gatt_db_attribute_notify(ep->attr, (void *)&status, sizeof(status), bt_bap_get_att(stream->bap)); @@ -1283,8 +1281,10 @@ static void bap_abort_stream_req(struct bt_bap *bap, queue_remove_all(bap->reqs, match_req_stream, stream, bap_req_abort); } -static void bt_bap_stream_unref(struct bt_bap_stream *stream) +static void bt_bap_stream_unref(void *data) { + struct bt_bap_stream *stream = data; + if (!stream) return; @@ -1308,7 +1308,6 @@ static void bap_ucast_detach(struct bt_bap_stream *stream) queue_remove(stream->bap->streams, stream); bap_stream_clear_cfm(stream); - stream->ep = NULL; ep->stream = NULL; bt_bap_stream_unref(stream); } @@ -1751,6 +1750,16 @@ static bool stream_notify_state(void *data) return false; } +static struct bt_bap_stream *bt_bap_stream_ref(struct bt_bap_stream *stream) +{ + if (!stream) + return NULL; + + __sync_fetch_and_add(&stream->ref_count, 1); + + return stream; +} + static void bap_ucast_set_state(struct bt_bap_stream *stream, uint8_t state) { struct bt_bap_endpoint *ep = stream->ep; @@ -1771,7 +1780,8 @@ static void bap_ucast_set_state(struct bt_bap_stream *stream, uint8_t state) else if (!stream->state_id) stream->state_id = timeout_add(BAP_PROCESS_TIMEOUT, stream_notify_state, - stream, NULL); + bt_bap_stream_ref(stream), + bt_bap_stream_unref); else /* If a state_id is already pending then queue the old one */ queue_push_tail(stream->pending_states, UINT_TO_PTR(ep->old_state)); @@ -2258,16 +2268,6 @@ static unsigned int bap_ucast_release(struct bt_bap_stream *stream, return req->id; } -static struct bt_bap_stream *bt_bap_stream_ref(struct bt_bap_stream *stream) -{ - if (!stream) - return NULL; - - __sync_fetch_and_add(&stream->ref_count, 1); - - return stream; -} - static void bap_bcast_set_state(struct bt_bap_stream *stream, uint8_t state) { struct bt_bap *bap = stream->bap; From patchwork Mon Apr 7 20:01:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 878766 Received: from mail-vk1-f171.google.com (mail-vk1-f171.google.com [209.85.221.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DA538221D88 for ; Mon, 7 Apr 2025 20:01:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056116; cv=none; b=UVPztq9L1M1id0LhDnwzpWXxKHSc0T4DXArs1i0FaVTIAlirb0cpRCQFVdl87StYmgsX51a6RKXqSdcFqE8vj8zzhDwin+WN2f42sRuftOZhdpDhiPPnFZk4bF49sRg7ztHhrnhnFd5AbyrD6i9CwRHpQ0c1US7a02bXtMJWMDI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056116; c=relaxed/simple; bh=RLeTl37TW4N6Zfr0lHg8RGps8YFC3vjs7wWMgOXyoYw=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Lk7nPfSwTHWEuI5aNdvTpDPPGg8gHKL9CAzSCn2cCuiIw3gtm0t+dR3b7xd9CE8rPTVt/dHxNicMXFMtbKLqxAl6S09yap+kLQMLqocy27wpHDUECtcqaGOoaIuNKjNN+snuRkvI5eQWjDtsvfFUgthgkFS3gzxpsggerB90iN0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=AkHAeFq/; arc=none smtp.client-ip=209.85.221.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="AkHAeFq/" Received: by mail-vk1-f171.google.com with SMTP id 71dfb90a1353d-524125f6cadso4515002e0c.2 for ; Mon, 07 Apr 2025 13:01:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744056112; x=1744660912; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=3zRNsq30CgpjucwwcKkU/6QUB6ZkvtlRSn7jRFOzCxI=; b=AkHAeFq/VTQLscI0zcvCxtuGfu7E/pC84NV6GgN6FIXr7vNHCqdD8F1ofFXm2eWP2J VweoJuSzQrsLiWNQhsGFJRduu/iWmiFZ5S+eJZ2VjV1wX1NQDXxHXuwAFUoPISpeVO8u vaMbzwFGMdyB45bShTswJhrFCHP+kcDV7qM8/Qs+35YrMTDbsLvscyLnILu/q7gWx4Ad geOcpRyTe4oP2tPyzEWV0fWk9lKcUDeLoQ2hIKza6XmpbkJVnyselE0AniPWpJLOxNHh Cl6b3tKIxTr1rM3sOp4fU+cSk2Zb60lHjp/8s8/fw7wvjzScyvYDoUs36GnJWaNC5v0I jZqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744056112; x=1744660912; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3zRNsq30CgpjucwwcKkU/6QUB6ZkvtlRSn7jRFOzCxI=; b=JhfPFjv6IhNMAAnAGKoJdxxMAkhq6cM4Mzkc4q6H+YIP/kPG8PfpvshHZj282TS4bB 32DmRldAWDe2tCFUiygTC7c4AclLy7dkQWsr8RKolj6Cje912xAbj5RCVL60+g9v0r1A EznRYngBrooicYbbM+QRzXW9/qtwK7Wn6yC6mC1MVhBYF0374Z0M6BYzoMCojlTRF2PV qsCYXj69dv3pEFxszQBKAciSiXW+RHDznk6sHT12pXr0PLml21IWH7+TF2S6qc+PG+ew Qw5KOrWXC7HuGlKrmeDKWmVg4Lekc/KKVYuCqV6aINd4nmkMymkoJ6ivDoomjuW4ZV3V UXEg== X-Gm-Message-State: AOJu0YzlFH9KoUKhW9zVCnJYCd7+JwOPbdMSPiPA6LsGkxFxo9oBrldn zo9e0ph/51QHRC8Ds4diO3iPj4iyCd8ssHpXXIOy8HYqQ7tm9NWPNp3qdUio X-Gm-Gg: ASbGnctGEFAs0+ZSHpSKcGIhSOVUr3IGNax4aTOuENNzlgvmhvT/avk87RAbN+xiqlN xUZlthGSBdko1v6hmBCWPD5fiTqWZJISdAc8NNhd0+t2s4ZTX45Zh+Y5vWhsG+dhCvg2R4EydTE 2Xc9S0+Lj23VCZuqt/+RbGds4N3oVD/yY0ZQOpHbfEiT3poff+j40tX0A4EuJm/DHGjd4OOiHcg tDrISHh9+jBak3cE73h090TGBuDjvsiogOqqhnGM6U9YABc/yPgfg85vW3NDUW1MFrv49OsFOoD Inio4u2yce+3IMU+p6C5nuZWuZoslc6htPXyUk6zKPHgpIbUXAF+nCJ0IolAHb78HE/XHLYgA8Q xDVXVFnq6rPaRPQ== X-Google-Smtp-Source: AGHT+IF85pW/TGF3YVHqcnEKOGdNS1AKxEckvTyajAT6GaK5QEMDlf49pi8ubaipPV0t7iHDYWoI8Q== X-Received: by 2002:a05:6122:2516:b0:520:6773:e5ba with SMTP id 71dfb90a1353d-52765c03cd1mr11542751e0c.2.1744056112355; Mon, 07 Apr 2025 13:01:52 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-5279b691f07sm69140e0c.41.2025.04.07.13.01.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 13:01:50 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 09/15] shared/bap: Fix not notifying idle state Date: Mon, 7 Apr 2025 16:01:15 -0400 Message-ID: <20250407200124.881534-10-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250407200124.881534-1-luiz.dentz@gmail.com> References: <20250407200124.881534-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz The idle state must be notified like any other state. --- src/shared/bap.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/shared/bap.c b/src/shared/bap.c index dbeb43fe509d..ec23e882f389 100644 --- a/src/shared/bap.c +++ b/src/shared/bap.c @@ -1138,6 +1138,21 @@ static void stream_notify_release(struct bt_bap_stream *stream) bt_bap_get_att(stream->bap)); } +static void stream_notify_idle(struct bt_bap_stream *stream) +{ + struct bt_bap_endpoint *ep = stream->ep; + struct bt_ascs_ase_status status; + + DBG(stream->bap, "stream %p", stream); + + memset(&status, 0, sizeof(status)); + status.id = ep->id; + status.state = BT_ASCS_ASE_STATE_IDLE; + + gatt_db_attribute_notify(ep->attr, (void *)&status, sizeof(status), + bt_bap_get_att(stream->bap)); +} + static struct bt_bap *bt_bap_ref_safe(struct bt_bap *bap) { if (!bap || !bap->ref_count || !queue_find(sessions, NULL, bap)) @@ -1712,6 +1727,7 @@ static void stream_notify(struct bt_bap_stream *stream, uint8_t state) switch (state) { case BT_ASCS_ASE_STATE_IDLE: + stream_notify_idle(stream); break; case BT_ASCS_ASE_STATE_CONFIG: stream_notify_config(stream); From patchwork Mon Apr 7 20:01:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 879795 Received: from mail-vk1-f171.google.com (mail-vk1-f171.google.com [209.85.221.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1EB68221D88 for ; Mon, 7 Apr 2025 20:01:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056119; cv=none; b=Bf74W65sN4breg3D2wuTQ+1d8ykrkGbKssgNordA87PzzQx5XVESUcjJihsyWRKthv2urTdg/gCkLlybtYExUsUSVO7YfQS2fUdr8IYgPl/mHsIwEn1N0des6IUv8aF+VBk0T+sidVJYssVSjZg3qeg88+dgu8tv/+PYNKkJ0FQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056119; c=relaxed/simple; bh=sUscmQJlqFR2lS0AjSQV2lEVK/T+ghgD+cWQTpeyb20=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TbsaveMyaAgjPviUpFqCPa4/49xLmoXOod+Qo7oRBW2AFuu/ZpOhxTA4/Ie8CKWJ3hJdGTw2Kb8P9rame+EYY29GiWX8pgVS3RBgmmeNPAu5unlO1SyK+PiqKN7JIUIOHjJ0QMwsel3M9ovbbWiS86R/PyI7QAZghWvgyIt5lCo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=INw5KEzW; arc=none smtp.client-ip=209.85.221.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="INw5KEzW" Received: by mail-vk1-f171.google.com with SMTP id 71dfb90a1353d-52403e39a23so3856448e0c.2 for ; Mon, 07 Apr 2025 13:01:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744056116; x=1744660916; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=mjGAIa1i+etugNmeAp6Vtd5kmpIXm+DHp1189Qjs204=; b=INw5KEzWWmZebAdwrG9jL/5gnYguxkisa5LVapUQjxFQKacN+6W5uPbJZytwJ2o15N b1XdOpmkv5K2tP91Hr7/hJ7ExNT/dALsJ+1wN3OZsEfmAtoIHCjnFAV+ZVILqmmkVNd8 WvbCfEULEVcsQdlhKfldo8CpA8BYrVJo/l45BZ0AkrB+jcmL7eMwoHmOooOqFops26mi ZFOgaiXKPQg5UISVhtP3g5Crrzpm/InbAKAUSP7u9wigDTVOoLniai6ngJNSpolIV2lK SbwtFlnN7B8zHm9kYEwxLOSRcqX0u7zCwzn4ppYeMUKyvaB/AndIFVtCpBqMmG5uGRvf biKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744056116; x=1744660916; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mjGAIa1i+etugNmeAp6Vtd5kmpIXm+DHp1189Qjs204=; b=xEJYbAR5mbfOOeXry5MkAiwiwvRRmBl/0pWP1Vx0KrIZnHNeYvC8a/CDwBes/cz3qB 3UDs+mZqP1NG4zOtf+eAxzyGJGGXqpIPUhTi/EZNuGuqB42e4VaJgoTe7Kd7bohTE2Ry lCbGX3dqyuUse9ub2yDS/wqAM5hUZ2qR3rqYllqEb3dpS7aMuUCV9oZhzbz/KxvhGlPq +8a471PWpFS4XP0RBI7LoCjbwdeBMLWrpiQrmukpVzDkWLd8YBpTSUHdSGZ/+dro06A5 oVHYA0c2E0lBG8Z4WEJwO8vkr+HFdTRwgx8Y/tEDeLEgW5Jaeh6eV0IDzFFBCI5/I37c wP0A== X-Gm-Message-State: AOJu0YwaoBp5xu3AqtQSd+g0y5jWAuRhiHmHt2nChfYqxpGgYojX3lON iN+I/MO+qbghj7jNjJSx2iaFvehXJCbJVRhqSoU6w95w1+FfbdAZNk+dItZB X-Gm-Gg: ASbGncvLD5BsAF8BXlpKEZseY9tshvKGxgtW2rEe/ymr8FbnJB5TS6Ky10SG3uU5T4S qZYaY9STvj2p52tGpKeX6owJhLoyBBoekWwCQ8xxuOHQdA5UEKp0g3XFxiKupOy8Hx57cmvLD2t NNVU89xwuCScKc6eTwFRIg21ElMv2gSs22PbVVwzDdWnMsiTQ+5xlKard6vW4jwjixhS3FjVt79 WNlYVdClnib+fZYja8pW1ivrhncBFR98x0pT967L/O5vkeu3S1FlsvsvrsclOa9j9CTMbe1QF1M 9NIT9Q52GyCk/T1b7xPmWI7yymMuKKFtl668AolLKmExFzFufekGn55mFtD42VfD4vRxrOuZu6Q sP/sGkPK0wttVQg== X-Google-Smtp-Source: AGHT+IG/iAfQ5TO/cEjYNH6tMyAh4xRYPykhvqTh+LIOnMIZM51iXqoshiCD6WRnsmMtA69yubMBnQ== X-Received: by 2002:a05:6122:251f:b0:520:61ee:c7f9 with SMTP id 71dfb90a1353d-52773051a54mr7824333e0c.7.1744056116230; Mon, 07 Apr 2025 13:01:56 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-5279b691f07sm69140e0c.41.2025.04.07.13.01.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 13:01:54 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 10/15] test-bap: Introduce USR/SCC Release tests for LC3 Date: Mon, 7 Apr 2025 16:01:16 -0400 Message-ID: <20250407200124.881534-11-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250407200124.881534-1-luiz.dentz@gmail.com> References: <20250407200124.881534-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz Unicast Server Performs Client-Initiated Release Operation Test Purpose: Verify the behavior of a Unicast Server IUT when a Unicast Client initiates a Release operation. Pass verdict: The IUT sends a notification of the ASE Control Point characteristic value. Test Summary ------------ BAP/USR/SCC/BV-143-C [USR SRC Release in Codec Configured state] Passed BAP/USR/SCC/BV-144-C [USR SNK Release in Codec Configured state] Passed BAP/USR/SCC/BV-145-C [USR SRC Release in QoS Configured state] Passed BAP/USR/SCC/BV-146-C [USR SNK Release in QoS Configured state] Passed BAP/USR/SCC/BV-147-C [USR SRC Release in Enabling state] Passed BAP/USR/SCC/BV-148-C [USR SNK Release in Enabling or Streaming state] Passed BAP/USR/SCC/BV-149-C [USR SRC Release in Streaming state] Passed BAP/USR/SCC/BV-150-C [USR SRC Release in Disabling state] Passed Total: 8, Passed: 8 (100.0%), Failed: 0, Not Run: 0 --- unit/test-bap.c | 56 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 49 insertions(+), 7 deletions(-) diff --git a/unit/test-bap.c b/unit/test-bap.c index 73dac275907e..c77fc83d83de 100644 --- a/unit/test-bap.c +++ b/unit/test-bap.c @@ -1160,10 +1160,6 @@ static void bap_attached(struct bt_bap *bap, void *user_data) data->bap = bap; bt_bap_set_debug(data->bap, print_debug, "bt_bap:", NULL); - - if (data->cfg && data->cfg->state_func) - bt_bap_state_register(data->bap, data->cfg->state_func, NULL, - data, NULL); } static void test_server(const void *user_data) @@ -3525,7 +3521,7 @@ static struct test_config cfg_src_cc_release = { IOV_DATA(0x52, 0x22, 0x00, 0x08, 0x01, 0x03), \ IOV_DATA(0x1b, 0x22, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00), \ IOV_NULL, \ - IOV_DATA(0x1b, 0x1c, 0x00, 0x03, 0x00) + IOV_DATA(0x1b, 0x1c, 0x00, 0x03, 0x06) #define SCC_SRC_CC_RELEASE \ SCC_SRC_16_2, \ @@ -3552,7 +3548,7 @@ static struct test_config cfg_snk_cc_release = { IOV_DATA(0x52, 0x22, 0x00, 0x08, 0x01, 0x01), \ IOV_DATA(0x1b, 0x22, 0x00, 0x08, 0x01, 0x01, 0x00, 0x00), \ IOV_NULL, \ - IOV_DATA(0x1b, 0x16, 0x00, 0x03, 0x00) + IOV_DATA(0x1b, 0x16, 0x00, 0x01, 0x06) #define SCC_SNK_CC_RELEASE \ SCC_SNK_16_2, \ @@ -3699,7 +3695,7 @@ static struct test_config cfg_src_disable_release = { * The IUT successfully writes to the ASE Control Point characteristic with the * opcode set to 0x08 (Release) and the specified parameters. */ -static void test_scc_release(void) +static void test_ucl_scc_release(void) { define_test("BAP/UCL/SCC/BV-106-C [UCL SNK Release in Codec Configured" " state]", @@ -3732,6 +3728,52 @@ static void test_scc_release(void) SCC_SRC_DISABLE_RELEASE); } +/* Unicast Server Performs Client-Initiated Release Operation + * + * Test Purpose: + * Verify the behavior of a Unicast Server IUT when a Unicast Client initiates + * a Release operation. + * + */ +static void test_usr_scc_release(void) +{ + define_test("BAP/USR/SCC/BV-143-C [USR SRC Release in Codec Configured" + " state]", + test_setup_server, test_server, &cfg_src_cc_release, + SCC_SRC_CC_RELEASE); + define_test("BAP/USR/SCC/BV-144-C [USR SNK Release in Codec Configured" + " state]", + test_setup_server, test_server, &cfg_snk_cc_release, + SCC_SNK_CC_RELEASE); + define_test("BAP/USR/SCC/BV-145-C [USR SRC Release in QoS Configured" + " state]", + test_setup_server, test_server, &cfg_src_qos_release, + SCC_SRC_QOS_RELEASE); + define_test("BAP/USR/SCC/BV-146-C [USR SNK Release in QoS Configured" + " state]", + test_setup_server, test_server, &cfg_snk_qos_release, + SCC_SNK_QOS_RELEASE); + define_test("BAP/USR/SCC/BV-147-C [USR SRC Release in Enabling state]", + test_setup_server, test_server, &cfg_src_enable_release, + SCC_SRC_ENABLE_RELEASE); + define_test("BAP/USR/SCC/BV-148-C [USR SNK Release in Enabling or" + " Streaming state]", + test_setup_server, test_server, &cfg_snk_enable_release, + SCC_SNK_ENABLE_RELEASE); + define_test("BAP/USR/SCC/BV-149-C [USR SRC Release in Streaming state]", + test_setup_server, test_server, &cfg_src_start_release, + SCC_SRC_START_RELEASE); + define_test("BAP/USR/SCC/BV-150-C [USR SRC Release in Disabling state]", + test_setup_server, test_server, + &cfg_src_disable_release, SCC_SRC_DISABLE_RELEASE); +} + +static void test_scc_release(void) +{ + test_ucl_scc_release(); + test_usr_scc_release(); +} + static void bap_metadata(struct bt_bap_stream *stream, uint8_t code, uint8_t reason, void *user_data) From patchwork Mon Apr 7 20:01:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 879793 Received: from mail-io1-f41.google.com (mail-io1-f41.google.com [209.85.166.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 300642222C4 for ; Mon, 7 Apr 2025 20:02:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056133; cv=none; b=quxSmXLS5I8jao4EKsUfNbVECz9k0QlTyNTqnBNNfV3XnStp8p/iri8BSj63YjaFlHrcmMH0tFhAewEd1prD2J6dN75KdgwpHoDY9QzhgSjIs09N/Z56SXpLA8to9UY1ahalxsjTwgyrp76jsGBVBjtVtuMkZ6wkNTRu4yA0EQY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056133; c=relaxed/simple; bh=rtFznkee/hfiJclSoLZHUJ06b11xpiXnJ35OAR/6dV4=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=m9u+X4datKj2jVbnP7+CGJXeuR3BnZ4KtgtoRsxVYkcQI6jr9IfAdeqmS2GScpsAph0+YBn+/rA+EHp0EA6lw9pBzfvWSMPuSHAhXHkHU6FvANHof5l7ejgNqUdGSovFoLnJbzq96gw2EY5UpDx70TelpYBx+K83kP9zp1CAAhw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Fk0TCWZ2; arc=none smtp.client-ip=209.85.166.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Fk0TCWZ2" Received: by mail-io1-f41.google.com with SMTP id ca18e2360f4ac-85dac9729c3so323743339f.2 for ; Mon, 07 Apr 2025 13:02:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744056130; x=1744660930; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=KhOLzS/aTB7p+rCSf6gjBGzekkXKtABaMGKHSe8dHUE=; b=Fk0TCWZ2+igi01Ezd599ULc5vMZgK049VlelTjPSbE+ycpsvP8RRcc1vpxq0lGYl+z nrEukUs/cV7AAJa7vxn/S4RsriteGW91+Fpt6TyoTZFeAGmSnP/S4od4EobzYJkgAHtO BYZPTR3fkBKHFatqS2U90AMHGKlirqgcNY4pL+JAUT2toxWsa6cwmULOhtRrz7KjoCzg nkAanh20lq2SUVXt68X3dkKysFidEtyMY0L+WYGsCi2Kr30KYMJ/kUK7ggkwJiIiuQDV CJ8oJimkh0R6K0xOyQsdr5SuNDEq7ZsCIGhU+OjsqEyVE/eViWtZ27xvbklQeGfKba4c Vuyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744056130; x=1744660930; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KhOLzS/aTB7p+rCSf6gjBGzekkXKtABaMGKHSe8dHUE=; b=WwvRqmC5PUH05w7gVSkYTtUKEyYZWmDkLwLGuFw14pVmFFtcaDj9gxRSkTnm4CanEk lRA1mDzFiXi+OTRxt0YtHS8T2Rq3o2ngWxrkdT8nVg6Kavskn5clrPEqw2Bxh8IyIXNd 9hqFgCXasb9W3gEcv9L21k8+TVqEbERp21MM8O15g5oVxx8WMquCDlprQh2TJHsj8o/3 2Y/2p9bCGkGHokCKcn6e6KSkgM53ZInKCFLSgKe3Dx3dsK9xhhRjxUcEeP+vvz6TLcPZ nNq+eQlzoU10elPi6BUu78WLMYYESrBxbL2iMBtkj8mI0aNoReT8pBc5jpzKQJgGamjM zouA== X-Gm-Message-State: AOJu0YyH6csaqgjLJskWHuIL7F414CDcNfA7PA1sLJ+F1+NJonAqw9ga oEPU2q8ZrbfZCTISCAjbSKXBTCDKHpooJ4QLHAxn9luCZVIfj2XsZGhw0VsB X-Gm-Gg: ASbGncsfHSrtwUEfAdwhGoafLfmaAJ9b3O1RrQvOGPps75FYiIG3qYaSHJGIuECY7jn iH4CzQyojRIfnSuuipvIeHx06XQcyoGavsgw6iD/7Uch4AzR41nSECctYz0NhIVZRMQcbNYJPoE q3dn1dy4fRV+XDMTMxkOhzWXvOSH1jbwl9d8st4mAQFdO9pIRuueGM3uKmhOp+y2P/Yo7281Bwd MPWyhcR17DSCDPUhsd0Hurcnpq5IwjPKqgSlv/onmB336x3VRk51IJwGpITNWvMwDIMW7qmRa8N wZppKVa9THXV5SNnVv+abPR48bEPjvxvoxtNVETMxcCXSkWKYYBPCxehBS5HMzg7n/l+0wUPI8o BiMCwThV6TU0+8Q== X-Google-Smtp-Source: AGHT+IGhB9HrKv4I3bFsg9iIwaoSWL2Mn+mPrF6FWAStG/0+KyTxXqMIu4ryoDSmDB6pTFUR1VwJ+A== X-Received: by 2002:a05:6122:181b:b0:520:9688:d1bb with SMTP id 71dfb90a1353d-52772ede57bmr6997386e0c.2.1744056119554; Mon, 07 Apr 2025 13:01:59 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-5279b691f07sm69140e0c.41.2025.04.07.13.01.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 13:01:57 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 11/15] shared/bap: Fix not sending ASE Notication in case of Metadata update Date: Mon, 7 Apr 2025 16:01:17 -0400 Message-ID: <20250407200124.881534-12-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250407200124.881534-1-luiz.dentz@gmail.com> References: <20250407200124.881534-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz Tests such if metadata update requires the server to generate ASE notification on Update Metadata operation. --- src/shared/bap.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/shared/bap.c b/src/shared/bap.c index ec23e882f389..76f221102dc6 100644 --- a/src/shared/bap.c +++ b/src/shared/bap.c @@ -2162,6 +2162,9 @@ static uint8_t stream_metadata(struct bt_bap_stream *stream, struct iovec *meta, util_iov_free(stream->meta, 1); stream->meta = util_iov_dup(meta, 1); + /* Force state change to the same state to update the metadata */ + stream_set_state(stream, bt_bap_stream_get_state(stream)); + return 0; } From patchwork Mon Apr 7 20:01:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 878765 Received: from mail-vk1-f174.google.com (mail-vk1-f174.google.com [209.85.221.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2B0262222C4 for ; Mon, 7 Apr 2025 20:02:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056125; cv=none; b=LlmzHpNZhUxz5YCowCTBENjYTnwGZNktqjNdulEpSlwdG7qH7p621/zHZ4S6Jgs2TUa0OQFA+EUg4xyn7iTMX/ILbRFITCvNOAMckphoSjM2GwGKBsoTsTBTLeM5NjrhqlLKbXWzdfKXrTvlXN2s7g6y9R0o6YYmLClFJvxQRyU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056125; c=relaxed/simple; bh=CXLxyP410fRpt64ZOOLY4z3YvvSGAudaFdOL6DsKMPo=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QZQ3q4Jrdvh0NMbAJprOpR+YooYby6yUWwTz0Ce2MBpag5Z1GjN8yHqbPjmuOh/lpfTjqkK96DgvuioO+opXj6mnnOiDZsYVEi8CAwC3vxM1TROmqrWJmjpHrvsUXQPhyByp9aRSeu8bHwlCHnhNUfJTqkqfD16JxWWjoFxHXEQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=dTjgfD4I; arc=none smtp.client-ip=209.85.221.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dTjgfD4I" Received: by mail-vk1-f174.google.com with SMTP id 71dfb90a1353d-52403e39a23so3856521e0c.2 for ; Mon, 07 Apr 2025 13:02:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744056122; x=1744660922; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Q8jttERukblywXwrKsL0Af2/sHwoQGtFPkhNzIFFZIk=; b=dTjgfD4IfLIkGYJf5x0gmjeo1NRoDkvyXmkdMYhjEhhKRdGU8vcjVbzBPslS0J9Jmf eA/T7/Jxawi1+7dSEalyZP4G/yCqyb4Y1PpXx17pTPKu8QxfIzkwZaZ/Nv6r/tDIxEmM qdwGQjZUdbtYRnVOFgdSS7afaWPNzICNuXgv2HlqCe2vSV5fjYwzQx+8of+Y2fJ5QoFH HZVvJad2CudjE6L/xaVfvHo7LPlTFnycmw7a6Am8A3r4LKuRWWuCaaiU8WSxoJL1F4Di 5km4xE11T2exHyGyOIf/XyjHozNtL8NTHpwdkjnusjZdBBoHyr5uM+SOFLLLhIrtqCVJ UKtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744056122; x=1744660922; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Q8jttERukblywXwrKsL0Af2/sHwoQGtFPkhNzIFFZIk=; b=eyfc+ORGzdDyiUgh+/fp+xly8N+x3gkwJUB1E8g3jrfIEap2l+DGG/t4IdTSw4yXJW grWIWJbxrhPs1MEUbCUj/5pg7GpbZbIEoZ+OEHLFLyz8kX0BroU57xWC0vv8/HC+g0iN fe6a7VTf8upr1kr1/6lw2t0AXLE1YKXVOeLdaNtMWld6Lo2cu9SUQXcJwGG+HI0Bp3Pf Lyv8tkdLZ2CgRDuZhzNBeoSqCpgHDf/aeZsxYIui3SSniurtMViSdzkkEV7WQvjF+tfL dO1BOMoi+ETDCX71lWgwtkBN+uokIyqALyY+upOjlULPKI/ns50J0yW48ta4oMFUH3jv Z9qw== X-Gm-Message-State: AOJu0YyTF1L+9CJ7TsKHZd3JPDyO2vRj+TvXSgunZ8WI2L/WYw7dbsSw eTgqTwNBw82QGt58tgO5j02htB1WvcfxTCRX+uUTwNiKTLz3ICsBc/w9vmNE X-Gm-Gg: ASbGncvuSiMOtlH+hScx+LzGtppGwOIvnP8zhh/Y3IH7+ZXNeI2p9m4OCYJuWMeXp4i kuCXOc/2KxpbNC8ISDAYaaNCpEhrEixZPj8EQGABbimlJtvYHMMkKmFrSKeFaR2tcTfS/qlZFkE NpBK+aVEsXa0uc4ei3um1RI2lvm+B72/aDKDXdDvFPEjqjnWVjoxTFdIsx0HJ6P+SHt5K57E7qO srUrzFapSK4NzYAH9f00O+SbDlCTbrTCQmJKAuJ3APbAniaJ+/ud2SmD241watWF5Hby/3FdEo7 lbGszOP9tTEFVdJTM73QSocfHRYy48Msi+ITH/alrs4QHVh3Uz6SWjJ5IlJrUfPzFIrPIgFSzVd h6FRsos0Iz1Ogzw== X-Google-Smtp-Source: AGHT+IHWIM8Bw5JCFV3YRtxf8uUjp4pVkWhtCKaSQZ+mhtE14wIBURSyFPCiF9nmCtu8z6wcKbr7Aw== X-Received: by 2002:a05:6122:78f:b0:523:dd87:fe95 with SMTP id 71dfb90a1353d-527730aab63mr8137727e0c.9.1744056122306; Mon, 07 Apr 2025 13:02:02 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-5279b691f07sm69140e0c.41.2025.04.07.13.02.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 13:02:01 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 12/15] test-bap: Introduce USR/SCC Metadata tests for LC3 Date: Mon, 7 Apr 2025 16:01:18 -0400 Message-ID: <20250407200124.881534-13-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250407200124.881534-1-luiz.dentz@gmail.com> References: <20250407200124.881534-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz Unicast Server Performs Update Metadata Operation Test Purpose: Verify that a Unicast Server IUT can perform an Update Metadata operation initiated by a Unicast Client. Pass verdict: The IUT sends a notification of the ASE Control Point characteristic with Response_Code set to Success (0x00) for the requested ASE_ID and opcode. Test Summary ------------ BAP/USR/SCC/BV-161-C [USR SRC Update Metadata in Enabling State] Passed BAP/USR/SCC/BV-162-C [USR SNK Update Metadata in Enabling or Streaming state] Passed BAP/USR/SCC/BV-163-C [USR SRC Update Metadata in Streaming State] Passed Total: 3, Passed: 3 (100.0%), Failed: 0, Not Run: 0 --- unit/test-bap.c | 56 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 44 insertions(+), 12 deletions(-) diff --git a/unit/test-bap.c b/unit/test-bap.c index c77fc83d83de..9a07bd8f53e7 100644 --- a/unit/test-bap.c +++ b/unit/test-bap.c @@ -3734,6 +3734,9 @@ static void test_ucl_scc_release(void) * Verify the behavior of a Unicast Server IUT when a Unicast Client initiates * a Release operation. * + * Pass verdict: + * The IUT sends a notification of the ASE Control Point characteristic value. + * */ static void test_usr_scc_release(void) { @@ -3815,15 +3818,13 @@ static struct test_config cfg_snk_metadata = { * Data: 0701010000 * ATT: Handle Value Notification (0x1b) len 37 * Handle: 0x0016 - * Data: 01010102010a00204e00409c00204e00409c00_qos + * Data: 0103000000 */ #define ASE_SNK_METADATA \ IOV_DATA(0x52, 0x22, 0x00, 0x07, 0x01, 0x01, 0x00), \ IOV_DATA(0x1b, 0x22, 0x00, 0x07, 0x01, 0x01, 0x00, 0x00), \ IOV_NULL, \ - IOV_DATA(0x1b, 0x16, 0x00, 0x01, 0x05, 0x00, 0x00, 0x4c, 0x1d, 0x00, \ - 0x00, 0x02, 0x1a, 0x00, 0x02, 0x08, 0x00, 0x40, 0x9c, \ - 0x00) + IOV_DATA(0x1b, 0x16, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00) #define SCC_SNK_METADATA \ SCC_SNK_ENABLE, \ @@ -3845,18 +3846,16 @@ static struct test_config cfg_src_metadata = { * Data: 0701030000 * ATT: Handle Value Notification (0x1b) len 37 * Handle: 0x001c - * Data: 030300000403020100 + * Data: 0303000000 */ -#define ASE_SRC_METADATA \ +#define ASE_SRC_METADATA(_state) \ IOV_DATA(0x52, 0x22, 0x00, 0x07, 0x01, 0x03, 0x00), \ IOV_DATA(0x1b, 0x22, 0x00, 0x07, 0x01, 0x03, 0x00, 0x00), \ IOV_NULL, \ - IOV_DATA(0x1b, 0x1c, 0x00, 0x03, 0x05, 0x00, 0x00, 0x4c, 0x1d, 0x00, \ - 0x00, 0x02, 0x1a, 0x00, 0x04, 0x08, 0x00, 0x40, 0x9c, \ - 0x00) + IOV_DATA(0x1b, 0x1c, 0x00, 0x03, _state, 0x00, 0x00, 0x00) #define SCC_SRC_METADATA \ SCC_SRC_ENABLE, \ - ASE_SRC_METADATA + ASE_SRC_METADATA(0x03) static void state_start_metadata(struct bt_bap_stream *stream, uint8_t old_state, uint8_t new_state, @@ -3886,7 +3885,7 @@ static struct test_config cfg_src_metadata_streaming = { #define SCC_SRC_METADATA_STREAMING \ SCC_SRC_ENABLE, \ SRC_START, \ - ASE_SRC_METADATA + ASE_SRC_METADATA(0x04) /* Unicast Client Initiates Update Metadata Operation * @@ -3898,7 +3897,7 @@ static struct test_config cfg_src_metadata_streaming = { * The IUT successfully writes to the ASE Control Point characteristic with the * opcode set to 0x07 (Update Metadata) and the specified parameters. */ -static void test_scc_metadata(void) +static void test_ucl_scc_metadata(void) { define_test("BAP/UCL/SCC/BV-115-C [UCL SNK Update Metadata in Enabling " "State]", @@ -3914,6 +3913,39 @@ static void test_scc_metadata(void) SCC_SRC_METADATA_STREAMING); } +/* Unicast Server Performs Update Metadata Operation + * + * Test Purpose: + * Verify that a Unicast Server IUT can perform an Update Metadata operation + * initiated by a Unicast Client. + * + * Pass verdict: + * The IUT sends a notification of the ASE Control Point characteristic with + * Response_Code set to Success (0x00) for the requested ASE_ID and opcode. + */ +static void test_usr_scc_metadata(void) +{ + define_test("BAP/USR/SCC/BV-161-C [USR SRC Update Metadata in Enabling " + "State]", + test_setup_server, test_server, &cfg_src_metadata, + SCC_SRC_METADATA); + define_test("BAP/USR/SCC/BV-162-C [USR SNK Update Metadata in Enabling " + "or Streaming state]", + test_setup_server, test_server, &cfg_snk_metadata, + SCC_SNK_METADATA); + define_test("BAP/USR/SCC/BV-163-C [USR SRC Update Metadata in Streaming" + " State]", + test_setup_server, test_server, + &cfg_src_metadata_streaming, + SCC_SRC_METADATA_STREAMING); +} + +static void test_scc_metadata(void) +{ + test_ucl_scc_metadata(); + test_usr_scc_metadata(); +} + #define SNK_ENABLE \ IOV_DATA(0x52, 0x22, 0x00, 0x03, 0x01, 0x01, 0x04, 0x03, 0x02, 0x01, \ 00), \ From patchwork Mon Apr 7 20:01:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 879794 Received: from mail-ua1-f44.google.com (mail-ua1-f44.google.com [209.85.222.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 02B6A2222C4 for ; Mon, 7 Apr 2025 20:02:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056128; cv=none; b=jwvnI6yokfA39n8D8azNd5wqpuIIo1f1kwo7jKU/iuZN7SxZnqke8FpXm9oqIe9LWoAiOaOWD+8cGlINqdYLoqQiSPoC1gHbconsGsBCBT7fASvGcKBJXKZJQMSyN/Y+YEvxm5KnGOx/EGQxrovNvX7FqPwFGuzNEdbmhkojUlc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056128; c=relaxed/simple; bh=PgbhRObiC1Xo5WN5NLu9N8o0fGCltXCT2cK67EZgONs=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=E2Ta+2lvA0L4RpG45arTETS5NGGySRBTmeQRAI7YZ5fuqKiwbv/EfQGMurfcQ5dr+d55sjHuw/xF1lWvH3GKTI+7S16ni4AhwK8Zy1uXChxyZeRKUh/JInQn28Et+Q0rdpabzyvD5A5eRjMnNvRzg5NRmfwU9i6IhMYyzhrD3O8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=QghaQe2X; arc=none smtp.client-ip=209.85.222.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QghaQe2X" Received: by mail-ua1-f44.google.com with SMTP id a1e0cc1a2514c-86d3805a551so2061983241.3 for ; Mon, 07 Apr 2025 13:02:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744056125; x=1744660925; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=uZ8URkVUm4xrDQ6W+Ksv8SyeFtQqiErCqkAYQsiUZck=; b=QghaQe2XgbSqmIDkAmD+D7ptJ/TAwyWCQIsCPWOUhiYAg5z6dQlapQhl4iIBD5zKf9 ROW6vYhhPG3ywcWvMZha4UeJ25AwrrqfdZt+EZmS8DpQZN+u7TYgL3mfIbJa2YfrEQXG LMw+DrUkQdj5Sd/owqXrsmAYs6apMBRQm2eLKWxQW4psC4bpoKUydoxajKEITOO5BOOv NGc2kLs+maAqKLHPqHE0AW8S2AxxcHvqKTQeTYrXEiVCKvzvts++l/D/WyBlUNVj6atK He5FeFPc8HsZIxMBZzMA7UXO60xHpj2j+ciGnJHKZXIAcXNFR1Nx4jEyjG6xaW8ue+Hm YvCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744056125; x=1744660925; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uZ8URkVUm4xrDQ6W+Ksv8SyeFtQqiErCqkAYQsiUZck=; b=R6vWy3S/q6AF3GjoeAs55RCX74cN0RItbnK1yl0iJw8Aa5QqlRBO9pDiWVIGlFoGt3 e5vE879yrBFQz3ppm502YPuJrpe7sfRFB+hPmpEqv3p4Rl0QaTz/u03mJrfAvbxs7Drs 1wjzi1oCLFWnnlMmIaYuj9tL/HUPCXLg4HBYx5e985vrMQueyupBoyETS05ShJ18Q5rG R0XWUakPpZ0swZsrY1oPaI2bz9JVZLtiwsiReO1m6oNDefPlGYNoKkhw7NpmmPt2IJr1 pv7yi8wLBzZT1het4fwgbw0RbQMKGjKYjx1qXTZubUwtX7udT1OvQD/k03Hh14ecwLpt DT5g== X-Gm-Message-State: AOJu0YwjCqgdiTZacgXHaGkM+k22RYXcM5FjMe7O3TzOZyqrQw91YxXW Gm1zOs87iFqbTeIoWfXTCtb1tVrFz+fIlmGIfHB51XgsAszm5eeaXO8YDEVM X-Gm-Gg: ASbGncu7WUzdEqdWo2r6q3TyHeCpkMfc337FeC8o6RVWcXtTkyjgMLVZ3UWeZGZbJa4 QuEZ/COH7ouYMPM5MOci/vTHxBiE2g5lmTfzkL/Dr92wXSWVTuey1XMLr0n2ke2IHSmzTs0dl9X t7kJPD9Asv6/nDW+vlfyS9K1WaKLrVxi3iC/iqsNiFkZ8Fu6lUO+iu0rM+zaKUJ6Rne5t6PAQoP mkX1LbQIM5BK5JaBLKuZweh72s+KyTrz3c9lAamwCWYoM0Pzdg7NuB8wRRgY31xBbPCLJIFK48P 5z6GYOJUGQ9EOuwrP8nO22uyZ/jglFbbZKEjDoefBkKzg4qxza0Ak1f0LYc5iKmmIsRK9uLpQda Kbvi+tqvtYQE55w== X-Google-Smtp-Source: AGHT+IH0yw5UNjffUlaIo1KU084kqYXfTzldCovRZZ6W/P/T/jcN2OD0HpPT1JjvkSJqVojSaFWZSQ== X-Received: by 2002:a05:6122:2665:b0:527:8771:2d39 with SMTP id 71dfb90a1353d-5278771399bmr3217408e0c.7.1744056125135; Mon, 07 Apr 2025 13:02:05 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-5279b691f07sm69140e0c.41.2025.04.07.13.02.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 13:02:03 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 13/15] shared/bap: Fix notifying with the wrong state Date: Mon, 7 Apr 2025 16:01:19 -0400 Message-ID: <20250407200124.881534-14-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250407200124.881534-1-luiz.dentz@gmail.com> References: <20250407200124.881534-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz stream_notify_metadata is reused by a couple of states so it needs to pass on the actual state to be notified rather than using ep->state which may have been transitioned already. --- src/shared/bap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/shared/bap.c b/src/shared/bap.c index 76f221102dc6..be35c2e60911 100644 --- a/src/shared/bap.c +++ b/src/shared/bap.c @@ -1088,7 +1088,7 @@ static void stream_notify_qos(struct bt_bap_stream *stream) free(status); } -static void stream_notify_metadata(struct bt_bap_stream *stream) +static void stream_notify_metadata(struct bt_bap_stream *stream, uint8_t state) { struct bt_bap_endpoint *ep = stream->ep; struct bt_ascs_ase_status *status; @@ -1106,7 +1106,7 @@ static void stream_notify_metadata(struct bt_bap_stream *stream) memset(status, 0, len); status->id = ep->id; - status->state = ep->state; + status->state = state; meta = (void *)status->params; meta->cis_id = stream->qos.ucast.cis_id; @@ -1738,7 +1738,7 @@ static void stream_notify(struct bt_bap_stream *stream, uint8_t state) case BT_ASCS_ASE_STATE_ENABLING: case BT_ASCS_ASE_STATE_STREAMING: case BT_ASCS_ASE_STATE_DISABLING: - stream_notify_metadata(stream); + stream_notify_metadata(stream, state); break; case BT_ASCS_ASE_STATE_RELEASING: stream_notify_release(stream); From patchwork Mon Apr 7 20:01:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 878764 Received: from mail-vk1-f175.google.com (mail-vk1-f175.google.com [209.85.221.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8804F2222C4 for ; Mon, 7 Apr 2025 20:02:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056131; cv=none; b=phTCIqlW2D7nEVyy0VK5RfJqKqNIIl6WCuIUQcrT0Fx4ZG6NWAYpL0m8nmFAvREqigjvNrf2izN2p2YwfWoggA6yZB0yKzWsKPxsRk8kqqjzcn7ZIS9QH9atsw6dJQAqSsJBh0KLsEOeBnjWKyCSZxUvOqVzF3Dnc+iW/FAq+FA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056131; c=relaxed/simple; bh=6IDTVKF2V9igFEgIWeSddA+HgqYPaB8uSQ0WRp4pd4I=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dOb58jUNR1oGivrvoNRs3fkm2rAeliFXzhDAXpqkp8606vBsxoxuoswarX2VOxg8o6dCyxwSuRdU+SMTJc4ypSIEePSzLjko8f68sjMqkEA6+R55wmUYOqLC3qGndPFLg6pBl1ZWo+SaPGsJjCeiOOZxI4FbSR29SF0VlQUsMrY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=dtHJP9VY; arc=none smtp.client-ip=209.85.221.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dtHJP9VY" Received: by mail-vk1-f175.google.com with SMTP id 71dfb90a1353d-5259331b31eso2232430e0c.0 for ; Mon, 07 Apr 2025 13:02:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744056128; x=1744660928; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=R26u60CrrYvf7mC775l8Z8/4e5MyzOnBvrVyYtVW+T4=; b=dtHJP9VY+YkLkeYJpiI0bh3CDpzf/MCvt+/QxXp8ePHZSBPAEIWz1QZ2viyq7jeda7 PekI05Xegj+OE5Atm0XazHTRnXRHyf+DFtj3MSZxzKFi9wc1Ye2ZXZbZIkteK3vZ0Qo3 AaaJA9YqKMN2FphEgSsSenMFtDhymDrR7V6+1YGUOvG6Lnk/GlqWimLlfWxFpCcF15tw nG+SdTgPlJl00uwZh+xl00QSWQetp9k5i+pWOE2ynJWtKLddczoGHyKnYN7koh64gGb7 SuEHc4NXy89KI5rvfuCmq38yARO9E6MMaHi1O+eHdjDknA4TDAHPyeHf6ovz/VHnaX+F AQzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744056128; x=1744660928; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=R26u60CrrYvf7mC775l8Z8/4e5MyzOnBvrVyYtVW+T4=; b=QzHZuCgZaoMCk/0D7AzN2poXf+hbRe7qbVVQVWoAGVYrHu7bk4/zNo6cljQ0a80Bf/ occrUqSx02yfK58lCRuqpTeKbFpZdupukvgZgjNODBysrm//TEa4HEJ11u6tar2O8afJ wsn+XkINfTjDyjD9Z5mSjXGtTq7LN7v+EzjtHSEeJIp0x0TVgOQ2hJ4kv8UQSPHQ7T7a Yf6JF5Ioo5KeKvzgubenic1acFzWW4BdcvsLmbp3zPo0lbQ4kEJdK+LV+5CwjaXrcfxt VTZlINuPwv91y3lVM6/dGVAeb6OETkk3Gs7da+eWOSbLDx4jF4iPZuiyv8z9/nGQ5DJ1 SVhw== X-Gm-Message-State: AOJu0YwZLtSiLkPUxS7y5mvAXJcIuICpkD96YRWa4/MbyKtHTp5WuWOR 6n+qA2/h5VF6xVTYzk30pZjO11+2p+BBc8ySlolzLJPYm+JzpeYknVbpri4a X-Gm-Gg: ASbGncupDBBCWcZPnlhDJGErQ11VJNUo+LMdMcyufbGNwjwi6tk+wEwYKSK4Ct2EioU PQ/UJ0fEzcW62IayEhOtVAtdIXLu101h0bepUSZrTfnf5rKfl/4iXAHFYK3EhqfHOLF0/Pp6vZK +6/9UoU0X+Jsz3AViFWwn6f0GZY6puPeRJ2fmCgz+95TYpD8Ru16YDhDxtbcEAdVrU/NurrKyqD cHrwsSOKUKoMz1o/yHga6MAsG0M37tFLaP5g5G71gN02g5gtqhyM4wvGFSfOPaL2Jy5v1pC7fFI 31tmSYExBRZASYvEXD0Fa1nK+IenDefoU91tk/XbpmDPUxOs+HsasnmR9jEzXvuzuwwDNxzgEW/ PAJm+zS6OTh1qbw== X-Google-Smtp-Source: AGHT+IH6p9VavrHI0wMfKEoQrvaPFtsxVkGJhYB4qo/D3RoE0XV6IDOmJwQzLj3v/5814DasrK+Bow== X-Received: by 2002:a05:6122:32cf:b0:519:fcf2:ef51 with SMTP id 71dfb90a1353d-52765c8dffcmr9682767e0c.5.1744056127700; Mon, 07 Apr 2025 13:02:07 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-5279b691f07sm69140e0c.41.2025.04.07.13.02.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 13:02:06 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 14/15] shared/tester: Fix not detecting NULL packets Date: Mon, 7 Apr 2025 16:01:20 -0400 Message-ID: <20250407200124.881534-15-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250407200124.881534-1-luiz.dentz@gmail.com> References: <20250407200124.881534-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz When receiving packets if the iovec is NULL it means it shall be skipped. --- src/shared/tester.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/shared/tester.c b/src/shared/tester.c index 56c8cba6f578..371ccacedc66 100644 --- a/src/shared/tester.c +++ b/src/shared/tester.c @@ -978,6 +978,9 @@ static bool test_io_recv(struct io *io, void *user_data) if (!iov) return true; + if (test->iovcnt && !iov->iov_base) + iov = test_get_iov(test); + g_assert_cmpint(len, ==, iov->iov_len); if (memcmp(buf, iov->iov_base, len)) From patchwork Mon Apr 7 20:01:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 878763 Received: from mail-vk1-f180.google.com (mail-vk1-f180.google.com [209.85.221.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 174BC22256B for ; Mon, 7 Apr 2025 20:02:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056135; cv=none; b=KuFXmYKvUfCwF10mKE8av26osUg9NNFWl2YCxe6jura3JVMBRpEU1yZjmcTLBSpx2ko6KBZp5E5mpBC46wzMHpX/hqZLjw+TRfothFJUzSxyWKBfBGu/ILbTtoB2ThhpSbmwTf6s3q8eKKEGhoBXCgLdLgFI0eXAlfBP+NcwphQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744056135; c=relaxed/simple; bh=uC48BAZV9MIxRvv3VxLtVMt5VvXf6ft0znTnLtPyF68=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=jpLNP0Li8VJtfwvmQhj6hyI5+UszeHJ/qlsKRrOMEQDxSrOvuubM8+jTkgW9+TnXeKO+qcRYgezTf+qv9OAY3MBmdUWuSYMLVkw94qDTgz+1f2Q1bLsCVkXLrFpP+wa+7SOTtIDZbx/G+indSCEW17sPMK4Fcdt01DGbutRNewc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=RrAWlhZS; arc=none smtp.client-ip=209.85.221.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="RrAWlhZS" Received: by mail-vk1-f180.google.com with SMTP id 71dfb90a1353d-523de538206so2093514e0c.2 for ; Mon, 07 Apr 2025 13:02:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744056131; x=1744660931; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=7OZLlrWa7L5CG5xOe2MiHYUBjgPPcQVx6/Z5PyjIXFw=; b=RrAWlhZSMrD7lMlL4GY7w5GWGHT6qKtQRGmP0CaSHBrsjiIX3nRPNb+MgVgEPwzdX0 34qFehsFgmP3x+Jw5p8ouBr14pKqeurWOPZwg9b+JsB2XA+YbodC7tHom80f9jBDogc5 0pw/LoW3KGPiqxbNOW21LT4VnHHpUZB7hS3xkWL0/rpR1sGHWs2gLyBaUk1qSTkb4mU+ N9CukAPjS3UteR/hcZ8kcdx/uKbkd6rdrn5zYyckPXnmsXpNQaL44J7Xx/k0o/UgKBEb 0BAjNDRsqD12WLJSnUAJEYeFjM9k7UBqpmleuACu217Y2rYGegMM17JQZAtGbqFbFoEb D4JA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744056131; x=1744660931; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7OZLlrWa7L5CG5xOe2MiHYUBjgPPcQVx6/Z5PyjIXFw=; b=Ijfz6LphqEuRlE9SZRu25jztp2tFsPIhS2xMSnSJZfKz/1qVBMpNwZtA+f6ycfJMj6 DzFiSVHTzH2AeeBapqLAeayqUeb92jgjVMXePkMSzrHhEsCdIqKkCQFKXgDKOmGefPpQ vGi6bvJNLylE1Llkisms85HSebFIMKH0DrwNMXm1SpxS24/FVx43l8OAMHlSOR8gRAbZ d9i9xoosV4pLdFPyNIYSAjtJNSlcomc9rqR8R3coDaiJyfKUwnUL5xWcBQ5ciROIgFfj /gN59faBT/a8b/RLa4BS3aUnrVOooLa2n3KEa0Vtr90D66lrWZcAXIU9jlO39YC7gbMO ylSg== X-Gm-Message-State: AOJu0Yyi5fKUgjzWhz+dODVaViNJFsvs3w6689OLV0rkaalKG24m+xpG CsVGVpfxMSEteRsmZrAjh7lh/nZwyWq1r/8/PEioalQpmxD4ZPHryE0MqhQR X-Gm-Gg: ASbGncuOrWQrYD95Qf5oNftSpAF8/+xpPMNFX0oY7DhaSfutZPcPFBg5PUtVMHGe5fH p1rqtmaYgpkA7Op57U7tu/01lOpqUyQi+KC5bI1naERaQt+AAjna9h5MIeYkkVktnk2GIvAqQ9r ligblWNEY4q9T5eAGrNuPRSeE6P8RNKUf7Fh7XTRalTJJd1rxWlcA/l9YKFTC8MLvY8ydUx0u5I 0amXraamd7eRvvH4ZJN2WeQKsKCkhI5avh17pPuyucmH2Ufqs7A0B6qseovP+0YKMF/Gj9lPHDq gpxzFyf5qH7FaPCq1cUpwaTiqbmhk2JFCYSwr74nmp9q+N91MJ/UxoNExhqTIlRz7bkUAL3kjW/ vW3Vcd0KGdGLrOg== X-Google-Smtp-Source: AGHT+IHhTVm/DgFjQVeuiY4laf1cyVpA97J/r9F2C3+bFVERGobofFbCpdRdaj+oPkDcl6um6eplNg== X-Received: by 2002:a05:6122:d9d:b0:518:865e:d177 with SMTP id 71dfb90a1353d-52764582927mr11267078e0c.9.1744056130880; Mon, 07 Apr 2025 13:02:10 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-5279b691f07sm69140e0c.41.2025.04.07.13.02.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 13:02:09 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 15/15] test-bap: Introduce USR/STR tests for LC3 Date: Mon, 7 Apr 2025 16:01:21 -0400 Message-ID: <20250407200124.881534-16-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250407200124.881534-1-luiz.dentz@gmail.com> References: <20250407200124.881534-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz Unicast Server Streaming – 1 Stream, 1 CIS – LC3 Test Purpose: Verify that a Unicast Server IUT can stream LC3-encoded audio data over one unicast Audio Stream to/from a Unicast Client. Pass verdict: If the IUT is in the Audio Source role, the IUT sends SDUs with a zero or more length, using the LC3 Media Packet format (defined in [3] Section 4.2). If the IUT is in the Audio Sink role, the IUT receives SDUs with a zero or more length, using the LC3 Media Packet format (defined in [3] Section 4.2) Test Summary ------------ BAP/USR/STR/BV-001-C [USR, AC 2, LC3 8_1_1] Passed BAP/USR/STR/BV-002-C [USR, AC 10, LC3 8_1_1] Passed BAP/USR/STR/BV-003-C [USR, AC 2, LC3 8_2_1] Passed BAP/USR/STR/BV-004-C [USR, AC 10, LC3 8_2_1] Passed BAP/USR/STR/BV-005-C [USR, AC 2, LC3 16_1_1] Passed BAP/USR/STR/BV-006-C [USR, AC 10, LC3 16_1_1] Passed BAP/USR/STR/BV-007-C [USR, AC 2, LC3 16_2_1] Passed BAP/USR/STR/BV-008-C [USR, AC 10, LC3 16_2_1] Passed BAP/USR/STR/BV-009-C [USR, AC 2, LC3 24_1_1] Passed BAP/USR/STR/BV-010-C [USR, AC 10, LC3 24_1_1] Passed BAP/USR/STR/BV-011-C [USR, AC 2, LC3 24_2_1] Passed BAP/USR/STR/BV-012-C [USR, AC 10, LC3 24_2_1] Passed BAP/USR/STR/BV-013-C [USR, AC 2, LC3 32_1_1] Passed BAP/USR/STR/BV-014-C [USR, AC 10, LC3 32_1_1] Passed BAP/USR/STR/BV-015-C [USR, AC 2, LC3 32_2_1] Passed BAP/USR/STR/BV-016-C [USR, AC 10, LC3 32_2_1] Passed BAP/USR/STR/BV-017-C [USR, AC 2, LC3 441_1_1] Passed BAP/USR/STR/BV-018-C [USR, AC 10, LC3 441_1_1] Passed BAP/USR/STR/BV-019-C [USR, AC 2, LC3 44_2_1] Passed BAP/USR/STR/BV-020-C [USR, AC 10, LC3 44_2_1] Passed BAP/USR/STR/BV-021-C [USR, AC 2, LC3 48_1_1] Passed BAP/USR/STR/BV-022-C [USR, AC 10, LC3 48_1_1] Passed BAP/USR/STR/BV-023-C [USR, AC 2, LC3 48_2_1] Passed BAP/USR/STR/BV-024-C [USR, AC 10, LC3 48_2_1] Passed BAP/USR/STR/BV-025-C [USR, AC 2, LC3 48_3_1] Passed BAP/USR/STR/BV-026-C [USR, AC 10, LC3 48_3_1] Passed BAP/USR/STR/BV-027-C [USR, AC 2, LC3 48_4_1] Passed BAP/USR/STR/BV-028-C [USR, AC 10, LC3 48_4_1] Passed BAP/USR/STR/BV-029-C [USR, AC 2, LC3 48_5_1] Passed BAP/USR/STR/BV-030-C [USR, AC 10, LC3 48_5_1] Passed BAP/USR/STR/BV-031-C [USR, AC 2, LC3 48_6_1] Passed BAP/USR/STR/BV-032-C [USR, AC 10, LC3 48_6_1] Passed BAP/USR/STR/BV-033-C [USR, SRC, AC 1, LC3 8_1_1] Passed BAP/USR/STR/BV-034-C [USR, SRC, AC 4, LC3 8_1_1] Passed BAP/USR/STR/BV-035-C [USR, SRC, AC 1, LC3 8_2_1] Passed BAP/USR/STR/BV-036-C [USR, SRC, AC 4, LC3 8_2_1] Passed BAP/USR/STR/BV-037-C [USR, SRC, AC 1, LC3 16_1_1] Passed BAP/USR/STR/BV-038-C [USR, SRC, AC 4, LC3 16_1_1] Passed BAP/USR/STR/BV-039-C [USR, SRC, AC 1, LC3 16_2_1] Passed BAP/USR/STR/BV-040-C [USR, SRC, AC 4, LC3 16_2_1] Passed BAP/USR/STR/BV-041-C [USR, SRC, AC 1, LC3 24_1_1] Passed BAP/USR/STR/BV-042-C [USR, SRC, AC 4, LC3 24_1_1] Passed BAP/USR/STR/BV-043-C [USR, SRC, AC 1, LC3 24_2_1] Passed BAP/USR/STR/BV-044-C [USR, SRC, AC 4, LC3 24_2_1] Passed BAP/USR/STR/BV-045-C [USR, SRC, AC 1, LC3 32_1_1] Passed BAP/USR/STR/BV-046-C [USR, SRC, AC 4, LC3 32_1_1] Passed BAP/USR/STR/BV-047-C [USR, SRC, AC 1, LC3 32_2_1] Passed BAP/USR/STR/BV-048-C [USR, SRC, AC 4, LC3 32_2_1] Passed BAP/USR/STR/BV-049-C [USR, SRC, AC 1, LC3 44_1_1] Passed BAP/USR/STR/BV-050-C [USR, SRC, AC 4, LC3 44_1_1] Passed BAP/USR/STR/BV-051-C [USR, SRC, AC 1, LC3 44_2_1] Passed BAP/USR/STR/BV-052-C [USR, SRC, AC 4, LC3 44_2_1] Passed BAP/USR/STR/BV-053-C [USR, SRC, AC 1, LC3 48_1_1] Passed BAP/USR/STR/BV-054-C [USR, SRC, AC 4, LC3 48_1_1] Passed BAP/USR/STR/BV-055-C [USR, SRC, AC 1, LC3 48_2_1] Passed BAP/USR/STR/BV-056-C [USR, SRC, AC 4, LC3 48_2_1] Passed BAP/USR/STR/BV-057-C [USR, SRC, AC 1, LC3 48_3_1] Passed BAP/USR/STR/BV-058-C [USR, SRC, AC 4, LC3 48_3_1] Passed BAP/USR/STR/BV-059-C [USR, SRC, AC 1, LC3 48_4_1] Passed BAP/USR/STR/BV-060-C [USR, SRC, AC 4, LC3 48_4_1] Passed BAP/USR/STR/BV-061-C [USR, SRC, AC 1, LC3 48_5_1] Passed BAP/USR/STR/BV-062-C [USR, SRC, AC 4, LC3 48_5_1] Passed BAP/USR/STR/BV-063-C [USR, SRC, AC 1, LC3 48_6_1] Passed BAP/USR/STR/BV-064-C [USR, SRC, AC 4, LC3 48_6_1] Passed BAP/USR/STR/BV-065-C [USR, AC 2, LC3 8_1_2] Passed BAP/USR/STR/BV-066-C [USR, AC 10, LC3 8_1_2] Passed BAP/USR/STR/BV-067-C [USR, AC 2, LC3 8_2_2] Passed BAP/USR/STR/BV-068-C [USR, AC 10, LC3 8_2_2] Passed BAP/USR/STR/BV-069-C [USR, AC 2, LC3 16_1_2] Passed BAP/USR/STR/BV-070-C [USR, AC 10, LC3 16_1_2] Passed BAP/USR/STR/BV-071-C [USR, AC 2, LC3 16_2_2] Passed BAP/USR/STR/BV-072-C [USR, AC 10, LC3 16_2_2] Passed BAP/USR/STR/BV-073-C [USR, AC 2, LC3 24_1_2] Passed BAP/USR/STR/BV-074-C [USR, AC 10, LC3 24_1_2] Passed BAP/USR/STR/BV-075-C [USR, AC 2, LC3 24_2_2] Passed BAP/USR/STR/BV-076-C [USR, AC 10, LC3 24_2_2] Passed BAP/USR/STR/BV-077-C [USR, AC 2, LC3 32_1_2] Passed BAP/USR/STR/BV-078-C [USR, AC 10, LC3 32_1_2] Passed BAP/USR/STR/BV-079-C [USR, AC 2, LC3 32_2_2] Passed BAP/USR/STR/BV-080-C [USR, AC 10, LC3 32_2_2] Passed BAP/USR/STR/BV-081-C [USR, AC 2, LC3 44_1_2] Passed BAP/USR/STR/BV-082-C [USR, AC 10, LC3 44_1_2] Passed BAP/USR/STR/BV-083-C [USR, AC 2, LC3 44_2_2] Passed BAP/USR/STR/BV-084-C [USR, AC 10, LC3 44_2_2] Passed BAP/USR/STR/BV-085-C [USR, AC 2, LC3 48_1_2] Passed BAP/USR/STR/BV-086-C [USR, AC 10, LC3 48_1_2] Passed BAP/USR/STR/BV-087-C [USR, AC 2, LC3 48_2_2] Passed BAP/USR/STR/BV-088-C [USR, AC 10, LC3 48_2_2] Passed BAP/USR/STR/BV-089-C [USR, AC 2, LC3 48_3_2] Passed BAP/USR/STR/BV-090-C [USR, AC 10, LC3 48_3_2] Passed BAP/USR/STR/BV-091-C [USR, AC 2, LC3 48_4_2] Passed BAP/USR/STR/BV-092-C [USR, AC 10, LC3 48_4_2] Passed BAP/USR/STR/BV-093-C [USR, AC 2, LC3 48_5_2] Passed BAP/USR/STR/BV-094-C [USR, AC 10, LC3 48_5_2] Passed BAP/USR/STR/BV-095-C [USR, AC 2, LC3 48_6_2] Passed BAP/USR/STR/BV-096-C [USR, AC 10, LC3 48_6_2] Passed BAP/USR/STR/BV-097-C [USR, SRC, AC 1, LC3 8_1_2] Passed BAP/USR/STR/BV-098-C [USR, SRC, AC 4, LC3 8_1_2] Passed BAP/USR/STR/BV-099-C [USR, SRC, AC 1, LC3 8_2_2] Passed BAP/USR/STR/BV-100-C [USR, SRC, AC 4, LC3 8_2_2] Passed BAP/USR/STR/BV-101-C [USR, SRC, AC 1, LC3 16_1_2] Passed BAP/USR/STR/BV-102-C [USR, SRC, AC 4, LC3 16_1_2] Passed BAP/USR/STR/BV-103-C [USR, SRC, AC 1, LC3 16_2_2] Passed BAP/USR/STR/BV-104-C [USR, SRC, AC 4, LC3 16_2_2] Passed BAP/USR/STR/BV-105-C [USR, SRC, AC 1, LC3 24_1_2] Passed BAP/USR/STR/BV-106-C [USR, SRC, AC 4, LC3 24_1_2] Passed BAP/USR/STR/BV-107-C [USR, SRC, AC 1, LC3 24_2_2] Passed BAP/USR/STR/BV-108-C [USR, SRC, AC 4, LC3 24_2_2] Passed BAP/USR/STR/BV-109-C [USR, SRC, AC 1, LC3 32_1_2] Passed BAP/USR/STR/BV-110-C [USR, SRC, AC 4, LC3 32_1_2] Passed BAP/USR/STR/BV-111-C [USR, SRC, AC 1, LC3 32_2_2] Passed BAP/USR/STR/BV-112-C [USR, SRC, AC 4, LC3 32_2_2] Passed BAP/USR/STR/BV-113-C [USR, SRC, AC 1, LC3 44_1_2] Passed BAP/USR/STR/BV-114-C [USR, SRC, AC 4, LC3 44_1_2] Passed BAP/USR/STR/BV-115-C [USR, SRC, AC 1, LC3 44_2_2] Passed BAP/USR/STR/BV-116-C [USR, SRC, AC 4, LC3 44_2_2] Passed BAP/USR/STR/BV-117-C [USR, SRC, AC 1, LC3 48_1_2] Passed BAP/USR/STR/BV-118-C [USR, SRC, AC 4, LC3 48_1_2] Passed BAP/USR/STR/BV-119-C [USR, SRC, AC 1, LC3 48_2_2] Passed BAP/USR/STR/BV-120-C [USR, SRC, AC 4, LC3 48_2_2] Passed BAP/USR/STR/BV-121-C [USR, SRC, AC 1, LC3 48_3_2] Passed BAP/USR/STR/BV-122-C [USR, SRC, AC 4, LC3 48_3_2] Passed BAP/USR/STR/BV-123-C [USR, SRC, AC 1, LC3 48_4_2] Passed BAP/USR/STR/BV-124-C [USR, SRC, AC 4, LC3 48_4_2] Passed BAP/USR/STR/BV-121-C [USR, SRC, AC 1, LC3 48_5_2] Passed BAP/USR/STR/BV-122-C [USR, SRC, AC 4, LC3 48_5_2] Passed BAP/USR/STR/BV-123-C [USR, SRC, AC 1, LC3 48_6_2] Passed BAP/USR/STR/BV-124-C [USR, SRC, AC 4, LC3 48_6_2] Passed Total: 128, Passed: 128 (100.0%), Failed: 0, Not Run: 0 --- unit/test-bap.c | 440 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 429 insertions(+), 11 deletions(-) diff --git a/unit/test-bap.c b/unit/test-bap.c index 9a07bd8f53e7..62c797a19164 100644 --- a/unit/test-bap.c +++ b/unit/test-bap.c @@ -1150,6 +1150,14 @@ static void test_ucl_disc(void) DISC_SRC_ASE_LC3); } +static void server_state_changed(struct bt_bap_stream *stream, + uint8_t old_state, uint8_t new_state, + void *user_data) +{ + if (new_state == BT_BAP_STREAM_STATE_ENABLING) + bt_bap_stream_start(stream, NULL, NULL); +} + static void bap_attached(struct bt_bap *bap, void *user_data) { struct test_data *data = (void *)user_data; @@ -1160,6 +1168,10 @@ static void bap_attached(struct bt_bap *bap, void *user_data) data->bap = bap; bt_bap_set_debug(data->bap, print_debug, "bt_bap:", NULL); + + if (data->cfg && data->cfg->state == BT_BAP_STREAM_STATE_STREAMING) + bt_bap_state_register(data->bap, server_state_changed, NULL, + data, NULL); } static void test_server(const void *user_data) @@ -5581,7 +5593,7 @@ static struct test_config str_src_ac1_8_2_2 = { #define STR_SRC_AC1_8_2_2 \ STR_SRC_8_2_2(1), \ SRC_ENABLE, \ - SNK_START + SRC_START static struct test_config str_src_ac4_8_2_2 = { .cc = LC3_CONFIG_8_2_AC(2), @@ -5639,7 +5651,7 @@ static struct test_config str_src_ac1_16_2_2 = { #define STR_SRC_AC1_16_2_2 \ STR_SRC_16_2_2(1), \ SRC_ENABLE, \ - SNK_START + SRC_START static struct test_config str_src_ac4_16_2_2 = { .cc = LC3_CONFIG_16_2_AC(2), @@ -5697,7 +5709,7 @@ static struct test_config str_src_ac1_24_2_2 = { #define STR_SRC_AC1_24_2_2 \ STR_SRC_24_2_2(1), \ SRC_ENABLE, \ - SNK_START + SRC_START static struct test_config str_src_ac4_24_2_2 = { .cc = LC3_CONFIG_24_2_AC(2), @@ -5755,7 +5767,7 @@ static struct test_config str_src_ac1_32_2_2 = { #define STR_SRC_AC1_32_2_2 \ STR_SRC_32_2_2(1), \ SRC_ENABLE, \ - SNK_START + SRC_START static struct test_config str_src_ac4_32_2_2 = { .cc = LC3_CONFIG_32_2_AC(2), @@ -5814,7 +5826,7 @@ static struct test_config str_src_ac1_44_2_2 = { #define STR_SRC_AC1_44_2_2 \ STR_SRC_44_2_2(1), \ SRC_ENABLE, \ - SNK_START + SRC_START static struct test_config str_src_ac4_44_2_2 = { .cc = LC3_CONFIG_44_2_AC(2), @@ -5873,7 +5885,7 @@ static struct test_config str_src_ac1_48_2_2 = { #define STR_SRC_AC1_48_2_2 \ STR_SRC_48_2_2(1), \ SRC_ENABLE, \ - SNK_START + SRC_START static struct test_config str_src_ac4_48_2_2 = { .cc = LC3_CONFIG_48_2_AC(2), @@ -5932,7 +5944,7 @@ static struct test_config str_src_ac1_48_4_2 = { #define STR_SRC_AC1_48_4_2 \ STR_SRC_48_4_2(1), \ SRC_ENABLE, \ - SNK_START + SRC_START static struct test_config str_src_ac4_48_4_2 = { .cc = LC3_CONFIG_48_4_AC(2), @@ -5991,7 +6003,7 @@ static struct test_config str_src_ac1_48_6_2 = { #define STR_SRC_AC1_48_6_2 \ STR_SRC_48_6_2(1), \ SRC_ENABLE, \ - SNK_START + SRC_START static struct test_config str_src_ac4_48_6_2 = { .cc = LC3_CONFIG_48_6_AC(2), @@ -6016,7 +6028,7 @@ static struct test_config str_src_ac4_48_6_2 = { * more length that contains LC3-encoded data formatted using the LC3 Media * Packet format (defined in [3] Section 4.2). */ -static void test_str_1_1_1_lc3(void) +static void test_ucl_str_1_1_1_lc3(void) { define_test("BAP/UCL/STR/BV-001-C [UCL, AC 2, LC3 8_1_1]", test_setup, test_client, &str_snk_ac2_8_1_1, @@ -6396,14 +6408,420 @@ static void test_str_1_1_1_lc3(void) define_test("BAP/UCL/STR/BV-122-C [UCL, SRC, AC 4, LC3 48_5_2]", test_setup, test_client, &str_src_ac4_48_5_2, STR_SRC_AC4_48_5_2); - define_test("BAP/UCL/STR/BV-123-C [UCL, SRC, AC 1, LC3 48_6_2]", + define_test("BAP/UCL/STR/BV-123-C [UCL AC 2, LC3 48_6_2]", test_setup, test_client, &str_src_ac1_48_6_2, STR_SRC_AC1_48_6_2); - define_test("BAP/UCL/STR/BV-124-C [UCL, SRC, AC 4, LC3 48_6_2]", + define_test("BAP/UCL/STR/BV-124-C [UCL AC 10, LC3 48_6_2]", test_setup, test_client, &str_src_ac4_48_6_2, STR_SRC_AC4_48_6_2); } +/* Unicast Server Streaming – 1 Stream, 1 CIS – LC3 + * + * Test Purpose: + * Verify that a Unicast Server IUT can stream LC3-encoded audio data over one + * unicast Audio Stream to/from a Unicast Client. + * + * Pass verdict: + * If the IUT is in the Audio Source role, the IUT sends SDUs with a zero or + * more length, using the LC3 Media Packet format (defined in [3] Section 4.2). + * If the IUT is in the Audio Sink role, the IUT receives SDUs with a zero or + * more length, using the LC3 Media Packet format (defined in [3] Section 4.2). + */ +static void test_usr_str_1_1_1_lc3(void) +{ + define_test("BAP/USR/STR/BV-001-C [USR, AC 2, LC3 8_1_1]", + test_setup_server, test_server, &str_snk_ac2_8_1_1, + STR_SNK_AC2_8_1_1); + define_test("BAP/USR/STR/BV-002-C [USR, AC 10, LC3 8_1_1]", + test_setup_server, test_server, &str_snk_ac10_8_1_1, + STR_SNK_AC10_8_1_1); + define_test("BAP/USR/STR/BV-003-C [USR, AC 2, LC3 8_2_1]", + test_setup_server, test_server, &str_snk_ac2_8_2_1, + STR_SNK_AC2_8_2_1); + define_test("BAP/USR/STR/BV-004-C [USR, AC 10, LC3 8_2_1]", + test_setup_server, test_server, &str_snk_ac10_8_2_1, + STR_SNK_AC10_8_2_1); + define_test("BAP/USR/STR/BV-005-C [USR, AC 2, LC3 16_1_1]", + test_setup_server, test_server, &str_snk_ac2_16_1_1, + STR_SNK_AC2_16_1_1); + define_test("BAP/USR/STR/BV-006-C [USR, AC 10, LC3 16_1_1]", + test_setup_server, test_server, &str_snk_ac10_16_1_1, + STR_SNK_AC10_16_1_1); + define_test("BAP/USR/STR/BV-007-C [USR, AC 2, LC3 16_2_1]", + test_setup_server, test_server, &str_snk_ac2_16_2_1, + STR_SNK_AC2_16_2_1); + define_test("BAP/USR/STR/BV-008-C [USR, AC 10, LC3 16_2_1]", + test_setup_server, test_server, &str_snk_ac10_16_2_1, + STR_SNK_AC10_16_2_1); + define_test("BAP/USR/STR/BV-009-C [USR, AC 2, LC3 24_1_1]", + test_setup_server, test_server, &str_snk_ac2_24_1_1, + STR_SNK_AC2_24_1_1); + define_test("BAP/USR/STR/BV-010-C [USR, AC 10, LC3 24_1_1]", + test_setup_server, test_server, &str_snk_ac10_24_1_1, + STR_SNK_AC10_24_1_1); + define_test("BAP/USR/STR/BV-011-C [USR, AC 2, LC3 24_2_1]", + test_setup_server, test_server, &str_snk_ac2_24_2_1, + STR_SNK_AC2_24_2_1); + define_test("BAP/USR/STR/BV-012-C [USR, AC 10, LC3 24_2_1]", + test_setup_server, test_server, &str_snk_ac10_24_2_1, + STR_SNK_AC10_24_2_1); + define_test("BAP/USR/STR/BV-013-C [USR, AC 2, LC3 32_1_1]", + test_setup_server, test_server, &str_snk_ac2_32_1_1, + STR_SNK_AC2_32_1_1); + define_test("BAP/USR/STR/BV-014-C [USR, AC 10, LC3 32_1_1]", + test_setup_server, test_server, &str_snk_ac10_32_1_1, + STR_SNK_AC10_32_1_1); + define_test("BAP/USR/STR/BV-015-C [USR, AC 2, LC3 32_2_1]", + test_setup_server, test_server, &str_snk_ac2_32_2_1, + STR_SNK_AC2_32_2_1); + define_test("BAP/USR/STR/BV-016-C [USR, AC 10, LC3 32_2_1]", + test_setup_server, test_server, &str_snk_ac10_32_2_1, + STR_SNK_AC10_32_2_1); + define_test("BAP/USR/STR/BV-017-C [USR, AC #1, LC3 441_1_1]", + test_setup_server, test_server, &str_snk_ac2_44_1_1, + STR_SNK_AC2_44_1_1); + define_test("BAP/USR/STR/BV-018-C [USR, AC #4, LC3 441_1_1]", + test_setup_server, test_server, &str_snk_ac10_44_1_1, + STR_SNK_AC10_44_1_1); + define_test("BAP/USR/STR/BV-019-C [USR, AC #1, LC3 44_2_1]", + test_setup_server, test_server, &str_snk_ac2_44_2_1, + STR_SNK_AC2_44_2_1); + define_test("BAP/USR/STR/BV-020-C [USR, AC #4, LC3 44_2_1]", + test_setup_server, test_server, &str_snk_ac10_44_2_1, + STR_SNK_AC10_44_2_1); + define_test("BAP/USR/STR/BV-021-C [USR, AC #1, LC3 48_1_1]", + test_setup_server, test_server, &str_snk_ac2_48_1_1, + STR_SNK_AC2_48_1_1); + define_test("BAP/USR/STR/BV-022-C [USR, AC #4, LC3 48_1_1]", + test_setup_server, test_server, &str_snk_ac10_48_1_1, + STR_SNK_AC10_48_1_1); + define_test("BAP/USR/STR/BV-023-C [USR, AC #1, LC3 48_2_1]", + test_setup_server, test_server, &str_snk_ac2_48_2_1, + STR_SNK_AC2_48_2_1); + define_test("BAP/USR/STR/BV-024-C [USR, AC #4, LC3 48_2_1]", + test_setup_server, test_server, &str_snk_ac10_48_2_1, + STR_SNK_AC10_48_2_1); + define_test("BAP/USR/STR/BV-025-C [USR, AC #1, LC3 48_3_1]", + test_setup_server, test_server, &str_snk_ac2_48_3_1, + STR_SNK_AC2_48_3_1); + define_test("BAP/USR/STR/BV-026-C [USR, AC #4, LC3 48_3_1]", + test_setup_server, test_server, &str_snk_ac10_48_3_1, + STR_SNK_AC10_48_3_1); + define_test("BAP/USR/STR/BV-027-C [USR, AC #1, LC3 48_4_1]", + test_setup_server, test_server, &str_snk_ac2_48_4_1, + STR_SNK_AC2_48_4_1); + define_test("BAP/USR/STR/BV-028-C [USR, AC #4, LC3 48_4_1]", + test_setup_server, test_server, &str_snk_ac10_48_4_1, + STR_SNK_AC10_48_4_1); + define_test("BAP/USR/STR/BV-029-C [USR, AC #1, LC3 48_5_1]", + test_setup_server, test_server, &str_snk_ac2_48_5_1, + STR_SNK_AC2_48_5_1); + define_test("BAP/USR/STR/BV-030-C [USR, AC #4, LC3 48_5_1]", + test_setup_server, test_server, &str_snk_ac10_48_5_1, + STR_SNK_AC10_48_5_1); + define_test("BAP/USR/STR/BV-031-C [USR, AC #1, LC3 48_6_1]", + test_setup_server, test_server, &str_snk_ac2_48_6_1, + STR_SNK_AC2_48_6_1); + define_test("BAP/USR/STR/BV-032-C [USR, AC #4, LC3 48_6_1]", + test_setup_server, test_server, &str_snk_ac10_48_6_1, + STR_SNK_AC10_48_6_1); + define_test("BAP/USR/STR/BV-033-C [USR AC 2, LC3 8_1_1]", + test_setup_server, test_server, &str_src_ac1_8_1_1, + STR_SRC_AC1_8_1_1); + define_test("BAP/USR/STR/BV-034-C [USR AC 10, LC3 8_1_1]", + test_setup_server, test_server, &str_src_ac4_8_1_1, + STR_SRC_AC4_8_1_1); + define_test("BAP/USR/STR/BV-035-C [USR AC 2, LC3 8_2_1]", + test_setup_server, test_server, &str_src_ac1_8_2_1, + STR_SRC_AC1_8_2_1); + define_test("BAP/USR/STR/BV-036-C [USR AC 10, LC3 8_2_1]", + test_setup_server, test_server, &str_src_ac4_8_2_1, + STR_SRC_AC4_8_2_1); + define_test("BAP/USR/STR/BV-037-C [USR AC 2, LC3 16_1_1]", + test_setup_server, test_server, &str_src_ac1_16_1_1, + STR_SRC_AC1_16_1_1); + define_test("BAP/USR/STR/BV-038-C [USR AC 10, LC3 16_1_1]", + test_setup_server, test_server, &str_src_ac4_16_1_1, + STR_SRC_AC4_16_1_1); + define_test("BAP/USR/STR/BV-039-C [USR AC 2, LC3 16_2_1]", + test_setup_server, test_server, &str_src_ac1_16_2_1, + STR_SRC_AC1_16_2_1); + define_test("BAP/USR/STR/BV-040-C [USR AC 10, LC3 16_2_1]", + test_setup_server, test_server, &str_src_ac4_16_2_1, + STR_SRC_AC4_16_2_1); + define_test("BAP/USR/STR/BV-041-C [USR AC 2, LC3 24_1_1]", + test_setup_server, test_server, &str_src_ac1_24_1_1, + STR_SRC_AC1_24_1_1); + define_test("BAP/USR/STR/BV-042-C [USR AC 10, LC3 24_1_1]", + test_setup_server, test_server, &str_src_ac4_24_1_1, + STR_SRC_AC4_24_1_1); + define_test("BAP/USR/STR/BV-043-C [USR AC 2, LC3 24_2_1]", + test_setup_server, test_server, &str_src_ac1_24_2_1, + STR_SRC_AC1_24_2_1); + define_test("BAP/USR/STR/BV-044-C [USR AC 10, LC3 24_2_1]", + test_setup_server, test_server, &str_src_ac4_24_2_1, + STR_SRC_AC4_24_2_1); + define_test("BAP/USR/STR/BV-045-C [USR AC 2, LC3 32_1_1]", + test_setup_server, test_server, &str_src_ac1_32_1_1, + STR_SRC_AC1_32_1_1); + define_test("BAP/USR/STR/BV-046-C [USR AC 10, LC3 32_1_1]", + test_setup_server, test_server, &str_src_ac4_32_1_1, + STR_SRC_AC4_32_1_1); + define_test("BAP/USR/STR/BV-047-C [USR AC 2, LC3 32_2_1]", + test_setup_server, test_server, &str_src_ac1_32_2_1, + STR_SRC_AC1_32_2_1); + define_test("BAP/USR/STR/BV-048-C [USR AC 10, LC3 32_2_1]", + test_setup_server, test_server, &str_src_ac4_32_2_1, + STR_SRC_AC4_32_2_1); + define_test("BAP/USR/STR/BV-049-C [USR AC 2, LC3 44_1_1]", + test_setup_server, test_server, &str_src_ac1_44_1_1, + STR_SRC_AC1_44_1_1); + define_test("BAP/USR/STR/BV-050-C [USR AC 10, LC3 44_1_1]", + test_setup_server, test_server, &str_src_ac4_44_1_1, + STR_SRC_AC4_44_1_1); + define_test("BAP/USR/STR/BV-051-C [USR AC 2, LC3 44_2_1]", + test_setup_server, test_server, &str_src_ac1_44_2_1, + STR_SRC_AC1_44_2_1); + define_test("BAP/USR/STR/BV-052-C [USR AC 10, LC3 44_2_1]", + test_setup_server, test_server, &str_src_ac4_44_2_1, + STR_SRC_AC4_44_2_1); + define_test("BAP/USR/STR/BV-053-C [USR AC 2, LC3 48_1_1]", + test_setup_server, test_server, &str_src_ac1_48_1_1, + STR_SRC_AC1_48_1_1); + define_test("BAP/USR/STR/BV-054-C [USR AC 10, LC3 48_1_1]", + test_setup_server, test_server, &str_src_ac4_48_1_1, + STR_SRC_AC4_48_1_1); + define_test("BAP/USR/STR/BV-055-C [USR AC 2, LC3 48_2_1]", + test_setup_server, test_server, &str_src_ac1_48_2_1, + STR_SRC_AC1_48_2_1); + define_test("BAP/USR/STR/BV-056-C [USR AC 10, LC3 48_2_1]", + test_setup_server, test_server, &str_src_ac4_48_2_1, + STR_SRC_AC4_48_2_1); + define_test("BAP/USR/STR/BV-057-C [USR AC 2, LC3 48_3_1]", + test_setup_server, test_server, &str_src_ac1_48_3_1, + STR_SRC_AC1_48_3_1); + define_test("BAP/USR/STR/BV-058-C [USR AC 10, LC3 48_3_1]", + test_setup_server, test_server, &str_src_ac4_48_3_1, + STR_SRC_AC4_48_3_1); + define_test("BAP/USR/STR/BV-059-C [USR AC 2, LC3 48_4_1]", + test_setup_server, test_server, &str_src_ac1_48_4_1, + STR_SRC_AC1_48_4_1); + define_test("BAP/USR/STR/BV-060-C [USR AC 10, LC3 48_4_1]", + test_setup_server, test_server, &str_src_ac4_48_4_1, + STR_SRC_AC4_48_4_1); + define_test("BAP/USR/STR/BV-061-C [USR AC 2, LC3 48_5_1]", + test_setup_server, test_server, &str_src_ac1_48_5_1, + STR_SRC_AC1_48_5_1); + define_test("BAP/USR/STR/BV-062-C [USR AC 10, LC3 48_5_1]", + test_setup_server, test_server, &str_src_ac4_48_5_1, + STR_SRC_AC4_48_5_1); + define_test("BAP/USR/STR/BV-063-C [USR AC 2, LC3 48_6_1]", + test_setup_server, test_server, &str_src_ac1_48_6_1, + STR_SRC_AC1_48_6_1); + define_test("BAP/USR/STR/BV-064-C [USR AC 10, LC3 48_6_1]", + test_setup_server, test_server, &str_src_ac4_48_6_1, + STR_SRC_AC4_48_6_1); + define_test("BAP/USR/STR/BV-065-C [USR, AC #1, LC3 8_1_2]", + test_setup_server, test_server, &str_snk_ac2_8_1_2, + STR_SNK_AC2_8_1_2); + define_test("BAP/USR/STR/BV-066-C [USR, AC #4, LC3 8_1_2]", + test_setup_server, test_server, &str_snk_ac10_8_1_2, + STR_SNK_AC10_8_1_2); + define_test("BAP/USR/STR/BV-067-C [USR, AC #1, LC3 8_2_2]", + test_setup_server, test_server, &str_snk_ac2_8_2_2, + STR_SNK_AC2_8_2_2); + define_test("BAP/USR/STR/BV-068-C [USR, AC #4, LC3 8_2_2]", + test_setup_server, test_server, &str_snk_ac10_8_2_2, + STR_SNK_AC10_8_2_2); + define_test("BAP/USR/STR/BV-069-C [USR, AC #1, LC3 16_1_2]", + test_setup_server, test_server, &str_snk_ac2_16_1_2, + STR_SNK_AC2_16_1_2); + define_test("BAP/USR/STR/BV-070-C [USR, AC #4, LC3 16_1_2]", + test_setup_server, test_server, &str_snk_ac10_16_1_2, + STR_SNK_AC10_16_1_2); + define_test("BAP/USR/STR/BV-071-C [USR, AC #1, LC3 16_2_2]", + test_setup_server, test_server, &str_snk_ac2_16_2_2, + STR_SNK_AC2_16_2_2); + define_test("BAP/USR/STR/BV-072-C [USR, AC #4, LC3 16_2_2]", + test_setup_server, test_server, &str_snk_ac10_16_2_2, + STR_SNK_AC10_16_2_2); + define_test("BAP/USR/STR/BV-073-C [USR, AC #1, LC3 24_1_2]", + test_setup_server, test_server, &str_snk_ac2_24_1_2, + STR_SNK_AC2_24_1_2); + define_test("BAP/USR/STR/BV-074-C [USR, AC #4, LC3 24_1_2]", + test_setup_server, test_server, &str_snk_ac10_24_1_2, + STR_SNK_AC10_24_1_2); + define_test("BAP/USR/STR/BV-075-C [USR, AC #1, LC3 24_2_2]", + test_setup_server, test_server, &str_snk_ac2_24_2_2, + STR_SNK_AC2_24_2_2); + define_test("BAP/USR/STR/BV-076-C [USR, AC #4, LC3 24_2_2]", + test_setup_server, test_server, &str_snk_ac10_24_2_2, + STR_SNK_AC10_24_2_2); + define_test("BAP/USR/STR/BV-077-C [USR, AC #1, LC3 32_1_2]", + test_setup_server, test_server, &str_snk_ac2_32_1_2, + STR_SNK_AC2_32_1_2); + define_test("BAP/USR/STR/BV-078-C [USR, AC #4, LC3 32_1_2]", + test_setup_server, test_server, &str_snk_ac10_32_1_2, + STR_SNK_AC10_32_1_2); + define_test("BAP/USR/STR/BV-079-C [USR, AC #1, LC3 32_2_2]", + test_setup_server, test_server, &str_snk_ac2_32_2_2, + STR_SNK_AC2_32_2_2); + define_test("BAP/USR/STR/BV-080-C [USR, AC #4, LC3 32_2_2]", + test_setup_server, test_server, &str_snk_ac10_32_2_2, + STR_SNK_AC10_32_2_2); + define_test("BAP/USR/STR/BV-081-C [USR, AC #1, LC3 44_1_2]", + test_setup_server, test_server, &str_snk_ac2_44_1_2, + STR_SNK_AC2_44_1_2); + define_test("BAP/USR/STR/BV-082-C [USR, AC #4, LC3 44_1_2]", + test_setup_server, test_server, &str_snk_ac10_44_1_2, + STR_SNK_AC10_44_1_2); + define_test("BAP/USR/STR/BV-083-C [USR, AC #1, LC3 44_2_2]", + test_setup_server, test_server, &str_snk_ac2_44_2_2, + STR_SNK_AC2_44_2_2); + define_test("BAP/USR/STR/BV-084-C [USR, AC #4, LC3 44_2_2]", + test_setup_server, test_server, &str_snk_ac10_44_2_2, + STR_SNK_AC10_44_2_2); + define_test("BAP/USR/STR/BV-085-C [USR, AC #1, LC3 48_1_2]", + test_setup_server, test_server, &str_snk_ac2_48_1_2, + STR_SNK_AC2_48_1_2); + define_test("BAP/USR/STR/BV-086-C [USR, AC #4, LC3 48_1_2]", + test_setup_server, test_server, &str_snk_ac10_48_1_2, + STR_SNK_AC10_48_1_2); + define_test("BAP/USR/STR/BV-087-C [USR, AC #1, LC3 48_2_2]", + test_setup_server, test_server, &str_snk_ac2_48_2_2, + STR_SNK_AC2_48_2_2); + define_test("BAP/USR/STR/BV-088-C [USR, AC #4, LC3 48_2_2]", + test_setup_server, test_server, &str_snk_ac10_48_2_2, + STR_SNK_AC10_48_2_2); + define_test("BAP/USR/STR/BV-089-C [USR, AC #1, LC3 48_3_2]", + test_setup_server, test_server, &str_snk_ac2_48_3_2, + STR_SNK_AC2_48_3_2); + define_test("BAP/USR/STR/BV-090-C [USR, AC #4, LC3 48_3_2]", + test_setup_server, test_server, &str_snk_ac10_48_3_2, + STR_SNK_AC10_48_3_2); + define_test("BAP/USR/STR/BV-091-C [USR, AC #1, LC3 48_4_2]", + test_setup_server, test_server, &str_snk_ac2_48_4_2, + STR_SNK_AC2_48_4_2); + define_test("BAP/USR/STR/BV-092-C [USR, AC #4, LC3 48_4_2]", + test_setup_server, test_server, &str_snk_ac10_48_4_2, + STR_SNK_AC10_48_4_2); + define_test("BAP/USR/STR/BV-093-C [USR, AC #1, LC3 48_5_2]", + test_setup_server, test_server, &str_snk_ac2_48_5_2, + STR_SNK_AC2_48_5_2); + define_test("BAP/USR/STR/BV-094-C [USR, AC #4, LC3 48_5_2]", + test_setup_server, test_server, &str_snk_ac10_48_5_2, + STR_SNK_AC10_48_5_2); + define_test("BAP/USR/STR/BV-095-C [USR, AC #1, LC3 48_6_2]", + test_setup_server, test_server, &str_snk_ac2_48_6_2, + STR_SNK_AC2_48_6_2); + define_test("BAP/USR/STR/BV-096-C [USR, AC #4, LC3 48_6_2]", + test_setup_server, test_server, &str_snk_ac10_48_6_2, + STR_SNK_AC10_48_6_2); + define_test("BAP/USR/STR/BV-097-C [USR AC 2, LC3 8_1_2]", + test_setup_server, test_server, &str_src_ac1_8_1_2, + STR_SRC_AC1_8_1_2); + define_test("BAP/USR/STR/BV-098-C [USR AC 10, LC3 8_1_2]", + test_setup_server, test_server, &str_src_ac4_8_1_2, + STR_SRC_AC4_8_1_2); + define_test("BAP/USR/STR/BV-099-C [USR AC 2, LC3 8_2_2]", + test_setup_server, test_server, &str_src_ac1_8_2_2, + STR_SRC_AC1_8_2_2); + define_test("BAP/USR/STR/BV-100-C [USR AC 10, LC3 8_2_2]", + test_setup_server, test_server, &str_src_ac4_8_2_2, + STR_SRC_AC4_8_2_2); + define_test("BAP/USR/STR/BV-101-C [USR AC 2, LC3 16_1_2]", + test_setup_server, test_server, &str_src_ac1_16_1_2, + STR_SRC_AC1_16_1_2); + define_test("BAP/USR/STR/BV-102-C [USR AC 10, LC3 16_1_2]", + test_setup_server, test_server, &str_src_ac4_16_1_2, + STR_SRC_AC4_16_1_2); + define_test("BAP/USR/STR/BV-103-C [USR AC 2, LC3 16_2_2]", + test_setup_server, test_server, &str_src_ac1_16_2_2, + STR_SRC_AC1_16_2_2); + define_test("BAP/USR/STR/BV-104-C [USR AC 10, LC3 16_2_2]", + test_setup_server, test_server, &str_src_ac4_16_2_2, + STR_SRC_AC4_16_2_2); + define_test("BAP/USR/STR/BV-105-C [USR AC 2, LC3 24_1_2]", + test_setup_server, test_server, &str_src_ac1_24_1_2, + STR_SRC_AC1_24_1_2); + define_test("BAP/USR/STR/BV-106-C [USR AC 10, LC3 24_1_2]", + test_setup_server, test_server, &str_src_ac4_24_1_2, + STR_SRC_AC4_24_1_2); + define_test("BAP/USR/STR/BV-107-C [USR AC 2, LC3 24_2_2]", + test_setup_server, test_server, &str_src_ac1_24_2_2, + STR_SRC_AC1_24_2_2); + define_test("BAP/USR/STR/BV-108-C [USR AC 10, LC3 24_2_2]", + test_setup_server, test_server, &str_src_ac4_24_2_2, + STR_SRC_AC4_24_2_2); + define_test("BAP/USR/STR/BV-109-C [USR AC 2, LC3 32_1_2]", + test_setup_server, test_server, &str_src_ac1_32_1_2, + STR_SRC_AC1_32_1_2); + define_test("BAP/USR/STR/BV-110-C [USR AC 10, LC3 32_1_2]", + test_setup_server, test_server, &str_src_ac4_32_1_2, + STR_SRC_AC4_32_1_2); + define_test("BAP/USR/STR/BV-111-C [USR AC 2, LC3 32_2_2]", + test_setup_server, test_server, &str_src_ac1_32_2_2, + STR_SRC_AC1_32_2_2); + define_test("BAP/USR/STR/BV-112-C [USR AC 10, LC3 32_2_2]", + test_setup_server, test_server, &str_src_ac4_32_2_2, + STR_SRC_AC4_32_2_2); + define_test("BAP/USR/STR/BV-113-C [USR AC 2, LC3 44_1_2]", + test_setup_server, test_server, &str_src_ac1_44_1_2, + STR_SRC_AC1_44_1_2); + define_test("BAP/USR/STR/BV-114-C [USR AC 10, LC3 44_1_2]", + test_setup_server, test_server, &str_src_ac4_44_1_2, + STR_SRC_AC4_44_1_2); + define_test("BAP/USR/STR/BV-115-C [USR AC 2, LC3 44_2_2]", + test_setup_server, test_server, &str_src_ac1_44_2_2, + STR_SRC_AC1_44_2_2); + define_test("BAP/USR/STR/BV-116-C [USR AC 10, LC3 44_2_2]", + test_setup_server, test_server, &str_src_ac4_44_2_2, + STR_SRC_AC4_44_2_2); + define_test("BAP/USR/STR/BV-117-C [USR AC 2, LC3 48_1_2]", + test_setup_server, test_server, &str_src_ac1_48_1_2, + STR_SRC_AC1_48_1_2); + define_test("BAP/USR/STR/BV-118-C [USR AC 10, LC3 48_1_2]", + test_setup_server, test_server, &str_src_ac4_48_1_2, + STR_SRC_AC4_48_1_2); + define_test("BAP/USR/STR/BV-119-C [USR AC 2, LC3 48_2_2]", + test_setup_server, test_server, &str_src_ac1_48_2_2, + STR_SRC_AC1_48_2_2); + define_test("BAP/USR/STR/BV-120-C [USR AC 10, LC3 48_2_2]", + test_setup_server, test_server, &str_src_ac4_48_2_2, + STR_SRC_AC4_48_2_2); + define_test("BAP/USR/STR/BV-121-C [USR AC 1, LC3 48_3_2]", + test_setup_server, test_server, &str_src_ac1_48_3_2, + STR_SRC_AC1_48_3_2); + define_test("BAP/USR/STR/BV-122-C [USR AC 4, LC3 48_3_2]", + test_setup_server, test_server, &str_src_ac4_48_3_2, + STR_SRC_AC4_48_3_2); + define_test("BAP/USR/STR/BV-123-C [USR AC 1, LC3 48_4_2]", + test_setup_server, test_server, &str_src_ac1_48_4_2, + STR_SRC_AC1_48_4_2); + define_test("BAP/USR/STR/BV-124-C [USR AC 4, LC3 48_4_2]", + test_setup_server, test_server, &str_src_ac4_48_4_2, + STR_SRC_AC4_48_4_2); + define_test("BAP/USR/STR/BV-121-C [USR AC 1, LC3 48_5_2]", + test_setup_server, test_server, &str_src_ac1_48_5_2, + STR_SRC_AC1_48_5_2); + define_test("BAP/USR/STR/BV-122-C [USR AC 4, LC3 48_5_2]", + test_setup_server, test_server, &str_src_ac4_48_5_2, + STR_SRC_AC4_48_5_2); + define_test("BAP/USR/STR/BV-123-C [USR AC 1, LC3 48_6_2]", + test_setup_server, test_server, &str_src_ac1_48_6_2, + STR_SRC_AC1_48_6_2); + define_test("BAP/USR/STR/BV-124-C [USR AC 4, LC3 48_6_2]", + test_setup_server, test_server, &str_src_ac4_48_6_2, + STR_SRC_AC4_48_6_2); +} + +static void test_str_1_1_1_lc3(void) +{ + test_ucl_str_1_1_1_lc3(); + test_usr_str_1_1_1_lc3(); +} + static void test_scc(void) { test_scc_cc_lc3();