From: Kevin Dewald <kevin@simpleble.org>
To: linux-bluetooth@vger.kernel.org
Cc: Luiz Augusto von Dentz <luiz.dentz@gmail.com>,
Kevin Dewald <kevin@simpleble.org>
Subject: [PATCH BlueZ v3 4/4] test: functional: add bearer ReadRSSI test
Date: Fri, 13 Nov 2026 09:23:39 -0800 [thread overview]
Message-ID: <20261113172339.54683-5-kevin@simpleble.org> (raw)
In-Reply-To: <20261113172339.54683-1-kevin@simpleble.org>
Read the RSSI of the LE connection from a host with testing interfaces
enabled, check ReadRSSI fails with NotConnected once disconnected, and
check a host without testing interfaces does not expose it.
Assisted-by: Claude:claude-opus-5.5
---
test/functional/test_bearer.py | 58 ++++++++++++++++++++++++++++++++++
1 file changed, 58 insertions(+)
diff --git a/test/functional/test_bearer.py b/test/functional/test_bearer.py
index 59ce8ef7d..3f1033b35 100644
--- a/test/functional/test_bearer.py
+++ b/test/functional/test_bearer.py
@@ -54,6 +54,9 @@ UPDATE_CONF = LE_CONF + "[LE]\nMinConnectionInterval = 80\nMaxConnectionInterval
CONN_PARAMS = ("Interval", "Latency", "SupervisionTimeout", "Subrate")
+# ReadRSSI is a testing method
+TESTING_CONF = LE_CONF + "Testing = true\n"
+
class Bearers(HostPlugin, EventPluginMixin):
"""
@@ -206,6 +209,22 @@ def conn_params(host, remote):
return dict(zip(CONN_PARAMS, map(int, values)))
+def read_rssi(host, remote):
+ """
+ The RSSI ReadRSSI returns for the LE bearer host has for remote, or
+ None if the kernel has not finished setting up the connection yet.
+ """
+ host.bearers.call(remote.bdaddr, LE_INTERFACE, "ReadRSSI")
+ event = host.bearers.expect(
+ (f"{LE_INTERFACE}.ReadRSSI:reply", f"{LE_INTERFACE}.ReadRSSI:error")
+ )
+ if event.kind.endswith(":error"):
+ assert event.error.get_dbus_name() == "org.bluez.Error.NotReady"
+ return None
+
+ return int(event.values[0])
+
+
def connect_le(host0, host1):
discover(host0, host1)
@@ -283,6 +302,45 @@ def test_bearer_le_conn_params(hosts):
assert host.bearers.get(remote.bdaddr, LE_INTERFACE, name) is None
+@host_config(
+ [
+ Bluetoothd(conf=TESTING_CONF, args=ARGS),
+ Agent(capability="NoInputNoOutput"),
+ Bearers(),
+ ],
+ [
+ Bluetoothd(conf=LE_CONF, args=ARGS),
+ LeAdvertiser(),
+ Agent(capability="NoInputNoOutput"),
+ Bearers(),
+ ],
+)
+def test_bearer_le_read_rssi(hosts):
+ host0, host1 = hosts
+
+ connect_le(host0, host1)
+
+ for host, remote in peers(host0, host1):
+ wait_until(
+ lambda: host.bearers.get(remote.bdaddr, LE_INTERFACE, "Connected") is True
+ )
+
+ wait_until(lambda: read_rssi(host0, host1) is not None)
+
+ # Controllers report the RSSI of a connection from -127 to 20 dBm
+ assert -127 <= read_rssi(host0, host1) <= 20
+
+ host1.bearers.call(host0.bdaddr, LE_INTERFACE, "ReadRSSI")
+ error = host1.bearers.expect(f"{LE_INTERFACE}.ReadRSSI:error").error
+ assert error.get_dbus_name() == "org.freedesktop.DBus.Error.UnknownMethod"
+
+ disconnect(host0, host1, LE_INTERFACE)
+
+ host0.bearers.call(host1.bdaddr, LE_INTERFACE, "ReadRSSI")
+ error = host0.bearers.expect(f"{LE_INTERFACE}.ReadRSSI:error").error
+ assert error.get_dbus_name() == "org.bluez.Error.NotConnected"
+
+
@host_config(
[
Bluetoothd(conf=LE_CONF, args=ARGS),
--
2.54.0 (Apple Git-157)
prev parent reply other threads:[~2026-11-13 17:23 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-13 17:23 [PATCH BlueZ v3 0/4] Bearer.LE1: Add ReadRSSI Kevin Dewald
2026-11-13 17:23 ` [PATCH BlueZ v3 1/4] org.bluez.Bearer: Add ReadRSSI method Kevin Dewald
2026-11-13 17:23 ` [PATCH BlueZ v3 2/4] adapter: Add btd_adapter_get_conn_info Kevin Dewald
2026-11-13 17:23 ` [PATCH BlueZ v3 3/4] bearer: Add ReadRSSI method Kevin Dewald
2026-11-13 17:23 ` Kevin Dewald [this message]
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=20261113172339.54683-5-kevin@simpleble.org \
--to=kevin@simpleble.org \
--cc=linux-bluetooth@vger.kernel.org \
--cc=luiz.dentz@gmail.com \
/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