r3456 - in trunk/src/target/OM-2007.2/applications/openmoko-dialer2: . src/phone-kit

thomas at sita.openmoko.org thomas at sita.openmoko.org
Tue Nov 20 18:42:13 CET 2007


Author: thomas
Date: 2007-11-20 18:42:11 +0100 (Tue, 20 Nov 2007)
New Revision: 3456

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
   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.h
Log:
* src/phone-kit/moko-dialer.c: (moko_dialer_get_status),
(moko_dialer_dial), (moko_dialer_class_init), (dialer_init_gsmd):
* src/phone-kit/moko-dialer.h:

- Return error messages when d-bus functions fail.
- Try to re-connect to gsmd on each d-bus function rather than only on
initialisation


Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog	2007-11-20 17:33:27 UTC (rev 3455)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog	2007-11-20 17:42:11 UTC (rev 3456)
@@ -1,3 +1,13 @@
+2007-11-20  Thomas Wood  <thomas at openedhand.com>
+
+	* src/phone-kit/moko-dialer.c: (moko_dialer_get_status),
+	(moko_dialer_dial), (moko_dialer_class_init), (dialer_init_gsmd):
+	* src/phone-kit/moko-dialer.h:
+
+	- Return error messages when d-bus functions fail.
+	- Try to re-connect to gsmd on each d-bus function rather than only on
+	initialisation
+
 2007-11-20  Chris Lord  <chris at openedhand.com>
 
 	* src/phone-kit/moko-dialer-sms.c: (moko_dialer_sms_finalize),

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	2007-11-20 17:33:27 UTC (rev 3455)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer.c	2007-11-20 17:42:11 UTC (rev 3456)
@@ -76,10 +76,12 @@
 
 static guint dialer_signals[LAST_SIGNAL] = {0, };
 
+static MokoGsmdConnection * dialer_init_gsmd (MokoDialer *dialer);
+
 /* DBus functions */
 
 static gboolean
-moko_dialer_get_status (MokoDialer *dialer, gint *OUT_status, GError *error)
+moko_dialer_get_status (MokoDialer *dialer, gint *OUT_status, GError **error)
 {
   MokoDialerPrivate *priv;
   
@@ -92,7 +94,7 @@
 }
 
 gboolean
-moko_dialer_dial (MokoDialer *dialer, const gchar *number, GError *error)
+moko_dialer_dial (MokoDialer *dialer, const gchar *number, GError **error)
 {
 
   MokoDialerPrivate *priv;
@@ -104,6 +106,16 @@
 
   g_debug ("Received dial request: %s", number);
 
+
+  if (!priv->connection)
+    priv->connection = dialer_init_gsmd (dialer);
+  
+  if (!priv->connection)
+  {
+    *error = g_error_new (PHONE_KIT_DIALER_ERROR, PK_DIALER_ERROR_GSMD, "Could not connect to gsmd");
+    return FALSE;
+  }
+
   /* check current dialer state */
   if (0 || priv->status != DIALER_STATUS_NORMAL)
   {
@@ -113,14 +125,10 @@
       "Dialing",
       "Outgoing Call"
     };
-	/*
-	GtkWidget *dlg;
-    dlg = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
-        "Cannot dial when dialer is busy.\nCurrent status = %s", strings[priv->status]);
-    gtk_dialog_run (GTK_DIALOG (dlg));
-    gtk_widget_destroy (dlg);
-    */
+
     g_warning ("Cannot dial when dialer is busy. Current status = %s\n", strings[priv->status]);
+    
+    *error = g_error_new (PHONE_KIT_DIALER_ERROR, PK_DIALER_ERROR_BUSY, "Dialer busy");
 
     return FALSE;
   }
@@ -140,15 +148,10 @@
       "",
       "Roaming network registered"
     };
-      /*
-	GtkWidget *dlg;
-    dlg = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
-        "Not connected to network.\nCurrent status = %s ", strings[priv->registered]);
-    gtk_dialog_run (GTK_DIALOG (dlg));
-    gtk_widget_destroy (dlg);
-	*/
-	g_warning ("Not connected to network.\nCurrent status = %s ", strings[priv->registered]);
 
+    g_warning ("Not connected to network.\nCurrent status = %s ", strings[priv->registered]);
+    *error = g_error_new (PHONE_KIT_DIALER_ERROR, PK_DIALER_ERROR_NOT_CONNECTED, "No Network");
+
     /* no point continuing if we're not connected to a network! */
     priv->status = DIALER_STATUS_NORMAL;
     return FALSE;
@@ -176,10 +179,23 @@
 }
 
 static gboolean
