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