Hi Timo,
<snip>
+static void clcc_poll_dialing_cb(gboolean ok, GAtResult *result,
+ gpointer user_data)
+{
+ struct ofono_voicecall *vc = user_data;
+ struct voicecall_data *vd = ofono_voicecall_get_data(vc);
+ GSList *calls, *dialing;
+
+ if (!ok)
+ return;
+
+ calls = at_util_parse_clcc(result);
+ dialing = find_dialing(calls);
+
+ if (dialing == NULL) {
+ if (vd->clcc_source)
+ g_source_remove(vd->clcc_source);
+
+ vd->clcc_source = g_timeout_add(POLL_CLCC_DELAY,
+
poll_clcc, vc);
+ return;
+ }
+
+ clcc_poll_cb(ok, result, user_data);
I'm not entirely happy that we parse the CLCC list twice here, once in
this function and once in the clcc_poll_cb. Would setting a flag in
ciev_callsetup_notify and checking it in clcc_poll_cb be a better idea?
e.g.
if (num_active > 1 || num_held > 1)
vd->clcc_source = g_timeout_add(POLL_CLCC_INTERVAL, poll_clcc,
vc);
would go into something like:
poll_again = num_active > 1 || num_held > 1;
if (vd->flags & FLAG_NOKIA_N9_BROKEN_DIAL) {
poll_again = TRUE;
vd->flags &= FLAG_NOKIA_N9_BROKEN_DIAL;
}
if (poll_again)
....
Regards,
-Denis
_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono