* [PATCH BlueZ v1 1/2] shared/bap: Remove Locations, Support Context and Context defines
@ 2023-10-20 23:07 Luiz Augusto von Dentz
2023-10-20 23:07 ` [PATCH BlueZ v1 2/2] client: Add support for setting Locations, SupportedContext and Context Luiz Augusto von Dentz
2023-10-21 1:05 ` [BlueZ,v1,1/2] shared/bap: Remove Locations, Support Context and Context defines bluez.test.bot
0 siblings, 2 replies; 3+ messages in thread
From: Luiz Augusto von Dentz @ 2023-10-20 23:07 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
These values shall come from the upper stack.
---
src/shared/bap.c | 15 ---------------
1 file changed, 15 deletions(-)
diff --git a/src/shared/bap.c b/src/shared/bap.c
index 14a62d9241eb..13bbcf7935bd 100644
--- a/src/shared/bap.c
+++ b/src/shared/bap.c
@@ -48,14 +48,6 @@
#define BAP_PROCESS_TIMEOUT 10
-#define PACS_SRC_LOCATION 0x00000001
-#define PACS_SNK_LOCATION 0x00000003
-
-#define PACS_SRC_CTXT 0x000f
-#define PACS_SUPPORTED_SRC_CTXT PACS_SRC_CTXT
-#define PACS_SNK_CTXT 0x0fff
-#define PACS_SUPPORTED_SNK_CTXT PACS_SNK_CTXT
-
struct bt_bap_pac_changed {
unsigned int id;
bt_bap_pac_func_t added;
@@ -475,13 +467,6 @@ static struct bt_pacs *pacs_new(struct gatt_db *db)
pacs = new0(struct bt_pacs, 1);
- pacs->sink_loc_value = 0;
- pacs->source_loc_value = 0;
- pacs->sink_context_value = PACS_SNK_CTXT;
- pacs->source_context_value = PACS_SRC_CTXT;
- pacs->supported_sink_context_value = PACS_SUPPORTED_SNK_CTXT;
- pacs->supported_source_context_value = PACS_SUPPORTED_SRC_CTXT;
-
/* Populate DB with PACS attributes */
bt_uuid16_create(&uuid, PACS_UUID);
pacs->service = gatt_db_add_service(db, &uuid, true, 19);
--
2.41.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH BlueZ v1 2/2] client: Add support for setting Locations, SupportedContext and Context
2023-10-20 23:07 [PATCH BlueZ v1 1/2] shared/bap: Remove Locations, Support Context and Context defines Luiz Augusto von Dentz
@ 2023-10-20 23:07 ` Luiz Augusto von Dentz
2023-10-21 1:05 ` [BlueZ,v1,1/2] shared/bap: Remove Locations, Support Context and Context defines bluez.test.bot
1 sibling, 0 replies; 3+ messages in thread
From: Luiz Augusto von Dentz @ 2023-10-20 23:07 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This adds proper defaults for Locations, SupportedContext and Context
properties since bluetoothd no longer automatically set proper
defaults.
---
client/player.c | 179 ++++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 165 insertions(+), 14 deletions(-)
diff --git a/client/player.c b/client/player.c
index 603447a9df46..24513977cc7a 100644
--- a/client/player.c
+++ b/client/player.c
@@ -64,6 +64,14 @@
#define SEC_USEC(_t) (_t * 1000000L)
#define TS_USEC(_ts) (SEC_USEC((_ts)->tv_sec) + NSEC_USEC((_ts)->tv_nsec))
+#define EP_SRC_LOCATIONS 0x00000001
+#define EP_SNK_LOCATIONS 0x00000003
+
+#define EP_SRC_CTXT 0x000f
+#define EP_SUPPORTED_SRC_CTXT EP_SRC_CTXT
+#define EP_SNK_CTXT 0x0fff
+#define EP_SUPPORTED_SNK_CTXT EP_SNK_CTXT
+
struct endpoint {
char *path;
char *uuid;
@@ -72,6 +80,9 @@ struct endpoint {
uint16_t vid;
struct iovec *caps;
struct iovec *meta;
+ uint32_t locations;
+ uint16_t supported_context;
+ uint16_t context;
bool auto_accept;
uint8_t max_transports;
uint8_t iso_group;
@@ -2363,6 +2374,63 @@ static gboolean endpoint_metadata_exists(const GDBusPropertyTable *property,
return ep->meta ? TRUE : FALSE;
}
+static gboolean endpoint_get_locations(const GDBusPropertyTable *property,
+ DBusMessageIter *iter, void *data)
+{
+ struct endpoint *ep = data;
+
+ dbus_message_iter_append_basic(iter, DBUS_TYPE_UINT32, &ep->locations);
+
+ return TRUE;
+}
+
+static gboolean endpoint_locations_exists(const GDBusPropertyTable *property,
+ void *data)
+{
+ struct endpoint *ep = data;
+
+ return ep->supported_context ? TRUE : FALSE;
+}
+
+static gboolean
+endpoint_get_supported_context(const GDBusPropertyTable *property,
+ DBusMessageIter *iter, void *data)
+{
+ struct endpoint *ep = data;
+
+ dbus_message_iter_append_basic(iter, DBUS_TYPE_UINT16,
+ &ep->supported_context);
+
+ return TRUE;
+}
+
+static gboolean
+endpoint_supported_context_exists(const GDBusPropertyTable *property,
+ void *data)
+{
+ struct endpoint *ep = data;
+
+ return ep->supported_context ? TRUE : FALSE;
+}
+
+static gboolean endpoint_get_context(const GDBusPropertyTable *property,
+ DBusMessageIter *iter, void *data)
+{
+ struct endpoint *ep = data;
+
+ dbus_message_iter_append_basic(iter, DBUS_TYPE_UINT16, &ep->context);
+
+ return TRUE;
+}
+
+static gboolean endpoint_context_exists(const GDBusPropertyTable *property,
+ void *data)
+{
+ struct endpoint *ep = data;
+
+ return ep->context ? TRUE : FALSE;
+}
+
static const GDBusPropertyTable endpoint_properties[] = {
{ "UUID", "s", endpoint_get_uuid, NULL, NULL },
{ "Codec", "y", endpoint_get_codec, NULL, NULL },
@@ -2370,6 +2438,11 @@ static const GDBusPropertyTable endpoint_properties[] = {
{ "Metadata", "ay", endpoint_get_metadata, NULL,
endpoint_metadata_exists },
{ "Vendor", "u", endpoint_get_vendor, NULL, endpoint_vendor_exists },
+ { "Locations", "u", endpoint_get_locations, NULL,
+ endpoint_locations_exists },
+ { "SupportedContext", "q", endpoint_get_supported_context, NULL,
+ endpoint_supported_context_exists },
+ { "Context", "q", endpoint_get_context, NULL, endpoint_context_exists },
{ }
};
@@ -2552,6 +2625,67 @@ static void endpoint_iso_group(const char *input, void *user_data)
endpoint_iso_stream, ep);
}
+static void endpoint_context(const char *input, void *user_data)
+{
+ struct endpoint *ep = user_data;
+ char *endptr = NULL;
+ int value;
+
+ value = strtol(input, &endptr, 0);
+
+ if (!endptr || *endptr != '\0' || value > UINT16_MAX) {
+ bt_shell_printf("Invalid argument: %s\n", input);
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ ep->context = value;
+
+ if (ep->broadcast)
+ bt_shell_prompt_input(ep->path, "BIG (auto/value):",
+ endpoint_iso_group, ep);
+ else
+ bt_shell_prompt_input(ep->path, "CIG (auto/value):",
+ endpoint_iso_group, ep);
+}
+
+static void endpoint_supported_context(const char *input, void *user_data)
+{
+ struct endpoint *ep = user_data;
+ char *endptr = NULL;
+ int value;
+
+ value = strtol(input, &endptr, 0);
+
+ if (!endptr || *endptr != '\0' || value > UINT16_MAX) {
+ bt_shell_printf("Invalid argument: %s\n", input);
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ ep->supported_context = value;
+
+ bt_shell_prompt_input(ep->path, "Context (value):", endpoint_context,
+ ep);
+}
+
+static void endpoint_locations(const char *input, void *user_data)
+{
+ struct endpoint *ep = user_data;
+ char *endptr = NULL;
+ int value;
+
+ value = strtol(input, &endptr, 0);
+
+ if (!endptr || *endptr != '\0') {
+ bt_shell_printf("Invalid argument: %s\n", input);
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ ep->locations = value;
+
+ bt_shell_prompt_input(ep->path, "Supported Context (value):",
+ endpoint_supported_context, ep);
+}
+
static void endpoint_max_transports(const char *input, void *user_data)
{
struct endpoint *ep = user_data;
@@ -2571,12 +2705,7 @@ static void endpoint_max_transports(const char *input, void *user_data)
ep->max_transports = value;
}
- if (ep->broadcast)
- bt_shell_prompt_input(ep->path, "BIG (auto/value):",
- endpoint_iso_group, ep);
- else
- bt_shell_prompt_input(ep->path, "CIG (auto/value):",
- endpoint_iso_group, ep);
+ bt_shell_prompt_input(ep->path, "Locations:", endpoint_locations, ep);
}
static void endpoint_auto_accept(const char *input, void *user_data)
@@ -3338,14 +3467,41 @@ static const struct bt_shell_menu endpoint_menu = {
{} },
};
+static void endpoint_init_defaults(struct endpoint *ep)
+{
+ ep->preset = find_presets(ep->uuid, ep->codec, ep->vid, ep->cid);
+ ep->max_transports = UINT8_MAX;
+ ep->auto_accept = true;
+
+ if (!strcmp(ep->uuid, A2DP_SOURCE_UUID) ||
+ !strcmp(ep->uuid, A2DP_SOURCE_UUID))
+ return;
+
+ ep->iso_group = BT_ISO_QOS_GROUP_UNSET;
+ ep->iso_stream = BT_ISO_QOS_STREAM_UNSET;
+
+ ep->broadcast = (strcmp(ep->uuid, BCAA_SERVICE_UUID) &&
+ strcmp(ep->uuid, BAA_SERVICE_UUID)) ? false : true;
+ if (ep->broadcast)
+ return;
+
+ if (!strcmp(ep->uuid, PAC_SINK_UUID)) {
+ ep->locations = EP_SNK_LOCATIONS;
+ ep->supported_context = EP_SUPPORTED_SNK_CTXT;
+ ep->context = EP_SNK_CTXT;
+ } else if (!strcmp(ep->uuid, PAC_SOURCE_UUID)) {
+ ep->locations = EP_SRC_LOCATIONS;
+ ep->supported_context = EP_SUPPORTED_SRC_CTXT;
+ ep->context = EP_SRC_CTXT;
+ }
+}
+
static struct endpoint *endpoint_new(const struct capabilities *cap)
{
struct endpoint *ep;
ep = new0(struct endpoint, 1);
ep->uuid = g_strdup(cap->uuid);
- ep->broadcast = (strcmp(cap->uuid, BCAA_SERVICE_UUID) &&
- strcmp(cap->uuid, BAA_SERVICE_UUID)) ? false : true;
ep->codec = cap->codec_id;
ep->path = g_strdup_printf("%s/ep%u", BLUEZ_MEDIA_ENDPOINT_PATH,
g_list_length(local_endpoints));
@@ -3368,12 +3524,7 @@ static void register_endpoints(GDBusProxy *proxy)
continue;
ep = endpoint_new(cap);
- ep->preset = find_presets(ep->uuid, ep->codec, ep->vid,
- ep->cid);
- ep->max_transports = UINT8_MAX;
- ep->auto_accept = true;
- ep->iso_group = BT_ISO_QOS_GROUP_UNSET;
- ep->iso_stream = BT_ISO_QOS_STREAM_UNSET;
+ endpoint_init_defaults(ep);
endpoint_register(ep);
}
}
--
2.41.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* RE: [BlueZ,v1,1/2] shared/bap: Remove Locations, Support Context and Context defines
2023-10-20 23:07 [PATCH BlueZ v1 1/2] shared/bap: Remove Locations, Support Context and Context defines Luiz Augusto von Dentz
2023-10-20 23:07 ` [PATCH BlueZ v1 2/2] client: Add support for setting Locations, SupportedContext and Context Luiz Augusto von Dentz
@ 2023-10-21 1:05 ` bluez.test.bot
1 sibling, 0 replies; 3+ messages in thread
From: bluez.test.bot @ 2023-10-21 1:05 UTC (permalink / raw)
To: linux-bluetooth, luiz.dentz
[-- Attachment #1: Type: text/plain, Size: 1612 bytes --]
This is automated email and please do not reply to this email!
Dear submitter,
Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=795284
---Test result---
Test Summary:
CheckPatch PASS 0.98 seconds
GitLint FAIL 0.79 seconds
BuildEll PASS 39.90 seconds
BluezMake PASS 1326.81 seconds
MakeCheck PASS 14.37 seconds
MakeDistcheck PASS 252.67 seconds
CheckValgrind PASS 382.01 seconds
CheckSmatch PASS 515.82 seconds
bluezmakeextell PASS 164.13 seconds
IncrementalBuild PASS 2348.27 seconds
ScanBuild PASS 1644.54 seconds
Details
##############################
Test: GitLint - FAIL
Desc: Run gitlint
Output:
[BlueZ,v1,2/2] client: Add support for setting Locations, SupportedContext and Context
WARNING: I3 - ignore-body-lines: gitlint will be switching from using Python regex 'match' (match beginning) to 'search' (match anywhere) semantics. Please review your ignore-body-lines.regex option accordingly. To remove this warning, set general.regex-style-search=True. More details: https://jorisroovers.github.io/gitlint/configuration/#regex-style-search
1: T1 Title exceeds max length (86>80): "[BlueZ,v1,2/2] client: Add support for setting Locations, SupportedContext and Context"
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-10-21 1:05 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-20 23:07 [PATCH BlueZ v1 1/2] shared/bap: Remove Locations, Support Context and Context defines Luiz Augusto von Dentz
2023-10-20 23:07 ` [PATCH BlueZ v1 2/2] client: Add support for setting Locations, SupportedContext and Context Luiz Augusto von Dentz
2023-10-21 1:05 ` [BlueZ,v1,1/2] shared/bap: Remove Locations, Support Context and Context defines bluez.test.bot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.