summaryrefslogtreecommitdiffstats
path: root/hcid/dbus-common.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2007-03-21 20:19:53 +0000
committerMarcel Holtmann <marcel@holtmann.org>2007-03-21 20:19:53 +0000
commitbdbad0d759c9f5c8092afd2cac4e1a76722b4517 (patch)
tree036ac711301237b2c6b20322ec8381c8261e7631 /hcid/dbus-common.c
parentb1d144b35ecdd617b00e6e07a43f7a7e07bafb7a (diff)
Move dictionary helper to common code
Diffstat (limited to 'hcid/dbus-common.c')
-rw-r--r--hcid/dbus-common.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/hcid/dbus-common.c b/hcid/dbus-common.c
index 2c84a5b2..3e059158 100644
--- a/hcid/dbus-common.c
+++ b/hcid/dbus-common.c
@@ -70,6 +70,38 @@ static sdp_session_t *sess = NULL;
static int experimental = 0;
+void append_dict_entry(DBusMessageIter *dict, const char *key,
+ int type, void *val)
+{
+ DBusMessageIter entry;
+ DBusMessageIter value;
+ char *sig;
+
+ dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry);
+
+ dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key);
+
+ switch (type) {
+ case DBUS_TYPE_STRING:
+ sig = DBUS_TYPE_STRING_AS_STRING;
+ break;
+ case DBUS_TYPE_UINT32:
+ sig = DBUS_TYPE_UINT32_AS_STRING;
+ break;
+ default:
+ sig = DBUS_TYPE_VARIANT_AS_STRING;
+ break;
+ }
+
+ dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, sig, &value);
+
+ dbus_message_iter_append_basic(&value, type, &val);
+
+ dbus_message_iter_close_container(&entry, &value);
+
+ dbus_message_iter_close_container(dict, &entry);
+}
+
service_handler_func_t find_service_handler(struct service_data *handlers, DBusMessage *msg)
{
struct service_data *current;