static DBusMessage *get_properties(DBusConnection *conn, DBusMessage *msg, void *data) { struct seel_se *se = data; DBusMessage *reply; DBusMessageIter array, dict; char *se_type = se_to_string(se->se_type); DBG("conn %p", conn); reply = dbus_message_new_method_return(msg); if (reply == NULL) return NULL; dbus_message_iter_init_append(reply, &array); near_dbus_dict_open(&array, &dict); near_dbus_dict_append_basic(&dict, "Enabled", DBUS_TYPE_BOOLEAN, &se->enabled); near_dbus_dict_append_basic(&dict, "Type", DBUS_TYPE_STRING, &se_type); near_dbus_dict_append_array(&dict, "Channels", DBUS_TYPE_OBJECT_PATH, append_channels, se); near_dbus_dict_close(&array, &dict); return reply; }
static void ndef_agent_push_records(struct near_ndef_agent *agent, struct near_ndef_record *record, GList *records) { DBusMessageIter iter, dict; DBusMessage *message; char *path; uint8_t *payload; size_t payload_len; DBG(""); if (!agent->sender || !agent->path) return; DBG("Sending NDEF to %s %s", agent->path, agent->sender); message = dbus_message_new_method_call(agent->sender, agent->path, NFC_NDEF_AGENT_INTERFACE, "GetNDEF"); if (!message) return; path = __near_ndef_record_get_path(record); payload = __near_ndef_record_get_payload(record, &payload_len); dbus_message_iter_init_append(message, &iter); near_dbus_dict_open(&iter, &dict); near_dbus_dict_append_basic(&dict, "Record", DBUS_TYPE_STRING, &path); near_dbus_dict_append_fixed_array(&dict, "Payload", DBUS_TYPE_BYTE, &payload, payload_len); near_dbus_dict_append_array(&dict, "NDEF", DBUS_TYPE_BYTE, append_ndef, records); near_dbus_dict_close(&iter, &dict); DBG("sending..."); dbus_message_set_no_reply(message, TRUE); g_dbus_send_message(connection, message); }