-moko_dialer_hang_up (MokoDialer *dialer, const gchar *message, GError *error)
+moko_dialer_hang_up (MokoDialer *dialer, const gchar *message, GError **error)
 {
+  MokoDialerPrivate *priv;
+
+  priv = dialer->priv; 
   g_return_val_if_fail (MOKO_IS_DIALER (dialer), FALSE);
+
+  /* check for gsmd connection */
+  if (!priv->connection)
+    priv->connection = dialer_init_gsmd (dialer);
   
+  if (!priv->connection)
+  {
+    *error = g_error_new (PHONE_KIT_DIALER_ERROR, PK_DIALER_ERROR_GSMD, "Could not connect to gsmd");
+    return FALSE;
+  }
+
   /* FIXME: Create a dialog and let the user know that another program is
    * requesting the connection be dropped, and why ($message).
    */
@@ -661,45 +677,30 @@
 static void
 dialer_display_error (GError *err)
 {
-  /* GtkWidget *dlg; */
-
   if (!err)
     return;
-  /*
-  dlg = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Dialer: %s", err->message);
-  gtk_dialog_run (GTK_DIALOG (dlg));
-  gtk_widget_destroy (dlg);
-  */
   g_warning (err->message);
 }
 
-static void
-moko_dialer_init (MokoDialer *dialer)
+static MokoGsmdConnection *
+dialer_init_gsmd (MokoDialer *dialer)
 {
+  GError *err = NULL;
+  MokoGsmdConnection *conn;
   MokoDialerPrivate *priv;
-  MokoGsmdConnection *conn;
-  GError *err = NULL;
-
   priv = dialer->priv = MOKO_DIALER_GET_PRIVATE (dialer);
 
-  /* create the dialer_data struct */
-  priv->status = DIALER_STATUS_NORMAL;
-  
-  /* clear incoming clip */
-  priv->incoming_clip = NULL;
-
-  /* Initialise the contacts list */
-  //contact_init_contact_data (&(priv->data->g_contactlist));
-
   /* Init the gsmd connection, and power it up */
-  conn = priv->connection = moko_gsmd_connection_new ();
+  conn = moko_gsmd_connection_new ();
   moko_gsmd_connection_set_antenna_power (conn, TRUE, &err);
 
   dialer_display_error (err);
   if (err && err->code == MOKO_GSMD_ERROR_CONNECT)
-    exit (1); /* no point continuing if we can't connect to gsmd? */
+  {
+    g_object_unref (conn);
+    return NULL;
+  }
 
- 
   /* Connect to the gsmd signals */
   g_signal_connect (G_OBJECT (conn), "network-registration", 
                     G_CALLBACK (on_network_registered), (gpointer)dialer);
@@ -716,7 +717,28 @@
    *  moko_gsmd_connection_get_network_status always seems to return 0 here */
   priv->registered = MOKO_GSMD_CONNECTION_NETREG_SEARCHING;
   moko_gsmd_connection_network_register (conn);
- 
+
+  return conn;
+}
+
+static void
+moko_dialer_init (MokoDialer *dialer)
+{
+  MokoDialerPrivate *priv;
+
+  priv = dialer->priv = MOKO_DIALER_GET_PRIVATE (dialer);
+
+  /* create the dialer_data struct */
+  priv->status = DIALER_STATUS_NORMAL;
+  
+  /* clear incoming clip */
+  priv->incoming_clip = NULL;
+
+  /* Initialise the contacts list */
+  //contact_init_contact_data (&(priv->data->g_contactlist));
+
+  priv->connection = dialer_init_gsmd (dialer);
+
   /* Set up the journal */
   priv->journal = moko_journal_open_default ();
   if (!priv->journal || !moko_journal_load_from_storage (priv->journal))

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer.h	2007-11-20 17:33:27 UTC (rev 3455)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer.h	2007-11-20 17:42:11 UTC (rev 3456)
@@ -43,6 +43,14 @@
 #define MOKO_DIALER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \
         MOKO_TYPE_DIALER, MokoDialerClass))
 
+#define PHONE_KIT_DIALER_ERROR g_quark_from_static_string("phone-kit-dialer")
+
+typedef enum {
+  PK_DIALER_ERROR_BUSY,
+  PK_DIALER_ERROR_GSMD,
+  PK_DIALER_ERROR_NOT_CONNECTED
+} PhoneKitDialerError;
+
 typedef struct _MokoDialer MokoDialer;
 typedef struct _MokoDialerClass MokoDialerClass;
 typedef struct _MokoDialerPrivate MokoDialerPrivate;
@@ -53,7 +61,6 @@
   DIALER_STATUS_INCOMING,
   DIALER_STATUS_DIALING,
   DIALER_STATUS_TALKING
-
 };
 
 struct _MokoDialer
@@ -97,13 +104,13 @@
 moko_dialer_get_default (void);
 
 gboolean
-moko_dialer_show_dialer (MokoDialer *dialer, GError *error);
+moko_dialer_show_dialer (MokoDialer *dialer, GError **error);
 
 gboolean
-moko_dialer_show_missed_calls (MokoDialer *dialer, GError *error);
+moko_dialer_show_missed_calls (MokoDialer *dialer, GError **error);
 
 gboolean
-moko_dialer_dial (MokoDialer *dialer, const gchar *number, GError *error);
+moko_dialer_dial (MokoDialer *dialer, const gchar *number, GError **error);
 
 void
 moko_dialer_outgoing_call (MokoDialer *dialer, const gchar *number);





More information about the commitlog mailing list