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); }
static void prepare_data(DBusMessage *message, struct carrier_data *data) { DBusMessageIter iter; DBusMessageIter dict; char *name = NULL; DBG("data %p", data); dbus_message_iter_init_append(message, &iter); near_dbus_dict_open(&iter, &dict); if (data) { void *pdata = data->data; switch (data->type) { case BT_MIME_V2_1: name = "EIR"; break; case BT_MIME_V2_0: name = "nokia.com:bt"; break; case WIFI_WSC_MIME: name = "WSC"; break; } near_dbus_dict_append_fixed_array(&dict, name, DBUS_TYPE_BYTE, &pdata, data->size); if (data->state != CPS_UNKNOWN) { const char *state = cps2string[data->state]; near_dbus_dict_append_basic(&dict, "State", DBUS_TYPE_STRING, &state); } } near_dbus_dict_close(&iter, &dict); }