From patchwork Wed Aug 31 09:19:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bastien Nocera X-Patchwork-Id: 601521 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 67F88C54EE9 for ; Wed, 31 Aug 2022 09:20:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231935AbiHaJUC (ORCPT ); Wed, 31 Aug 2022 05:20:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32812 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230108AbiHaJTg (ORCPT ); Wed, 31 Aug 2022 05:19:36 -0400 Received: from relay12.mail.gandi.net (relay12.mail.gandi.net [IPv6:2001:4b98:dc4:8::232]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 88B2ECACB7 for ; Wed, 31 Aug 2022 02:19:14 -0700 (PDT) Received: (Authenticated sender: hadess@hadess.net) by mail.gandi.net (Postfix) with ESMTPSA id A2BCD200012 for ; Wed, 31 Aug 2022 09:19:12 +0000 (UTC) From: Bastien Nocera To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v4 1/6] adapter: Keep track of whether the adapter is rfkill'ed Date: Wed, 31 Aug 2022 11:19:07 +0200 Message-Id: <20220831091912.47894-1-hadess@hadess.net> X-Mailer: git-send-email 2.37.2 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Instead of only replying to D-Bus requests with an error saying the adapter is blocked, keep track of the rfkill being enabled or disabled so we know the rfkill state of the adapter at all times. --- src/adapter.c | 25 +++++++++++++++++++++++-- src/adapter.h | 1 + src/rfkill.c | 8 ++++++-- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index b453e86a0..641db67f9 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -250,6 +250,7 @@ struct btd_adapter { uint32_t dev_class; /* controller class of device */ char *name; /* controller device name */ char *short_name; /* controller short name */ + bool blocked; /* whether rfkill is enabled */ uint32_t supported_settings; /* controller supported settings */ uint32_t pending_settings; /* pending controller settings */ uint32_t current_settings; /* current controller settings */ @@ -654,6 +655,8 @@ static void set_mode_complete(uint8_t status, uint16_t length, if (status != MGMT_STATUS_SUCCESS) { btd_error(adapter->dev_id, "Failed to set mode: %s (0x%02x)", mgmt_errstr(status), status); + if (status == MGMT_STATUS_RFKILLED) + adapter->blocked = true; adapter->pending_settings &= ~data->setting; return; } @@ -2914,10 +2917,12 @@ static void property_set_mode_complete(uint8_t status, uint16_t length, btd_error(adapter->dev_id, "Failed to set mode: %s (0x%02x)", mgmt_errstr(status), status); - if (status == MGMT_STATUS_RFKILLED) + if (status == MGMT_STATUS_RFKILLED) { dbus_err = ERROR_INTERFACE ".Blocked"; - else + adapter->blocked = true; + } else { dbus_err = ERROR_INTERFACE ".Failed"; + } g_dbus_pending_property_error(data->id, dbus_err, mgmt_errstr(status)); @@ -7548,6 +7553,12 @@ int btd_cancel_authorization(guint id) int btd_adapter_restore_powered(struct btd_adapter *adapter) { + if (adapter->blocked) { + adapter->blocked = false; + g_dbus_emit_property_changed(dbus_conn, adapter->path, + ADAPTER_INTERFACE, "PowerState"); + } + if (btd_adapter_get_powered(adapter)) return 0; @@ -7556,6 +7567,16 @@ int btd_adapter_restore_powered(struct btd_adapter *adapter) return 0; } +int btd_adapter_set_blocked(struct btd_adapter *adapter) +{ + if (!adapter->blocked) { + adapter->blocked = true; + g_dbus_emit_property_changed(dbus_conn, adapter->path, + ADAPTER_INTERFACE, "PowerState"); + } + return 0; +} + void btd_adapter_register_pin_cb(struct btd_adapter *adapter, btd_adapter_pin_cb_t cb) { diff --git a/src/adapter.h b/src/adapter.h index b09044edd..332c0b239 100644 --- a/src/adapter.h +++ b/src/adapter.h @@ -143,6 +143,7 @@ guint btd_request_authorization_cable_configured(const bdaddr_t *src, const bdad int btd_cancel_authorization(guint id); int btd_adapter_restore_powered(struct btd_adapter *adapter); +int btd_adapter_set_blocked(struct btd_adapter *adapter); typedef ssize_t (*btd_adapter_pin_cb_t) (struct btd_adapter *adapter, struct btd_device *dev, char *out, bool *display, diff --git a/src/rfkill.c b/src/rfkill.c index 2099c5ac5..93f8e0e12 100644 --- a/src/rfkill.c +++ b/src/rfkill.c @@ -61,6 +61,7 @@ static gboolean rfkill_event(GIOChannel *chan, struct rfkill_event event = { 0 }; struct btd_adapter *adapter; char sysname[PATH_MAX]; + bool blocked = false; ssize_t len; int fd, id; @@ -84,7 +85,7 @@ static gboolean rfkill_event(GIOChannel *chan, event.soft, event.hard); if (event.soft || event.hard) - return TRUE; + blocked = true; if (event.op != RFKILL_OP_CHANGE) return TRUE; @@ -122,7 +123,10 @@ static gboolean rfkill_event(GIOChannel *chan, DBG("RFKILL unblock for hci%d", id); - btd_adapter_restore_powered(adapter); + if (blocked) + btd_adapter_set_blocked(adapter); + else + btd_adapter_restore_powered(adapter); return TRUE; } From patchwork Wed Aug 31 09:19:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bastien Nocera X-Patchwork-Id: 601519 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 94AB6C67868 for ; Wed, 31 Aug 2022 09:20:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231858AbiHaJUE (ORCPT ); Wed, 31 Aug 2022 05:20:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32832 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231853AbiHaJTh (ORCPT ); Wed, 31 Aug 2022 05:19:37 -0400 Received: from relay12.mail.gandi.net (relay12.mail.gandi.net [217.70.178.232]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8E201CE303 for ; Wed, 31 Aug 2022 02:19:15 -0700 (PDT) Received: (Authenticated sender: hadess@hadess.net) by mail.gandi.net (Postfix) with ESMTPSA id E1E5C200015 for ; Wed, 31 Aug 2022 09:19:12 +0000 (UTC) From: Bastien Nocera To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v4 2/6] adapter: Implement PowerState property Date: Wed, 31 Aug 2022 11:19:08 +0200 Message-Id: <20220831091912.47894-2-hadess@hadess.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20220831091912.47894-1-hadess@hadess.net> References: <20220831091912.47894-1-hadess@hadess.net> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org This property should allow any program to show whether an adapter is in the process of being turned on. As turning on an adapter isn't instantaneous, it's important that the UI reflects the transitional state of the adapter's power, and doesn't assume the device is already turned on but not yet working, or still off despite having requested for it to be turned on, in both cases making the UI feel unresponsive. This can also not be implemented in front-ends directly as, then, the status of an adapter wouldn't be reflected correctly in the Settings window if it's turned on in the system menu. Implementing it in the front-ends would also preclude from having feedback about the state of the adapter when bluetoothd is the one powering up the adapter after the rfkill was unblocked. See https://gitlab.gnome.org/GNOME/gnome-bluetooth/-/issues/121 and the original https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5773 --- src/adapter.c | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git a/src/adapter.c b/src/adapter.c index 641db67f9..e295ef247 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -239,6 +239,12 @@ struct btd_adapter_pin_cb_iter { /* When the iterator reaches the end, it is NULL and attempt is 0 */ }; +enum { + ADAPTER_POWER_STATE_TARGET_NONE = 0, + ADAPTER_POWER_STATE_TARGET_OFF, + ADAPTER_POWER_STATE_TARGET_ON +}; + struct btd_adapter { int ref_count; @@ -253,6 +259,7 @@ struct btd_adapter { bool blocked; /* whether rfkill is enabled */ uint32_t supported_settings; /* controller supported settings */ uint32_t pending_settings; /* pending controller settings */ + uint32_t power_state_target; /* the target power state */ uint32_t current_settings; /* current controller settings */ char *path; /* adapter object path */ @@ -580,6 +587,8 @@ static void settings_changed(struct btd_adapter *adapter, uint32_t settings) if (changed_mask & MGMT_SETTING_POWERED) { g_dbus_emit_property_changed(dbus_conn, adapter->path, ADAPTER_INTERFACE, "Powered"); + g_dbus_emit_property_changed(dbus_conn, adapter->path, + ADAPTER_INTERFACE, "PowerState"); if (adapter->current_settings & MGMT_SETTING_POWERED) { adapter_start(adapter); @@ -619,6 +628,16 @@ static void settings_changed(struct btd_adapter *adapter, uint32_t settings) } } +static void reset_power_state_target(struct btd_adapter *adapter, uint8_t value) +{ + if ((value && + adapter->power_state_target == ADAPTER_POWER_STATE_TARGET_ON) || + (!value && + adapter->power_state_target == ADAPTER_POWER_STATE_TARGET_OFF)) { + adapter->power_state_target = ADAPTER_POWER_STATE_TARGET_NONE; + } +} + static void new_settings_callback(uint16_t index, uint16_t length, const void *param, void *user_data) { @@ -636,6 +655,9 @@ static void new_settings_callback(uint16_t index, uint16_t length, if (settings == adapter->current_settings) return; + if ((adapter->current_settings ^ settings) & MGMT_SETTING_POWERED) + reset_power_state_target(adapter, settings & MGMT_SETTING_POWERED ? 0x01 : 0x00); + DBG("Settings: 0x%08x", settings); settings_changed(adapter, settings); @@ -644,6 +666,7 @@ static void new_settings_callback(uint16_t index, uint16_t length, struct set_mode_data { struct btd_adapter *adapter; uint32_t setting; + uint8_t value; }; static void set_mode_complete(uint8_t status, uint16_t length, @@ -658,6 +681,8 @@ static void set_mode_complete(uint8_t status, uint16_t length, if (status == MGMT_STATUS_RFKILLED) adapter->blocked = true; adapter->pending_settings &= ~data->setting; + if (data->setting & MGMT_SETTING_POWERED) + reset_power_state_target(adapter, data->value); return; } @@ -695,6 +720,11 @@ static bool set_mode(struct btd_adapter *adapter, uint16_t opcode, switch (opcode) { case MGMT_OP_SET_POWERED: setting = MGMT_SETTING_POWERED; + adapter->power_state_target = mode ? + ADAPTER_POWER_STATE_TARGET_ON : + ADAPTER_POWER_STATE_TARGET_OFF; + g_dbus_emit_property_changed(dbus_conn, adapter->path, + ADAPTER_INTERFACE, "PowerState"); break; case MGMT_OP_SET_CONNECTABLE: setting = MGMT_SETTING_CONNECTABLE; @@ -715,6 +745,7 @@ static bool set_mode(struct btd_adapter *adapter, uint16_t opcode, data = g_new0(struct set_mode_data, 1); data->adapter = adapter; data->setting = setting; + data->value = mode; if (mgmt_send(adapter->mgmt, opcode, adapter->dev_id, sizeof(cp), &cp, @@ -722,8 +753,13 @@ static bool set_mode(struct btd_adapter *adapter, uint16_t opcode, adapter->pending_settings |= setting; return true; } - g_free(data); + if (setting == MGMT_SETTING_POWERED) { + /* cancel the earlier setting */ + adapter->power_state_target = ADAPTER_POWER_STATE_TARGET_NONE; + g_dbus_emit_property_changed(dbus_conn, adapter->path, + ADAPTER_INTERFACE, "PowerState"); + } btd_error(adapter->dev_id, "Failed to set mode for index %u", adapter->dev_id); @@ -2901,6 +2937,7 @@ struct property_set_data { struct btd_adapter *adapter; uint32_t setting; GDBusPendingPropertySet id; + uint8_t value; }; static void property_set_mode_complete(uint8_t status, uint16_t length, @@ -2928,6 +2965,8 @@ static void property_set_mode_complete(uint8_t status, uint16_t length, mgmt_errstr(status)); adapter->pending_settings &= ~data->setting; + if (data->setting & MGMT_SETTING_POWERED) + reset_power_state_target(adapter, data->value); return; } @@ -3051,6 +3090,16 @@ static void property_set_mode(struct btd_adapter *adapter, uint32_t setting, data->adapter = adapter; data->setting = setting; data->id = id; + data->setting = setting; + data->value = mode; + + if (setting == MGMT_SETTING_POWERED) { + adapter->power_state_target = mode ? + ADAPTER_POWER_STATE_TARGET_ON : + ADAPTER_POWER_STATE_TARGET_OFF; + g_dbus_emit_property_changed(dbus_conn, adapter->path, + ADAPTER_INTERFACE, "PowerState"); + } if (mgmt_send(adapter->mgmt, opcode, adapter->dev_id, len, param, property_set_mode_complete, data, g_free) > 0) { @@ -3059,6 +3108,12 @@ static void property_set_mode(struct btd_adapter *adapter, uint32_t setting, } g_free(data); + if (setting == MGMT_SETTING_POWERED) { + /* cancel the earlier setting */ + adapter->power_state_target = ADAPTER_POWER_STATE_TARGET_NONE; + g_dbus_emit_property_changed(dbus_conn, adapter->path, + ADAPTER_INTERFACE, "PowerState"); + } failed: btd_error(adapter->dev_id, "Failed to set mode for index %u", @@ -3090,6 +3145,31 @@ static void property_set_powered(const GDBusPropertyTable *property, property_set_mode(adapter, MGMT_SETTING_POWERED, iter, id); } +static gboolean property_get_power_state(const GDBusPropertyTable *property, + DBusMessageIter *iter, void *user_data) +{ + struct btd_adapter *adapter = user_data; + const char *str; + + if (adapter->blocked) { + str = "off-blocked"; + } else if (adapter->power_state_target == ADAPTER_POWER_STATE_TARGET_NONE) { + if (adapter->current_settings & MGMT_SETTING_POWERED) + str = "on"; + else + str = "off"; + } else { + if (adapter->power_state_target == ADAPTER_POWER_STATE_TARGET_ON) + str = "off-enabling"; + else + str = "on-disabling"; + } + + dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &str); + + return TRUE; +} + static gboolean property_get_discoverable(const GDBusPropertyTable *property, DBusMessageIter *iter, void *user_data) { @@ -3728,6 +3808,8 @@ static const GDBusPropertyTable adapter_properties[] = { { "Alias", "s", property_get_alias, property_set_alias }, { "Class", "u", property_get_class }, { "Powered", "b", property_get_powered, property_set_powered }, + { "PowerState", "s", property_get_power_state, NULL, NULL, + G_DBUS_PROPERTY_FLAG_EXPERIMENTAL }, { "Discoverable", "b", property_get_discoverable, property_set_discoverable }, { "DiscoverableTimeout", "u", property_get_discoverable_timeout, @@ -5534,6 +5616,8 @@ static void adapter_start(struct btd_adapter *adapter) { g_dbus_emit_property_changed(dbus_conn, adapter->path, ADAPTER_INTERFACE, "Powered"); + g_dbus_emit_property_changed(dbus_conn, adapter->path, + ADAPTER_INTERFACE, "PowerState"); DBG("adapter %s has been enabled", adapter->path); @@ -7277,6 +7361,8 @@ static void adapter_stop(struct btd_adapter *adapter) g_dbus_emit_property_changed(dbus_conn, adapter->path, ADAPTER_INTERFACE, "Powered"); + g_dbus_emit_property_changed(dbus_conn, adapter->path, + ADAPTER_INTERFACE, "PowerState"); DBG("adapter %s has been disabled", adapter->path); } From patchwork Wed Aug 31 09:19:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bastien Nocera X-Patchwork-Id: 603130 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 1CCBDECAAD3 for ; Wed, 31 Aug 2022 09:20:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231934AbiHaJUA (ORCPT ); Wed, 31 Aug 2022 05:20:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33712 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231854AbiHaJTg (ORCPT ); Wed, 31 Aug 2022 05:19:36 -0400 Received: from relay12.mail.gandi.net (relay12.mail.gandi.net [IPv6:2001:4b98:dc4:8::232]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4FE93CD7B8 for ; Wed, 31 Aug 2022 02:19:16 -0700 (PDT) Received: (Authenticated sender: hadess@hadess.net) by mail.gandi.net (Postfix) with ESMTPSA id 36CBB200007 for ; Wed, 31 Aug 2022 09:19:13 +0000 (UTC) From: Bastien Nocera To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v4 3/6] client: Print the PowerState property Date: Wed, 31 Aug 2022 11:19:09 +0200 Message-Id: <20220831091912.47894-3-hadess@hadess.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20220831091912.47894-1-hadess@hadess.net> References: <20220831091912.47894-1-hadess@hadess.net> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org --- client/main.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client/main.c b/client/main.c index 19139d15b..ddd97c23c 100644 --- a/client/main.c +++ b/client/main.c @@ -981,6 +981,7 @@ static void cmd_show(int argc, char *argv[]) print_property(adapter->proxy, "Alias"); print_property(adapter->proxy, "Class"); print_property(adapter->proxy, "Powered"); + print_property(adapter->proxy, "PowerState"); print_property(adapter->proxy, "Discoverable"); print_property(adapter->proxy, "DiscoverableTimeout"); print_property(adapter->proxy, "Pairable"); From patchwork Wed Aug 31 09:19:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bastien Nocera X-Patchwork-Id: 603129 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 0669CC64991 for ; Wed, 31 Aug 2022 09:20:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231513AbiHaJUD (ORCPT ); Wed, 31 Aug 2022 05:20:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32810 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231440AbiHaJTg (ORCPT ); Wed, 31 Aug 2022 05:19:36 -0400 Received: from relay12.mail.gandi.net (relay12.mail.gandi.net [IPv6:2001:4b98:dc4:8::232]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 41778CB5F0 for ; Wed, 31 Aug 2022 02:19:16 -0700 (PDT) Received: (Authenticated sender: hadess@hadess.net) by mail.gandi.net (Postfix) with ESMTPSA id 78FEF200017 for ; Wed, 31 Aug 2022 09:19:13 +0000 (UTC) From: Bastien Nocera To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v4 4/6] adapter-api: Add PowerState property documentation Date: Wed, 31 Aug 2022 11:19:10 +0200 Message-Id: <20220831091912.47894-4-hadess@hadess.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20220831091912.47894-1-hadess@hadess.net> References: <20220831091912.47894-1-hadess@hadess.net> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org --- doc/adapter-api.txt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/doc/adapter-api.txt b/doc/adapter-api.txt index 48466ab75..28e53a105 100644 --- a/doc/adapter-api.txt +++ b/doc/adapter-api.txt @@ -269,6 +269,21 @@ Properties string Address [readonly] restart or unplugging of the adapter it will reset back to false. + string PowerState [readonly] + + The power state of an adapter. + + The power state will show whether the adapter is + turning off, or turning on, as well as being on + or off. + + Possible values: + "on" - powered on + "off" - powered off + "off-enabling" - transitioning from "off" to "on" + "on-disabling" - transitioning from "on" to "off" + "off-blocked" - blocked by rfkill + boolean Discoverable [readwrite] Switch an adapter to discoverable or non-discoverable From patchwork Wed Aug 31 09:19:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bastien Nocera X-Patchwork-Id: 603128 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 C3E85C6FA81 for ; Wed, 31 Aug 2022 09:20:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231853AbiHaJUF (ORCPT ); Wed, 31 Aug 2022 05:20:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34218 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231891AbiHaJTp (ORCPT ); Wed, 31 Aug 2022 05:19:45 -0400 Received: from relay12.mail.gandi.net (relay12.mail.gandi.net [IPv6:2001:4b98:dc4:8::232]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6A7C1CE308 for ; Wed, 31 Aug 2022 02:19:19 -0700 (PDT) Received: (Authenticated sender: hadess@hadess.net) by mail.gandi.net (Postfix) with ESMTPSA id B0EED200014 for ; Wed, 31 Aug 2022 09:19:13 +0000 (UTC) From: Bastien Nocera To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v4 5/6] adapter: Fix typo in function name Date: Wed, 31 Aug 2022 11:19:11 +0200 Message-Id: <20220831091912.47894-5-hadess@hadess.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20220831091912.47894-1-hadess@hadess.net> References: <20220831091912.47894-1-hadess@hadess.net> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org --- src/adapter.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index e295ef247..11a21ca5c 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -3455,7 +3455,7 @@ static gboolean property_get_experimental(const GDBusPropertyTable *property, return TRUE; } -static gboolean property_experimental_exits(const GDBusPropertyTable *property, +static gboolean property_experimental_exists(const GDBusPropertyTable *property, void *data) { struct btd_adapter *adapter = data; @@ -3823,7 +3823,7 @@ static const GDBusPropertyTable adapter_properties[] = { property_exists_modalias }, { "Roles", "as", property_get_roles }, { "ExperimentalFeatures", "as", property_get_experimental, NULL, - property_experimental_exits }, + property_experimental_exists }, { } }; From patchwork Wed Aug 31 09:19:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bastien Nocera X-Patchwork-Id: 601520 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 CD6F4C3DA6B for ; Wed, 31 Aug 2022 09:20:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230360AbiHaJUD (ORCPT ); Wed, 31 Aug 2022 05:20:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32806 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230078AbiHaJTg (ORCPT ); Wed, 31 Aug 2022 05:19:36 -0400 Received: from relay12.mail.gandi.net (relay12.mail.gandi.net [217.70.178.232]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 50376CD7BA for ; Wed, 31 Aug 2022 02:19:15 -0700 (PDT) Received: (Authenticated sender: hadess@hadess.net) by mail.gandi.net (Postfix) with ESMTPSA id E943C200018 for ; Wed, 31 Aug 2022 09:19:13 +0000 (UTC) From: Bastien Nocera To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v4 6/6] adapter: Remove experimental flag for PowerState Date: Wed, 31 Aug 2022 11:19:12 +0200 Message-Id: <20220831091912.47894-6-hadess@hadess.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20220831091912.47894-1-hadess@hadess.net> References: <20220831091912.47894-1-hadess@hadess.net> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Now that the feature has been tested, that the API is deemed adequate and the reliability sufficient. --- src/adapter.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index 11a21ca5c..2a4a0a977 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -3808,8 +3808,7 @@ static const GDBusPropertyTable adapter_properties[] = { { "Alias", "s", property_get_alias, property_set_alias }, { "Class", "u", property_get_class }, { "Powered", "b", property_get_powered, property_set_powered }, - { "PowerState", "s", property_get_power_state, NULL, NULL, - G_DBUS_PROPERTY_FLAG_EXPERIMENTAL }, + { "PowerState", "s", property_get_power_state }, { "Discoverable", "b", property_get_discoverable, property_set_discoverable }, { "DiscoverableTimeout", "u", property_get_discoverable_timeout,