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