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

sean_chiang at sita.openmoko.org sean_chiang at sita.openmoko.org
Thu Apr 10 12:37:24 CEST 2008


Author: sean_chiang
Date: 2008-04-10 12:37:21 +0200 (Thu, 10 Apr 2008)
New Revision: 4336

Modified:
   trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.c
Log:
when headset in or out, send signal to dbus

Modified: trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.c
===================================================================
--- trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.c	2008-04-10 06:30:54 UTC (rev 4335)
+++ trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.c	2008-04-10 10:37:21 UTC (rev 4336)
@@ -85,6 +85,26 @@
 #define BIT_TEST( bitmask, bit )    \
     ( bitmask[ (bit) / sizeof(short) / 8 ] & (1u << ( (bit) % (sizeof(short) * 8))) )
 
+#ifdef NEOD_PLATFORM_FIC_NEO1973
+/*
+ * For neo, headset in   headset out
+ *          05 02 01     05 02 00
+ *          05 02 00     05 02 01
+ *          05 02 01     05 02 00
+ */
+enum {
+	HEADSET_STATE_IDLE = 0,
+	HEADSET_STATE_START_IN,
+	HEADSET_STATE_START_OUT,
+	HEADSET_STATE_IN,
+	HEADSET_STATE_OUT,
+	HEADSET_STATE_END_IN,
+	HEADSET_STATE_END_OUT,
+};
+
+static int headset_state = HEADSET_STATE_IDLE;  
+#endif
+
 static gboolean moko_debug = TRUE;
 
 GPollFD input_fd[10];
@@ -405,30 +425,79 @@
                     neod_buttonactions_set_display( 100 );
                     power_state = NORMAL;
                 }
-            }
-            else
-            if ( event.type == 5 && event.code == HEADPHONE_INSERTION_SWITCHCODE )
-            {
-                if ( event.value == 0 ) /* inserted */
-                {
-                    if ( moko_debug ) g_debug( "headphones IN" );
-                    g_spawn_command_line_async( "amixer sset \"Amp Mode\" \"Headphones\"", NULL );
-                }
-                else if ( event.value == 1 ) /* released */
-                {
-                    if ( moko_debug ) g_debug( "headphones OUT" );
-                    g_spawn_command_line_async( "amixer sset \"Amp Mode\" \"Stereo Speakers\"", NULL );
-                }
-                neod_buttonactions_powersave_reset();
+            }	 
+	    else
+	    if ( event.type == 5 && event.code == HEADPHONE_INSERTION_SWITCHCODE )
+	    {
+#ifdef NEOD_PLATFORM_FIC_NEO1973
+		if ( event.value == 1 ) /* inserted */
+		{
+		    switch (headset_state) {
+			case HEADSET_STATE_IDLE:
+			    headset_state = HEADSET_STATE_START_IN;
+			    if ( moko_debug ) g_debug( "HEADSET_STATE_START_IN" );
+			    break;
+			case HEADSET_STATE_IN:
+			    headset_state = HEADSET_STATE_END_IN;
+			    if ( moko_debug ) g_debug( "HEADSET_STATE_END_IN" );
+			    if ( moko_debug ) g_debug( "headphones IN" );		    
+				g_spawn_command_line_async( "dbus-send --session --type=signal /org/openmoko/PhoneKit/Headset org.openmoko.PhoneKit.Headset.HeadsetIn", NULL );
+			    break;
+			case HEADSET_STATE_START_OUT:
+			    headset_state = HEADSET_STATE_OUT;
+			    if ( moko_debug ) g_debug( "HEADSET_STATE_OUT" );
+			    break;
+			default:
+			    headset_state = HEADSET_STATE_IDLE;
+			    if ( moko_debug ) g_debug( "HEADSET_STATE_IDLE 1" );
+			    break;
+		    }
+		}
+		else if ( event.value == 0 ) /* released */
+		{
+		    switch (headset_state) {
+			case HEADSET_STATE_IDLE:
+			    headset_state = HEADSET_STATE_START_OUT;
+			    if ( moko_debug ) g_debug( "HEADSET_STATE_START_OUT" );
+			    break;
+			case HEADSET_STATE_OUT:
+			    headset_state = HEADSET_STATE_END_OUT;
+			    if ( moko_debug ) g_debug( "HEADSET_STATE_END_OUT" );
+			    if ( moko_debug ) g_debug( "headphones OUT" );
+				g_spawn_command_line_async( "dbus-send --session --type=signal /org/openmoko/PhoneKit/Headset org.openmoko.PhoneKit.Headset.HeadsetOut", NULL );
+			    break;
+			case HEADSET_STATE_START_IN:
+			    headset_state = HEADSET_STATE_IN;
+			    if ( moko_debug ) g_debug( "HEADSET_STATE_IN" );
+			    break;
+			default:
+			    headset_state = HEADSET_STATE_IDLE;
+			    if ( moko_debug ) g_debug( "HEADSET_STATE_IDLE 0" );
+			    break;
+		    }
+		}
+#else 
+		if ( event.value == 1 ) /* inserted */
+		{
+		    if ( moko_debug ) g_debug( "headphones IN" );		    
+			g_spawn_command_line_async( "amixer sset \"Amp Mode\" \"Headphones\"", NULL );
+		}
+		else if ( event.value == 0 ) /* released */
+		{
+		    if ( moko_debug ) g_debug( "headphones OUT" );
+			g_spawn_command_line_async( "amixer sset \"Amp Mode\" \"Stereo Speakers\"", NULL );
+		}
+#endif
+		neod_buttonactions_powersave_reset();
 #if 0
-                if ( power_state != NORMAL )
-                {
-                    neod_buttonactions_set_display( 100 );
-                    power_state = NORMAL;
-                }
+		if ( power_state != NORMAL )
+		{
+		    neod_buttonactions_set_display( 100 );
+		    power_state = NORMAL;
+		}
 #endif
-            }
-        }
+	    }
+	}
     }
     return TRUE;
 }





More information about the commitlog mailing list