From: John Ernberg <[email protected]>
This matches the behavior described by the documentation and the signal
value described in the introspection. This was causing a headache when
using stricter D-Bus wrappers like dbus-c++.
---
src/gprs.c | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/src/gprs.c b/src/gprs.c
index ba797dd..b583c28 100644
--- a/src/gprs.c
+++ b/src/gprs.c
@@ -1879,7 +1879,17 @@ static void send_context_added_signal(struct ofono_gprs
*gprs,
const char *path;
DBusMessage *signal;
DBusMessageIter iter;
+ DBusMessageIter var;
DBusMessageIter dict;
+ char typesig[5];
+ char arraysig[6];
+
+ arraysig[0] = DBUS_TYPE_ARRAY;
+ arraysig[1] = typesig[0] = DBUS_DICT_ENTRY_BEGIN_CHAR;
+ arraysig[2] = typesig[1] = DBUS_TYPE_STRING;
+ arraysig[3] = typesig[2] = DBUS_TYPE_VARIANT;
+ arraysig[4] = typesig[3] = DBUS_DICT_ENTRY_END_CHAR;
+ arraysig[5] = typesig[4] = '\0';
path = __ofono_atom_get_path(gprs->atom);
signal = dbus_message_new_signal(path,
@@ -1893,11 +1903,15 @@ static void send_context_added_signal(struct ofono_gprs
*gprs,
path = context->path;
dbus_message_iter_append_basic(&iter, DBUS_TYPE_OBJECT_PATH, &path);
- dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
- OFONO_PROPERTIES_ARRAY_SIGNATURE,
+ dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT,
+ arraysig, &var);
+
+ dbus_message_iter_open_container(&var, DBUS_TYPE_ARRAY,
+ typesig,
&dict);
append_context_properties(context, &dict);
- dbus_message_iter_close_container(&iter, &dict);
+ dbus_message_iter_close_container(&var, &dict);
+ dbus_message_iter_close_container(&iter, &var);
g_dbus_send_message(conn, signal);
}
--
1.9.1
_______________________________________________
ofono mailing list
[email protected]
https://lists.ofono.org/mailman/listinfo/ofono