dundee: Add skeleton implementation for device
authorDaniel Wagner <daniel.wagner@bmw-carit.de>
Wed, 4 Jan 2012 17:12:11 +0000 (18:12 +0100)
committerDaniel Wagner <daniel.wagner@bmw-carit.de>
Tue, 22 May 2012 16:44:46 +0000 (18:44 +0200)
Makefile.am
dundee/device.c [new file with mode: 0644]
dundee/dundee.h
dundee/main.c

index 00e1118..1e0934d 100644 (file)
@@ -690,7 +690,7 @@ sbin_PROGRAMS += dundee/dundee
 dundee_dundee_SOURCES = $(gdbus_sources) \
                        src/log.c src/dbus.c \
                        dundee/dundee.h dundee/main.c dundee/dbus.c \
-                       dundee/manager.c
+                       dundee/manager.c dundee/device.c
 
 dundee_dundee_LDADD = $(builtin_libadd) @GLIB_LIBS@ @DBUS_LIBS@ @CAPNG_LIBS@ -ldl
 
diff --git a/dundee/device.c b/dundee/device.c
new file mode 100644 (file)
index 0000000..d9fc928
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ *  oFono - Open Source Telephony
+ *
+ *  Copyright (C) 2008-2012  Intel Corporation. All rights reserved.
+ *  Copyright (C) 2012  BMW Car IT GmbH. 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 <config.h>
+#endif
+
+#include <errno.h>
+#include <string.h>
+#include <stdio.h>
+#include <netinet/ether.h>
+
+#include <glib.h>
+#include <gdbus.h>
+
+#include "dundee.h"
+
+static GHashTable *device_hash;
+
+struct dundee_device {
+};
+
+const char *__dundee_device_get_path(struct dundee_device *device)
+{
+       return "/";
+}
+
+void __dundee_device_append_properties(struct dundee_device *device,
+                                       DBusMessageIter *dict)
+{
+}
+
+void __dundee_device_foreach(dundee_device_foreach_func func, void *userdata)
+{
+       GHashTableIter iter;
+       gpointer key, value;
+
+       DBG("");
+
+       g_hash_table_iter_init(&iter, device_hash);
+
+       while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) {
+               struct dundee_device *device = value;
+
+               func(device, userdata);
+       }
+}
+
+static void destroy_device(gpointer user)
+{
+       struct dundee_device *device = user;
+
+       g_free(device);
+}
+
+static void device_shutdown(gpointer key, gpointer value, gpointer user_data)
+{
+}
+
+void __dundee_device_shutdown(void)
+{
+       g_hash_table_foreach(device_hash, device_shutdown, NULL);
+
+       __dundee_exit();
+}
+
+int __dundee_device_init(void)
+{
+       DBG("");
+
+       device_hash = g_hash_table_new_full(g_str_hash, g_str_equal,
+                                               g_free, destroy_device);
+
+       return 0;
+}
+
+void __dundee_device_cleanup(void)
+{
+       DBG("");
+
+       g_hash_table_destroy(device_hash);
+}
index 3050baf..4f8aa10 100644 (file)
@@ -53,3 +53,18 @@ DBusMessage *__dundee_error_failed(DBusMessage *msg);
 
 int __dundee_manager_init(void);
 void __dundee_manager_cleanup(void);
+
+
+struct dundee_device;
+
+int __dundee_device_init(void);
+void __dundee_device_cleanup(void);
+void __dundee_device_shutdown(void);
+
+typedef void (*dundee_device_foreach_func)(struct dundee_device *device,
+                                               void *data);
+void __dundee_device_foreach(dundee_device_foreach_func cb, void *userdata);
+
+const char *__dundee_device_get_path(struct dundee_device *device);
+void __dundee_device_append_properties(struct dundee_device *device,
+                                       DBusMessageIter *dict);
index 07b8501..2d3d75e 100644 (file)
@@ -80,7 +80,7 @@ static gboolean signal_handler(GIOChannel *channel, GIOCondition cond,
                        g_timeout_add_seconds(SHUTDOWN_GRACE_SECONDS,
                                                quit_eventloop, NULL);
 
-                       quit_eventloop(NULL);
+                       __dundee_device_shutdown();
                }
 
                __terminated = 1;
@@ -233,9 +233,11 @@ int main(int argc, char **argv)
        __ofono_dbus_init(conn);
 
        __dundee_manager_init();
+       __dundee_device_init();
 
        g_main_loop_run(event_loop);
 
+       __dundee_device_cleanup();
        __dundee_manager_cleanup();
 
        __ofono_dbus_cleanup();