diff options
-rw-r--r-- | call.c | 28 | ||||
-rw-r--r-- | samsung-ril.c | 8 | ||||
-rw-r--r-- | samsung-ril.h | 3 |
3 files changed, 37 insertions, 2 deletions
@@ -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 |