blob: 742ec9e7b618fa1a18c2e98afaf25e06f8ecf9ed [file] [log] [blame]
Norman Jamesce46e3e2015-08-30 22:25:55 -05001#include "interfaces/fru.h"
2#include "openbmc.h"
3
4
5/* ---------------------------------------------------------------------------------------------------- */
6
7static const gchar* dbus_object_path = "/org/openbmc/frus/Fru";
8static const gchar* dbus_name = "org.openbmc.frus.Fru";
9static const guint poll_interval = 5000;
10static guint heartbeat = 0;
11
12static GDBusObjectManagerServer *manager = NULL;
13
14
15static void
16on_bus_acquired (GDBusConnection *connection,
17 const gchar *name,
18 gpointer user_data)
19{
20 g_print ("Acquired a message bus connection: %s\n",name);
21
22 cmdline *cmd = user_data;
23 if (cmd->argc < 2)
24 {
25 g_print("No objects created. Put object name(s) on command line\n");
26 return;
27 }
28 manager = g_dbus_object_manager_server_new (dbus_object_path);
29 int i=0;
30 for (i=1;i<cmd->argc;i++)
31 {
32 gchar *s;
33 s = g_strdup_printf ("%s/%s",dbus_object_path,cmd->argv[i]);
34 ObjectSkeleton *object = object_skeleton_new (s);
35 g_free (s);
36
37 Fru *fru = fru_skeleton_new ();
38 object_skeleton_set_fru (object, fru);
39 g_object_unref (fru);
40
41 /* Export the object (@manager takes its own reference to @object) */
42 g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));
43 g_object_unref (object);
44 }
45
46 /* Export all objects */
47 g_dbus_object_manager_server_set_connection (manager, connection);
48}
49
50static void
51on_name_acquired (GDBusConnection *connection,
52 const gchar *name,
53 gpointer user_data)
54{
55 g_print ("Acquired the name %s\n", name);
56}
57
58static void
59on_name_lost (GDBusConnection *connection,
60 const gchar *name,
61 gpointer user_data)
62{
63 g_print ("Lost the name %s\n", name);
64}
65
66
67gint
68main (gint argc, gchar *argv[])
69{
70 GMainLoop *loop;
71 cmdline cmd;
72 cmd.argc = argc;
73 cmd.argv = argv;
74 guint id;
75 loop = g_main_loop_new (NULL, FALSE);
76
77 id = g_bus_own_name (G_BUS_TYPE_SESSION,
78 dbus_name,
79 G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT |
80 G_BUS_NAME_OWNER_FLAGS_REPLACE,
81 on_bus_acquired,
82 on_name_acquired,
83 on_name_lost,
84 &cmd,
85 NULL);
86
87 g_main_loop_run (loop);
88
89 g_bus_unown_name (id);
90 g_main_loop_unref (loop);
91 return 0;
92}