dbus help needed in sending an a{sv}
Sebastian Krzyszkowiak
seba.dos1 at gmail.com
Thu Aug 20 12:27:04 CEST 2009
On 8/20/09, c_c <cchandel at yahoo.com> wrote:
>
> Hi,
> I'm trying to write the c equivalent of the following python code (without
> the line break)
>
> 'mdbus -s org.freesmartphone.opimd /org/freesmartphone/PIM/Messages
> org.freesmartphone.PIM.Messages.Query {}'
>
> essentially this means sending a array -> dict -> one string(key) -> one
> variant(value). In order to send a query with the key="Direction" and
> value="in" I use the following code
>
> key = "Direction";
> value = "in";
> dbus_message_iter_init_append(msg, &iter);
> dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &array);
> dbus_message_iter_open_container(&array, DBUS_TYPE_DICT_ENTRY, 0, &dict);
> dbus_message_iter_append_basic(&dict, DBUS_TYPE_STRING, &key);
> dbus_message_iter_open_container(&dict, DBUS_TYPE_VARIANT,
> DBUS_TYPE_STRING_AS_STRING, &variant);
> dbus_message_iter_append_basic(&variant, DBUS_TYPE_STRING, &value);
> dbus_message_iter_close_container(&dict, &variant);
> dbus_message_iter_close_container(&array, &dict);
> dbus_message_iter_close_container(&iter, &array);
> and it works fine.
> But - how do I send a NULL key,value? I assume I'm sending a NULL - not
> sure if that's the way to go about it.
> Using the code above with key and value = "" or " " causes segmentation
> fault. I'm definitely doing something wrong - but I don't know what.
> Can anyone help?
Try just:
dbus_message_iter_init_append(msg, &iter);
dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &array);
dbus_message_iter_close_container(&iter, &array);
(just guessing, as I didn't use dbus from C)
--
Sebastian Krzyszkowiak
dos
More information about the devel
mailing list