r4337 - trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit

sean_chiang at sita.openmoko.org sean_chiang at sita.openmoko.org
Thu Apr 10 12:39:49 CEST 2008


Author: sean_chiang
Date: 2008-04-10 12:39:44 +0200 (Thu, 10 Apr 2008)
New Revision: 4337

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/Makefile.am
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/dialer-main.c
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer.c
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-sound.c
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-sound.h
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-talking.c
Log:
control audio state when headset in / out

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/Makefile.am
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/Makefile.am	2008-04-10 10:37:21 UTC (rev 4336)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/Makefile.am	2008-04-10 10:39:44 UTC (rev 4337)
@@ -21,6 +21,7 @@
 	moko-pb.c moko-pb.h \
 	moko-pin.c moko-pin.h \
 	moko-mcc-dc.h \
+	moko-headset.c moko-headset.h \
 	$(BUILT_SOURCES)
 
 phone_kit_LDADD = @DIALER_LIBS@ @JANA_LIBS@ @NOTIFY_LIBS@ @ALSA_LIBS@ $(top_srcdir)/src/common/libdialer-common.a

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/dialer-main.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/dialer-main.c	2008-04-10 10:37:21 UTC (rev 4336)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/dialer-main.c	2008-04-10 10:39:44 UTC (rev 4337)
@@ -31,6 +31,8 @@
 #include "moko-dialer.h"
 #include "moko-sms.h"
 #include "moko-pb.h"
+#include "moko-headset.h"
+#include "moko-sound.h"
 
 #include "moko-contacts.h"
 
@@ -340,6 +342,54 @@
     on_network_status_changed (network, status, pb);
 }
 
+static void
+headset_in_cb (DBusGProxy *proxy, const gchar *name, void *data)
+{
+    PhoneKitDialerStatus status;
+    MokoNetwork *network;
+    MokoDialer *dialer;
+
+    network = moko_network_get_default ();
+    dialer = moko_dialer_get_default (network);
+    
+    status = moko_dialer_get_status(dialer);  
+
+    moko_headset_status_set(HEADSET_STATUS_IN);
+
+    if ( PK_DIALER_NORMAL == status )
+	moko_sound_profile_set(SOUND_PROFILE_HEADSET);
+    if ( PK_DIALER_INCOMING == status )
+	moko_sound_profile_set(SOUND_PROFILE_HEADSET);
+    if ( PK_DIALER_DIALING == status )
+	moko_sound_profile_set(SOUND_PROFILE_HEADSET);
+    if ( PK_DIALER_TALKING == status )
+	moko_sound_profile_set(SOUND_PROFILE_GSM_HEADSET);
+}
+
+static void
+headset_out_cb (DBusGProxy *proxy, const gchar *name, void *data) 
+{
+    PhoneKitDialerStatus status;
+    MokoNetwork *network;
+    MokoDialer *dialer;
+
+    network = moko_network_get_default ();
+    dialer = moko_dialer_get_default (network);
+    
+    status = moko_dialer_get_status(dialer);  
+    
+    moko_headset_status_set(HEADSET_STATUS_OUT);
+
+    if ( PK_DIALER_NORMAL == status )
+	moko_sound_profile_set(SOUND_PROFILE_STEREO_OUT);
+    if ( PK_DIALER_INCOMING == status )
+	moko_sound_profile_set(SOUND_PROFILE_STEREO_OUT);
+    if ( PK_DIALER_DIALING == status )
+	moko_sound_profile_set(SOUND_PROFILE_STEREO_OUT);
+    if ( PK_DIALER_TALKING == status )
+	moko_sound_profile_set(SOUND_PROFILE_GSM_HANDSET);
+}
+
 int
 main (int argc, char **argv)
 {
@@ -349,6 +399,7 @@
   MokoPb *pb;
   DBusGConnection *connection;
   DBusGProxy *proxy;
+  DBusGProxy *headset_proxy;
   GError *error = NULL;
   guint32 ret;
 
@@ -418,6 +469,21 @@
                                        SMS_PATH,
                                        G_OBJECT (sms));
 
+  headset_proxy = dbus_g_proxy_new_for_name (connection,                                                  
+		  NULL,
+		  "/org/openmoko/PhoneKit/Headset",
+		  "org.openmoko.PhoneKit.Headset");
+  dbus_g_proxy_add_signal (headset_proxy,
+		  "HeadsetIn", G_TYPE_INVALID);
+  dbus_g_proxy_connect_signal (headset_proxy,
+		  "HeadsetIn", G_CALLBACK (headset_in_cb),
+		  NULL, NULL);
+  dbus_g_proxy_add_signal (headset_proxy,
+		  "HeadsetOut", G_TYPE_INVALID);
+  dbus_g_proxy_connect_signal (headset_proxy,
+		  "HeadsetOut", G_CALLBACK (headset_out_cb),
+		  NULL, NULL);
+
   /* Sync phonebook */
   /* XXX this is not the right place! */
   pb_sync (pb, network);

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer.c	2008-04-10 10:37:21 UTC (rev 4336)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer.c	2008-04-10 10:39:44 UTC (rev 4337)
@@ -40,6 +40,8 @@
 #include "moko-sound.h"
 #include "moko-pin.h"
 
