summaryrefslogtreecommitdiffstats
path: root/audio/headset.c
diff options
context:
space:
mode:
Diffstat (limited to 'audio/headset.c')
-rw-r--r--audio/headset.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/audio/headset.c b/audio/headset.c
index 40cd23f5..2fce7b8c 100644
--- a/audio/headset.c
+++ b/audio/headset.c
@@ -848,6 +848,18 @@ static int subscriber_number(struct audio_device *device, const char *buf)
return 0;
}
+int telephony_list_current_calls_rsp(void *telephony_device, cme_error_t err)
+{
+ return telephony_generic_rsp(telephony_device, err);
+}
+
+static int list_current_calls(struct audio_device *device, const char *buf)
+{
+ telephony_list_current_calls_req(device);
+
+ return 0;
+}
+
static struct event event_callbacks[] = {
{ "ATA", answer_call },
{ "ATD", dial_number },
@@ -863,6 +875,7 @@ static struct event event_callbacks[] = {
{ "AT+BLDN", last_dialed_number },
{ "AT+VTS", dtmf_tone },
{ "AT+CNUM", subscriber_number },
+ { "AT+CLCC", list_current_calls },
{ 0 }
};
@@ -2175,3 +2188,23 @@ int telephony_ready_ind(uint32_t features,
return 0;
}
+
+int telephony_list_current_call_ind(int idx, int dir, int status, int mode,
+ int mprty, const char *number,
+ int type)
+{
+ if (!active_devices)
+ return -ENODEV;
+
+ if (number)
+ send_foreach_headset(active_devices,
+ "\r\n+CLCC:%d,%d,%d,%d,%d,%s,%d\r\n",
+ idx, dir, status, mode, mprty,
+ number, type);
+ else
+ send_foreach_headset(active_devices,
+ "\r\n+CLCC:%d,%d,%d,%d,%d\r\n",
+ idx, dir, status, mode, mprty);
+
+ return 0;
+}