From patchwork Tue Mar 4 06:19:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arkadiusz Bokowy X-Patchwork-Id: 13999979 Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) (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 E205B152E02 for ; Tue, 4 Mar 2025 06:20:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741069210; cv=none; b=JiyuUylbc7eazJIUCbGIrjYwvBgHWeFW1O1kXnAf9vxe1QpsTjqkSsQT1phNnarGU+sOiP4sU5zRUort1fUNkMMK7hu/FgMjyC9yDNB5c3vAuwityFxdaNlFb86z31wexiFN11WXicel85UZDjR52E7ZNQnpLcgtEwKqll3EIYg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741069210; c=relaxed/simple; bh=InpyyDxXL8y2iMlaegpYqRnVVGhPW05fMmkULA2oobY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=j4ytHp4rNC1w6ekYw7yKkMsXQn89DJbtWoRElclkevg/QObO6m8tf1ZV/8z6oI0x9JdZuW2o26cpY/pYFLQPA1nl9zZWSaBg+riaobJEf/j6PC3or+aIyg2Aebme7lAakhrIA/sLKB+5k9ewFjcZeWgbvxXoXJmZEhDMzFD6BJk= 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=FFNkG3I6; arc=none smtp.client-ip=209.85.208.43 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="FFNkG3I6" Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-5e53b3fa7daso3322813a12.2 for ; Mon, 03 Mar 2025 22:20:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741069207; x=1741674007; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Bp193A+JhluCv8qP5l/ChkEEc6RaIoQRNQJIvejeTA4=; b=FFNkG3I6l0F40LoYsm87XL01O9+/RtP3Uo8tGCJr5thheqmv4/y4eY0w0y2fgmcIhO THUA/1vvD2wt0Hl8zzC7RaRZPmV+7uH3mou538fdxjiDtmAfnUAO0macF2xLoRNPCXi3 d1UQJVdKySjh/j3D5m0SVz3xF3BlJNv2tzcTKTaGoZPs57nxvixCblvbZk1jeJbrrmWL DbgVtO8S3viGWoiFzaahEE045KJKoBFB9i5xT7+YVrbdsWGzQ0TdouRDDld0e7aphvYl ZezJVFMbNauHXFwpiBZlA2hgld9/48QK4/X8MSgMGhDHwPC/6CJ/ZnlKBe8MQr4D9nL4 io9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741069207; x=1741674007; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Bp193A+JhluCv8qP5l/ChkEEc6RaIoQRNQJIvejeTA4=; b=h4QHzhuamo6CPDA3vsU6gSIcLNbDAquaDGXflDkpy8EYFyw25yH38EoSnJ5+kbm5vN RbNh+eF9RftLY01y8C1q6DxsHOnkSBsN4T+HrW9EADr9exJSfZDS5q89gypRcHJ8pD6Y MyjwqgUTi6yHPHEAuLfpjIUP4gtWRjzC2mHnpNhz1rST3mSvaiAbosQIG1zk+Cg0fd9N Ls3tQlj+y2LgEJJS1CuK9IGxbED8yYKwOciIzfnEAk/hHcYdOG/i25a2ahCWMyNi4krD X8iGndK3NWwlftXBvisefxa1ZUAU1LE9XlNUQ+eVnnu/8fIqq5/W96SFsguATPxdBhsT dFpw== X-Forwarded-Encrypted: i=1; AJvYcCWRW4UPa6Z+QI8WeQa74gLn1zwH1Qe6f2NXCv2EyVUeX4fwPvZrh8sHJpyhiS0uZl8yzJYu5XSnt+smG4OUNuI=@vger.kernel.org X-Gm-Message-State: AOJu0YwJPVFwJTOsaMECee+L4eu5ccXGJ+1YoxOEHmto9sPNPfamtDk9 fxE+e252IfW7PoBtr1wo0766FbdYhRiEwHIs3sJyzwn9GHNSJPsnzNZYHoqBeZw= X-Gm-Gg: ASbGncuonW5wlvJJHwfsyZO9sQQk1BROAvoKQMRwHKq4ptg0QiPq+zjJ/sryipobBcT ZN9NEp22D2Yk5f0rVGrVa7cxfzKOQ1jUO74G6kjQFGk/W1MFgwdrkMfAT2tVoCtaiRZAambxU1h 22MIf10P7HqNhJvgQGwApxeOzwNj5RdJean0WkMaB8gQ1VcUQ/aFdc9rKoUAqd/1pT8xR+NOEWF olvHpNAgdBrl7ii+WG38JdgKI71SWae6Pmd6CG1YgfiKN34tpe8O1cIVyHTA7cb4p2nncxkFeIZ bbLNRvJKRMvOgE3cxGebjmWosshSpvdhgIksYAqJLJRTaO9oMWdrghkr0xmpTAc53PH5sbSlsl9 ZWokT16WMo6Mj5Uy1DbbDqJnsUOuu4uYJfsjang== X-Google-Smtp-Source: AGHT+IG0Gxf4YK/HD50mXFiiDG95ss71jhrpwSYGLOu3ZBBRkJV8zlY3B0ySUfMhi6f8ULplESBTJQ== X-Received: by 2002:a17:907:6ea6:b0:abf:6e88:3a65 with SMTP id a640c23a62f3a-abf6e883e60mr754174066b.19.1741069206282; Mon, 03 Mar 2025 22:20:06 -0800 (PST) Received: from localhost.localdomain (46.205.201.86.nat.ftth.dynamic.t-mobile.pl. [46.205.201.86]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abf0c6f5363sm892708666b.123.2025.03.03.22.20.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Mar 2025 22:20:05 -0800 (PST) From: Arkadiusz Bokowy To: luiz.dentz@gmail.com Cc: arkadiusz.bokowy@gmail.com, linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v3 1/3] uuid-helper: Add A2DP to the list of known profiles Date: Tue, 4 Mar 2025 07:19:57 +0100 Message-Id: <20250304061959.34839-1-arkadiusz.bokowy@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 --- src/uuid-helper.c | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/uuid-helper.c b/src/uuid-helper.c index f32ee0a85..640592fd2 100644 --- a/src/uuid-helper.c +++ b/src/uuid-helper.c @@ -101,29 +101,31 @@ static struct { const char *name; uint16_t class; } bt_services[] = { - { "pbap", PBAP_SVCLASS_ID }, - { "sap", SAP_SVCLASS_ID }, - { "ftp", OBEX_FILETRANS_SVCLASS_ID }, - { "bpp", BASIC_PRINTING_SVCLASS_ID }, + { "a2dp-sink", AUDIO_SINK_SVCLASS_ID }, + { "a2dp-source",AUDIO_SOURCE_SVCLASS_ID }, { "bip", IMAGING_SVCLASS_ID }, - { "synch", IRMC_SYNC_SVCLASS_ID }, + { "bpp", BASIC_PRINTING_SVCLASS_ID }, { "dun", DIALUP_NET_SVCLASS_ID }, - { "opp", OBEX_OBJPUSH_SVCLASS_ID }, { "fax", FAX_SVCLASS_ID }, - { "spp", SERIAL_PORT_SVCLASS_ID }, - { "hsp", HEADSET_SVCLASS_ID }, - { "hsp-hs", HEADSET_SVCLASS_ID }, - { "hsp-ag", HEADSET_AGW_SVCLASS_ID }, + { "ftp", OBEX_FILETRANS_SVCLASS_ID }, + { "gnss", GNSS_SERVER_SVCLASS_ID }, { "hfp", HANDSFREE_SVCLASS_ID }, - { "hfp-hf", HANDSFREE_SVCLASS_ID }, { "hfp-ag", HANDSFREE_AGW_SVCLASS_ID }, - { "pbap-pce", PBAP_PCE_SVCLASS_ID }, - { "pbap-pse", PBAP_PSE_SVCLASS_ID }, - { "map-mse", MAP_MSE_SVCLASS_ID }, + { "hfp-hf", HANDSFREE_SVCLASS_ID }, + { "hsp", HEADSET_SVCLASS_ID }, + { "hsp-ag", HEADSET_AGW_SVCLASS_ID }, + { "hsp-hs", HEADSET_SVCLASS_ID }, { "map-mas", MAP_MSE_SVCLASS_ID }, { "map-mce", MAP_MCE_SVCLASS_ID }, { "map-mns", MAP_MCE_SVCLASS_ID }, - { "gnss", GNSS_SERVER_SVCLASS_ID }, + { "map-mse", MAP_MSE_SVCLASS_ID }, + { "opp", OBEX_OBJPUSH_SVCLASS_ID }, + { "pbap", PBAP_SVCLASS_ID }, + { "pbap-pce", PBAP_PCE_SVCLASS_ID }, + { "pbap-pse", PBAP_PSE_SVCLASS_ID }, + { "sap", SAP_SVCLASS_ID }, + { "spp", SERIAL_PORT_SVCLASS_ID }, + { "synch", IRMC_SYNC_SVCLASS_ID }, { } }; From patchwork Tue Mar 4 06:19:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arkadiusz Bokowy X-Patchwork-Id: 13999980 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (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 5B6BF1F0E44 for ; Tue, 4 Mar 2025 06:20:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741069212; cv=none; b=l+H5/FFEeZCKDouEAu0OAgAGr0DNmQ5oBDc6TwuCDGoJqXngbhb29Om5Ojw9LTWxb/aeGTISqr3v9pDd4LWemKxGiyobJYs/02ZY93VPrupY40xEbM9Etwap3cDgAG6IVkl0Jp0/0oqrNADQgKUT6dnM42ipj7vMdoJeNlYcm+A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741069212; c=relaxed/simple; bh=z7k6KGzKdoEkjHN6WXxvhPHBotba9sqIsz9HfxEazLQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=uQr1ILlelreIhYBQM4odwgOWv/Mgj280CoIgfh/zcqfq0LdKtI5lsyT05yjmwlD3RqaOZpl0WXvibtBgugHuFqBjbvGibDuisJVzoruWndK4EaljPdhB72F0khXOd9nhqyGJPpXGqEl6t7r3vFaUxsF+aJAbtSQXc2U5/005Z3k= 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=mKZ6AqID; arc=none smtp.client-ip=209.85.218.51 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="mKZ6AqID" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-abf4d756135so473314766b.1 for ; Mon, 03 Mar 2025 22:20:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741069208; x=1741674008; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=b39WrI6vUPh0WkeXTTdeenAvSXvRzkf3VetqRtxw+z4=; b=mKZ6AqIDpiMghoCn+KCnX1Tlz/Eg9ugbcFuC4oudzHQO9wh7gfF1eRvo7q9y+RJTKg UzL1DgC88WXn2VN2KDAwdvgPjOPLYhkMz1Fo+cPFJPlvlo/bjuz6Lkj9IpgNa8mCYV70 VopBvCL7GzQxkCDmsPAprLQtCjfkGPrNRo+zPMxdlugSKiUVvjcHPwFMDn0SfSRDVMhR SZzzIc1eY/DJO9u1fCrKdFnRrkaMpDsHP21f6OR2ehFiJxFUfxUUH877ho8OzxDtWAFf R1KLRQdAqFb6Ep8dJwS1ns3uXIPTK9VXZAl7YS2C4r4PaqY+fPdi5bAcjwMw/o/a0GK9 BaNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741069208; x=1741674008; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=b39WrI6vUPh0WkeXTTdeenAvSXvRzkf3VetqRtxw+z4=; b=bFEW/oLi/2DHgWGPORC2q5BStUQeZe8ZLVRhfypX7gVtd3/3tssRJeXy+XRzsuZqsJ Qx8Rw73U/cFbBWL0U99zbMXcd3oBW4olFObdxKXLO475g1ww3ybM8bUAX/+yVbHh0JTt FN9r0pLwBiHzqgV/PQl3r1U09RmL0byNi5cql5FSRgOBgj80lox90HTBpxoWb/s/z+V+ JFsyoV722cXDw1M5DAmm4rkHXjxANuDf60cYXITB6O/b4/lgV7qgt3le8qm3CZMP2Joj aXhV0UFk57FCcV7CxLZqAAU/MzYXfcOQKEpRJkdVFhOw5nlPfJsRXTLGIKJfcbkEceMW jNZA== X-Forwarded-Encrypted: i=1; AJvYcCUJXGl/B8wL/zT6ePIyoZjq46l2FhIwpaJWzxkF2DOlPLS70td6xrpRjvJQX0tKJN3QQT54rA3zb3ceF2NYqVk=@vger.kernel.org X-Gm-Message-State: AOJu0Yy1CYsHIboPHrxN6V45X/isUkpk0UzudghzINUnilkWpLzl55s4 XnXkeEhX/62hFZHLeND35sCPRz/IkUTozxJDnKm3gv08MUvP1QV1HMJjBcr+w+I= X-Gm-Gg: ASbGncsCv9UT+kNqotVwg3pk6PXReCNi/yRBgpkQ7WrXAedB8cloqHH9JQIAbLZewJj WchEHt+fvdOPsh8X66oLH+IoEYOrGfrcXSZXtxccHooSfOnfM9GW/3Ore0aBmVLuq2CwUKyVqWN KhF6I9IGhyvykT2g9qNPOGzMdWCp8rTDwfIzbielqGpufR7hMU/3nxAHxO5HIhwS0C5dUf/le7+ aUW4KECfQL/KaF8MsAjdA3SozboUIgWt9s+1kHFyHRVxB5ossyGjunzdBtArDFzqpjFsXcN0lc/ I2+HdA7MRnxQGHqs6emp0g/9Hyufhx76+UjY6BD6U81MyZbd0+JfFsKIK0kFmjciO4EIRZormKn n6U6nYtLRlITqbtqxBFcwKVB6hUBpzd5iARN7Xw== X-Google-Smtp-Source: AGHT+IFBzw1GMzczjWnqB115k6UwQfZPFUiIzCvW8L/GFzswJYhJ+EXUyXbMWz/c9DAPehGIwKqLFg== X-Received: by 2002:a17:906:1285:b0:abf:40a2:40c8 with SMTP id a640c23a62f3a-abf40a24526mr1420900766b.28.1741069208169; Mon, 03 Mar 2025 22:20:08 -0800 (PST) Received: from localhost.localdomain (46.205.201.86.nat.ftth.dynamic.t-mobile.pl. [46.205.201.86]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abf0c6f5363sm892708666b.123.2025.03.03.22.20.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Mar 2025 22:20:07 -0800 (PST) From: Arkadiusz Bokowy To: luiz.dentz@gmail.com Cc: arkadiusz.bokowy@gmail.com, linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v3 2/3] client: Support single profile connection/disconnection Date: Tue, 4 Mar 2025 07:19:58 +0100 Message-Id: <20250304061959.34839-2-arkadiusz.bokowy@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250304061959.34839-1-arkadiusz.bokowy@gmail.com> References: <20250304061959.34839-1-arkadiusz.bokowy@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 --- client/main.c | 93 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 80 insertions(+), 13 deletions(-) diff --git a/client/main.c b/client/main.c index 6b938da3f..3f2bfcf6b 100644 --- a/client/main.c +++ b/client/main.c @@ -1981,13 +1981,44 @@ static void cmd_remove(int argc, char *argv[]) remove_device(proxy); } +struct connection_data { + GDBusProxy *proxy; + char *uuid; +}; + +static void connection_setup(DBusMessageIter *iter, void *user_data) +{ + struct connection_data *data = user_data; + + if (!data->uuid) + return; + + dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &data->uuid); +} + +static void format_connection_profile(char *output, size_t size, + const char *uuid) +{ + const char *text; + + text = bt_uuidstr_to_str(uuid); + if (!text) + text = uuid; + + snprintf(output, size, " profile \"%s\"", text); +} + static void connect_reply(DBusMessage *message, void *user_data) { - GDBusProxy *proxy = user_data; + struct connection_data *data = user_data; + GDBusProxy *proxy = data->proxy; DBusError error; dbus_error_init(&error); + g_free(data->uuid); + g_free(data); + if (dbus_set_error_from_message(&error, message) == TRUE) { bt_shell_printf("Failed to connect: %s %s\n", error.name, error.message); @@ -2003,6 +2034,9 @@ static void connect_reply(DBusMessage *message, void *user_data) static void cmd_connect(int argc, char *argv[]) { + struct connection_data *data; + const char *method = "Connect"; + char profile[128] = ""; GDBusProxy *proxy; if (check_default_ctrl() == FALSE) @@ -2014,31 +2048,49 @@ static void cmd_connect(int argc, char *argv[]) return bt_shell_noninteractive_quit(EXIT_FAILURE); } - if (g_dbus_proxy_method_call(proxy, "Connect", NULL, connect_reply, - proxy, NULL) == FALSE) { + data = new0(struct connection_data, 1); + data->proxy = proxy; + + if (argc == 3) { + method = "ConnectProfile"; + data->uuid = g_strdup(argv[2]); + format_connection_profile(profile, sizeof(profile), argv[2]); + } + + if (g_dbus_proxy_method_call(proxy, method, connection_setup, + connect_reply, data, NULL) == FALSE) { bt_shell_printf("Failed to connect\n"); return bt_shell_noninteractive_quit(EXIT_FAILURE); } - bt_shell_printf("Attempting to connect to %s\n", argv[1]); + bt_shell_printf("Attempting to connect%s to %s\n", profile, argv[1]); } static void disconn_reply(DBusMessage *message, void *user_data) { - GDBusProxy *proxy = user_data; + struct connection_data *data = user_data; + const bool profile_disconnected = data->uuid != NULL; + GDBusProxy *proxy = data->proxy; DBusError error; dbus_error_init(&error); + g_free(data->uuid); + g_free(data); + if (dbus_set_error_from_message(&error, message) == TRUE) { bt_shell_printf("Failed to disconnect: %s\n", error.name); dbus_error_free(&error); return bt_shell_noninteractive_quit(EXIT_FAILURE); } - bt_shell_printf("Successful disconnected\n"); + bt_shell_printf("Disconnection successful\n"); - if (proxy == default_dev) + /* If only a single profile was disconnected, the device itself might + * still be connected. In that case, let the property change handler + * take care of setting the default device to NULL. + */ + if (proxy == default_dev && !profile_disconnected) set_default_device(NULL, NULL); return bt_shell_noninteractive_quit(EXIT_SUCCESS); @@ -2046,19 +2098,31 @@ static void disconn_reply(DBusMessage *message, void *user_data) static void cmd_disconn(int argc, char *argv[]) { + struct connection_data *data; + const char *method = "Disconnect"; + char profile[128] = ""; GDBusProxy *proxy; proxy = find_device(argc, argv); if (!proxy) return bt_shell_noninteractive_quit(EXIT_FAILURE); - if (g_dbus_proxy_method_call(proxy, "Disconnect", NULL, disconn_reply, - proxy, NULL) == FALSE) { + data = new0(struct connection_data, 1); + data->proxy = proxy; + + if (argc == 3) { + method = "DisconnectProfile"; + data->uuid = g_strdup(argv[2]); + format_connection_profile(profile, sizeof(profile), argv[2]); + } + + if (g_dbus_proxy_method_call(proxy, method, connection_setup, + disconn_reply, data, NULL) == FALSE) { bt_shell_printf("Failed to disconnect\n"); return bt_shell_noninteractive_quit(EXIT_FAILURE); } - bt_shell_printf("Attempting to disconnect from %s\n", + bt_shell_printf("Attempting to disconnect%s from %s\n", profile, proxy_address(proxy)); } @@ -3253,10 +3317,13 @@ static const struct bt_shell_menu main_menu = { dev_generator }, { "remove", "", cmd_remove, "Remove device", dev_generator }, - { "connect", "", cmd_connect, "Connect device", - dev_generator }, - { "disconnect", "[dev]", cmd_disconn, "Disconnect device", + { "connect", " [uuid]", cmd_connect, + "Connect a device and all its profiles or " + "optionally connect a single profile only", dev_generator }, + { "disconnect", "[dev] [uuid]", cmd_disconn, + "Disconnect a device or optionally disconnect " + "a single profile only", dev_generator }, { "wake", "[dev] [on/off]", cmd_wake, "Get/Set wake support", dev_generator }, { } }, From patchwork Tue Mar 4 06:19:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arkadiusz Bokowy X-Patchwork-Id: 13999981 Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.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 B6192152E02 for ; Tue, 4 Mar 2025 06:20:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741069213; cv=none; b=X4oNOqyX9dRVWAxlZTQDqs56ZgTG5A9SQUMZ0G/rkKlmH7e5rA3vDB6rf/wKZPuzkgtfJpYfgG90rIVVHN+Uxc4dbX3NkvP8ReJQ4of1ATDQ/NVhdJBSPmpz4OnCLTcnfe+2gVdfXQNeX7WO7x083WfXNFOXrx/Mw/d1FeaDPA8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741069213; c=relaxed/simple; bh=/3v50MjACHqJSIQ6sGqUqW23FxE+6uJ7VqbJpdhEk9U=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Z/y0oO9y5a8jeImLY5xg+RHl6GQD/gmBa5GbvQ31LaxoCl+15jsbkaAskOHdmKYeY/FyAjMtTAj00SkP/D7QfKIJX4DRKVzDEWGt1C6olehl1evUhWCh8iH6Rb+HQgboZtEV0nF68v4LVwtjyJRGJmNVud7ob8DM60a0qLaJLnM= 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=NmAgE5Tf; arc=none smtp.client-ip=209.85.208.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="NmAgE5Tf" Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-5e033c2f106so6059285a12.3 for ; Mon, 03 Mar 2025 22:20:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741069210; x=1741674010; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=slTRLPIsI0FSy9erYvSOEpbh681SCuOBNN0HLHCN390=; b=NmAgE5TfIauqTctZGDv8xLNG2Ad/IqIqbkD+RUbH9P6R9gRod81xZHM6/S3ppBg9u1 5YjNI0lFY4HKUbmoA9VaxpY5+FybctIWw6dP5QP+Rll/Z2NCW6+qYEmqVhrk+ZZlkwDi zfJLcHCzGWETGuBhhJ0+QR9RPrND9BYPQxeu15lrU9tjpJpQj0i1yylZWwyXNNtMVrNr EpvBzOdghwW0Bq4ck5Q23IK+QHPVsKeU8M0cS+zKuVVRQUbtWT/WCJoipTQNoXHAUzG2 gW7lGXYAxn6DgnMFg6MWKXJoi3kppjxfSLTWPAamhVYA5jah4W4osRaUCdZn1l9c/VKW 1Rag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741069210; x=1741674010; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=slTRLPIsI0FSy9erYvSOEpbh681SCuOBNN0HLHCN390=; b=ppb8xfUzZK8h0NFVzURlcck1RPrJcc6JgQu14qn4HWPd0zK8bpto2Cn09GLuqLDSBa 7CZ9SZ9k8ww9JBCSZk6Iwkv7Wvf9Cb+PoKB2xlurId4v6tEx2fgsPkFbJmQhnHdDwVRt JekF201gk+CWc2HwVkB1rz6knlkRdvb3FBuhTKC5msXBX/VHjZqkBPT1Z2yC+7A6NbWp e/VSvsfOekCL82ireWn705P4GeHgLe7yfRHkU2/oLCvWEZxIEdJuztIoTSG/zLOZVWfu nO19IcpJzlPlCm+Pb+AtCacwNpIE+LG5zD08AIpC+B6tjCQ8AdRXFOGVChb4psebClGm j5yA== X-Forwarded-Encrypted: i=1; AJvYcCXYzF4oW2Yc2FbLRKmS0xFwO17vLFThI9kChmRtGrtw2cZnaX5pdb6CBrfeA0lGmm8Z3A9W98vFWbAaFEcE3oE=@vger.kernel.org X-Gm-Message-State: AOJu0YwNPd7SL+nNOiKUAvZ2mIhaDOftvssDZPgLy7G2+jv575faC8UC /yyaFlbpiljkM5gAJP7M4+F80fzdNHi7OLL9qqeFSa0o80J9ckJ+N58MwbYJ8DU= X-Gm-Gg: ASbGncu0SElG9Sx6ZEbsmUl2WCzkvvPc/pZSC7equUnfgEe3DdTLzyvDzvCEhIyoOF0 ghaIbAGgpFOsvN66PPU2ts70v1Ev8s2glgVgMUNv5eGqpz715gQsIg+RRvjFH34L/VfzEy48xXV Rqvd73FIuRXjq09pHlP8djf1tmQGzHqkaZIxeiksWBuWCtDgcvjfYK/7p3eJGwZv2EacFga+yH9 DaMhw/V7UlVMZEk/4ET6YWe+1Nw9Pv9XLoq18A91raJXXCXcgGLyoo47bfdCRaqUty+vd6J2jl9 6EC3tTBW51ykJTgdYVE+opCpjOWI1fxC5UoPNBlFTSneLh4C75SnKnxb6h34Qy/EQUK7KO+NDHJ R7gxBe7dhfyHhCvLxBJiuSzhG5dfh0tJfR8H1eg== X-Google-Smtp-Source: AGHT+IGyF2AiPFdGfapjywzJEDykADX49ZZbdevCtKn85Um2+nw0n0v9LoOSLvMAPhrL5KXCkj3pgw== X-Received: by 2002:a05:6402:3493:b0:5de:b438:1fdb with SMTP id 4fb4d7f45d1cf-5e4d6b629b0mr33982850a12.30.1741069209879; Mon, 03 Mar 2025 22:20:09 -0800 (PST) Received: from localhost.localdomain (46.205.201.86.nat.ftth.dynamic.t-mobile.pl. [46.205.201.86]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abf0c6f5363sm892708666b.123.2025.03.03.22.20.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Mar 2025 22:20:09 -0800 (PST) From: Arkadiusz Bokowy To: luiz.dentz@gmail.com Cc: arkadiusz.bokowy@gmail.com, linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v3 3/3] client: Document connect/disconnect optional profile argument Date: Tue, 4 Mar 2025 07:19:59 +0100 Message-Id: <20250304061959.34839-3-arkadiusz.bokowy@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250304061959.34839-1-arkadiusz.bokowy@gmail.com> References: <20250304061959.34839-1-arkadiusz.bokowy@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 --- client/bluetoothctl.rst | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/client/bluetoothctl.rst b/client/bluetoothctl.rst index b6c2efa35..fb0999626 100644 --- a/client/bluetoothctl.rst +++ b/client/bluetoothctl.rst @@ -9,7 +9,7 @@ Bluetooth Control Command Line Tool :Version: BlueZ :Copyright: Free use of this software is granted under the terms of the GNU Lesser General Public Licenses (LGPL). -:Date: November 2022 +:Date: March 2024 :Manual section: 1 :Manual group: Linux System Administration @@ -262,6 +262,13 @@ Connect device. This will initiate a connection to a device. +By default this commands tries to connect all the profiles the remote device +supports and have been flagged as auto-connectable. In case when the UUID of +the remote service is given only that service will be connected. The UUID can +be either a short form (16-bit UUID) or a long form (128-bit UUID). There are +also some special values for well-known profiles like "a2dp-sink", +"a2dp-source", "hfp-hf", "hfp-ag", "ftp" or "spp". + To connect with an LE device the controller must have an active scan report of the device it wants to connect to. @@ -269,17 +276,25 @@ If no advertising report is received before the timeout a le-connection-abort-by-local error will be issued. In that case either try again to connect assuming the device is advertising. -:Usage: **> connect ** +:Usage: **> connect [uuid]** +:Example: **> connect 1C:48:F9:9D:81:5C** +:Example: **> connect 1C:48:F9:9D:81:5C hsp-hs** +:Example: **> connect 1C:48:F9:9D:81:5C 00001108-0000-1000-8000-00805f9b34fb** +:Example: **> connect 1C:48:F9:9D:81:5C 0x1108** disconnect ---------- Disconnect device. +By default this commands disconnects all profiles and then terminates the +connection. In case when the UUID of the remote service is given only that +service will be disconnected. + For LE when disconnecting from an active connection the device address is not needed. -:Usage: **> disconnect ** +:Usage: **> disconnect [uuid]** info ----