r553 - trunk/src/target/OM-2007/applications/openmoko-dialer/src

tony_guan at gta01.hmw-consulting.de tony_guan at gta01.hmw-consulting.de
Mon Jan 15 10:04:16 CET 2007


Author: tony_guan
Date: 2007-01-15 10:03:49 +0100 (Mon, 15 Jan 2007)
New Revision: 553

Modified:
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialergsm.c
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/event.c
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/moko-dialer-includes.h
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-main.c
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-talking.c
Log:
Outgoing call status detection added.


Modified: trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialergsm.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialergsm.c	2007-01-15 08:20:55 UTC (rev 552)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialergsm.c	2007-01-15 09:03:49 UTC (rev 553)
@@ -271,3 +271,9 @@
 	return;
 
 }
+
+void gsm_dtmf_send(char dtmf)
+{
+	DBG_MESSAGE("lgsm_voice_dtmf");
+	lgsm_voice_dtmf(lgsmh, dtmf);
+}

Modified: trunk/src/target/OM-2007/applications/openmoko-dialer/src/event.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/event.c	2007-01-15 08:20:55 UTC (rev 552)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/event.c	2007-01-15 09:03:49 UTC (rev 553)
@@ -8,6 +8,9 @@
 static int ClipSignaled;///<to keep communication with GUI
 static int KeepCalling;
 
+#ifndef ARRAY_SIZE
+#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
+#endif
 
 int event_get_incoming_signaled()
 {
@@ -134,21 +137,85 @@
 	printf("EVENT: Signal Quality: %u\n", aux->u.signal.sigq.rssi);
 	return 0;
 }
-static int out_status_handler(struct lgsm_handle *lh, int evt, struct gsmd_evt_auxdata *aux)
+static const char *cprog_names[] = {
+	[GSMD_CALLPROG_SETUP]		= "SETUP",
+	[GSMD_CALLPROG_DISCONNECT]	= "DISCONNECT",
+	[GSMD_CALLPROG_ALERT]		= "ALERT",
+	[GSMD_CALLPROG_CALL_PROCEED]	= "PROCEED",
+	[GSMD_CALLPROG_SYNC]		= "SYNC",
+	[GSMD_CALLPROG_PROGRESS]	= "PROGRESS",
+	[GSMD_CALLPROG_CONNECTED]	= "CONNECTED",
+	[GSMD_CALLPROG_RELEASE]		= "RELEASE",
+	[GSMD_CALLPROG_REJECT]		= "REJECT",
+	[GSMD_CALLPROG_UNKNOWN]		= "UNKNOWN",
+};
+
+static const char *cdir_names[] = {
+	[GSMD_CALL_DIR_MO]		= "Outgoing",
+	[GSMD_CALL_DIR_MT]		= "Incoming",
+	[GSMD_CALL_DIR_CCBS]		= "CCBS",
+	[GSMD_CALL_DIR_MO_REDIAL]	= "Outgoing Redial",
+};
+
+static int cprog_handler(struct lgsm_handle *lh, int evt, struct gsmd_evt_auxdata *aux)
 {
-	printf("EVENT: OUT GOING CALL status\n");
+	const char *name, *dir;
+
+	if (aux->u.call_status.prog >= ARRAY_SIZE(cprog_names))
+		name = "UNDEFINED";
+	else
+		name = cprog_names[aux->u.call_status.prog];
+
+	if (aux->u.call_status.dir >= ARRAY_SIZE(cdir_names))
+		dir = "";
+	else
+		dir = cdir_names[aux->u.call_status.dir];
+
+	printf("EVENT: %s Call Progress: %s\n", dir, name);
+
+	if(aux->u.call_status.prog==GSMD_CALLPROG_CONNECTED)
+		{
+		
+		if(aux->u.call_status.dir==GSMD_CALL_DIR_MO)
+			gsm_peer_accept();
+		}
+
+	if(aux->u.call_status.prog==GSMD_CALLPROG_REJECT)
+		{
+		if(aux->u.call_status.dir==GSMD_CALL_DIR_MO)
+			gsm_peer_refuse();
+		}
+
+	if(aux->u.call_status.prog==GSMD_CALLPROG_DISCONNECT)
+		{
+		if(aux->u.call_status.dir==GSMD_CALL_DIR_MO)
+					gsm_peer_disconnect();
+
+		}
+
+
 	return 0;
 }
 
