r1856 - trunk/src/target/OM-2007/examples/openmoko-gsmd-demo/src

mickey at sita.openmoko.org mickey at sita.openmoko.org
Fri Apr 27 13:12:00 CEST 2007


Author: mickey
Date: 2007-04-27 13:12:00 +0200 (Fri, 27 Apr 2007)
New Revision: 1856

Modified:
   trunk/src/target/OM-2007/examples/openmoko-gsmd-demo/src/demo-main.c
Log:
openmoko-gsmd-demo: can receive/initiate calls now


Modified: trunk/src/target/OM-2007/examples/openmoko-gsmd-demo/src/demo-main.c
===================================================================
--- trunk/src/target/OM-2007/examples/openmoko-gsmd-demo/src/demo-main.c	2007-04-27 11:11:40 UTC (rev 1855)
+++ trunk/src/target/OM-2007/examples/openmoko-gsmd-demo/src/demo-main.c	2007-04-27 11:12:00 UTC (rev 1856)
@@ -41,31 +41,82 @@
 static GtkLabel* network;
 static GtkLabel* signal;
 static GtkLabel* status;
+static GtkEntry* entry;
 
+static GtkTextBuffer* buffer;
+
+#include <gsmd/event.h>
+
+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",
+};
+
+
+#define my_debug(fmt,...) \
+  gtk_text_buffer_insert_at_cursor( buffer, g_strdup_printf(fmt,##__VA_ARGS__), -1 ); \
+  gtk_text_buffer_insert_at_cursor( buffer, "\n", 1 );
+
 void cb_poweron_clicked( GtkButton* button, MokoFingerWindow* window )
 {
+    my_debug( "setting antenna power to 1" );
     moko_gsmd_connection_set_antenna_power( gsm, TRUE );
 }
 
 void cb_register_clicked( GtkButton* button, MokoFingerWindow* window )
 {
+    my_debug( "calling network register" );
     moko_gsmd_connection_network_register( gsm );
 }
 
 void cb_poweroff_clicked( GtkButton* button, MokoFingerWindow* window )
 {
+    my_debug( "setting antenna power to 0" );
     moko_gsmd_connection_set_antenna_power( gsm, FALSE );
 }
 
+void cb_acceptcall_clicked( GtkButton* button, MokoFingerWindow* window )
+{
+    my_debug( "accepting voice call" );
+    moko_gsmd_connection_voice_accept( gsm );
+}
+
+void cb_dial_clicked( GtkButton* button, MokoFingerWindow* window )
+{
+    my_debug( "dialing %s", gtk_entry_get_text( entry ) );
+    moko_gsmd_connection_voice_dial( gsm, gtk_entry_get_text( entry ) );
+}
+
+void cb_hangup_clicked( GtkButton* button, MokoFingerWindow* window )
+{
+    my_debug( "hanging up" );
+    moko_gsmd_connection_voice_hangup( gsm );
+}
+
 void cb_signal_strength_changed( MokoGsmdConnection* connection, int value, gpointer user_data )
 {
-    g_debug( "openmoko-gsmd-demo: signal strength changed" );
+    my_debug( "signal strength changed: %d", value );
     gtk_label_set_text( signal, g_strdup_printf( "Signal Strength: %d", value ) );
 }
 
 void cb_network_registration( MokoGsmdConnection* connection, int type, int lac, int cell )
 {
-    g_debug( "openmoko-gsmd-demo: network registration" );
+    my_debug( "network registration %d, %d, %d", type, lac, cell );
     if ( type == 0 )
         gtk_label_set_text( status, "Not Searching..." );
     else
@@ -85,9 +136,25 @@
     }
 }
 
+void cb_incoming_call( MokoGsmdConnection* connection, int type )
+{
+    my_debug( "incoming call type -- type = %d", type );
+}
+
+void cb_incoming_call_progress( MokoGsmdConnection* connection, int code )
+{
+    my_debug( "call progress -- code = %d (%s)", code, cprog_names[code] );
+    gtk_label_set_text( status, cprog_names[code] );
+}
+
+void cb_incoming_clip( MokoGsmdConnection* connection, char* number )
+{
+    my_debug( "incoming number -- number = %s", number );
+}
+
 int main( int argc, char** argv )
 {
-    g_debug( "openmoko-gsmd-demo starting up" );
+    g_debug( "starting up" );
     /* Initialize GTK+ */
     gtk_init( &argc, &argv );
 
@@ -118,25 +185,40 @@
     status = gtk_label_new( "Idle" );
     GtkLabel* label2 = gtk_label_new( "Press buttons to experiment..." );
 
+    entry = gtk_entry_new();
+
     GtkTable* table = gtk_table_new( 4, 3, TRUE );
 
     GtkButton* button1 = gtk_button_new_with_label( "Power-On" );
     g_signal_connect( G_OBJECT(button1), "clicked", G_CALLBACK(cb_poweron_clicked), window );
-    gtk_table_attach_defaults( GTK_BOX(table), GTK_WIDGET(button1), 0, 1, 0, 1 );
-
+    gtk_table_attach_defaults( GTK_BOX(table), GTK_WIDGET(button1), 0, 1, 1, 2 );
     GtkButton* button2 = gtk_button_new_with_label( "Register" );
     g_signal_connect( G_OBJECT(button2), "clicked", G_CALLBACK(cb_register_clicked), window );
-    gtk_table_attach_defaults( GTK_BOX(table), GTK_WIDGET(button2), 1, 2, 0, 1 );
-
+    gtk_table_attach_defaults( GTK_BOX(table), GTK_WIDGET(button2), 1, 2, 1, 2 );
     GtkButton* button3 = gtk_button_new_with_label( "Power-Off" );
     g_signal_connect( G_OBJECT(button3), "clicked", G_CALLBACK(cb_poweroff_clicked), window );
-    gtk_table_attach_defaults( GTK_BOX(table), GTK_WIDGET(button3), 2, 3, 0, 1 );
+    gtk_table_attach_defaults( GTK_BOX(table), GTK_WIDGET(button3), 2, 3, 1, 2 );
 
+    GtkButton* button4 = gtk_button_new_with_label( "Accept Call" );
+    g_signal_connect( G_OBJECT(button4), "clicked", G_CALLBACK(cb_acceptcall_clicked), window );
+    gtk_table_attach_defaults( GTK_BOX(table), GTK_WIDGET(button4), 0, 1, 0, 1 );
+    GtkButton* button5 = gtk_button_new_with_label( "Dial" );
+    g_signal_connect( G_OBJECT(button5), "clicked", G_CALLBACK(cb_dial_clicked), window );
+    gtk_table_attach_defaults( GTK_BOX(table), GTK_WIDGET(button5), 1, 2, 0, 1 );
+    GtkButton* button6 = gtk_button_new_with_label( "Hangup" );
+    g_signal_connect( G_OBJECT(button6), "clicked", G_CALLBACK(cb_hangup_clicked), window );
+    gtk_table_attach_defaults( GTK_BOX(table), GTK_WIDGET(button6), 2, 3, 0, 1 );
+
+    GtkTextView* textview = gtk_text_view_new();
+    buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(textview) );
+
     gtk_box_pack_start( vbox, GTK_WIDGET(label0), FALSE, FALSE, 0 );
     gtk_box_pack_start( vbox, GTK_WIDGET(network), FALSE, FALSE, 0 );
     gtk_box_pack_start( vbox, GTK_WIDGET(signal), FALSE, FALSE, 0 );
     gtk_box_pack_start( vbox, GTK_WIDGET(status), FALSE, FALSE, 0 );
+    gtk_box_pack_start( vbox, GTK_WIDGET(entry), FALSE, FALSE, 0 );
     gtk_box_pack_start( vbox, GTK_WIDGET(table), TRUE, TRUE, 0 );
+    gtk_box_pack_start( vbox, GTK_WIDGET(textview), TRUE, TRUE, 0 );
     gtk_box_pack_start( vbox, GTK_WIDGET(label2), FALSE, FALSE, 0 );
 
     moko_finger_window_set_contents( window, GTK_WIDGET(vbox) );
@@ -145,14 +227,18 @@
 
     g_signal_connect( G_OBJECT(gsm), "signal-strength-changed", G_CALLBACK(cb_signal_strength_changed), NULL );
     g_signal_connect( G_OBJECT(gsm), "network-registration", G_CALLBACK(cb_network_registration), NULL );
+    g_signal_connect( G_OBJECT(gsm), "incoming-call", G_CALLBACK(cb_incoming_call), NULL );
+    g_signal_connect( G_OBJECT(gsm), "call-progress", G_CALLBACK(cb_incoming_call_progress), NULL );
+    g_signal_connect( G_OBJECT(gsm), "incoming-clip", G_CALLBACK(cb_incoming_clip), NULL );
 
     /* show everything and run main loop */
     gtk_widget_show_all( GTK_WIDGET(window) );
-    g_debug( "openmoko-gsmd-demo entering main loop" );
+    g_debug( "entering main loop" );
     gtk_main();
-    g_debug( "openmoko-gsmd-demo left main loop" );
+    g_debug( "left main loop" );
 
     g_object_unref( G_OBJECT(gsm) );
 
+    g_debug( "shutting down" );
     return 0;
 }





More information about the commitlog mailing list