From 7a0c5030364689620d0ef03573f3ab53e0727be3 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Fri, 12 Mar 2010 10:16:24 -0800 Subject: cdma: use E1 parser to ignore re-echoed commands Some modems turn E1 on and off random (Huawei EC168C) and sometimes the echoed command confuses things. We have a parser just for that, so let's use it. It should be safe to use with devices that repect E0 too. --- src/mm-generic-cdma.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/mm-generic-cdma.c b/src/mm-generic-cdma.c index ff156412..d93dc915 100644 --- a/src/mm-generic-cdma.c +++ b/src/mm-generic-cdma.c @@ -151,9 +151,9 @@ mm_generic_cdma_grab_port (MMGenericCdma *self, if (port && MM_IS_SERIAL_PORT (port)) { g_object_set (G_OBJECT (port), MM_PORT_CARRIER_DETECT, FALSE, NULL); mm_serial_port_set_response_parser (MM_SERIAL_PORT (port), - mm_serial_parser_v1_parse, - mm_serial_parser_v1_new (), - mm_serial_parser_v1_destroy); + mm_serial_parser_v1_e1_parse, + mm_serial_parser_v1_e1_new (), + mm_serial_parser_v1_e1_destroy); if (ptype == MM_PORT_TYPE_PRIMARY) { priv->primary = MM_SERIAL_PORT (port); -- cgit v1.2.3-70-g09d2 From cda38d390adbb78fb9fc644a205278747aa27818 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Fri, 12 Mar 2010 12:07:08 -0800 Subject: cdma: fix Simple.GetStatus to actually work --- src/mm-generic-cdma.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/mm-generic-cdma.c b/src/mm-generic-cdma.c index d93dc915..f95200b4 100644 --- a/src/mm-generic-cdma.c +++ b/src/mm-generic-cdma.c @@ -1612,16 +1612,26 @@ simple_uint_value (guint32 i) return val; } +#define SS_HASH_TAG "simple-get-status" + static void simple_status_got_signal_quality (MMModem *modem, guint32 result, GError *error, gpointer user_data) { - if (error) + MMCallbackInfo *info = (MMCallbackInfo *) user_data; + GHashTable *properties; + + if (error) { + info->error = g_error_copy (error); g_warning ("Error getting signal quality: %s", error->message); - else - g_hash_table_insert ((GHashTable *) user_data, "signal_quality", simple_uint_value (result)); + } else { + properties = (GHashTable *) mm_callback_info_get_data (info, SS_HASH_TAG); + g_hash_table_insert (properties, "signal_quality", simple_uint_value (result)); + } + + mm_callback_info_schedule (info); } static void @@ -1630,7 +1640,7 @@ simple_get_status_invoke (MMCallbackInfo *info) MMModemSimpleGetStatusFn callback = (MMModemSimpleGetStatusFn) info->callback; callback (MM_MODEM_SIMPLE (info->modem), - (GHashTable *) mm_callback_info_get_data (info, "simple-get-status"), + (GHashTable *) mm_callback_info_get_data (info, SS_HASH_TAG), info->error, info->user_data); } @@ -1647,9 +1657,9 @@ simple_get_status (MMModemSimple *simple, G_CALLBACK (callback), user_data); - properties = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, simple_free_gvalue); - mm_callback_info_set_data (info, "simple-get-status", properties, (GDestroyNotify) g_hash_table_unref); - mm_modem_cdma_get_signal_quality (MM_MODEM_CDMA (simple), simple_status_got_signal_quality, properties); + properties = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, simple_free_gvalue); + mm_callback_info_set_data (info, SS_HASH_TAG, properties, (GDestroyNotify) g_hash_table_unref); + mm_modem_cdma_get_signal_quality (MM_MODEM_CDMA (simple), simple_status_got_signal_quality, info); } /*****************************************************************************/ -- cgit v1.2.3-70-g09d2