atmodem: Update parse_clcc utility function
authorDenis Kenzior <denkenz@gmail.com>
Tue, 10 Sep 2013 15:57:42 +0000 (10:57 -0500)
committerDenis Kenzior <denkenz@gmail.com>
Thu, 12 Sep 2013 18:17:39 +0000 (13:17 -0500)
drivers/atmodem/atutil.c
drivers/atmodem/atutil.h
drivers/atmodem/voicecall.c

index 1227b4d7a465031d8355ef776c5019c0e327d678..14873483a870184c94a95c5dcdffaab0fcd6efd0 100644 (file)
@@ -115,13 +115,14 @@ gint at_util_call_compare(gconstpointer a, gconstpointer b)
        return 0;
 }
 
-GSList *at_util_parse_clcc(GAtResult *result)
+GSList *at_util_parse_clcc(GAtResult *result, unsigned int *ret_mpty_ids)
 {
        GAtResultIter iter;
        GSList *l = NULL;
        int id, dir, status, type;
        ofono_bool_t mpty;
        struct ofono_call *call;
+       unsigned int mpty_ids = 0;
 
        g_at_result_iter_init(&iter, result);
 
@@ -173,8 +174,14 @@ GSList *at_util_parse_clcc(GAtResult *result)
                        call->clip_validity = 2;
 
                l = g_slist_insert_sorted(l, call, at_util_call_compare);
+
+               if (mpty)
+                       mpty_ids |= 1 << id;
        }
 
+       if (ret_mpty_ids)
+               *ret_mpty_ids = mpty_ids;
+
        return l;
 }
 
index 48b9b0d3f20f8bffc92212c7f37a0e76dc2ab2fc..5cb88b781176beef72f81d1b64e7a08ea94b5c81 100644 (file)
@@ -55,7 +55,7 @@ gint at_util_call_compare_by_status(gconstpointer a, gconstpointer b);
 gint at_util_call_compare_by_phone_number(gconstpointer a, gconstpointer b);
 gint at_util_call_compare_by_id(gconstpointer a, gconstpointer b);
 gint at_util_call_compare(gconstpointer a, gconstpointer b);
-GSList *at_util_parse_clcc(GAtResult *result);
+GSList *at_util_parse_clcc(GAtResult *result, unsigned int *mpty_ids);
 gboolean at_util_parse_reg(GAtResult *result, const char *prefix,
                                int *mode, int *status,
                                int *lac, int *ci, int *tech,
index e27eb4750161b9f410b27fa7ebf1a254e5589122..7d823a269cea0c9834147a4d9331a9cda9fcc932 100644 (file)
@@ -167,7 +167,7 @@ static void clcc_poll_cb(gboolean ok, GAtResult *result, gpointer user_data)
                return;
        }
 
-       calls = at_util_parse_clcc(result);
+       calls = at_util_parse_clcc(result, NULL);
 
        n = calls;
        o = vd->calls;
@@ -477,7 +477,7 @@ static void clcc_cb(gboolean ok, GAtResult *result, gpointer user_data)
        if (!ok)
                return;
 
-       vd->calls = at_util_parse_clcc(result);
+       vd->calls = at_util_parse_clcc(result, NULL);
 
        for (l = vd->calls; l; l = l->next)
                ofono_voicecall_notify(vc, l->data);