From patchwork Mon Apr 18 17:49:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhengping Jiang X-Patchwork-Id: 12817041 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9061AC433F5 for ; Mon, 18 Apr 2022 17:49:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229656AbiDRRwV (ORCPT ); Mon, 18 Apr 2022 13:52:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38562 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234193AbiDRRwT (ORCPT ); Mon, 18 Apr 2022 13:52:19 -0400 Received: from mail-pj1-x1049.google.com (mail-pj1-x1049.google.com [IPv6:2607:f8b0:4864:20::1049]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E08D834668 for ; Mon, 18 Apr 2022 10:49:39 -0700 (PDT) Received: by mail-pj1-x1049.google.com with SMTP id r12-20020a17090a690c00b001cb9bce2284so9015496pjj.8 for ; Mon, 18 Apr 2022 10:49:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=k2eFww3niLA0CxeY9esuVf7YNBzG2pFa3i1VnZXLtXg=; b=g4tVotcyXamASnNA1LrPzAu0mXfiopTyGi/jVZmiA3UnRnAoYv5DbcyK3IXAoN1fp+ gsAR24yBBBKemxmFuv+JYrSjj+051deSrFIq71Vw4MCuxJVioRHmYdpTxlnFMI9Rfhyh cHdwmw3Qnbb8e0LrTj9sB/Ya8t39MLenOL4kUQ0TR4eaDOx8G2r2fnQrrIG1fhFs3Bgd XaHOWliY+ukKoV/Q4qegcWPgjh8OGlEk3J1oryDgxqS79B93Vn4whFhQcOvc2OBA9BsU cb7S8x8xFEg3YzZfrfOq/pc7A5gE7huGzOxoNftNDVYzFRmFXrOng34e23Oc2voVDr+p S9kQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=k2eFww3niLA0CxeY9esuVf7YNBzG2pFa3i1VnZXLtXg=; b=nRe0Ikcp9nibMR3hsSJ1K4xt5aRt2JPe2zUIl7iqng030LamP6sQEQQIvCrbyQM7Mh kNA90Hj6A/08Rty1Cw3OoyfbqJbVQJMs6/VrHrNEvDGkiPDsGDq22yMZM47b923zmTSt 0oxIzknjYWWZ2PxTc4zTtZ7h7PlThxPu6GWZrUFSCQNKAE/WjLqT1jZ62qy/ErFRkgXs iDYwCBY9Nbr2EyongziTvRtLq0xekBWr0dT/WNL3jjjRgALj0pMZgXlxTWQH11iM7KpA 5umsg/Oy5U2OZJVQU0oVMqSOTb7d9jib268RIze9cO0r7q5uDeE5mnLNWKkxa7OqsnIa CnTg== X-Gm-Message-State: AOAM530b2SM6Oc1GTTpbJtpsyvLdgQ/nHMu7Raq1OeMJU8N84TKnkAbG lD+5KAjDa8lhuPYsZU1KbqMEvRd94TVFMnvOS8xjAc015bE5X/0zKA2MVSFfA2Rnb0jObQ2C+Sb j4CCp4AO4HGpKZSgNWvhAZJ770Y+KXzhA68LXP202JajkV9zfyApneb3W89lWQ15lT+CEcP34w8 tZ X-Google-Smtp-Source: ABdhPJw4ZCaoYppZ3gLzmzwpkBn3qTdh6R4ouIrh7qSebP5sbhV/iJUSKgJNRSAu0hYM6rldO7FMRpJk+0tP X-Received: from jiangzp-glinux-dev.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:4c52]) (user=jiangzp job=sendgmr) by 2002:a05:6a00:24c7:b0:50a:6720:2998 with SMTP id d7-20020a056a0024c700b0050a67202998mr8602537pfv.36.1650304179227; Mon, 18 Apr 2022 10:49:39 -0700 (PDT) Date: Mon, 18 Apr 2022 17:49:28 +0000 In-Reply-To: <20220418174929.2777339-1-jiangzp@google.com> Message-Id: <20220418174914.Bluez.v2.1.I6ab300fa4999c9310f4cb6fc09b1290edb6b2c2b@changeid> Mime-Version: 1.0 References: <20220418174929.2777339-1-jiangzp@google.com> X-Mailer: git-send-email 2.36.0.rc0.470.gd361397f0d-goog Subject: [Bluez PATCH v2 1/2] device: Add "Bonded" flag to dbus property From: Zhengping Jiang To: linux-bluetooth@vger.kernel.org, luiz.dentz@gmail.com Cc: chromeos-bluetooth-upstreaming@chromium.org, Zhengping Jiang , Sonny Sasaka , Yun-Hao Chung Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Add "Bonded" to dbus device property table. When setting the "Bonded flag, check the status of the Bonded property first. If the Bonded property is changed, send property changed signal. Reviewed-by: Sonny Sasaka Reviewed-by: Yun-Hao Chung Signed-off-by: Zhengping Jiang --- Changes in v2: - Move one variable declaration to the top following C90 standard Changes in v1: - Add "Bonded" to D-Bus interface - Send property changed signal if the bonded flag is changed doc/device-api.txt | 4 ++++ src/device.c | 40 +++++++++++++++++++++++++++++++++++----- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/doc/device-api.txt b/doc/device-api.txt index 4e824d2dec17..6162755f954c 100644 --- a/doc/device-api.txt +++ b/doc/device-api.txt @@ -171,6 +171,10 @@ Properties string Address [readonly] Indicates if the remote device is paired. + boolean Bonded [readonly] + + Indicates if the remote device is bonded. + boolean Connected [readonly] Indicates if the remote device is currently connected. diff --git a/src/device.c b/src/device.c index 8dc12d026827..868c41f025d9 100644 --- a/src/device.c +++ b/src/device.c @@ -1042,6 +1042,22 @@ static gboolean dev_property_get_paired(const GDBusPropertyTable *property, return TRUE; } +static gboolean dev_property_get_bonded(const GDBusPropertyTable *property, + DBusMessageIter *iter, void *data) +{ + struct btd_device *dev = data; + dbus_bool_t val; + + if (dev->bredr_state.bonded || dev->le_state.bonded) + val = TRUE; + else + val = FALSE; + + dbus_message_iter_append_basic(iter, DBUS_TYPE_BOOLEAN, &val); + + return TRUE; +} + static gboolean dev_property_get_legacy(const GDBusPropertyTable *property, DBusMessageIter *iter, void *data) { @@ -3120,6 +3136,7 @@ static const GDBusPropertyTable device_properties[] = { { "Icon", "s", dev_property_get_icon, NULL, dev_property_exists_icon }, { "Paired", "b", dev_property_get_paired }, + { "Bonded", "b", dev_property_get_bonded }, { "Trusted", "b", dev_property_get_trusted, dev_property_set_trusted }, { "Blocked", "b", dev_property_get_blocked, dev_property_set_blocked }, { "LegacyPairing", "b", dev_property_get_legacy }, @@ -6114,17 +6131,30 @@ void btd_device_set_trusted(struct btd_device *device, gboolean trusted) void device_set_bonded(struct btd_device *device, uint8_t bdaddr_type) { + struct bearer_state *state; + if (!device) return; - DBG(""); + state = get_state(device, bdaddr_type); - if (bdaddr_type == BDADDR_BREDR) - device->bredr_state.bonded = true; - else - device->le_state.bonded = true; + if (state->bonded) + return; + + DBG("setting bonded for device to true"); + + state->bonded = true; btd_device_set_temporary(device, false); + + /* If the other bearer state was already true we don't need to + * send any property signals. + */ + if (device->bredr_state.bonded == device->le_state.bonded) + return; + + g_dbus_emit_property_changed(dbus_conn, device->path, + DEVICE_INTERFACE, "Bonded"); } void device_set_legacy(struct btd_device *device, bool legacy) From patchwork Mon Apr 18 17:49:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhengping Jiang X-Patchwork-Id: 12817042 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 75BC4C433EF for ; Mon, 18 Apr 2022 17:49:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233848AbiDRRwY (ORCPT ); Mon, 18 Apr 2022 13:52:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38598 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233363AbiDRRwX (ORCPT ); Mon, 18 Apr 2022 13:52:23 -0400 Received: from mail-pj1-x1049.google.com (mail-pj1-x1049.google.com [IPv6:2607:f8b0:4864:20::1049]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8220734671 for ; Mon, 18 Apr 2022 10:49:44 -0700 (PDT) Received: by mail-pj1-x1049.google.com with SMTP id l2-20020a17090ad10200b001ca56de815aso300020pju.0 for ; Mon, 18 Apr 2022 10:49:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=PXEk7WuZNDqx2Pd41NAZ7vijsCFkI9XuCFmrbYz1mWY=; b=nVb/LyIjT4faWYEJDcI6SikweMEjPCU9TKpGPA81gVvWRO1nBk8vGrL2FniLXqNy8R JMbTsoSRPeGXMyka6JpEykePETHitGY/Ouwhwj1gDEn9gm0LhXrA2+ANSHUjJuZdO9V2 h9gPBzaq8s9eHEcOXrQop9hQQvW63+jlcrokTAc3oOax8MRfNe35DjfIpJGiNxBSv0Vf kQArc5Mu6DDw0dn5Oa3V2E9PXZvMUJwFUQHCcEvk0lSpe9JcV7hUph9fm6VJb4eIJAps t3ZyeUWNs7axOg0L/cJUu8A/OfYHdGljSLxhY38x2kpwEyRxgtz2lcqD81fYrnirYB+A LqNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=PXEk7WuZNDqx2Pd41NAZ7vijsCFkI9XuCFmrbYz1mWY=; b=W5TfHfMJUKdWs7kF3DmzOTPEC+gTgxeqM+oaenqmm8volDjYKbmM3cOoa5UgtoUuXu i6OP+Qb+9KXVGf1jY/6itbNJs1QFsdyMDOdttPDmtw1Hg51GDUvOSpUpoQXbIgrnJzHe xtbUuWNtL4YRES/Nk0QdpY7w1WEFodFr4fy6l1TY0Jnml7b63R1G8npbvDYxqH/WEAvF B1fDJty8BpLA6erffDvAG0Jjt+oC1y3h+xBqWk1ND78UTILFs48JBguko4HzN6u/QOeT D9r1nPkyAV8HizqKk2zemAudYLBxi0IheKoJim5JDtOecdYJ4pjQb7gPgsJIidPygjwo A74A== X-Gm-Message-State: AOAM5328yh2NrW2Pr7FbUG36+wzG45DdLrjzg+cQ/ZBLEYc1XzgAk5r9 Zp6TueNsTJelRwfB5E35w1/zlAAFdPwIaErGHXNNvGmO8nmhO586Xc3wGKtqxDe3sPidxSqjb1n +OU6F3J+J4qkTDyexL19UVXhcHRNVdvqCd8be8goasLCwCxUYI1Bkdx1Y0gykxEwi7MnbTJzYT6 hF X-Google-Smtp-Source: ABdhPJzJ4YS/z+QcfQ9lpIm0jvNEFZgl6iIJTNu815yZnOVz3qoI2Q/maWlYEiK1kbT0fOwaaCUS8IN4Xnlc X-Received: from jiangzp-glinux-dev.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:4c52]) (user=jiangzp job=sendgmr) by 2002:a17:90b:3b85:b0:1d2:8450:49ad with SMTP id pc5-20020a17090b3b8500b001d2845049admr8870550pjb.156.1650304183930; Mon, 18 Apr 2022 10:49:43 -0700 (PDT) Date: Mon, 18 Apr 2022 17:49:29 +0000 In-Reply-To: <20220418174929.2777339-1-jiangzp@google.com> Message-Id: <20220418174914.Bluez.v2.2.I29a0e38364a8d5854342019b607fa049c74248a3@changeid> Mime-Version: 1.0 References: <20220418174929.2777339-1-jiangzp@google.com> X-Mailer: git-send-email 2.36.0.rc0.470.gd361397f0d-goog Subject: [Bluez PATCH v2 2/2] client: Add bonded-devices and show Bonded flag in info From: Zhengping Jiang To: linux-bluetooth@vger.kernel.org, luiz.dentz@gmail.com Cc: chromeos-bluetooth-upstreaming@chromium.org, Zhengping Jiang , Sonny Sasaka , Yun-Hao Chung Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Add "bonded-devices" to the menu and show the "Bonded" property for command "info". Reviewed-by: Sonny Sasaka Reviewed-by: Yun-Hao Chung Signed-off-by: Zhengping Jiang --- (no changes since v1) Changes in v1: - Show the status of the "Bonded" flag in bluetoothctl - Add option to show list of bonded devices client/main.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/client/main.c b/client/main.c index 589268c3a68c..45c89a1de37b 100644 --- a/client/main.c +++ b/client/main.c @@ -1090,6 +1090,32 @@ static void cmd_paired_devices(int argc, char *argv[]) return bt_shell_noninteractive_quit(EXIT_SUCCESS); } +static void cmd_bonded_devices(int argc, char *argv[]) +{ + GList *ll; + + if (check_default_ctrl() == FALSE) + return bt_shell_noninteractive_quit(EXIT_SUCCESS); + + for (ll = g_list_first(default_ctrl->devices); + ll; ll = g_list_next(ll)) { + GDBusProxy *proxy = ll->data; + DBusMessageIter iter; + dbus_bool_t bonded; + + if (g_dbus_proxy_get_property(proxy, "Bonded", &iter) == FALSE) + continue; + + dbus_message_iter_get_basic(&iter, &bonded); + if (!bonded) + continue; + + print_device(proxy, NULL); + } + + return bt_shell_noninteractive_quit(EXIT_SUCCESS); +} + static void generic_callback(const DBusError *error, void *user_data) { char *str = user_data; @@ -1781,6 +1807,7 @@ static void cmd_info(int argc, char *argv[]) print_property(proxy, "Appearance"); print_property(proxy, "Icon"); print_property(proxy, "Paired"); + print_property(proxy, "Bonded"); print_property(proxy, "Trusted"); print_property(proxy, "Blocked"); print_property(proxy, "Connected"); @@ -3116,6 +3143,8 @@ static const struct bt_shell_menu main_menu = { { "devices", NULL, cmd_devices, "List available devices" }, { "paired-devices", NULL, cmd_paired_devices, "List paired devices"}, + { "bonded-devices", NULL, cmd_bonded_devices, + "List bonded devices"}, { "system-alias", "", cmd_system_alias, "Set controller alias" }, { "reset-alias", NULL, cmd_reset_alias,