summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Ranostay <matt.ranostay@konsulko.com>2019-04-02 19:49:30 -0700
committerMatt Ranostay <matt.ranostay@konsulko.com>2019-04-04 12:07:33 -0700
commitdb49d1d1bf5454fb371fc8c2731a0c5b1ed255d9 (patch)
tree20e2c03be4fda3966fbee1378c86a66861c796d0
parent17c4b3a74117d16315fc40eac7fb8d50007ad40e (diff)
binding: bluetooth: add changed action for adapter_changes eventguppy_7.0.1guppy/7.0.17.0.1
Report back property changes in the adapter_changes event, which is required for detecting when an adapter is truly powered on. Bug-AGL: SPEC-2295 SPEC-2290 Change-Id: I58441369277d2e778f2bb077e7b1be4aa3a3b1b4 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
-rw-r--r--README.md16
-rw-r--r--binding/bluetooth-api.c23
2 files changed, 25 insertions, 14 deletions
diff --git a/README.md b/README.md
index fa77efc..fcfd0a1 100644
--- a/README.md
+++ b/README.md
@@ -209,7 +209,21 @@ Sample of adding new adapter event:
}
</pre>
-Sample of adapter being remove:
+Sample of adapter property changes:
+
+<pre>
+{
+ "adapter": "hci0",
+ "action": "changed",
+ "properties": {
+ "powered": false,
+ "discovering": false,
+ "discoverable": false
+ }
+}
+</pre>
+
+Sample of adapter being removed:
<pre>
{
diff --git a/binding/bluetooth-api.c b/binding/bluetooth-api.c
index 4c1165c..8fdb0f8 100644
--- a/binding/bluetooth-api.c
+++ b/binding/bluetooth-api.c
@@ -413,7 +413,8 @@ static void bluez_devices_signal_callback(
g_variant_get(parameters, "(&sa{sv}as)", &path, &array, &array1);
- if (!g_strcmp0(path, BLUEZ_DEVICE_INTERFACE)) {
+ if (!g_strcmp0(path, BLUEZ_DEVICE_INTERFACE) ||
+ !g_strcmp0(path, BLUEZ_ADAPTER_INTERFACE)) {
int cnt = 0;
jresp = json_object_new_object();
@@ -425,8 +426,15 @@ static void bluez_devices_signal_callback(
jobj = json_object_new_object();
while (g_variant_iter_next(array, "{&sv}", &key, &var)) {
- ret = device_property_dbus2json(jobj,
+ if (!g_strcmp0(path, BLUEZ_DEVICE_INTERFACE)) {
+ ret = device_property_dbus2json(jobj,
key, var, &is_config, &error);
+ event = ns->device_changes_event;
+ } else {
+ ret = adapter_property_dbus2json(jobj,
+ key, var, &is_config, &error);
+ event = ns->adapter_changes_event;
+ }
g_variant_unref(var);
if (!ret) {
AFB_DEBUG("%s property %s - %s",
@@ -848,7 +856,6 @@ static void bluetooth_adapter(afb_req_t request)
int ret = adapter_set_property(ns, adapter, FALSE, "Powered",
json_object_new_boolean(str2boolean(powered)),
&error);
- json_object *jresp = NULL;
if (!ret) {
afb_req_fail_f(request, "failed",
@@ -857,16 +864,6 @@ static void bluetooth_adapter(afb_req_t request)
g_error_free(error);
return;
}
-
- jresp = json_object_new_object();
-
- json_process_path(jresp, adapter);
- json_object_object_add(jresp, "action",
- json_object_new_string("changed"));
- json_object_object_add(jresp, "powered",
- json_object_new_boolean(str2boolean(powered)));
-
- afb_event_push(ns->device_changes_event, jresp);
}
filter = afb_req_value(request, "filter");