public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Pacho Ramos" <pacho@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: net-wireless/bluez/, net-wireless/bluez/files/
Date: Sun, 11 Sep 2022 07:50:42 +0000 (UTC)	[thread overview]
Message-ID: <1662882630.6f545f9a5af1f3248db75d4853390eca6536d215.pacho@gentoo> (raw)

commit:     6f545f9a5af1f3248db75d4853390eca6536d215
Author:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
AuthorDate: Sun Sep 11 07:49:25 2022 +0000
Commit:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
CommitDate: Sun Sep 11 07:50:30 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6f545f9a

net-wireless/bluez: Move big patch to dev space

Signed-off-by: Pacho Ramos <pacho <AT> gentoo.org>

 net-wireless/bluez/Manifest                        |   1 +
 net-wireless/bluez/bluez-5.65.ebuild               |   5 +-
 .../bluez/files/power-state-adapter-property.patch | 723 ---------------------
 3 files changed, 4 insertions(+), 725 deletions(-)

diff --git a/net-wireless/bluez/Manifest b/net-wireless/bluez/Manifest
index 1bf6ed310204..710de1c38b68 100644
--- a/net-wireless/bluez/Manifest
+++ b/net-wireless/bluez/Manifest
@@ -1,2 +1,3 @@
 DIST bluez-5.64.tar.xz 2175148 BLAKE2B 828c620330d1993d5c5c2a865f2d27a29425e3583aac01a1a782290a805ee0fd6456b6832c804ad323dd8714fa9329487b2616ed08f1f491ea29403ee05dba2d SHA512 f11f9974b29c5c6fce3890d7e42425c1cb02e42c1b8f49c5cc4b249234e67b64317d0e5e82721e2fbf1b53269c8569a9c869d59ce42b5e927f6622f0753e53cd
 DIST bluez-5.65.tar.xz 2208100 BLAKE2B 9d2937e2e14d8d8945183c6436921d9d16a6d3bcb5dbe3e2493554fbc4972bb4c006aabc793c9fb8eae47a7e9f29ae9fdf47551dfc0a238e86f5a76ce7436ae2 SHA512 c20c09a1a75053c77d73b3ce15ac7fd321eb6df5ca1646d57c6848b87c0c9957908bc17dd928da4ef2aacfc8667877cbc7511c1ba43db839bfa9bf1fb8269907
+DIST power-state-adapter-property.patch 22488 BLAKE2B a46173c0ebe4f4822c67c2f8f2f3e67dab261753f64204f1a61665c3bba1d7a10e0f8511b38ce273d986490ffd262a737bee82694909683df7386b2015301607 SHA512 b039a578454681f291dc3b04079c8d0151b13a84b4b013e290aa3c28aba1538cef2d9e9aadfe88a0dbfb8e4cea1c251cb5043f4175fb32d53526f7b82de0451a

diff --git a/net-wireless/bluez/bluez-5.65.ebuild b/net-wireless/bluez/bluez-5.65.ebuild
index 74ffae23b148..844d8a05a66a 100644
--- a/net-wireless/bluez/bluez-5.65.ebuild
+++ b/net-wireless/bluez/bluez-5.65.ebuild
@@ -8,7 +8,8 @@ inherit autotools linux-info python-single-r1 readme.gentoo-r1 systemd udev mult
 
 DESCRIPTION="Bluetooth Tools and System Daemons for Linux"
 HOMEPAGE="http://www.bluez.org"
-SRC_URI="https://www.kernel.org/pub/linux/bluetooth/${P}.tar.xz"
+SRC_URI="https://www.kernel.org/pub/linux/bluetooth/${P}.tar.xz
+	https://dev.gentoo.org/~pacho/${PN}/power-state-adapter-property.patch"
 
 LICENSE="GPL-2+ LGPL-2.1+"
 SLOT="0/3"
