summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/hfpmodem/voicecall.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/hfpmodem/voicecall.c b/drivers/hfpmodem/voicecall.c
index 7899ba67..6693280f 100644
--- a/drivers/hfpmodem/voicecall.c
+++ b/drivers/hfpmodem/voicecall.c
@@ -927,6 +927,21 @@ static void ciev_notify(GAtResult *result, gpointer user_data)
ciev_callheld_notify(vc, value);
}
+static void hfp_clcc_cb(gboolean ok, GAtResult *result, gpointer user_data)
+{
+ struct ofono_voicecall *vc = user_data;
+ struct voicecall_data *vd = ofono_voicecall_get_data(vc);
+ GSList *l;
+
+ if (!ok)
+ return;
+
+ vd->calls = at_util_parse_clcc(result);
+
+ for (l = vd->calls; l; l = l->next)
+ ofono_voicecall_notify(vc, l->data);
+}
+
static void hfp_voicecall_initialized(gboolean ok, GAtResult *result,
gpointer user_data)
{
@@ -944,6 +959,9 @@ static void hfp_voicecall_initialized(gboolean ok, GAtResult *result,
no_carrier_notify, FALSE, vc, NULL);
ofono_voicecall_register(vc);
+
+ /* Populate the call list */
+ g_at_chat_send(vd->chat, "AT+CLCC", clcc_prefix, hfp_clcc_cb, vc, NULL);
}
static int hfp_voicecall_probe(struct ofono_voicecall *vc, unsigned int vendor,