/* * * oFono - Open Source Telephony * * Copyright (C) 2008-2009 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 version 2 as * published by the Free Software Foundation. * * 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 #endif #include #include #include #include "ofono.h" #include "driver.h" static DBusMessage *manager_get_properties(DBusConnection *conn, DBusMessage *msg, void *data) { DBusMessageIter iter; DBusMessageIter dict; DBusMessage *reply; const char **modems; reply = dbus_message_new_method_return(msg); if (!reply) return NULL; modems = __ofono_modem_get_list(); if (!modems) return NULL; dbus_message_iter_init_append(reply, &iter); dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, OFONO_PROPERTIES_ARRAY_SIGNATURE, &dict); ofono_dbus_dict_append_array(&dict, "Modems", DBUS_TYPE_OBJECT_PATH, &modems); g_free(modems); dbus_message_iter_close_container(&iter, &dict); return reply; } static GDBusMethodTable manager_methods[] = { { "GetProperties", "", "a{sv}", manager_get_properties }, { } }; static GDBusSignalTable manager_signals[] = { { "PropertyChanged", "sv" }, { } }; int __ofono_manager_init() { DBusConnection *conn = ofono_dbus_get_connection(); gboolean ret; ret = g_dbus_register_interface(conn, OFONO_MANAGER_PATH, OFONO_MANAGER_INTERFACE, manager_methods, manager_signals, NULL, NULL, NULL); if (ret == FALSE) return -1; return 0; } void __ofono_manager_cleanup() { DBusConnection *conn = ofono_dbus_get_connection(); g_dbus_unregister_interface(conn, OFONO_MANAGER_PATH, OFONO_MANAGER_INTERFACE); }