+static int colp_handler(struct lgsm_handle *lh, int evt, struct gsmd_evt_auxdata *aux)
+{
+	printf("EVENT: Outgoing call colp = %s\n", aux->u.colp.addr.number);
 
+	return 0;
+}
+
+
 int event_init(struct lgsm_handle *lh)
 {
 	int rc;
 
 	rc  = lgsm_evt_handler_register(lh, GSMD_EVT_IN_CALL, &incall_handler);
 	rc |= lgsm_evt_handler_register(lh, GSMD_EVT_IN_CLIP, &clip_handler);
+	rc |= lgsm_evt_handler_register(lh, GSMD_EVT_OUT_COLP, &colp_handler);
 	rc |= lgsm_evt_handler_register(lh, GSMD_EVT_NETREG, &netreg_handler);
 	rc |= lgsm_evt_handler_register(lh, GSMD_EVT_SIGNAL, &sigq_handler);
-	//rc|=lgsm_evt_handler_register(lh, GSMD_EVT_OUT_STATUS, &out_status_handler);
+	rc |= lgsm_evt_handler_register(lh, GSMD_EVT_OUT_STATUS, &cprog_handler);
+
 	return rc;
 }
+

Modified: trunk/src/target/OM-2007/applications/openmoko-dialer/src/moko-dialer-includes.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/moko-dialer-includes.h	2007-01-15 08:20:55 UTC (rev 552)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/moko-dialer-includes.h	2007-01-15 09:03:49 UTC (rev 553)
@@ -101,5 +101,8 @@
 	N_COLUMN
 };
 void gsm_incoming_call(gchar * number);
-
+void gsm_peer_accept();
+void gsm_peer_abort();
+void gsm_peer_disconnect();
+void gsm_peer_refuse();
 #endif

Modified: trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-main.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-main.c	2007-01-15 08:20:55 UTC (rev 552)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-main.c	2007-01-15 09:03:49 UTC (rev 553)
@@ -84,6 +84,55 @@
 
 }
 
+void gsm_peer_accept()
+{
+MOKO_DIALER_APP_DATA* appdata=moko_get_app_data();
+DBG_ENTER();
+//moko_dialer_status_update_icon(appdata->status_outgoing);
+
+
+appdata->g_state.callstate=STATE_TALKING;
+
+gtk_widget_hide(appdata->window_outgoing);
+
+if(!appdata->window_talking)
+	window_talking_init(appdata);
+
+//transfer the contact info
+window_talking_prepare(appdata);
+
+//start talking.
+
+gtk_widget_show(appdata->window_talking);
+
+
+DBG_LEAVE();
+}
+
+void gsm_peer_refuse()
+{
+MOKO_DIALER_APP_DATA* appdata=moko_get_app_data();
+window_outgoing_fails(appdata);
+}
+
+void gsm_peer_abort()
+{
+
+MOKO_DIALER_APP_DATA* appdata=moko_get_app_data();
+if(appdata->window_incoming)
+	gtk_widget_hide(appdata->window_incoming);
+
+
+}
+
+void gsm_peer_disconnect()
+{
+
+     MOKO_DIALER_APP_DATA* appdata=moko_get_app_data();
+     gsm_hangup();
+     gtk_widget_hide(appdata->window_talking);
+
+}
 int main( int argc, char** argv )
 {
     p_dialer_data=calloc(1,sizeof(MOKO_DIALER_APP_DATA));

Modified: trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-talking.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-talking.c	2007-01-15 08:20:55 UTC (rev 552)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-talking.c	2007-01-15 09:03:49 UTC (rev 553)
@@ -99,6 +99,10 @@
 
 moko_dialer_textview_insert(moko_dtmf_text_view, input);
 
+
+gsm_dtmf_send(input[0]);
+//lgsm_voice_dtmf(lgsmh, buf[1]);
+
 }
 
 





More information about the commitlog mailing list