4 * Copyright (c) 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Ja-young Gu <jygu@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
25 #include "tel_cs_conn.h"
26 #include "tapi_proxy.h"
27 #include "TapiUtility.h"
28 #include "TelDefines.h"
33 extern tapi_dbus_connection_name conn_name;
35 /**********************************************************************************************
37 * This function is used to Activate or Deactivate the call barring feature.
39 * @param barringInfo[IN] of type TelSsCallBarringInfo_t Specifies the Teleservice and barring flavour and CB password.
40 * @return enum type TapiResult_t Specifies the API's Return result.
41 * @remark Call barring password must be known to activate or to deactivate.
43 ***********************************************************************************************/
44 EXPORT_API int tel_set_ss_barring(const TelSsCallBarringInfo_t *barringInfo, int *req_id)
48 int returnStatus = TAPI_API_SUCCESS;
50 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Func Entrance");
52 if (conn_name.length_of_name == 0) {
53 TAPI_LIB_DEBUG(LEVEL_ERR, "No dbus connection name");
54 return TAPI_API_OPERATION_FAILED;
57 /* Check the input ptr. If NULL then return FALSE */
58 TAPI_RETURN_VAL_IF_FAIL(barringInfo, TAPI_API_INVALID_PTR);
59 TAPI_RETURN_VAL_IF_FAIL(req_id, TAPI_API_INVALID_PTR);
61 /* Check input range for tele service type and call barring flavour */
62 if (((barringInfo->CallType >= TAPI_CALL_TYPE_VOICE_EV) && (barringInfo->CallType <= TAPI_CALL_TYPE_ALL_TELE))
63 && ((barringInfo->Type >= TAPI_CALL_BARRING_ALL) && (barringInfo->Type <= TAPI_CALL_BARRING_ALL_INCOMING_CALLS_INSIM))
64 && ((barringInfo->Mode >= TAPI_SS_CALL_BAR_ACTIVATE) && (barringInfo->Mode <= TAPI_SS_CALL_BAR_DEACTIVATE))
65 && (strnlen(barringInfo->szPassword, 4) == TAPI_SS_GSM_BARR_PW_LEN_MAX)) {
66 /* Check for the RPC link. */
67 TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_DOWN);
68 TAPI_GLIB_INIT_PARAMS();
70 TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
71 out_param1,out_param2,out_param3,out_param4);
73 g_array_append_vals(in_param1, barringInfo, sizeof(TelSsCallBarringInfo_t));
74 g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
76 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Calling Call Back func");
78 ret = tapi_send_request(TAPI_CS_SERVICE_SS, TAPI_CS_SS_BARRSETREQ, in_param1, in_param2, in_param3, in_param4,
79 &out_param1, &out_param2, &out_param3, &out_param4);
82 /* Get the API error value as out param 1, from the server. */
83 returnStatus = g_array_index(out_param1, int, 0);
85 *req_id = g_array_index(out_param2, int ,0);
88 /* RPC API failed, return err to APP */
89 TAPI_LIB_DEBUG(LEVEL_ALERT, "RPC Link is down");
90 returnStatus = TAPI_API_SYSTEM_RPC_LINK_DOWN;
93 TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
94 out_param1,out_param2,out_param3,out_param4);
97 TAPI_LIB_DEBUG(LEVEL_ERR,"Received Invalid Input");
98 returnStatus = TAPI_API_INVALID_INPUT;
101 TAPI_LIB_DEBUG(LEVEL_INFO, "Returning TapiResult_t [%+d]", returnStatus);
107 /**********************************************************************************************
109 * This function is used to Activate or Deactivate the call barring feature.
111 * @param barType[IN] of type TelSsCallBarType_t Specifies the barring flavour.
112 * @param callType[IN] of type TelSsCallType_t Specifies the teleservice type.
113 * @return enum type TapiResult_t Specifies the API's Return result.
116 ***********************************************************************************************/
117 EXPORT_API int tel_get_ss_barring_status(TelSsCallBarType_t barType, TelSsCallType_t callType, int *req_id)
120 int returnStatus = TAPI_API_SUCCESS;
122 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Func Entrance");
124 if (conn_name.length_of_name == 0) {
125 TAPI_LIB_DEBUG(LEVEL_ERR, "No dbus connection name");
126 return TAPI_API_OPERATION_FAILED;
129 /* Check the input ptr. If NULL then return FALSE */
130 TAPI_RETURN_VAL_IF_FAIL(req_id, TAPI_API_INVALID_PTR);
132 /* Check input range for tele service type and call barring flavour */
133 if (((barType >= TAPI_CALL_BARRING_ALL) && (barType <= TAPI_CALL_BARRING_ALL_INCOMING_CALLS_INSIM))
134 && ((callType >= TAPI_CALL_TYPE_VOICE_EV) && (callType <= TAPI_CALL_TYPE_ALL_TELE))) {
135 /* Check if D-Bus service is available. If Failed then return FALSE */
136 TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_DOWN);
137 TAPI_GLIB_INIT_PARAMS();
139 TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
140 out_param1,out_param2,out_param3,out_param4);
142 g_array_append_vals(in_param1, &barType, sizeof(TelSsCallBarType_t));
143 g_array_append_vals(in_param2, &callType, sizeof(TelSsCallType_t));
144 g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
146 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Calling Call Back func");
148 ret = tapi_send_request(TAPI_CS_SERVICE_SS, TAPI_CS_SS_BARRQUERYSTATUSREQ, in_param1, in_param2, in_param3,
149 in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
152 /* Get the API error value as out param 1, from the server. */
153 returnStatus = g_array_index(out_param1, int, 0);
154 *req_id = g_array_index(out_param2, int ,0);
157 /* RPC API failed, return err to APP */
158 TAPI_LIB_DEBUG(LEVEL_ALERT, "RPC Link is down");
159 returnStatus = TAPI_API_SYSTEM_RPC_LINK_DOWN;
162 TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
163 out_param1,out_param2,out_param3,out_param4);
166 /* Invalid input range given by the APP. */
167 TAPI_LIB_DEBUG(LEVEL_ERR,"Received Invalid Input ");
168 returnStatus = TAPI_API_INVALID_INPUT;
171 TAPI_LIB_DEBUG(LEVEL_INFO, "Returning TapiResult_t [%+d]", returnStatus);
176 /**********************************************************************************************
178 * This function is used to change call barring password.
180 * @param pOldPassword[IN] of type char* Specifies the Old Call Barring Password.
181 * @param pNewPassword[IN] of type char* Specifies the New Call Barring Password.
182 * @param pNewPasswordAgain[IN] of type char* Specifies the New Call Barring Password for Confirm.
183 * @return enum type TapiResult_t Specifies the API's Return result.
186 ***********************************************************************************************/
187 EXPORT_API int tel_change_ss_barring_password(
188 const char *pOldPassword,
189 const char *pNewPassword,
190 const char *pNewPasswordAgain,
194 int returnStatus = TAPI_API_SUCCESS;
196 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Func Entrance");
198 if (conn_name.length_of_name == 0) {
199 TAPI_LIB_DEBUG(LEVEL_ERR, "No dbus connection name");
200 return TAPI_API_OPERATION_FAILED;
203 /* Check the input ptr. If NULL then return FALSE */
204 TAPI_RETURN_VAL_IF_FAIL(pOldPassword, TAPI_API_INVALID_PTR);
205 TAPI_RETURN_VAL_IF_FAIL(pNewPassword, TAPI_API_INVALID_PTR);
206 TAPI_RETURN_VAL_IF_FAIL(pNewPasswordAgain, TAPI_API_INVALID_PTR);
207 TAPI_RETURN_VAL_IF_FAIL(req_id, TAPI_API_INVALID_PTR);
209 // check should be done at APP
210 if ((strlen(pOldPassword) == TAPI_SS_GSM_BARR_PW_LEN_MAX) && (strlen(pNewPassword) == TAPI_SS_GSM_BARR_PW_LEN_MAX)) {
211 /* Check if D-Bus service is available. If Failed then return FALSE */
212 TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_DOWN);
213 TAPI_GLIB_INIT_PARAMS();
215 TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
216 out_param1,out_param2,out_param3,out_param4);
218 g_array_append_vals(in_param1, pOldPassword, TAPI_SS_GSM_BARR_PW_LEN_MAX);
219 g_array_append_vals(in_param2, pNewPassword, TAPI_SS_GSM_BARR_PW_LEN_MAX);
220 g_array_append_vals(in_param3, pNewPasswordAgain, TAPI_SS_GSM_BARR_PW_LEN_MAX);
221 g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
223 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Calling Call Back func");
225 ret = tapi_send_request(TAPI_CS_SERVICE_SS, TAPI_CS_SS_BARRCHANGEPWDREQ, in_param1, in_param2, in_param3,
226 in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
229 /* Get the API error value as out param 1, from the server. */
230 returnStatus = g_array_index(out_param1, int, 0);
231 *req_id = g_array_index(out_param2, int ,0);
235 /* RPC API failed, return err to APP */
236 TAPI_LIB_DEBUG(LEVEL_ALERT, "RPC Link is down");
237 returnStatus = TAPI_API_SYSTEM_RPC_LINK_DOWN;
240 TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
241 out_param1,out_param2,out_param3,out_param4);
244 /* Invalid input range given by the APP. */
245 TAPI_LIB_DEBUG(LEVEL_ERR,"Received Invalid Input - Password length error");
246 returnStatus = TAPI_API_INVALID_INPUT;
249 TAPI_LIB_DEBUG(LEVEL_INFO, "Returning TapiResult_t [%+d]", returnStatus);
254 /**********************************************************************************************
256 * This function is used to Activate or Deactivate the call forwarding feature.
258 * @param forwardInfo[IN] of type TelSsForwardInfo_t which specifies the Teleservice and CF flavour, Forwarded to number.
259 * @return enum type TapiResult_t Specifies the API's Return result.
262 ***********************************************************************************************/
263 EXPORT_API int tel_set_ss_forward(const TelSsForwardInfo_t *forwardInfo, int *req_id)
266 int returnStatus = TAPI_API_SUCCESS;
268 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Func Entrance");
270 if (conn_name.length_of_name == 0) {
271 TAPI_LIB_DEBUG(LEVEL_ERR, "No dbus connection name");
272 return TAPI_API_OPERATION_FAILED;
275 /* Check the input ptr. If NULL then return FALSE */
276 TAPI_RETURN_VAL_IF_FAIL(forwardInfo, TAPI_API_INVALID_PTR);
277 TAPI_RETURN_VAL_IF_FAIL(req_id, TAPI_API_INVALID_PTR);
280 TAPI_LIB_DEBUG(LEVEL_DEBUG, "szPhoneNumber is [%s]", forwardInfo->szPhoneNumber);
281 TAPI_LIB_DEBUG(LEVEL_DEBUG, "szPhoneNumber Length is [%d]", strlen(forwardInfo->szPhoneNumber));
283 /* Check input range for tele service type and call forwarding flavour */
284 if (((forwardInfo->Condition >= TAPI_SS_FORWARD_WHEN_UNCONDITIONAL_EV) && (forwardInfo->Condition <= TAPI_SS_FORWARD_WHEN_ALL_CONDITIONAL_EV))
285 && ((forwardInfo->Mode >= TAPI_CALL_FORWARD_MODE_DISABLE_EV) && (forwardInfo->Mode <= TAPI_CALL_FORWARD_MODE_ERASURE_EV))
286 && ((forwardInfo->Type >= TAPI_CS_FORWARD_TYPE_VOICE_EV) && (forwardInfo->Type <= TAPI_CS_FORWARD_TYPE_ALL_TELE))
287 && (strnlen(forwardInfo->szPhoneNumber, (TAPI_CALL_DIALDIGIT_LEN_MAX)) < (TAPI_CALL_DIALDIGIT_LEN_MAX))) {
288 /* Check if D-Bus service is available. If Failed then return FALSE */
289 TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_DOWN);
290 TAPI_GLIB_INIT_PARAMS();
292 TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
293 out_param1,out_param2,out_param3,out_param4);
295 g_array_append_vals(in_param1, forwardInfo, sizeof(TelSsForwardInfo_t));
296 g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
298 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Calling Call Back func ");
300 ret = tapi_send_request(TAPI_CS_SERVICE_SS, TAPI_CS_SS_FWDSETREQ, in_param1, in_param2, in_param3, in_param4,
301 &out_param1, &out_param2, &out_param3, &out_param4);
303 /* Get the API error value as out param 1, from the server. */
304 returnStatus = g_array_index(out_param1, int, 0);
305 *req_id = g_array_index(out_param2, int ,0);
308 /* RPC API failed, return err to APP */
309 TAPI_LIB_DEBUG(LEVEL_ALERT, "RPC Link is down");
310 returnStatus = TAPI_API_SYSTEM_RPC_LINK_DOWN;
313 TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
314 out_param1,out_param2,out_param3,out_param4);
317 TAPI_LIB_DEBUG(LEVEL_ERR,"Received Invalid Input ");
318 returnStatus = TAPI_API_INVALID_INPUT;
321 TAPI_LIB_DEBUG(LEVEL_INFO, "Returning TapiResult_t [%+d]", returnStatus);
326 /**********************************************************************************************
328 * This function is used to interrogate the status of call forwarding feature.
330 * @param forwardType[IN] of type TelSsForwardType_t which specifies the telecommunication service.
331 * @param condition[IN] is of type TelSsForwardWhen_t specified the CF flavour
332 * @return enum type TapiResult_t Specifies the API's Return result.
335 ***********************************************************************************************/
336 EXPORT_API int tel_get_ss_forward_status(TelSsForwardType_t forwardType, TelSsForwardWhen_t condition, int *req_id)
339 int returnStatus = TAPI_API_SUCCESS;
341 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Func Entrance");
343 if (conn_name.length_of_name == 0) {
344 TAPI_LIB_DEBUG(LEVEL_ERR, "No dbus connection name");
345 return TAPI_API_OPERATION_FAILED;
348 /* Check the input ptr. If NULL then return FALSE */
349 TAPI_RETURN_VAL_IF_FAIL(req_id, TAPI_API_INVALID_PTR);
351 /* Check input range for tele service type and call forwarding flavour */
352 if (((condition >= TAPI_SS_FORWARD_WHEN_UNCONDITIONAL_EV)
353 && (condition <= TAPI_SS_FORWARD_WHEN_ALL_CONDITIONAL_EV))
354 && ((forwardType >= TAPI_CS_FORWARD_TYPE_VOICE_EV) && (forwardType <= TAPI_CS_FORWARD_TYPE_ALL_TELE))) {
355 /* Check if D-Bus service is available. If Failed then return FALSE */
356 TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_DOWN);
357 TAPI_GLIB_INIT_PARAMS();
359 TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
360 out_param1,out_param2,out_param3,out_param4);
362 g_array_append_vals(in_param1, &forwardType, sizeof(TelSsForwardType_t));
363 g_array_append_vals(in_param2, &condition, sizeof(TelSsForwardWhen_t));
364 g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
366 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Calling Call Back func ");
368 ret = tapi_send_request(TAPI_CS_SERVICE_SS, TAPI_CS_SS_FWDQUERYSTATUSREQ, in_param1, in_param2, in_param3,
369 in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
372 /* Get the API error value as out param 1, from the server. */
373 returnStatus = g_array_index(out_param1, int, 0);
374 *req_id = g_array_index(out_param2, int ,0);
378 /* RPC API failed, return err to APP */
379 TAPI_LIB_DEBUG(LEVEL_ALERT, "RPC Link is down");
380 returnStatus = TAPI_API_SYSTEM_RPC_LINK_DOWN;
383 TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
384 out_param1,out_param2,out_param3,out_param4);
388 TAPI_LIB_DEBUG(LEVEL_ERR,"Received Invalid Input ");
389 returnStatus = TAPI_API_INVALID_INPUT;
392 TAPI_LIB_DEBUG(LEVEL_INFO, "Returning TapiResult_t [%+d]", returnStatus);
397 /**********************************************************************************************
399 * This function is used to Activate or dectivate call waiting feature.
401 * @param waitInfo[IN] of type TelSsWaitingInfo_t which specifies the telecommunication service and mode.
402 * @return enum type TapiResult_t Specifies the API's Return result.
405 ***********************************************************************************************/
406 EXPORT_API int tel_set_ss_waiting(const TelSsWaitingInfo_t *waitInfo, int *req_id)
409 int returnStatus = TAPI_API_SUCCESS;
411 if (conn_name.length_of_name == 0) {
412 TAPI_LIB_DEBUG(LEVEL_ERR, "No dbus connection name");
413 return TAPI_API_OPERATION_FAILED;
416 /* Check the input ptr. If NULL then return FALSE */
417 TAPI_RETURN_VAL_IF_FAIL(waitInfo, TAPI_API_INVALID_PTR);
418 TAPI_RETURN_VAL_IF_FAIL(req_id, TAPI_API_INVALID_PTR);
420 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Func Entrance");
422 /* Check input range for tele service type and call forwarding flavour */
423 if (((waitInfo->Mode >= TAPI_SS_CW_ACTIVATE)
424 && (waitInfo->Mode <= TAPI_SS_CW_DEACTIVATE))
425 && ((waitInfo->CallType >= TAPI_CALL_TYPE_VOICE_EV) && (waitInfo->CallType <= TAPI_CALL_TYPE_ALL_TELE))) {
427 /* Check if D-Bus service is available. If Failed then return FALSE */
428 TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_DOWN);
429 TAPI_GLIB_INIT_PARAMS();
431 TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
432 out_param1,out_param2,out_param3,out_param4);
434 g_array_append_vals(in_param1, waitInfo, sizeof(TelSsWaitingInfo_t));
435 g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
437 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Calling Call Back func ");
439 ret = tapi_send_request(TAPI_CS_SERVICE_SS, TAPI_CS_SS_WAITSETREQ, in_param1, in_param2, in_param3, in_param4,
440 &out_param1, &out_param2, &out_param3, &out_param4);
443 /* Get the API error value as out param 1, from the server. */
444 returnStatus = g_array_index(out_param1, int, 0);
445 *req_id = g_array_index(out_param2, int ,0);
448 /* RPC API failed, return err to APP */
449 TAPI_LIB_DEBUG(LEVEL_ALERT, "RPC Link is down");
450 returnStatus = TAPI_API_SYSTEM_RPC_LINK_DOWN;
453 TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
454 out_param1,out_param2,out_param3,out_param4);
457 TAPI_LIB_DEBUG(LEVEL_ERR,"Received Invalid Input ");
458 returnStatus = TAPI_API_INVALID_INPUT;
461 TAPI_LIB_DEBUG(LEVEL_INFO, "Returning TapiResult_t [%+d]", returnStatus);
466 /**********************************************************************************************
468 * This function is used to interrogate the status of call waiting feature.
470 * @param CallType[IN] of type TelSsCallType_t which specifies the telecommunication service .
471 * @return enum type TapiResult_t Specifies the API's Return result.
474 ***********************************************************************************************/
476 EXPORT_API int tel_get_ss_waiting_status(const TelSsCallType_t CallType, int *req_id)
479 int returnStatus = TAPI_API_SUCCESS;
481 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Func Entrance");
483 if (conn_name.length_of_name == 0) {
484 TAPI_LIB_DEBUG(LEVEL_ERR, "No dbus connection name");
485 return TAPI_API_OPERATION_FAILED;
488 /* Check the input ptr. If NULL then return FALSE */
489 TAPI_RETURN_VAL_IF_FAIL(req_id, TAPI_API_INVALID_PTR);
491 /* Check input range for tele service type */
492 if ((CallType >= TAPI_CALL_TYPE_VOICE_EV) && (CallType <= TAPI_CALL_TYPE_ALL_TELE)) {
494 /* Check if D-Bus service is available. If Failed then return FALSE */
495 TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_DOWN);
496 TAPI_GLIB_INIT_PARAMS();
498 TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
499 out_param1,out_param2,out_param3,out_param4);
501 g_array_append_vals(in_param1, &CallType, sizeof(TelSsCallType_t));
502 g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
504 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Calling Call Back func ");
506 ret = tapi_send_request(TAPI_CS_SERVICE_SS, TAPI_CS_SS_WAITQUERYSTATUSREQ, in_param1, in_param2, in_param3,
507 in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
510 /* Get the API error value as out param 1, from the server. */
511 returnStatus = g_array_index(out_param1, int, 0);
512 *req_id = g_array_index(out_param2, int ,0);
515 /* RPC API failed, return err to APP */
516 TAPI_LIB_DEBUG(LEVEL_ALERT, "RPC Link is down");
517 returnStatus = TAPI_API_SYSTEM_RPC_LINK_DOWN;
520 TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
521 out_param1,out_param2,out_param3,out_param4);
524 TAPI_LIB_DEBUG(LEVEL_ERR,"Received Invalid Input ");
525 returnStatus = TAPI_API_INVALID_INPUT;
528 TAPI_LIB_DEBUG(LEVEL_INFO, "Returning TapiResult_t [%+d]", returnStatus);
533 /**********************************************************************************************
535 * This function is used to interrogate the status of CLI services feature.
537 * @param CliType[IN] of type TelSsCliType_t which specifies the CLI service .
538 * @return enum type TapiResult_t Specifies the API's Return result.
541 ***********************************************************************************************/
542 EXPORT_API int tel_get_ss_cli_status(TelSsCliType_t CliType, int *req_id)
545 int api_err = TAPI_API_SUCCESS;
547 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Func Entrance");
549 if (conn_name.length_of_name == 0) {
550 TAPI_LIB_DEBUG(LEVEL_ERR, "No dbus connection name");
551 return TAPI_API_OPERATION_FAILED;
554 /* Check the input ptr. If NULL then return FALSE */
555 TAPI_RETURN_VAL_IF_FAIL(req_id, TAPI_API_INVALID_PTR);
557 /* Check input range for CLI service type */
558 if ((CliType >= TAPI_SS_CLI_CLIP) && (CliType <= TAPI_SS_CLI_CNAP)) {
559 /* Check if D-Bus service is available. If Failed then return FALSE */
560 TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_DOWN);
561 TAPI_GLIB_INIT_PARAMS();
563 TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
564 out_param1,out_param2,out_param3,out_param4);
566 g_array_append_vals(in_param1, &CliType, sizeof(TelSsCliType_t));
567 g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
569 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Calling Call Back func ");
571 ret = tapi_send_request(TAPI_CS_SERVICE_SS, TAPI_CS_SS_CLIQUERYSTATUSREQ, in_param1, in_param2, in_param3,
572 in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
575 /* Get the API error value as out param 1, from the server. */
576 api_err = g_array_index(out_param1, int, 0);
577 *req_id = g_array_index(out_param2, int ,0);
581 /* RPC API failed, return err to APP */
582 TAPI_LIB_DEBUG(LEVEL_ALERT, "RPC Link is down");
583 api_err = TAPI_API_SYSTEM_RPC_LINK_DOWN;
586 TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
587 out_param1,out_param2,out_param3,out_param4);
591 TAPI_LIB_DEBUG(LEVEL_ERR,"Received Invalid Input ");
592 api_err = TAPI_API_INVALID_INPUT;
595 TAPI_LIB_DEBUG(LEVEL_INFO, "Returning TapiResult_t [%+d]", api_err);
600 /**********************************************************************************************
602 * This function is used to send a USSD string and also the User response for a NW intiated USSD.
604 * @param pAppMsg[IN] of type TelSsUssdMsgInfo_t which specifies the USSD String,length of the string, format of the string.
605 * @return enum type TapiResult_t Specifies the API's Return result.
606 * @remark TelSsUssdMsgInfo_t ->IndType is not used while calling this function, This is used for sending the response.
607 * Limo standard defines only one structure for Request and response.
609 ***********************************************************************************************/
610 EXPORT_API int tel_send_ss_ussd_request(const TelSsUssdMsgInfo_t *ussd_info, int *req_id)
613 int api_err = TAPI_API_SUCCESS;
614 int emergency_mode = 0;
616 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Func Entrance");
618 if (vconf_get_int("db/telephony/emergency", &emergency_mode) != 0) {
619 TAPI_LIB_DEBUG(LEVEL_ERR, "[FAIL]GET db/telephony/emergency");
620 return TAPI_API_OPERATION_FAILED;
622 if (emergency_mode) {
623 TAPI_LIB_DEBUG(LEVEL_DEBUG, "emergency mode on");
624 return TAPI_API_OPERATION_FAILED;
627 if (conn_name.length_of_name == 0) {
628 TAPI_LIB_DEBUG(LEVEL_ERR, "No dbus connection name");
629 return TAPI_API_OPERATION_FAILED;
632 /* Check the input ptr. If NULL then return FALSE */
633 TAPI_RETURN_VAL_IF_FAIL(ussd_info, TAPI_API_INVALID_PTR);
634 TAPI_RETURN_VAL_IF_FAIL(req_id, TAPI_API_INVALID_PTR);
636 if (((ussd_info->UssdStringLength > 0) && (ussd_info->UssdStringLength < TAPI_SS_USSD_DATA_SIZE_MAX))) {
638 TAPI_LIB_DEBUG(LEVEL_DEBUG,"--- USSD STR(%s),length = %d", ussd_info->szUssdString,ussd_info->UssdStringLength);
640 /* Check if D-Bus service is available. If Failed then return FALSE */
641 TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_DOWN);
642 TAPI_GLIB_INIT_PARAMS();
644 TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
645 out_param1,out_param2,out_param3,out_param4);
647 g_array_append_vals(in_param1, ussd_info, sizeof(TelSsUssdMsgInfo_t));
648 g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
650 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Calling Call Back func ");
652 ret = tapi_send_request(TAPI_CS_SERVICE_SS, TAPI_CS_SS_USSDSENDSTRINGREQ, in_param1, in_param2, in_param3,
653 in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
656 /* Get the API error value as out param 1, from the server. */
657 api_err = g_array_index(out_param1, int, 0);
658 *req_id = g_array_index(out_param2, int ,0);
661 /* RPC API failed, return err to APP */
662 TAPI_LIB_DEBUG(LEVEL_ALERT, "RPC Link is down");
663 api_err = TAPI_API_SYSTEM_RPC_LINK_DOWN;
666 TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
667 out_param1,out_param2,out_param3,out_param4);
670 TAPI_LIB_DEBUG(LEVEL_ERR,"Received Invalid Input -USSD length Error ");
671 api_err = TAPI_API_INVALID_INPUT;
674 TAPI_LIB_DEBUG(LEVEL_INFO, "Returning TapiResult_t [%+d]", api_err);
679 /**********************************************************************************************
681 * This function is used to send a USSD Rsp.
683 * @param ussdRspRecord, req_id
684 * @return enum type TapiResult_t Specifies the API's Return result.
687 ***********************************************************************************************/
688 EXPORT_API int tel_send_ss_ussd_response(const TelSsUssdMsgInfo_t *ussd_rsp, int *req_id)
691 int returnStatus = TAPI_API_SUCCESS;
693 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Func Entrance");
695 if (conn_name.length_of_name == 0) {
696 TAPI_LIB_DEBUG(LEVEL_ERR, "No dbus connection name");
697 return TAPI_API_OPERATION_FAILED;
700 /* Check the input ptr. If NULL then return FALSE */
701 TAPI_RETURN_VAL_IF_FAIL(ussd_rsp, TAPI_API_INVALID_PTR);
702 TAPI_RETURN_VAL_IF_FAIL(req_id, TAPI_API_INVALID_PTR);
704 if (((ussd_rsp->UssdStringLength > 0) && (ussd_rsp->UssdStringLength < TAPI_SS_USSD_DATA_SIZE_MAX))) {
705 /* Check if D-Bus service is available. If Failed then return FALSE */
706 TAPI_RETURN_VAL_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_DOWN);
707 TAPI_GLIB_INIT_PARAMS();
709 TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
710 out_param1,out_param2,out_param3,out_param4);
712 g_array_append_vals(in_param1, ussd_rsp, sizeof(TelSsUssdMsgInfo_t));
713 g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
715 TAPI_LIB_DEBUG(LEVEL_DEBUG, "SS Service Request:(Send USSD string req)");
717 ret = tapi_send_request(TAPI_CS_SERVICE_SS, TAPI_CS_SS_USSDRSP, in_param1, in_param2, in_param3, in_param4,
718 &out_param1, &out_param2, &out_param3, &out_param4);
721 returnStatus = g_array_index(out_param1, int, 0);
722 *req_id = g_array_index(out_param2, int ,0);
725 returnStatus = TAPI_API_SYSTEM_RPC_LINK_DOWN;
728 TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
729 out_param1,out_param2,out_param3,out_param4);
732 returnStatus = TAPI_API_INVALID_INPUT;
733 TAPI_LIB_DEBUG(LEVEL_ERR,"INVALID INPUT TYPE \n");
734 TAPI_LIB_DEBUG(LEVEL_ERR, "##### Invalid Response Type ......");
740 /**********************************************************************************************
742 * This function is used to send a USSD cancel to release ussd session.
745 * @return enum type TapiResult_t Specifies the API's Return result.
748 ***********************************************************************************************/
749 EXPORT_API int tel_send_ss_ussd_cancel(int *req_id)
752 int returnStatus = TAPI_API_SUCCESS;
754 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Func Entrance");
756 if (conn_name.length_of_name == 0) {
757 TAPI_LIB_DEBUG(LEVEL_ERR, "No dbus connection name");
758 return TAPI_API_OPERATION_FAILED;
761 /* Check the input ptr. If NULL then return FALSE */
762 TAPI_RETURN_VAL_IF_FAIL(req_id, TAPI_API_INVALID_PTR);
764 /* Check if D-Bus service is available. If Failed then return FALSE */
765 TAPI_RETURN_VAL_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_DOWN);
766 TAPI_GLIB_INIT_PARAMS();
768 TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
769 out_param1,out_param2,out_param3,out_param4);
771 TAPI_LIB_DEBUG(LEVEL_DEBUG, "SS Service Request:(Send USSD cancel)");
772 g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
774 ret = tapi_send_request(TAPI_CS_SERVICE_SS, TAPI_CS_SS_USSDCANCEL, in_param1, in_param2, in_param3, in_param4,
775 &out_param1, &out_param2, &out_param3, &out_param4);
778 returnStatus = g_array_index(out_param1, int, 0);
779 *req_id = g_array_index(out_param2, int ,0);
782 returnStatus = TAPI_API_SYSTEM_RPC_LINK_DOWN;
785 TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
786 out_param1,out_param2,out_param3,out_param4);
791 /**********************************************************************************************
793 * This function is used to Sets AOC information.
795 * @param AocType[IN] of type TelSsAocType_t which specifies the which AOC type to read.
796 * @return enum type TapiResult_t Specifies the API's Return result.
799 ***********************************************************************************************/
800 EXPORT_API int tel_get_ss_aoc_info(TelSsAocType_t AocType, int *req_id)
803 int api_err = TAPI_API_SUCCESS;
805 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Func Entrance");
807 if (conn_name.length_of_name == 0) {
808 TAPI_LIB_DEBUG(LEVEL_ERR, "No dbus connection name");
809 return TAPI_API_OPERATION_FAILED;
812 /* Check the input ptr. If NULL then return FALSE */
813 TAPI_RETURN_VAL_IF_FAIL(req_id, TAPI_API_INVALID_PTR);
815 /* Check input range for Aoc type */
816 if ((AocType == TAPI_SS_AOC_TYPE_ACM)
817 || (AocType == TAPI_SS_AOC_TYPE_PUC)
818 || (AocType == TAPI_SS_AOC_TYPE_MAXACM)
819 || (AocType == TAPI_SS_AOC_TYPE_CCM)) {
820 /* Check if D-Bus service is available. If Failed then return FALSE */
821 TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_DOWN);
822 TAPI_GLIB_INIT_PARAMS();
824 TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
825 out_param1,out_param2,out_param3,out_param4);
827 g_array_append_vals(in_param1, &AocType, sizeof(TelSsAocType_t));
828 g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
830 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Calling Call Back func ");
832 ret = tapi_send_request(TAPI_CS_SERVICE_SS, TAPI_CS_SS_GETCALLCOSTREQ, in_param1, in_param2, in_param3,
833 in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
836 /* Get the API error value as out param 1, from the server. */
837 api_err = g_array_index(out_param1, int, 0);
838 *req_id = g_array_index(out_param2, int ,0);
841 /* RPC API failed, return err to APP */
842 TAPI_LIB_DEBUG(LEVEL_ALERT, "RPC Link is down");
843 api_err = TAPI_API_SYSTEM_RPC_LINK_DOWN;
846 TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
847 out_param1,out_param2,out_param3,out_param4);
850 TAPI_LIB_DEBUG(LEVEL_ERR,"Received Invalid Input - Invalid AOC type");
851 api_err = TAPI_API_INVALID_INPUT;
854 TAPI_LIB_DEBUG(LEVEL_INFO, "Returning TapiResult_t [%+d]", api_err);
859 /**********************************************************************************************
861 * This function is used to Sets AOC information.
863 * @param AocSetInfo[IN] of type TelCallAocInfo_t which specifies the AOC info parameters .
864 * @return enum type TapiResult_t Specifies the API's Return result.
867 ***********************************************************************************************/
868 EXPORT_API int tel_set_ss_aoc_info(TelCallAocInfo_t *AocSetInfo, int *RequestId)
871 int api_err = TAPI_API_SUCCESS;
873 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Func Entrance");
875 if (conn_name.length_of_name == 0) {
876 TAPI_LIB_DEBUG(LEVEL_ERR, "No dbus connection name");
877 return TAPI_API_OPERATION_FAILED;
880 /* Check the input ptr. If NULL then return FALSE */
881 TAPI_RETURN_VAL_IF_FAIL(AocSetInfo, TAPI_API_INVALID_PTR);
882 TAPI_RETURN_VAL_IF_FAIL(RequestId , TAPI_API_INVALID_PTR);
884 if ((AocSetInfo->PPM) < ((float) (TAPI_MAX_ULONG / 1000))) {
885 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Valid ... Input PPM smaller than MAX");
888 TAPI_LIB_DEBUG(LEVEL_DEBUG,"INVALID.... INPUT greater than MAX");
891 /* Check input range for Aoc type */
892 if ((AocSetInfo->PPM < (float) (TAPI_MAX_ULONG / 1000))
893 && ((AocSetInfo->AocType == TAPI_SS_AOC_TYPE_RESET)
894 || (AocSetInfo->AocType == TAPI_SS_AOC_TYPE_PUC)
895 || (AocSetInfo->AocType == TAPI_SS_AOC_TYPE_MAXACM) )) {
896 TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_DOWN);
897 TAPI_GLIB_INIT_PARAMS();
899 TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
900 out_param1,out_param2,out_param3,out_param4);
902 g_array_append_vals(in_param1, AocSetInfo, sizeof(TelCallAocInfo_t));
903 g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
905 TAPI_LIB_DEBUG(LEVEL_DEBUG,"Calling Call Back func ");
907 ret = tapi_send_request(TAPI_CS_SERVICE_SS, TAPI_CS_SS_SETCALLCOSTREQ, in_param1, in_param2, in_param3,
908 in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
911 /* Get the API error value as out param 1, from the server. */
912 api_err = g_array_index(out_param1, int, 0);
914 /* Get the Request ID as out param 2, from the server. */
915 *RequestId = g_array_index(out_param2, int, 0);
918 /* RPC API failed, return err to APP */
919 TAPI_LIB_DEBUG(LEVEL_ALERT, "RPC Link is down");
920 api_err = TAPI_API_SYSTEM_RPC_LINK_DOWN;
923 TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
924 out_param1,out_param2,out_param3,out_param4);
927 TAPI_LIB_DEBUG(LEVEL_ERR,"Received Invalid Input -Invalid AOC type ");
928 api_err = TAPI_API_INVALID_INPUT;
931 TAPI_LIB_DEBUG(LEVEL_INFO, "Returning TapiResult_t [%+d]", api_err);