r3355 - in trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-battery: . src
mickey at sita.openmoko.org
mickey at sita.openmoko.org
Sun Nov 4 20:30:42 CET 2007
Author: mickey
Date: 2007-11-04 20:30:41 +0100 (Sun, 04 Nov 2007)
New Revision: 3355
Modified:
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-battery/ChangeLog
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-battery/configure.ac
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-battery/src/openmoko-panel-battery.c
Log:
openmoko-panel-battery: dbus system bus
Modified: trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-battery/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-battery/ChangeLog 2007-11-04 19:30:27 UTC (rev 3354)
+++ trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-battery/ChangeLog 2007-11-04 19:30:41 UTC (rev 3355)
@@ -1,3 +1,9 @@
+2007-11-02 Michael Lauer <mickey at openmoko.org>
+
+ * configure.ac: Add dbus(-glib)-1 dependency
+ * src/openmoko-panel-battery.c:
+ (battery_panel_dbus_init): Listen to dbus for charger insertion/removal events.
+
2007-10-25 Thomas Wood <thomas at openedhand.com>
* src/openmoko-panel-battery.c: (timeout),
Modified: trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-battery/configure.ac
===================================================================
--- trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-battery/configure.ac 2007-11-04 19:30:27 UTC (rev 3354)
+++ trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-battery/configure.ac 2007-11-04 19:30:41 UTC (rev 3355)
@@ -11,7 +11,7 @@
AC_PROG_LIBTOOL
# base deps
-PKG_CHECK_MODULES(OPENMOKO, libmokopanelui2)
+PKG_CHECK_MODULES(OPENMOKO, libmokopanelui2 dbus-1 dbus-glib-1)
LIBS="$LIBS $OPENMOKO_LIBS"
CFLAGS="$CFLAGS $OPENMOKO_CFLAGS"
Modified: trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-battery/src/openmoko-panel-battery.c
===================================================================
--- trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-battery/src/openmoko-panel-battery.c 2007-11-04 19:30:27 UTC (rev 3354)
+++ trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-battery/src/openmoko-panel-battery.c 2007-11-04 19:30:41 UTC (rev 3355)
@@ -24,6 +24,7 @@
#include <libmokopanelui2/moko-panel-applet.h>
#include <gtk/gtklabel.h>
+#include <dbus/dbus.h>
#include <apm.h>
#include <string.h>
@@ -36,6 +37,9 @@
guint timeout_id;
} BatteryApplet;
+static gboolean
+timeout (BatteryApplet *applet);
+
/* applets cannot be unloaded yet */
#if 0
static void
@@ -46,7 +50,55 @@
}
#endif
-/* Called every 5 minutes */
+#define CHARGER_DBUS_SERVICE "org.freedesktop.PowerManagement"
+#define CHARGER_DBUS_PATH "/org/freedesktop/PowerManagement"
+#define CHARGER_DBUS_INTERFACE "org.freedesktop.PowerManagement"
+
+DBusHandlerResult signal_filter (DBusConnection *bus, DBusMessage *msg, void *user_data)
+{
+ g_debug( "signal_filter" );
+ if ( dbus_message_is_signal( msg, CHARGER_DBUS_INTERFACE, "ChargerConnected" ) )
+ {
+ g_debug( "connected" );
+ timeout( user_data );
+ return DBUS_HANDLER_RESULT_HANDLED;
+ }
+ else if ( dbus_message_is_signal( msg, CHARGER_DBUS_INTERFACE, "ChargerDisconnected" ) )
+ {
+ g_debug( "disconnected" );
+ timeout( user_data );
+ return DBUS_HANDLER_RESULT_HANDLED;
+ }
+
+ g_debug( "(unknown dbus message, ignoring)" );
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+static void battery_applet_init_dbus( BatteryApplet* applet )
+{
+ DBusError error;
+ dbus_error_init (&error);
+
+ /* Get a connection to the system bus */
+ DBusConnection* bus = dbus_bus_get (DBUS_BUS_SYSTEM, &error);
+ if (!bus)
+ {
+ gchar buffer[100];
+ sprintf (buffer, "Failed to connect to the D-BUS daemon: %s", error.message);
+ g_critical (buffer);
+ dbus_error_free (&error);
+ return ;
+ }
+ g_debug("Connection to bus successfully made");
+
+ dbus_connection_setup_with_g_main (bus, NULL);
+
+ dbus_bus_add_match (bus, "type='signal'", &error);
+ dbus_connection_add_filter (bus, signal_filter, applet, NULL);
+}
+
+
+/* Called frequently */
static gboolean
timeout (BatteryApplet *applet)
{
@@ -104,15 +156,14 @@
t = time( NULL );
local_time = localtime(&t);
- //FIXME Add source watching for charger insertion event on /dev/input/event1
+ battery_applet_init_dbus( applet );
/* should use g_timeout_add_seconds() here to save power, but it is only
* available in glib >= 2.14
*/
applet->timeout_id = g_timeout_add ( 10 * 1000, (GSourceFunc) timeout, applet);
- timeout(applet);
-
- moko_panel_applet_set_icon( mokoapplet, PKGDATADIR "/Battery_00.png" );
+ moko_panel_applet_set_icon( applet->mokoapplet, icon ); // initial status = unknown
gtk_widget_show_all( GTK_WIDGET(mokoapplet) );
return GTK_WIDGET(mokoapplet);
}
+22
\ No newline at end of file
More information about the commitlog
mailing list