diff options
Diffstat (limited to 'client')
-rw-r--r-- | client/data_manager.c | 4 | ||||
-rw-r--r-- | client/dbus.c | 80 | ||||
-rw-r--r-- | client/dbus.h | 27 | ||||
-rw-r--r-- | client/services.c | 4 | ||||
-rw-r--r-- | client/technology.c | 3 |
5 files changed, 113 insertions, 5 deletions
diff --git a/client/data_manager.c b/client/data_manager.c index 29060458..f11a385d 100644 --- a/client/data_manager.c +++ b/client/data_manager.c @@ -38,7 +38,7 @@ #include "client/technology.h" #include "client/data_manager.h" #include "gdbus/gdbus.h" -#include "include/dbus.h" +#include "dbus.h" static void extract_manager_properties(DBusMessage *message) { @@ -211,7 +211,7 @@ int set_manager(DBusConnection *connection, char *key, dbus_bool_t value) return -ENOMEM; dbus_message_iter_init_append(message, &iter); - connman_dbus_property_append_basic(&iter, (const char *) key, + dbus_property_append_basic(&iter, (const char *) key, DBUS_TYPE_BOOLEAN, &value); dbus_connection_send(connection, message, NULL); dbus_connection_flush(connection); diff --git a/client/dbus.c b/client/dbus.c new file mode 100644 index 00000000..002d858f --- /dev/null +++ b/client/dbus.c @@ -0,0 +1,80 @@ +/* + * + * Connection Manager + * + * Copyright (C) 2012 Intel Corporation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <dbus/dbus.h> + +#include "dbus.h" + +void dbus_property_append_basic(DBusMessageIter *iter, + const char *key, int type, void *val) +{ + DBusMessageIter value; + const char *signature; + + dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &key); + + switch (type) { + case DBUS_TYPE_BOOLEAN: + signature = DBUS_TYPE_BOOLEAN_AS_STRING; + break; + case DBUS_TYPE_STRING: + signature = DBUS_TYPE_STRING_AS_STRING; + break; + case DBUS_TYPE_BYTE: + signature = DBUS_TYPE_BYTE_AS_STRING; + break; + case DBUS_TYPE_UINT16: + signature = DBUS_TYPE_UINT16_AS_STRING; + break; + case DBUS_TYPE_INT16: + signature = DBUS_TYPE_INT16_AS_STRING; + break; + case DBUS_TYPE_UINT32: + signature = DBUS_TYPE_UINT32_AS_STRING; + break; + case DBUS_TYPE_INT32: + signature = DBUS_TYPE_INT32_AS_STRING; + break; + case DBUS_TYPE_UINT64: + signature = DBUS_TYPE_UINT64_AS_STRING; + break; + case DBUS_TYPE_INT64: + signature = DBUS_TYPE_INT64_AS_STRING; + break; + case DBUS_TYPE_OBJECT_PATH: + signature = DBUS_TYPE_OBJECT_PATH_AS_STRING; + break; + default: + signature = DBUS_TYPE_VARIANT_AS_STRING; + break; + } + + dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT, + signature, &value); + dbus_message_iter_append_basic(&value, type, val); + dbus_message_iter_close_container(iter, &value); +} + diff --git a/client/dbus.h b/client/dbus.h new file mode 100644 index 00000000..27f7c5a0 --- /dev/null +++ b/client/dbus.h @@ -0,0 +1,27 @@ +/* + * + * Connection Manager + * + * Copyright (C) 2012 Intel Corporation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include <dbus/dbus.h> + +void dbus_property_append_basic(DBusMessageIter *iter, + const char *key, int type, void *val); + diff --git a/client/services.c b/client/services.c index 139637b0..99b15079 100644 --- a/client/services.c +++ b/client/services.c @@ -33,6 +33,7 @@ #include "client/services.h" #include "src/connman.h" +#include "dbus.h" static void append_property_array(DBusMessageIter *iter, char *property, char **data, int num_args) @@ -482,8 +483,7 @@ int set_service_property(DBusConnection *connection, DBusMessage *message, dbus_message_iter_init_append(message_send, &iter); if (strcmp(property, "AutoConnect") == 0) - connman_dbus_property_append_basic(&iter, - (const char *) property, + dbus_property_append_basic(&iter, (const char *) property, DBUS_TYPE_BOOLEAN, data); else if ((strcmp(property, "Domains.Configuration") == 0) || (strcmp(property, "Timeservers.Configuration") == 0) diff --git a/client/technology.c b/client/technology.c index 93035513..3211aec8 100644 --- a/client/technology.c +++ b/client/technology.c @@ -32,6 +32,7 @@ #include "client/technology.h" #include "src/connman.h" +#include "dbus.h" void extract_properties(DBusMessageIter *dict) { @@ -175,7 +176,7 @@ int set_technology(DBusConnection *connection, DBusMessage *message, char *key, return -ENOMEM; dbus_message_iter_init_append(message_send, &iter); - connman_dbus_property_append_basic(&iter, (const char *) key, + dbus_property_append_basic(&iter, (const char *) key, DBUS_TYPE_BOOLEAN, &value); dbus_connection_send(connection, message_send, NULL); dbus_connection_flush(connection); |