summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--call.c28
-rw-r--r--samsung-ril.c8
-rw-r--r--samsung-ril.h3
3 files changed, 37 insertions, 2 deletions
diff --git a/call.c b/call.c
index 007d65a..65a0fd1 100644
--- a/call.c
+++ b/call.c
@@ -79,7 +79,7 @@ int ril_request_dial(void *data, size_t size, RIL_Token token)
unsigned char prefix;
int rc;
- if (data == NULL || size < sizeof(RIL_Dial))
+ if (data == NULL || size < sizeof(RIL_Dial) || ril_data == NULL)
goto error;
rc = ril_radio_has_reached_state(RADIO_STATE_ON);
@@ -91,7 +91,7 @@ int ril_request_dial(void *data, size_t size, RIL_Token token)
if (dial->address == NULL)
goto error;
- identity = ril2ipc_call_identity(dial->clir);
+ identity = ril2ipc_call_identity(ril_data->identity);
prefix = dial->address[0] ==
'+' ? IPC_CALL_PREFIX_INTL : IPC_CALL_PREFIX_NONE;
@@ -739,3 +739,27 @@ int ril_request_dtmf_stop(__attribute__((unused)) void *data,
return RIL_REQUEST_HANDLED;
}
+
+int ril_request_get_clir(void *data, size_t size, RIL_Token token)
+{
+ if (data == NULL || size < sizeof(char) || ril_data == NULL) {
+ ril_request_complete(token, RIL_E_GENERIC_FAILURE, NULL, 0);
+ return RIL_REQUEST_COMPLETED;
+ }
+
+ *(int*)data = ril_data->identity;
+
+ return RIL_REQUEST_HANDLED;
+}
+
+int ril_request_set_clir(void *data, size_t size, RIL_Token token)
+{
+ if (data == NULL || size < sizeof(char) || ril_data == NULL) {
+ ril_request_complete(token, RIL_E_GENERIC_FAILURE, NULL, 0);
+ return RIL_REQUEST_COMPLETED;
+ }
+
+ ril_data->identity = *(int*)data;
+
+ return RIL_REQUEST_HANDLED;
+}
diff --git a/samsung-ril.c b/samsung-ril.c
index aaeedeb..d7dd739 100644
--- a/samsung-ril.c
+++ b/samsung-ril.c
@@ -306,6 +306,14 @@ struct ril_request_handler ril_request_handlers[] = {
.request = RIL_REQUEST_DTMF_STOP,
.handler = ril_request_dtmf_stop,
},
+ {
+ .request = RIL_REQUEST_GET_CLIR,
+ .handler = ril_request_get_clir,
+ },
+ {
+ .request = RIL_REQUEST_SET_CLIR,
+ .handler = ril_request_get_clir,
+ },
/* SMS */
{
.request = RIL_REQUEST_SEND_SMS,
diff --git a/samsung-ril.h b/samsung-ril.h
index 8cc012d..fe852c7 100644
--- a/samsung-ril.h
+++ b/samsung-ril.h
@@ -238,6 +238,7 @@ struct ril_data {
RIL_RadioState radio_state;
enum sim_state sim_state;
char *sim_pin;
+ int identity;
struct list_head *requests;
struct list_head *requests_data;
@@ -285,6 +286,8 @@ int ril_request_dtmf_start_complete(unsigned char aseq, char tone);
int ril_request_dtmf_start(void *data, size_t size, RIL_Token token);
int ril_request_dtmf_stop_complete(unsigned char aseq, int callback);
int ril_request_dtmf_stop(void *data, size_t size, RIL_Token token);
+int ril_request_get_clir(void *data, size_t size, RIL_Token token);
+int ril_request_set_clir(void *data, size_t size, RIL_Token token);
/*
* SMS