diff options
author | Mohamed Abbas <mohamed.abbas@intel.com> | 2011-09-13 09:55:15 +0300 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2011-09-13 10:53:52 +0200 |
commit | f251712760f3741a00458b652c5571c5ba39a700 (patch) | |
tree | 0956b5d9df525dbb39de9b2d42f83fc0b2f5d117 /gsupplicant/dbus.c | |
parent | ff76ad35726a05cd5bf66ab09c2681f3bee8912d (diff) | |
download | connman-f251712760f3741a00458b652c5571c5ba39a700.tar.gz connman-f251712760f3741a00458b652c5571c5ba39a700.tar.bz2 connman-f251712760f3741a00458b652c5571c5ba39a700.zip |
gsupplicant: Add support to append char ** entries to dbus dict
Diffstat (limited to 'gsupplicant/dbus.c')
-rw-r--r-- | gsupplicant/dbus.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/gsupplicant/dbus.c b/gsupplicant/dbus.c index e0142650..7d427be1 100644 --- a/gsupplicant/dbus.c +++ b/gsupplicant/dbus.c @@ -520,3 +520,37 @@ void supplicant_dbus_property_append_fixed_array(DBusMessageIter *iter, dbus_message_iter_close_container(iter, &value); } + +void supplicant_dbus_property_append_array(DBusMessageIter *iter, + const char *key, int type, + supplicant_dbus_array_function function, + void *user_data) +{ + DBusMessageIter value, array; + const char *variant_sig, *array_sig; + + switch (type) { + case DBUS_TYPE_STRING: + variant_sig = DBUS_TYPE_ARRAY_AS_STRING + DBUS_TYPE_ARRAY_AS_STRING + DBUS_TYPE_BYTE_AS_STRING; + array_sig = DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_BYTE_AS_STRING; + break; + default: + return; + } + + dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &key); + + dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT, + variant_sig, &value); + + dbus_message_iter_open_container(&value, DBUS_TYPE_ARRAY, + array_sig, &array); + if (function) + function(&array, user_data); + + dbus_message_iter_close_container(&value, &array); + + dbus_message_iter_close_container(iter, &value); +} |