r3331 - in trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-usb: . src

mickey at sita.openmoko.org mickey at sita.openmoko.org
Fri Nov 2 11:40:49 CET 2007


Author: mickey
Date: 2007-11-02 11:40:48 +0100 (Fri, 02 Nov 2007)
New Revision: 3331

Modified:
   trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-usb/configure.ac
   trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-usb/src/openmoko-panel-usb.c
Log:
openmoko-panel-usb: listen to charger connection/disconnection events via dbus


Modified: trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-usb/configure.ac
===================================================================
--- trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-usb/configure.ac	2007-11-02 09:53:28 UTC (rev 3330)
+++ trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-usb/configure.ac	2007-11-02 10:40:48 UTC (rev 3331)
@@ -11,7 +11,7 @@
 AC_PROG_LIBTOOL
 
 # base deps
-PKG_CHECK_MODULES(OPENMOKO, libmokopanelui2 dbus-glib-1)
+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-usb/src/openmoko-panel-usb.c
===================================================================
--- trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-usb/src/openmoko-panel-usb.c	2007-11-02 09:53:28 UTC (rev 3330)
+++ trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-usb/src/openmoko-panel-usb.c	2007-11-02 10:40:48 UTC (rev 3331)
@@ -15,6 +15,7 @@
  */
 #include <libmokopanelui2/moko-panel-applet.h>
 
+#include <dbus/dbus.h>
 #include <dbus/dbus-glib.h>
 #include <gtk/gtkimage.h>
 #include <time.h>
@@ -35,30 +36,50 @@
     g_debug( "usb_applet_dbus_signal: received signal. data pointer = %p", data );
 }
 
-#define USB_DBUS_SERVICE      "com.burtonini"
-#define USB_DBUS_PATH         "/com/burtonini"
-#define USB_DBUS_INTERFACE    "com.burtonini"
+#define USB_DBUS_SERVICE      "org.freedesktop.PowerManagement"
+#define USB_DBUS_PATH         "/org/freedesktop/PowerManagement"
+#define USB_DBUS_INTERFACE    "org.freesmartphone.powermanagement"
 
-static void usb_applet_init_dbus( UsbApplet* applet )
+DBusHandlerResult signal_filter (DBusConnection *bus, DBusMessage *msg, void *user_data)
 {
-    GError* error = NULL;
-    DBusGConnection* bus = dbus_g_bus_get( DBUS_BUS_SESSION, &error );
-
-    if (error)
+    g_debug( "signal_filter" );
+    if ( dbus_message_is_signal( msg, USB_DBUS_INTERFACE, "ChargerConnected" ) )
     {
-        g_warning( "%s: Error acquiring session bus: %s", G_STRLOC, error->message );
-        return;
+        g_debug( "connected" );
+        return DBUS_HANDLER_RESULT_HANDLED;
     }
+    else if ( dbus_message_is_signal( msg, USB_DBUS_INTERFACE, "ChargerDisconnected" ) )
+    {
+        g_debug( "disconnected" );
+        return DBUS_HANDLER_RESULT_HANDLED;
+    }
 
-    DBusGProxy* usb_control_interface = dbus_g_proxy_new_for_name( bus, USB_DBUS_SERVICE, USB_DBUS_PATH, USB_DBUS_INTERFACE );
-    if ( !usb_control_interface )
+    g_debug( "(unknown dbus message, ignoring" );
+    return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+static void usb_applet_init_dbus( UsbApplet* applet )
+{
+    DBusError error;
+    dbus_error_init (&error);
+
+    /* Get a connection to the session bus */
+    DBusConnection* bus = dbus_bus_get (DBUS_BUS_SESSION, &error);
+    if (!bus)
     {
-        g_warning( "Could not connect to USB dbus service" );
-        return;
+        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_g_proxy_add_signal( usb_control_interface, "SignalTest", G_TYPE_INVALID );
-    dbus_g_proxy_connect_signal( usb_control_interface, "SignalTest", G_CALLBACK(usb_applet_dbus_signal), NULL, NULL );
+    dbus_connection_setup_with_g_main (bus, NULL);
+
+    dbus_bus_add_match (bus, "type='signal'", &error);
+    dbus_connection_add_filter (bus, signal_filter, NULL, NULL);
+
 }
 
 static void usb_applet_update_status( UsbApplet* applet )





More information about the commitlog mailing list