r4774 - trunk/src/target/OM-2007.2/daemons/neod/src

mickey at docs.openmoko.org mickey at docs.openmoko.org
Sat Nov 8 12:42:58 CET 2008


Author: mickey
Date: 2008-11-08 12:42:57 +0100 (Sat, 08 Nov 2008)
New Revision: 4774

Modified:
   trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.c
Log:
neod: patch to manually suspend and disabled wifi courtesy reddog. closes Om ticket #1365


Modified: trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.c
===================================================================
--- trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.c	2008-11-07 21:51:36 UTC (rev 4773)
+++ trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.c	2008-11-08 11:42:57 UTC (rev 4774)
@@ -47,6 +47,10 @@
 static int backlight_max_brightness = 1;
 
 #ifdef NEOD_PLATFORM_FIC_NEO1973
+    static int hardware = NULL;
+#endif
+
+#ifdef NEOD_PLATFORM_FIC_NEO1973
     #define AUX_BUTTON_KEYCODE 169    /* aux */
     #define POWER_BUTTON_KEYCODE 116  /* power */
     #define TOUCHSCREEN_BUTTON_KEYCODE_MIN 0x140 /* BTN_DIGI */
@@ -120,6 +124,57 @@
     NONE = 2,
 };
 
+#ifdef NEOD_PLATFORM_FIC_NEO1973
+enum HardwareVersion
+{
+    GTA01 = 1,
+    GTA02 = 2,
+};
+
+static int hardwareVersion()
+{
+    if (hardware==NULL)
+    {
+        char value[255];
+        char key[255];
+
+        FILE* f = fopen( "/proc/cpuinfo" , "r" );
+        if ( f == NULL )
+        {
+            g_debug( "can't open file '/proc/cpuinfo': (%s), aborting.", strerror( errno ) );
+            return;
+        }
+
+        while (EOF != fscanf (f, "%s\t : %s\t*\n", key, value))
+        {
+            if (strcmp(&key,"Hardware")==0)
+            {
+                if (strcmp(&value,"GTA01")==0)
+                    hardware = GTA01;
+                if (strcmp(&value,"GTA02")==0)
+                    hardware = GTA02;
+                break;
+            }
+        }
+        if (hardware==NULL)
+        {
+            g_debug( "can't get hardware version." );
+        }
+        else
+	{
+	    g_debug( "got hardware version: '%s', saved as '%d'.", &value, hardware);
+	}
+
+        fclose( f );
+    }
+    else
+    {
+        g_debug( "allready have hw-version: '%d'.", hardware );
+    }
+    return hardware;
+}
+#endif
+
 int pm_value = 0;
 gboolean orientation = FALSE;
 gboolean lock_display_last_orientation = FALSE;
@@ -592,10 +647,9 @@
     }
 }
 
-void neod_buttonactions_popup_selected_lock_display(GtkWidget* button, 
-													gpointer user_data) {
+void neod_buttonactions_popup_selected_lock_display(GtkWidget* button, gpointer user_data) {
     gtk_widget_hide(power_menu);
-	neod_buttonactions_lock_display();
+    neod_buttonactions_lock_display();
 }
 
 void neod_buttonactions_popup_selected_restartUI( GtkWidget* button, gpointer user_data )
@@ -694,12 +748,15 @@
         case BLUETOOTH:
 #ifdef NEOD_PLATFORM_FIC_NEO1973
             write_boolean_to_path( "/sys/bus/platform/devices/neo1973-pm-bt.0/power_on", on );
-	     write_boolean_to_path( "/sys/bus/platform/devices/neo1973-pm-bt.0/reset", 0 );
+            write_boolean_to_path( "/sys/bus/platform/devices/neo1973-pm-bt.0/reset", 0 );
 #endif
             break;
         case GPS:
 #ifdef NEOD_PLATFORM_FIC_NEO1973
-            write_boolean_to_path( "/sys/bus/platform/devices/neo1973-pm-gps.0/pwron", on );
+            if (hardwareVersion()==GTA01)
+                system( on ? "/etc/init.d/gps-hardware restart" : "/etc/init.d/gps-hardware stop" );
+            else
+                write_boolean_to_path( "/sys/bus/platform/devices/neo1973-pm-gps.0/pwron", on );
 #endif
             break;
         case WIFI:
@@ -813,9 +870,14 @@
         g_signal_connect( G_OBJECT(gpspower), "clicked", G_CALLBACK(neod_buttonactions_popup_selected_switch_power), GINT_TO_POINTER( GPS ) );
         gtk_box_pack_start_defaults( GTK_BOX(box), gpspower );
 
-        wifipower = gtk_button_new();
-        g_signal_connect( G_OBJECT(wifipower), "clicked", G_CALLBACK(neod_buttonactions_popup_selected_switch_power), GINT_TO_POINTER( WIFI ) );
-        gtk_box_pack_start_defaults( GTK_BOX(box), wifipower );
+#ifdef NEOD_PLATFORM_FIC_NEO1973
+        if (hardwareVersion()==GTA02)
+        {
+            wifipower = gtk_button_new();
+            g_signal_connect( G_OBJECT(wifipower), "clicked", G_CALLBACK(neod_buttonactions_popup_selected_switch_power), GINT_TO_POINTER( WIFI ) );
+            gtk_box_pack_start_defaults( GTK_BOX(box), wifipower );
+        }
+#endif
 
         gtk_box_pack_start_defaults( GTK_BOX(box), gtk_hseparator_new() );
 
@@ -831,12 +893,15 @@
 
         GtkWidget* lock_display = gtk_button_new_with_label("Lock Display");
         g_signal_connect(G_OBJECT(lock_display), "clicked", 
-			G_CALLBACK(neod_buttonactions_popup_selected_lock_display), NULL);
-		gtk_box_pack_start_defaults(GTK_BOX(box), lock_display);
-#if 0
-        GtkWidget* lock = gtk_button_new_with_label("Lock Phone");
-        g_signal_connect( G_OBJECT(lock), "clicked", G_CALLBACK(neod_buttonactions_popup_selected_lock), NULL );
-        gtk_box_pack_start_defaults( GTK_BOX(box), lock );
+            G_CALLBACK(neod_buttonactions_popup_selected_lock_display), NULL);
+        gtk_box_pack_start_defaults(GTK_BOX(box), lock_display);
+#ifdef NEOD_PLATFORM_FIC_NEO1973
+        if (hardwareVersion()==GTA01)
+        {
+            GtkWidget* lock = gtk_button_new_with_label("Suspend Phone");
+            g_signal_connect( G_OBJECT(lock), "clicked", G_CALLBACK(neod_buttonactions_popup_selected_lock), NULL );
+            gtk_box_pack_start_defaults( GTK_BOX(box), lock );
+        }
 #endif
         GtkWidget* poweroff = gtk_button_new_with_label( "Shutdown Now" );
         g_signal_connect( G_OBJECT(poweroff), "clicked", G_CALLBACK(neod_buttonactions_popup_selected_poweroff), NULL );
@@ -960,7 +1025,7 @@
         } else if(gtk_window_is_active(GTK_WINDOW(lock_display))) {
             g_debug("sorry, i'm not going to close the lock window");
             return FALSE;
-		}
+        }
 
         Display* display = XOpenDisplay( NULL );
 




More information about the commitlog mailing list