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