From: Kevin Dewald <kevin@simpleble.org>
To: linux-bluetooth@vger.kernel.org
Cc: Kevin Dewald <kevin@simpleble.org>
Subject: [PATCH BlueZ 2/3] device: Add Connectable property
Date: Mon, 28 Sep 2026 15:38:14 -0700 [thread overview]
Message-ID: <20260928223815.11936-3-kevin@simpleble.org> (raw)
In-Reply-To: <20260928223815.11936-1-kevin@simpleble.org>
This implements Connectable property using device_is_connectable, which
reports whether the last advertising report on the device's bearer was
connectable, and emits PropertiesChanged from device_update_last_seen
when the value changes or first becomes known.
---
src/device.c | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/src/device.c b/src/device.c
index c5d8e4c..ae91967 100644
--- a/src/device.c
+++ b/src/device.c
@@ -330,6 +330,14 @@ static struct bearer_state *get_state(struct btd_device *dev,
return &dev->le_state;
}
+static bool device_connectable_known(struct btd_device *dev)
+{
+ if (dev->bredr)
+ return true;
+
+ return get_state(dev, dev->bdaddr_type)->last_seen != 0;
+}
+
bool btd_device_is_initiator(struct btd_device *dev)
{
if (dev->le_state.connected)
@@ -1292,6 +1300,25 @@ static gboolean dev_property_exists_tx_power(const GDBusPropertyTable *property,
return TRUE;
}
+static gboolean
+dev_property_get_connectable(const GDBusPropertyTable *property,
+ DBusMessageIter *iter, void *data)
+{
+ struct btd_device *dev = data;
+ dbus_bool_t val = device_is_connectable(dev);
+
+ dbus_message_iter_append_basic(iter, DBUS_TYPE_BOOLEAN, &val);
+
+ return TRUE;
+}
+
+static gboolean
+dev_property_exists_connectable(const GDBusPropertyTable *property,
+ void *data)
+{
+ return device_connectable_known(data);
+}
+
static gboolean
dev_property_get_svc_resolved(const GDBusPropertyTable *property,
DBusMessageIter *iter, void *data)
@@ -3767,6 +3794,8 @@ static const GDBusPropertyTable device_properties[] = {
NULL, dev_property_service_data_exist },
{ "TxPower", "n", dev_property_get_tx_power, NULL,
dev_property_exists_tx_power },
+ { "Connectable", "b", dev_property_get_connectable, NULL,
+ dev_property_exists_connectable },
{ "ServicesResolved", "b", dev_property_get_svc_resolved, NULL, NULL },
{ "AdvertisingFlags", "ay", dev_property_get_flags, NULL,
dev_property_flags_exist },
@@ -5352,12 +5381,19 @@ void device_update_last_seen(struct btd_device *device, uint8_t bdaddr_type,
bool connectable)
{
struct bearer_state *state;
+ bool known = device_connectable_known(device);
+ bool was_connectable = device_is_connectable(device);
state = get_state(device, bdaddr_type);
state->last_seen = time(NULL);
state->connectable = connectable;
+ if (known != device_connectable_known(device) ||
+ was_connectable != device_is_connectable(device))
+ g_dbus_emit_property_changed(dbus_conn, device->path,
+ DEVICE_INTERFACE, "Connectable");
+
if (!device_is_temporary(device))
return;
--
2.54.0 (Apple Git-157)
next prev parent reply other threads:[~2026-09-28 22:38 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-28 22:38 [PATCH BlueZ 0/3] Add Connectable property to org.bluez.Device Kevin Dewald
2026-09-28 22:38 ` [PATCH BlueZ 1/3] org.bluez.Device: Add Connectable property Kevin Dewald
2026-09-29 2:19 ` Add Connectable property to org.bluez.Device bluez.test.bot
2026-09-28 22:38 ` Kevin Dewald [this message]
2026-09-28 22:38 ` [PATCH BlueZ 3/3] client: Print Connectable in info Kevin Dewald
2026-09-30 13:20 ` [PATCH BlueZ 0/3] Add Connectable property to org.bluez.Device Luiz Augusto von Dentz
2026-09-30 20:30 ` Kevin Dewald
2026-10-01 15:39 ` Luiz Augusto von Dentz
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=20260928223815.11936-3-kevin@simpleble.org \
--to=kevin@simpleble.org \
--cc=linux-bluetooth@vger.kernel.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 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.