summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md1
-rw-r--r--binding/gdbus/ofono_voicecallmanager.c12
-rw-r--r--binding/gdbus/ofono_voicecallmanager.h1
-rw-r--r--binding/telephony-binding.c21
4 files changed, 35 insertions, 0 deletions
diff --git a/README.md b/README.md
index ac3f623..34ca312 100644
--- a/README.md
+++ b/README.md
@@ -11,6 +11,7 @@ Telephony service allows respective clients access to the Handsfree Profile via
| subscribe | subscribe to telephony events | *Request:* {"value": "callStateChanged"} |
| unsubscribe | unsubscribe to telephony events | *Request:* {"value": "callStateChanged"} |
| dial | dial respective number | *Request:* {"value": "15035551212"} |
+| send_tones | send tone through the active call | *Request:* {"value": "1"} |
| hangup | hangup an active call or reject incoming call | |
| answer | answer incoming call | |
| get_battery_level | getting battery level of connected phone device | |
diff --git a/binding/gdbus/ofono_voicecallmanager.c b/binding/gdbus/ofono_voicecallmanager.c
index 462ce08..7e8f407 100644
--- a/binding/gdbus/ofono_voicecallmanager.c
+++ b/binding/gdbus/ofono_voicecallmanager.c
@@ -163,6 +163,18 @@ int ofono_voicecallmanager_last_dial(OrgOfonoVoiceCallManager *manager)
return -1;
}
+int ofono_voicecallmanager_send_tones(OrgOfonoVoiceCallManager *manager, const gchar *number)
+{
+ if (!manager) {
+ AFB_ERROR("Ofono VoiceCallmanager uninitialized\n");
+ return -1;
+ }
+
+ if (org_ofono_voice_call_manager_call_send_tones_sync(manager, number, NULL, NULL))
+ return 0;
+ return -1;
+}
+
void ofono_voicecallmanager_hangup_all(OrgOfonoVoiceCallManager *manager)
{
GError *error = NULL;
diff --git a/binding/gdbus/ofono_voicecallmanager.h b/binding/gdbus/ofono_voicecallmanager.h
index 1a14111..c878cfc 100644
--- a/binding/gdbus/ofono_voicecallmanager.h
+++ b/binding/gdbus/ofono_voicecallmanager.h
@@ -26,4 +26,5 @@ OrgOfonoVoiceCallManager
void ofono_voicecallmanager_free(OrgOfonoVoiceCallManager *);
gchar *ofono_voicecallmanager_dial(OrgOfonoVoiceCallManager *, gchar *, gchar *);
int ofono_voicecallmanager_last_dial(OrgOfonoVoiceCallManager *manager);
+gboolean ofono_voicecallmanager_send_tones(OrgOfonoVoiceCallManager *manager, const char *call_path);
void ofono_hangup_all(OrgOfonoVoiceCallManager *);
diff --git a/binding/telephony-binding.c b/binding/telephony-binding.c
index dce0ef9..2f96338 100644
--- a/binding/telephony-binding.c
+++ b/binding/telephony-binding.c
@@ -79,6 +79,23 @@ static void last_dial(afb_req_t request)
}
}
+static void send_tones(afb_req_t request)
+{
+ const char *value = afb_req_value(request, "value");
+
+ if (!voice_call) {
+ AFB_ERROR("send_tones: cannot send tone without active call");
+ afb_req_fail(request, "there is no active call", NULL);
+ } else {
+ if (!ofono_voicecallmanager_send_tones(vcm, value)) {
+ afb_req_success(request, NULL, NULL);
+ } else {
+ AFB_ERROR("send_tones: failed to send tone\n");
+ afb_req_fail(request, "failed send tone", NULL);
+ }
+ }
+}
+
static void hangup(afb_req_t request)
{
if (voice_call) {
@@ -364,6 +381,10 @@ static const afb_verb_t verbs[]= {
.callback = last_dial,
},
{
+ .verb = "send_tones",
+ .callback = send_tones,
+ },
+ {
.verb = "hangup",
.callback = hangup,
},