+#include "moko-headset.h" 
+
 static void
 listener_interface_init (gpointer g_iface, gpointer iface_data);
 
@@ -435,7 +437,12 @@
   static int on_speaker = FALSE;
 
   if (on_speaker)
-    moko_sound_profile_set(SOUND_PROFILE_GSM_HANDSET);
+  {
+    if ( HEADSET_STATUS_IN == moko_headset_status_get() ) 
+      moko_sound_profile_set(SOUND_PROFILE_GSM_HEADSET);
+    else
+      moko_sound_profile_set(SOUND_PROFILE_GSM_HANDSET);
+  }  
   else
     moko_sound_profile_set(SOUND_PROFILE_GSM_SPEAKER_OUT);
 

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-sound.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-sound.c	2008-04-10 10:37:21 UTC (rev 4336)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-sound.c	2008-04-10 10:39:44 UTC (rev 4337)
@@ -27,6 +27,7 @@
   "/usr/share/openmoko/scenarios/gsmheadset.state",
   "/usr/share/openmoko/scenarios/gsmspeakerout.state",
   "/usr/share/openmoko/scenarios/stereoout.state"
+  "/usr/share/openmoko/scenarios/headset.state"
 };
 
 void moko_sound_profile_set(int profile) {

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-sound.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-sound.h	2008-04-10 10:37:21 UTC (rev 4336)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-sound.h	2008-04-10 10:39:44 UTC (rev 4337)
@@ -23,7 +23,8 @@
 enum { SOUND_PROFILE_GSM_HANDSET,
 SOUND_PROFILE_GSM_HEADSET,
 SOUND_PROFILE_GSM_SPEAKER_OUT,
-SOUND_PROFILE_STEREO_OUT };
+SOUND_PROFILE_STEREO_OUT,
+SOUND_PROFILE_HEADSET};
 
 void moko_sound_profile_set(int profile);
 void moko_sound_profile_save(int profile);

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-talking.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-talking.c	2008-04-10 10:37:21 UTC (rev 4336)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-talking.c	2008-04-10 10:39:44 UTC (rev 4337)
@@ -26,6 +26,8 @@
 #include "moko-alsa-volume-control.h"
 #include "moko-alsa-volume-scale.h"
 
+#include "moko-headset.h"
+
 G_DEFINE_TYPE (MokoTalking, moko_talking, GTK_TYPE_WIDGET)
 
 #define MOKO_TALKING_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE(obj, \
@@ -216,7 +218,10 @@
   gtk_widget_hide (priv->incoming_bar);
   gtk_widget_show_all (priv->main_bar);
 
-  moko_sound_profile_set(SOUND_PROFILE_GSM_HANDSET);
+  if ( HEADSET_STATUS_IN == moko_headset_status_get() ) 
+    moko_sound_profile_set(SOUND_PROFILE_GSM_HEADSET);
+  else
+    moko_sound_profile_set(SOUND_PROFILE_GSM_HANDSET);
 
   if (entry)
     markup = g_strdup_printf ("<b>%s</b>\n%s", entry->contact->name, number);
@@ -296,7 +301,10 @@
   gtk_widget_hide (priv->incoming_bar);
   gtk_widget_show_all (priv->main_bar);
 
-  moko_sound_profile_set(SOUND_PROFILE_GSM_HANDSET);
+  if ( HEADSET_STATUS_IN == moko_headset_status_get() ) 
+    moko_sound_profile_set(SOUND_PROFILE_GSM_HEADSET);
+  else
+    moko_sound_profile_set(SOUND_PROFILE_GSM_HANDSET);
 
   if (entry)
     markup = g_strdup_printf ("<b>%s</b>\n%s", entry->contact->name, number);
@@ -334,7 +342,10 @@
   g_return_if_fail (MOKO_IS_TALKING (talking));
   priv = talking->priv;
 
-  moko_sound_profile_set(SOUND_PROFILE_STEREO_OUT);
+  if ( HEADSET_STATUS_IN == moko_headset_status_get() ) 
+    moko_sound_profile_set(SOUND_PROFILE_HEADSET);
+  else 
+    moko_sound_profile_set(SOUND_PROFILE_STEREO_OUT);
 
   if (priv->dtimer)
     g_timer_destroy(priv->dtimer);
@@ -392,7 +403,10 @@
   if (priv->timeout)
     g_source_remove (priv->timeout);
 
-  moko_sound_profile_set(SOUND_PROFILE_STEREO_OUT);
+  if ( HEADSET_STATUS_IN == moko_headset_status_get() ) 
+    moko_sound_profile_set(SOUND_PROFILE_HEADSET);
+  else
+    moko_sound_profile_set(SOUND_PROFILE_STEREO_OUT);
   gtk_widget_hide (priv->window);
   g_signal_emit (G_OBJECT (talking), talking_signals[CANCEL_CALL], 0);
 }





More information about the commitlog mailing list