ifx: Modify XLEMA behavior
authorDenis Kenzior <denkenz@gmail.com>
Fri, 10 Feb 2012 04:34:02 +0000 (22:34 -0600)
committerDenis Kenzior <denkenz@gmail.com>
Fri, 10 Feb 2012 04:34:02 +0000 (22:34 -0600)
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

index 5ede91c..a261213 100644 (file)
@@ -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)