From 7e42c5bbb038fdeaf479c426040519c6a96b134c Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Thu, 9 Feb 2012 22:34:02 -0600 Subject: [PATCH] ifx: Modify XLEMA behavior XLEMA reports emergency numbers that are hardcoded (e.g. 112 and 911) and that are already read from EFecc. The additional emergency numbers we are interested in should only come from the NVM or the network NITZ update. --- drivers/ifxmodem/voicecall.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/drivers/ifxmodem/voicecall.c b/drivers/ifxmodem/voicecall.c index 5ede91c..a261213 100644 --- a/drivers/ifxmodem/voicecall.c +++ b/drivers/ifxmodem/voicecall.c @@ -811,6 +811,18 @@ static void xlema_notify(GAtResult *result, gpointer user_data) if (!g_at_result_iter_next_string(&iter, &number)) return; + /* Skip category */ + if (g_at_result_iter_skip_next(&iter) == FALSE) + goto done; + + /* Skip presence */ + if (g_at_result_iter_skip_next(&iter) == FALSE) + goto done; + + /* If we succeed here, then the number is from NVM or NITZ */ + if (g_at_result_iter_skip_next(&iter) == FALSE) + goto done; + if (vd->en_list == NULL) vd->en_list = g_new0(char *, total_cnt + 1); @@ -821,13 +833,16 @@ static void xlema_notify(GAtResult *result, gpointer user_data) } else vd->en_list[count] = g_strdup(number); +done: if (index != total_cnt) return; - ofono_voicecall_en_list_notify(vc, vd->en_list); + if (vd->en_list) { + ofono_voicecall_en_list_notify(vc, vd->en_list); - g_strfreev(vd->en_list); - vd->en_list = NULL; + g_strfreev(vd->en_list); + vd->en_list = NULL; + } } static void xlema_read(gboolean ok, GAtResult *result, gpointer user_data) -- 2.7.4