Reputation: 83
I'm getting D-Bus message with sa{sv}as
signature.
More details about message from bustle - D-Bus visualiser:
But can't iterate over a{sv}
part using dbus_message_get_args command.
Here's my code:
static DBusHandlerResult filter_function(DBusConnection * connection, DBusMessage * message, void * user_data) {
// Message argument preview from bustle - ('org.bluez.obex.Transfer1', {'Status': <'complete'>}, @as [])
char * arg_one;
DBusMessageIter arg_two;
dbus_message_get_args(message, NULL, DBUS_TYPE_STRING, &arg_one, DBUS_TYPE_ARRAY, &arg_two);
printf("arg one - %s\n", arg_one); // Print 'org.bluez.obex.Transfer1'
DBusMessageIter dict;
dbus_message_iter_recurse(&arg_two, &dict);
// I need to iterate over second argument DBUS_TYPE_ARRAY arg_two and get 'Status' value <'complete'>
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
Code compiles fine, but execution give me Segmentation fault
error.
Already search on GitHub for examples and ask GPT, Copilot etc.
In current project I can use only #include <dbus/dbus.h>
.
Upvotes: 1
Views: 84