2022-04-18 07:04:25

by Zhengping Jiang

[permalink] [raw]
Subject: [Bluez PATCH v1 1/2] device: Add "Bonded" flag to dbus property

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 <[email protected]>
Reviewed-by: Yun-Hao Chung <[email protected]>

Signed-off-by: Zhengping Jiang <[email protected]>
---

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 | 38 +++++++++++++++++++++++++++++++++-----
2 files changed, 37 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..1a7afa8fc5c0 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 },
@@ -6117,14 +6134,25 @@ void device_set_bonded(struct btd_device *device, uint8_t bdaddr_type)
if (!device)
return;

- DBG("");
+ struct bearer_state *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)
--
2.36.0.rc0.470.gd361397f0d-goog


2022-04-18 08:37:14

by bluez.test.bot

[permalink] [raw]
Subject: RE: Adding bonded flag to D-Bus property

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=632916

---Test result---

Test Summary:
CheckPatch PASS 3.15 seconds
GitLint PASS 2.12 seconds
Prep - Setup ELL PASS 50.93 seconds
Build - Prep PASS 0.78 seconds
Build - Configure PASS 10.43 seconds
Build - Make FAIL 1394.11 seconds
Make Check FAIL 5.82 seconds
Make Check w/Valgrind FAIL 350.53 seconds
Make Distcheck PASS 271.29 seconds
Build w/ext ELL - Configure PASS 10.32 seconds
Build w/ext ELL - Make FAIL 1367.40 seconds
Incremental Build with patchesFAIL 1420.73 seconds

Details
##############################
Test: Build - Make - FAIL
Desc: Build the BlueZ source tree
Output:
tools/mgmt-tester.c: In function ‘main’:
tools/mgmt-tester.c:12364:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
12364 | int main(int argc, char *argv[])
| ^~~~
unit/test-avdtp.c: In function ‘main’:
unit/test-avdtp.c:766:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
766 | int main(int argc, char *argv[])
| ^~~~
unit/test-avrcp.c: In function ‘main’:
unit/test-avrcp.c:989:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
989 | int main(int argc, char *argv[])
| ^~~~
src/device.c: In function ‘device_set_bonded’:
src/device.c:6137:2: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
6137 | struct bearer_state *state = get_state(device, bdaddr_type);
| ^~~~~~
cc1: all warnings being treated as errors
make[1]: *** [Makefile:10248: src/bluetoothd-device.o] Error 1
make: *** [Makefile:4310: all] Error 2


##############################
Test: Make Check - FAIL
Desc: Run 'make check'
Output:
src/device.c: In function ‘device_set_bonded’:
src/device.c:6137:2: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
6137 | struct bearer_state *state = get_state(device, bdaddr_type);
| ^~~~~~
cc1: all warnings being treated as errors
make[1]: *** [Makefile:10248: src/bluetoothd-device.o] Error 1
make: *** [Makefile:11283: check] Error 2


##############################
Test: Make Check w/Valgrind - FAIL
Desc: Run 'make check' with Valgrind
Output:
tools/mgmt-tester.c: In function ‘main’:
tools/mgmt-tester.c:12364:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
12364 | int main(int argc, char *argv[])
| ^~~~
src/device.c: In function ‘device_set_bonded’:
src/device.c:6137:2: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
6137 | struct bearer_state *state = get_state(device, bdaddr_type);
| ^~~~~~
cc1: all warnings being treated as errors
make[1]: *** [Makefile:10248: src/bluetoothd-device.o] Error 1
make: *** [Makefile:4310: all] Error 2


##############################
Test: Build w/ext ELL - Make - FAIL
Desc: Build BlueZ source with '--enable-external-ell' configuration
Output:
tools/mgmt-tester.c: In function ‘main’:
tools/mgmt-tester.c:12364:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
12364 | int main(int argc, char *argv[])
| ^~~~
unit/test-avdtp.c: In function ‘main’:
unit/test-avdtp.c:766:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
766 | int main(int argc, char *argv[])
| ^~~~
unit/test-avrcp.c: In function ‘main’:
unit/test-avrcp.c:989:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
989 | int main(int argc, char *argv[])
| ^~~~
src/device.c: In function ‘device_set_bonded’:
src/device.c:6137:2: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
6137 | struct bearer_state *state = get_state(device, bdaddr_type);
| ^~~~~~
cc1: all warnings being treated as errors
make[1]: *** [Makefile:10248: src/bluetoothd-device.o] Error 1
make: *** [Makefile:4310: all] Error 2


##############################
Test: Incremental Build with patches - FAIL
Desc: Incremental build per patch in the series
Output:
tools/mgmt-tester.c: In function ‘main’:
tools/mgmt-tester.c:12364:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
12364 | int main(int argc, char *argv[])
| ^~~~
unit/test-avdtp.c: In function ‘main’:
unit/test-avdtp.c:766:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
766 | int main(int argc, char *argv[])
| ^~~~
unit/test-avrcp.c: In function ‘main’:
unit/test-avrcp.c:989:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
989 | int main(int argc, char *argv[])
| ^~~~
src/device.c: In function ‘device_set_bonded’:
src/device.c:6137:2: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
6137 | struct bearer_state *state = get_state(device, bdaddr_type);
| ^~~~~~
cc1: all warnings being treated as errors
make[1]: *** [Makefile:10248: src/bluetoothd-device.o] Error 1
make: *** [Makefile:4310: all] Error 2




---
Regards,
Linux Bluetooth