blob: f0583dd5b5020605877b197e99037e986a19d8ab [file] [log] [blame]
Norman Jamese2765102015-08-19 22:00:55 -05001#include "interfaces/button.h"
2
3/* ---------------------------------------------------------------------------------------------------- */
4
5static GDBusObjectManagerServer *manager = NULL;
6static Button *button = NULL;
7static const int gpio = 12;
8
9static gboolean
10on_is_on (Button *btn,
11 GDBusMethodInvocation *invocation,
12 gpointer user_data)
13{
14 gboolean btn_state=button_get_state(btn);
15 button_complete_is_on(btn,invocation,btn_state);
16 return TRUE;
17
18}
19
20static gboolean
21on_sim_button_press (Button *btn,
22 GDBusMethodInvocation *invocation,
23 gpointer user_data)
24{
25 g_print("Simulating button pressed\n");
26 button_emit_button_pressed(btn);
27 button_complete_sim_button_press(btn,invocation);
28 return TRUE;
29
30}
31
32static void
33on_bus_acquired (GDBusConnection *connection,
34 const gchar *name,
35 gpointer user_data)
36{
37 ObjectSkeleton *object;
38 guint n;
39
40 g_print ("Acquired a message bus connection: %s\n",name);
41
42 manager = g_dbus_object_manager_server_new ("/org/openbmc/buttons/ButtonPower");
43
44 gchar *s;
45 s = g_strdup_printf ("/org/openbmc/buttons/ButtonPower/0");
46 object = object_skeleton_new (s);
47 g_free (s);
48
49 button = button_skeleton_new ();
50 object_skeleton_set_button (object, button);
51 g_object_unref (button);
52
53 //define method callbacks
54 g_signal_connect (button,
55 "handle-is-on",
56 G_CALLBACK (on_is_on),
57 NULL); /* user_data */
58 g_signal_connect (button,
59 "handle-sim-button-press",
60 G_CALLBACK (on_sim_button_press),
61 NULL); /* user_data */
62
63
64 /* Export the object (@manager takes its own reference to @object) */
65 g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));
66 g_object_unref (object);
67
68 /* Export all objects */
69 g_dbus_object_manager_server_set_connection (manager, connection);
70}
71
72static void
73on_name_acquired (GDBusConnection *connection,
74 const gchar *name,
75 gpointer user_data)
76{
77 g_print ("Acquired the name %s\n", name);
78}
79
80static void
81on_name_lost (GDBusConnection *connection,
82 const gchar *name,
83 gpointer user_data)
84{
85 g_print ("Lost the name %s\n", name);
86}
87
88
89gint
90main (gint argc, gchar *argv[])
91{
92 GMainLoop *loop;
93
94 guint id;
95 //g_type_init ();
96 loop = g_main_loop_new (NULL, FALSE);
97
98 id = g_bus_own_name (G_BUS_TYPE_SESSION,
99 "org.openbmc.buttons.ButtonPower",
100 G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT |
101 G_BUS_NAME_OWNER_FLAGS_REPLACE,
102 on_bus_acquired,
103 on_name_acquired,
104 on_name_lost,
105 loop,
106 NULL);
107
108 g_main_loop_run (loop);
109
110 g_bus_unown_name (id);
111 g_main_loop_unref (loop);
112 return 0;
113}