atmodem: Update parse_clcc utility function

This commit is contained in:
Denis Kenzior 2013-09-10 10:57:42 -05:00
parent 394069cb59
commit 0026ae3fb7
3 changed files with 11 additions and 4 deletions

View 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;
}

View 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,

View 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);