aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTambet Ingo <tambet@gmail.com>2008-11-18 12:35:34 +0200
committerTambet Ingo <tambet@gmail.com>2008-11-18 12:35:34 +0200
commitcf2344381ceabd9ac15bfea1ddd57c81a62b16da (patch)
treecd139fa8ecf1adf4a49e252f58158f4bcfd33380
parentca4de81fa3bcd54cef3a9c3c4a72ec4d79ceec85 (diff)
Make +CMEE optional for CDMA modems.
It's mandatory by spec, so it really shouldn't be optional. Need to figure out which CDMA modems have problems with it and implement plugin for them.
-rw-r--r--src/mm-generic-cdma.c30
1 files changed, 26 insertions, 4 deletions
diff --git a/src/mm-generic-cdma.c b/src/mm-generic-cdma.c
index b1c04706..a53b7a41 100644
--- a/src/mm-generic-cdma.c
+++ b/src/mm-generic-cdma.c
@@ -32,6 +32,21 @@ mm_generic_cdma_new (const char *serial_device, const char *driver)
/*****************************************************************************/
static void
+enable_error_reporting_done (MMSerial *serial,
+ GString *response,
+ GError *error,
+ gpointer user_data)
+{
+ MMCallbackInfo *info = (MMCallbackInfo *) user_data;
+
+ if (error)
+ g_warning ("Your CDMA modem does not support +CMEE command");
+
+ /* Ignore errors, see FIXME in init_done() */
+ mm_callback_info_schedule (info);
+}
+
+static void
init_done (MMSerial *serial,
GString *response,
GError *error,
@@ -39,16 +54,23 @@ init_done (MMSerial *serial,
{
MMCallbackInfo *info = (MMCallbackInfo *) user_data;
- if (error)
+ if (error) {
info->error = g_error_copy (error);
-
- mm_callback_info_schedule (info);
+ mm_callback_info_schedule (info);
+ } else {
+ /* Try to enable better error reporting. My experience so far indicates
+ there's some CDMA modems that does not support that.
+ FIXME: It's mandatory by spec, so it really shouldn't be optional. Figure
+ out which CDMA modems have problems with it and implement plugin for them.
+ */
+ mm_serial_queue_command (serial, "+CMEE=1", 3, enable_error_reporting_done, user_data);
+ }
}
static void
flash_done (MMSerial *serial, gpointer user_data)
{
- mm_serial_queue_command (serial, "Z E0 V1 X4 &C1 +CMEE=1", 3, init_done, user_data);
+ mm_serial_queue_command (serial, "Z E0 V1 X4 &C1", 3, init_done, user_data);
}
static void