summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--call.c24
-rw-r--r--samsung-ril.c6
-rw-r--r--samsung-ril.h2
3 files changed, 32 insertions, 0 deletions
diff --git a/call.c b/call.c
index 29e9649..ee164bd 100644
--- a/call.c
+++ b/call.c
@@ -203,3 +203,27 @@ void respondCallStatus(RIL_Token t, void *data, int length)
{
RIL_onUnsolicitedResponse(RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED, NULL, 0);
}
+
+void requestDtmfStart(RIL_Token t, void *data, int length)
+{
+ //TODO: Check if there is already a DTMF going on and cancel it if so
+
+ struct ipc_call_cont_dtmf cont_dtmf;
+ cont_dtmf.state = IPC_CALL_DTMF_STATE_START;
+ cont_dtmf.tone = ((char *)data)[0];
+
+ ipc_client_send(ipc_client, IPC_CALL_CONT_DTMF, IPC_TYPE_SET, (unsigned char*)&cont_dtmf, sizeof(cont_dtmf), getRequestId(t));
+
+ RIL_onRequestComplete(t, RIL_E_SUCCESS, NULL, 0);
+}
+
+void requestDtmfStop(RIL_Token t)
+{
+ struct ipc_call_cont_dtmf cont_dtmf;
+ cont_dtmf.state = IPC_CALL_DTMF_STATE_STOP;
+ cont_dtmf.tone = 0;
+
+ ipc_client_send(ipc_client, IPC_CALL_CONT_DTMF, IPC_TYPE_SET, (unsigned char*)&cont_dtmf, sizeof(cont_dtmf), getRequestId(t));
+
+ RIL_onRequestComplete(t, RIL_E_SUCCESS, NULL, 0);
+}
diff --git a/samsung-ril.c b/samsung-ril.c
index ee3af2d..d2b4df3 100644
--- a/samsung-ril.c
+++ b/samsung-ril.c
@@ -134,6 +134,12 @@ void onRequest(int request, void *data, size_t datalen, RIL_Token t)
case RIL_REQUEST_ANSWER:
requestAnswer(t);
break;
+ case RIL_REQUEST_DTMF_START:
+ requestDtmfStart(t, data, datalen);
+ break;
+ case RIL_REQUEST_DTMF_STOP:
+ requestDtmfStop(t);
+ break;
case RIL_REQUEST_SEND_SMS:
requestSendSms(t, data, datalen);
break;
diff --git a/samsung-ril.h b/samsung-ril.h
index c13686f..db898e8 100644
--- a/samsung-ril.h
+++ b/samsung-ril.h
@@ -79,6 +79,8 @@ void requestDial(RIL_Token t, void *data, size_t datalen);
void respondCallIncoming(RIL_Token t, void *data, int length);
void respondCallStatus(RIL_Token t, void *data, int length);
void respondCallList(RIL_Token t, void *data, int length);
+void requestDtmfStart(RIL_Token t, void *data, int length);
+void requestDtmfStop(RIL_Token t);
/* Misc */
void requestBasebandVersion(RIL_Token t);