@@ -73,7 +74,7 @@ PATCHES=(
 
 	# Fixed in next release
 	"${FILESDIR}"/0001-adapter-Reset-pending-settings-when-receiving-MGMT-e.patch
-	"${FILESDIR}"/power-state-adapter-property.patch
+	"${DISTDIR}"/power-state-adapter-property.patch
 )
 
 pkg_setup() {

diff --git a/net-wireless/bluez/files/power-state-adapter-property.patch b/net-wireless/bluez/files/power-state-adapter-property.patch
deleted file mode 100644
index 1d6f2cd0ae7f..000000000000
--- a/net-wireless/bluez/files/power-state-adapter-property.patch
+++ /dev/null
@@ -1,723 +0,0 @@
-From a282944af40893fc79f0ae3aa1bf52031aa07ffe Mon Sep 17 00:00:00 2001
-From: Bastien Nocera <hadess@hadess.net>
-Date: Wed, 31 Aug 2022 10:56:06 +0200
-Subject: [PATCH 1/6] adapter: Keep track of whether the adapter is rfkill'ed
-
-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/btd.h     |  1 +
- src/rfkill.c  | 89 ++++++++++++++++++++++++++++++++++++++-------------
- 4 files changed, 91 insertions(+), 25 deletions(-)
-
-diff --git a/src/adapter.c b/src/adapter.c
-index 51b099dae..7c11a688d 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;
- 	}
-@@ -2947,10 +2950,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));
-@@ -6681,6 +6686,7 @@ static void load_config(struct btd_adapter *adapter)
- static struct btd_adapter *btd_adapter_new(uint16_t index)
- {
- 	struct btd_adapter *adapter;
-+	int blocked;
- 
- 	adapter = g_try_new0(struct btd_adapter, 1);
- 	if (!adapter)
-@@ -6689,6 +6695,9 @@ static struct btd_adapter *btd_adapter_new(uint16_t index)
- 	adapter->dev_id = index;
- 	adapter->mgmt = mgmt_ref(mgmt_primary);
- 	adapter->pincode_requested = false;
-+	blocked = rfkill_get_blocked(index);
-+	if (blocked > 0)
-+		adapter->blocked = true;
- 
- 	/*
- 	 * Setup default configuration values. These are either adapter
-@@ -6714,6 +6723,8 @@ static struct btd_adapter *btd_adapter_new(uint16_t index)
- 	DBG("Modalias: %s", adapter->modalias);
- 	DBG("Discoverable timeout: %u seconds", adapter->discoverable_timeout);
- 	DBG("Pairable timeout: %u seconds", adapter->pairable_timeout);
-+	if (blocked > 0)
-+		DBG("Blocked: yes");
- 
- 	adapter->auths = g_queue_new();
- 	adapter->exps = queue_new();
-@@ -7581,6 +7592,9 @@ int btd_cancel_authorization(guint id)
- 
- int btd_adapter_restore_powered(struct btd_adapter *adapter)
- {
-+	if (adapter->blocked)
-+		adapter->blocked = false;
-+
- 	if (btd_adapter_get_powered(adapter))
- 		return 0;
- 
-@@ -7589,6 +7603,13 @@ 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;
-+	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 f38f473b7..78eb069ae 100644
---- a/src/adapter.h
-+++ b/src/adapter.h
-@@ -144,6 +144,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/btd.h b/src/btd.h
-index c02b2691e..63be6d8d4 100644
---- a/src/btd.h
-+++ b/src/btd.h
-@@ -144,6 +144,7 @@ void plugin_cleanup(void);
- 
- void rfkill_init(void);
- void rfkill_exit(void);
-+int rfkill_get_blocked(uint16_t index);
- 
- GKeyFile *btd_get_main_conf(void);
- bool btd_kernel_experimental_enabled(const char *uuid);
-diff --git a/src/rfkill.c b/src/rfkill.c
-index 2099c5ac5..a0a50d9e4 100644
---- a/src/rfkill.c
-+++ b/src/rfkill.c
-@@ -55,12 +55,71 @@ struct rfkill_event {
- };
- #define RFKILL_EVENT_SIZE_V1    8
- 
-+static int get_adapter_id_for_rfkill(int rfkill_id)
-+{
-+	char sysname[PATH_MAX];
-+	int namefd;
-+
-+	snprintf(sysname, sizeof(sysname) - 1,
-+			"/sys/class/rfkill/rfkill%u/name", rfkill_id);
-+
-+	namefd = open(sysname, O_RDONLY);
-+	if (namefd < 0)
-+		return -1;
-+
-+	memset(sysname, 0, sizeof(sysname));
-+
-+	if (read(namefd, sysname, sizeof(sysname) - 1) < 4) {
-+		close(namefd);
-+		return -1;
-+	}
-+
-+	close(namefd);
-+
-+	if (g_str_has_prefix(sysname, "hci") == FALSE)
-+		return -1;
-+
-+	return atoi(sysname + 3);
-+}
-+
-+int rfkill_get_blocked(uint16_t index)
-+{
-+	int fd;
-+	int blocked = -1;
-+
-+	fd = open("/dev/rfkill", O_RDWR);
-+	if (fd < 0) {
-+		DBG("Failed to open RFKILL control device");
-+		return -1;
-+	}
-+
-+	while (1) {
-+		struct rfkill_event event = { 0 };
-+		int id;
-+		ssize_t len;
-+
-+		len = read(fd, &event, sizeof(event));
-+		if (len < RFKILL_EVENT_SIZE_V1)
-+			break;
-+
-+		id = get_adapter_id_for_rfkill(event.idx);
-+
-+		if (index == id) {
-+			blocked = event.soft || event.hard;
-+			break;
-+		}
-+	}
-+	close(fd);
-+
-+	return blocked;
-+}
-+
- static gboolean rfkill_event(GIOChannel *chan,
- 				GIOCondition cond, gpointer data)
- {
- 	struct rfkill_event event = { 0 };
- 	struct btd_adapter *adapter;
--	char sysname[PATH_MAX];
-+	bool blocked = false;
- 	ssize_t len;
- 	int fd, id;
- 
-@@ -84,7 +143,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;
-@@ -93,26 +152,7 @@ static gboolean rfkill_event(GIOChannel *chan,
- 					event.type != RFKILL_TYPE_ALL)
- 		return TRUE;
- 
--	snprintf(sysname, sizeof(sysname) - 1,
--			"/sys/class/rfkill/rfkill%u/name", event.idx);
--
--	fd = open(sysname, O_RDONLY);
--	if (fd < 0)
--		return TRUE;
--
--	memset(sysname, 0, sizeof(sysname));
--
--	if (read(fd, sysname, sizeof(sysname) - 1) < 4) {
--		close(fd);
--		return TRUE;
--	}
--
--	close(fd);
--
--	if (g_str_has_prefix(sysname, "hci") == FALSE)
--		return TRUE;
--
--	id = atoi(sysname + 3);
-+	id = get_adapter_id_for_rfkill(event.idx);
- 	if (id < 0)
- 		return TRUE;
- 
-@@ -122,7 +162,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;
- }
--- 
-2.37.2
-
-
-From 7711e4081bf6096f2210f5b5d715f005d654abf1 Mon Sep 17 00:00:00 2001
-From: Bastien Nocera <hadess@hadess.net>
-Date: Wed, 31 Aug 2022 13:23:23 +0200
-Subject: [PATCH 2/6] adapter: Implement PowerState property
-
-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 | 139 ++++++++++++++++++++++++++++++++++++++++++++++----
- 1 file changed, 128 insertions(+), 11 deletions(-)
-
-diff --git a/src/adapter.c b/src/adapter.c
-index 7c11a688d..59afbcb6d 100644
---- a/src/adapter.c
-+++ b/src/adapter.c
-@@ -239,6 +239,14 @@ struct btd_adapter_pin_cb_iter {
- 	/* When the iterator reaches the end, it is NULL and attempt is 0 */
- };
- 
-+enum {
-+	ADAPTER_POWER_STATE_OFF,
-+	ADAPTER_POWER_STATE_ON,
-+	ADAPTER_POWER_STATE_ON_DISABLING,
-+	ADAPTER_POWER_STATE_OFF_ENABLING,
-+	ADAPTER_POWER_STATE_OFF_BLOCKED,
-+};
-+
- struct btd_adapter {
- 	int ref_count;
- 
-@@ -250,9 +258,9 @@ 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 power_state;		/* the power state */
- 	uint32_t current_settings;	/* current controller settings */
- 
- 	char *path;			/* adapter object path */
-@@ -326,6 +334,24 @@ struct btd_adapter {
- 	struct queue *exps;
- };
- 
-+static char *adapter_power_state_str(uint32_t power_state)
-+{
-+	switch (power_state) {
-+	case ADAPTER_POWER_STATE_OFF:
-+		return "off";
-+	case ADAPTER_POWER_STATE_ON:
-+		return "on";
-+	case ADAPTER_POWER_STATE_ON_DISABLING:
-+		return "on-disabling";
-+	case ADAPTER_POWER_STATE_OFF_ENABLING:
-+		return "off-enabling";
-+	case ADAPTER_POWER_STATE_OFF_BLOCKED:
-+		return "off-blocked";
-+	}
-+	DBG("Invalid power state %d", power_state);
-+	return "";
-+}
-+
- typedef enum {
- 	ADAPTER_AUTHORIZE_DISCONNECTED = 0,
- 	ADAPTER_AUTHORIZE_CHECK_CONNECTED
-@@ -619,6 +645,29 @@ static void settings_changed(struct btd_adapter *adapter, uint32_t settings)
- 	}
- }
- 
-+static void adapter_set_power_state(struct btd_adapter *adapter, uint32_t value)
-+{
-+	if (adapter->power_state == value)
-+		return;
-+
-+	DBG("%s", adapter_power_state_str(value));
-+	adapter->power_state = value;
-+	g_dbus_emit_property_changed(dbus_conn, adapter->path,
-+					ADAPTER_INTERFACE, "PowerState");
-+}
-+
-+static void reset_power_state_target(struct btd_adapter *adapter,
-+					uint32_t value)
-+{
-+	if (value &&
-+	    adapter->power_state == ADAPTER_POWER_STATE_OFF_ENABLING) {
-+		adapter_set_power_state(adapter, ADAPTER_POWER_STATE_ON);
-+	} else if (!value &&
-+		   adapter->power_state == ADAPTER_POWER_STATE_ON_DISABLING) {
-+		adapter_set_power_state(adapter, ADAPTER_POWER_STATE_OFF);
-+	}
-+}
-+
- static void new_settings_callback(uint16_t index, uint16_t length,
- 					const void *param, void *user_data)
- {
-@@ -636,6 +685,12 @@ 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 +699,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,
-@@ -656,8 +712,12 @@ static void 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)
--			adapter->blocked = true;
-+			adapter_set_power_state(adapter,
-+					ADAPTER_POWER_STATE_OFF_BLOCKED);
- 		adapter->pending_settings &= ~data->setting;
-+		if (status != MGMT_STATUS_RFKILLED &&
-+		    data->setting & MGMT_SETTING_POWERED)
-+			reset_power_state_target(adapter, data->value);
- 		return;
- 	}
- 
-@@ -695,6 +755,11 @@ static bool set_mode(struct btd_adapter *adapter, uint16_t opcode,
- 	switch (opcode) {
- 	case MGMT_OP_SET_POWERED:
- 		setting = MGMT_SETTING_POWERED;
-+		if (adapter->power_state != ADAPTER_POWER_STATE_OFF_BLOCKED) {
-+			adapter_set_power_state(adapter, mode ?
-+					ADAPTER_POWER_STATE_OFF_ENABLING :
-+					ADAPTER_POWER_STATE_ON_DISABLING);
-+		}
- 		break;
- 	case MGMT_OP_SET_CONNECTABLE:
- 		setting = MGMT_SETTING_CONNECTABLE;
-@@ -715,6 +780,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 +788,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_set_power_state(adapter, mode ?
-+					ADAPTER_POWER_STATE_OFF :
-+					ADAPTER_POWER_STATE_ON);
-+	}
- 	btd_error(adapter->dev_id, "Failed to set mode for index %u",
- 							adapter->dev_id);
- 
-@@ -2934,6 +3005,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,
-@@ -2952,7 +3024,8 @@ static void property_set_mode_complete(uint8_t status, uint16_t length,
- 
- 		if (status == MGMT_STATUS_RFKILLED) {
- 			dbus_err = ERROR_INTERFACE ".Blocked";
--			adapter->blocked = true;
-+			adapter_set_power_state(adapter,
-+					ADAPTER_POWER_STATE_OFF_BLOCKED);
- 		} else {
- 			dbus_err = ERROR_INTERFACE ".Failed";
- 		}
-@@ -2961,6 +3034,9 @@ static void property_set_mode_complete(uint8_t status, uint16_t length,
- 							mgmt_errstr(status));
- 
- 		adapter->pending_settings &= ~data->setting;
-+		if (status != MGMT_STATUS_RFKILLED &&
-+		    data->setting & MGMT_SETTING_POWERED)
-+			reset_power_state_target(adapter, data->value);
- 		return;
- 	}
- 
-@@ -3084,6 +3160,15 @@ 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 != ADAPTER_POWER_STATE_OFF_BLOCKED) {
-+		adapter_set_power_state(adapter, mode ?
-+					ADAPTER_POWER_STATE_OFF_ENABLING :
-+					ADAPTER_POWER_STATE_ON_DISABLING);
-+	}
- 
- 	if (mgmt_send(adapter->mgmt, opcode, adapter->dev_id, len, param,
- 			property_set_mode_complete, data, g_free) > 0) {
-@@ -3092,6 +3177,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_set_power_state(adapter, mode ?
-+					ADAPTER_POWER_STATE_OFF :
-+					ADAPTER_POWER_STATE_ON);
-+	}
- 
- failed:
- 	btd_error(adapter->dev_id, "Failed to set mode for index %u",
-@@ -3123,6 +3214,18 @@ 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;
-+
-+	str = adapter_power_state_str(adapter->power_state);
-+	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)
- {
-@@ -3761,6 +3864,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,
-@@ -5567,6 +5672,7 @@ static void adapter_start(struct btd_adapter *adapter)
- {
- 	g_dbus_emit_property_changed(dbus_conn, adapter->path,
- 						ADAPTER_INTERFACE, "Powered");
-+	adapter_set_power_state(adapter, ADAPTER_POWER_STATE_ON);
- 
- 	DBG("adapter %s has been enabled", adapter->path);
- 
-@@ -6697,7 +6803,7 @@ static struct btd_adapter *btd_adapter_new(uint16_t index)
- 	adapter->pincode_requested = false;
- 	blocked = rfkill_get_blocked(index);
- 	if (blocked > 0)
--		adapter->blocked = true;
-+		adapter->power_state = ADAPTER_POWER_STATE_OFF_BLOCKED;
- 
- 	/*
- 	 * Setup default configuration values. These are either adapter
-@@ -6724,7 +6830,8 @@ static struct btd_adapter *btd_adapter_new(uint16_t index)
- 	DBG("Discoverable timeout: %u seconds", adapter->discoverable_timeout);
- 	DBG("Pairable timeout: %u seconds", adapter->pairable_timeout);
- 	if (blocked > 0)
--		DBG("Blocked: yes");
-+		DBG("Power state: %s",
-+			adapter_power_state_str(adapter->power_state));
- 
- 	adapter->auths = g_queue_new();
- 	adapter->exps = queue_new();
-@@ -7316,6 +7423,9 @@ 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);
- }
-@@ -7592,10 +7702,18 @@ int btd_cancel_authorization(guint id)
- 
- int btd_adapter_restore_powered(struct btd_adapter *adapter)
- {
--	if (adapter->blocked)
--		adapter->blocked = false;
-+	bool powered;
- 
--	if (btd_adapter_get_powered(adapter))
-+	powered = btd_adapter_get_powered(adapter);
-+	if (adapter->power_state == ADAPTER_POWER_STATE_OFF_BLOCKED &&
-+	    rfkill_get_blocked(adapter->dev_id) == 0) {
-+		adapter_set_power_state(adapter,
-+					powered ?
-+					ADAPTER_POWER_STATE_ON :
-+					ADAPTER_POWER_STATE_OFF);
-+	}
-+
-+	if (powered)
- 		return 0;
- 
- 	set_mode(adapter, MGMT_OP_SET_POWERED, 0x01);
-@@ -7605,8 +7723,7 @@ int btd_adapter_restore_powered(struct btd_adapter *adapter)
- 
- int btd_adapter_set_blocked(struct btd_adapter *adapter)
- {
--	if (!adapter->blocked)
--		adapter->blocked = true;
-+	adapter_set_power_state(adapter, ADAPTER_POWER_STATE_OFF_BLOCKED);
- 	return 0;
- }
- 
--- 
-2.37.2
-
-
-From f86d0c8092ca8f9fee7c140f5f4df3938ea1ec29 Mon Sep 17 00:00:00 2001
-From: Bastien Nocera <hadess@hadess.net>
-Date: Wed, 31 Aug 2022 11:01:22 +0200
-Subject: [PATCH 3/6] client: Print the PowerState property
-
----
- client/main.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/client/main.c b/client/main.c
-index 6773d5262..2816e880f 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");
--- 
-2.37.2
-
-
-From 4b2587ecdb437f6c24d1c42576eb9d4ecb01a7f3 Mon Sep 17 00:00:00 2001
-From: Bastien Nocera <hadess@hadess.net>
-Date: Wed, 31 Aug 2022 11:01:44 +0200
-Subject: [PATCH 4/6] adapter-api: Add PowerState property documentation
-
----
- doc/adapter-api.txt | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
-diff --git a/doc/adapter-api.txt b/doc/adapter-api.txt
-index 48466ab75..9b2721c1b 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, experimental]
-+
-+			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
--- 
-2.37.2
-
-
-From 0e723ee0f8e9024b6319267637253e5d7f982ef1 Mon Sep 17 00:00:00 2001
-From: Bastien Nocera <hadess@hadess.net>
-Date: Wed, 31 Aug 2022 11:05:56 +0200
-Subject: [PATCH 5/6] adapter: Fix typo in function name
-
----
- src/adapter.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/adapter.c b/src/adapter.c
-index 59afbcb6d..8fb2acdc8 100644
---- a/src/adapter.c
-+++ b/src/adapter.c
-@@ -3511,7 +3511,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;
-@@ -3879,7 +3879,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 },
- 	{ }
- };
- 
--- 
-2.37.2
-
-
-From 70309219acd4c81e3a9e2b3652d2d93eb08b0aee Mon Sep 17 00:00:00 2001
-From: Bastien Nocera <hadess@hadess.net>
-Date: Wed, 31 Aug 2022 11:16:34 +0200
-Subject: [PATCH 6/6] adapter: Remove experimental flag for PowerState
-
-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 8fb2acdc8..841096d7f 100644
---- a/src/adapter.c
-+++ b/src/adapter.c
-@@ -3864,8 +3864,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,
--- 
-2.37.2
-


             reply	other threads:[~2022-09-11  7:50 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-11  7:50 Pacho Ramos [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-03-05 11:40 [gentoo-commits] repo/gentoo:master commit in: net-wireless/bluez/, net-wireless/bluez/files/ Sam James
2024-11-24 22:30 Sam James
2024-11-08 15:51 Pacho Ramos
2024-09-24  6:12 Sam James
2024-09-15 11:41 Pacho Ramos
2024-06-16 11:40 Pacho Ramos
2023-08-23 14:49 Pacho Ramos
2023-07-08 10:00 Pacho Ramos
2023-01-31  5:56 Sam James
2022-09-11  7:50 Pacho Ramos
2022-04-18 16:27 Pacho Ramos
2022-01-09 19:52 Pacho Ramos
2021-12-02 13:31 Pacho Ramos
2021-07-08  8:09 Pacho Ramos
2021-06-05 10:53 Pacho Ramos
2020-03-11 15:01 Pacho Ramos
2019-11-10 12:11 Pacho Ramos
2019-11-10 12:11 Pacho Ramos
2019-10-20  8:55 Pacho Ramos
2019-09-29 13:47 Pacho Ramos
2019-04-29 12:22 Pacho Ramos
2016-04-09 10:49 Pacho Ramos

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1662882630.6f545f9a5af1f3248db75d4853390eca6536d215.pacho@gentoo \
    --to=pacho@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox