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