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.
26 #include "tapi_common.h"
27 #include "TapiUtility.h"
34 static void on_response_get_ss_barring_status(GObject *source_object, GAsyncResult *res, gpointer user_data)
37 GDBusConnection *conn = 0;
38 struct tapi_resp_data *evt_cb_data = user_data;
39 int result = -1, i = 0;
40 TelSsBarringResp_t resp;
42 GVariant *dbus_result = 0, *value = 0;
43 GVariantIter *iter = 0;
44 GVariantIter *iter_row = 0;
47 memset(&resp, '\0', sizeof(TelSsBarringResp_t));
49 conn = G_DBUS_CONNECTION (source_object);
50 dbus_result = g_dbus_connection_call_finish(conn, res, &error);
54 if (evt_cb_data->cb_fn) {
55 evt_cb_data->cb_fn(evt_cb_data->handle, -1, NULL, evt_cb_data->user_data);
65 g_variant_get (dbus_result, "(aa{sv}i)", &iter, &result);
67 resp.record_num = g_variant_iter_n_children(iter);
69 while ( g_variant_iter_next(iter, "a{sv}", &iter_row ) ) {
70 while ( g_variant_iter_loop( iter_row, "{sv}", &key, &value ) ) {
72 if ( !g_strcmp0(key, "ss_class") ) {
73 resp.record[i].Class = g_variant_get_int32(value);
76 if ( !g_strcmp0(key, "ss_status") ) {
77 resp.record[i].Status = g_variant_get_int32(value);
80 if ( !g_strcmp0(key, "barring_mode") ) {
81 resp.record[i].Flavour = g_variant_get_int32(value);
86 g_variant_iter_free(iter_row);
88 g_variant_iter_free(iter);
90 if (evt_cb_data->cb_fn) {
91 evt_cb_data->cb_fn(evt_cb_data->handle, result, &resp, evt_cb_data->user_data);
97 static void on_response_change_ss_barring_password(GObject *source_object, GAsyncResult *res, gpointer user_data)
100 GDBusConnection *conn = 0;
101 struct tapi_resp_data *evt_cb_data = user_data;
104 GVariant *dbus_result = 0;
106 conn = G_DBUS_CONNECTION (source_object);
107 dbus_result = g_dbus_connection_call_finish(conn, res, &error);
111 if (evt_cb_data->cb_fn) {
112 evt_cb_data->cb_fn(evt_cb_data->handle, -1, NULL, evt_cb_data->user_data);
122 g_variant_get (dbus_result, "(i)", &result);
124 if (evt_cb_data->cb_fn) {
125 evt_cb_data->cb_fn(evt_cb_data->handle, result, NULL, evt_cb_data->user_data);
131 static void on_response_get_ss_forward_status(GObject *source_object, GAsyncResult *res, gpointer user_data)
134 GDBusConnection *conn = 0;
135 struct tapi_resp_data *evt_cb_data = user_data;
136 int result = -1, i = 0;
137 TelSsForwardResp_t resp;
139 GVariant *dbus_result = 0, *value = 0;
140 GVariantIter *iter = 0;
141 GVariantIter *iter_row = 0;
142 const gchar *key = 0;
145 memset(&resp, '\0', sizeof(TelSsForwardResp_t));
147 conn = G_DBUS_CONNECTION (source_object);
148 dbus_result = g_dbus_connection_call_finish(conn, res, &error);
152 if (evt_cb_data->cb_fn) {
153 evt_cb_data->cb_fn(evt_cb_data->handle, -1, NULL, evt_cb_data->user_data);
163 g_variant_get (dbus_result, "(aa{sv}i)", &iter, &result);
165 resp.record_num = g_variant_iter_n_children(iter);
167 while ( g_variant_iter_next(iter, "a{sv}", &iter_row ) ) {
168 while ( g_variant_iter_loop( iter_row, "{sv}", &key, &value ) ) {
170 if ( !g_strcmp0(key, "ss_class") ) {
171 resp.record[i].Class = g_variant_get_int32(value);
174 if ( !g_strcmp0(key, "ss_status") ) {
175 resp.record[i].Status = g_variant_get_int32(value);
178 if ( !g_strcmp0(key, "forwarding_mode") ) {
179 resp.record[i].ForwardCondition = g_variant_get_int32(value);
182 if ( !g_strcmp0(key, "number_present") ) {
183 resp.record[i].bCallForwardingNumberPresent = g_variant_get_int32(value);
186 if ( !g_strcmp0(key, "no_reply_time") ) {
187 resp.record[i].NoReplyWaitTime = g_variant_get_int32(value);
190 if ( !g_strcmp0(key, "type_of_number") ) {
191 resp.record[i].Ton = g_variant_get_int32(value);
194 if ( !g_strcmp0(key, "number_plan_identity") ) {
195 resp.record[i].Npi = g_variant_get_int32(value);
198 if ( !g_strcmp0(key, "forwarding_number") ) {
199 strncpy((char *)resp.record[i].szCallForwardingNumber, g_variant_get_string(value, 0), TAPI_CALL_DIALDIGIT_LEN_MAX );
204 g_variant_iter_free(iter_row);
206 g_variant_iter_free(iter);
208 if (evt_cb_data->cb_fn) {
209 evt_cb_data->cb_fn(evt_cb_data->handle, result, &resp, evt_cb_data->user_data);
215 static void on_response_get_ss_waiting_status(GObject *source_object, GAsyncResult *res, gpointer user_data)
218 GDBusConnection *conn = 0;
219 struct tapi_resp_data *evt_cb_data = user_data;
220 int result = -1, i = 0;
221 TelSsWaitingResp_t resp;
223 GVariant *dbus_result = 0, *value = 0;
224 GVariantIter *iter = 0;
225 GVariantIter *iter_row = 0;
226 const gchar *key = 0;
229 memset(&resp, '\0', sizeof(TelSsWaitingResp_t));
231 conn = G_DBUS_CONNECTION (source_object);
232 dbus_result = g_dbus_connection_call_finish(conn, res, &error);
236 if (evt_cb_data->cb_fn) {
237 evt_cb_data->cb_fn(evt_cb_data->handle, -1, NULL, evt_cb_data->user_data);
247 g_variant_get (dbus_result, "(aa{sv}i)", &iter, &result);
249 resp.record_num = g_variant_iter_n_children(iter);
251 while ( g_variant_iter_next(iter, "a{sv}", &iter_row ) ) {
252 while ( g_variant_iter_loop( iter_row, "{sv}", &key, &value ) ) {
254 if ( !g_strcmp0(key, "ss_class") ) {
255 resp.record[i].Class = g_variant_get_int32(value);
258 if ( !g_strcmp0(key, "ss_status") ) {
259 resp.record[i].Status = g_variant_get_int32(value);
263 g_variant_iter_free(iter_row);
265 g_variant_iter_free(iter);
267 if (evt_cb_data->cb_fn) {
268 evt_cb_data->cb_fn(evt_cb_data->handle, result, &resp, evt_cb_data->user_data);
274 static void on_response_set_ss_cli_status(GObject *source_object, GAsyncResult *res, gpointer user_data)
277 GDBusConnection *conn = 0;
278 struct tapi_resp_data *evt_cb_data = user_data;
282 GVariant *dbus_result = 0;
284 conn = G_DBUS_CONNECTION (source_object);
285 dbus_result = g_dbus_connection_call_finish(conn, res, &error);
289 if (evt_cb_data->cb_fn) {
290 evt_cb_data->cb_fn(evt_cb_data->handle, -1, NULL, evt_cb_data->user_data);
300 g_variant_get (dbus_result, "(i)", &result);
302 if (evt_cb_data->cb_fn) {
303 evt_cb_data->cb_fn(evt_cb_data->handle, result, &data, evt_cb_data->user_data);
309 static void on_response_get_ss_cli_status(GObject *source_object, GAsyncResult *res, gpointer user_data)
312 GDBusConnection *conn = 0;
313 struct tapi_resp_data *evt_cb_data = user_data;
317 GVariant *dbus_result = 0;
319 memset(&resp, '\0', sizeof(TelSsCliResp_t));
321 conn = G_DBUS_CONNECTION (source_object);
322 dbus_result = g_dbus_connection_call_finish(conn, res, &error);
326 if (evt_cb_data->cb_fn) {
327 evt_cb_data->cb_fn(evt_cb_data->handle, -1, NULL, evt_cb_data->user_data);
337 g_variant_get (dbus_result, "(iii)", &result, &resp.Type, &resp.Status);
339 dbg("Type(%d), Status(%d)", resp.Type, resp.Status);
340 if (evt_cb_data->cb_fn) {
341 evt_cb_data->cb_fn(evt_cb_data->handle, result, &resp, evt_cb_data->user_data);
347 static void on_response_send_ss_ussd_request(GObject *source_object, GAsyncResult *res, gpointer user_data)
350 GDBusConnection *conn = 0;
351 struct tapi_resp_data *evt_cb_data = user_data;
354 TelSsUssdResp_t resp;
356 GVariant *dbus_result = 0;
358 memset(&resp, '\0', sizeof(TelSsUssdResp_t));
360 conn = G_DBUS_CONNECTION (source_object);
361 dbus_result = g_dbus_connection_call_finish(conn, res, &error);
365 if (evt_cb_data->cb_fn) {
366 evt_cb_data->cb_fn(evt_cb_data->handle, -1, NULL, evt_cb_data->user_data);
376 g_variant_get (dbus_result, "(iiiiis)", &result, &resp.Type, &resp.Status, &resp.Dcs, &resp.Length, &tmp_str);
379 memcpy( resp.szString, tmp_str, resp.Length );
383 if (evt_cb_data->cb_fn) {
384 evt_cb_data->cb_fn(evt_cb_data->handle, result, &resp, evt_cb_data->user_data);
390 EXPORT_API int tel_set_ss_barring(TapiHandle *handle, TelSsBarringInfo_t *info, tapi_response_cb callback, void *user_data)
392 struct tapi_resp_data *evt_cb_data = 0;
396 dbg("Func Entrance ");
398 TAPI_RET_ERR_NUM_IF_FAIL(handle, TAPI_API_INVALID_PTR);
399 TAPI_RET_ERR_NUM_IF_FAIL(info, TAPI_API_INVALID_PTR);
401 MAKE_RESP_CB_DATA(evt_cb_data, handle, callback, user_data);
403 param = g_variant_new("(iis)", info->Class, info->Type, info->szPassword);
405 if ( info->Mode == TAPI_SS_CB_MODE_ACTIVATE ) {
406 dbg("[ check ] barring activate");
407 method = "ActivateBarring";
410 dbg("[ check ] barring deactivate");
411 method = "DeactivateBarring";
415 g_dbus_connection_call(handle->dbus_connection,
416 DBUS_TELEPHONY_SERVICE, handle->path, DBUS_TELEPHONY_SS_INTERFACE,
418 G_DBUS_CALL_FLAGS_NONE, TAPI_DEFAULT_TIMEOUT, handle->ca,
419 on_response_get_ss_barring_status, evt_cb_data );
421 return TAPI_API_SUCCESS;
424 EXPORT_API int tel_get_ss_barring_status(TapiHandle *handle, TelSsClass_t class, TelSsBarringType_t type, tapi_response_cb callback, void *user_data)
426 struct tapi_resp_data *evt_cb_data = 0;
429 dbg("Func Entrance ");
431 TAPI_RET_ERR_NUM_IF_FAIL(handle, TAPI_API_INVALID_PTR);
432 TAPI_RET_ERR_NUM_IF_FAIL(callback, TAPI_API_INVALID_PTR);
434 MAKE_RESP_CB_DATA(evt_cb_data, handle, callback, user_data);
436 param = g_variant_new("(ii)", class, type);
438 g_dbus_connection_call(handle->dbus_connection,
439 DBUS_TELEPHONY_SERVICE, handle->path, DBUS_TELEPHONY_SS_INTERFACE,
440 "GetBarringStatus", param, 0,
441 G_DBUS_CALL_FLAGS_NONE, TAPI_DEFAULT_TIMEOUT, handle->ca,
442 on_response_get_ss_barring_status, evt_cb_data );
444 return TAPI_API_SUCCESS;
447 /**********************************************************************************************
449 * This function is used to change call barring password.
451 * @param pOldPassword[IN] of type char* Specifies the Old Call Barring Password.
452 * @param pNewPassword[IN] of type char* Specifies the New Call Barring Password.
453 * @param pNewPasswordAgain[IN] of type char* Specifies the New Call Barring Password for Confirm.
454 * @return enum type TapiResult_t Specifies the API's Return result.
457 ***********************************************************************************************/
458 EXPORT_API int tel_change_ss_barring_password(TapiHandle *handle,
459 const char *old_password,
460 const char *new_password,
461 const char *new_password_again,
462 tapi_response_cb callback, void *user_data)
464 struct tapi_resp_data *evt_cb_data = 0;
467 dbg("Func Entrance ");
469 TAPI_RET_ERR_NUM_IF_FAIL(handle, TAPI_API_INVALID_PTR);
470 TAPI_RET_ERR_NUM_IF_FAIL(old_password, TAPI_API_INVALID_PTR);
471 TAPI_RET_ERR_NUM_IF_FAIL(new_password, TAPI_API_INVALID_PTR);
472 TAPI_RET_ERR_NUM_IF_FAIL(new_password_again, TAPI_API_INVALID_PTR);
474 MAKE_RESP_CB_DATA(evt_cb_data, handle, callback, user_data);
476 param = g_variant_new("(sss)", old_password, new_password, new_password_again);
478 g_dbus_connection_call(handle->dbus_connection,
479 DBUS_TELEPHONY_SERVICE, handle->path, DBUS_TELEPHONY_SS_INTERFACE,
480 "ChangeBarringPassword", param, 0,
481 G_DBUS_CALL_FLAGS_NONE, TAPI_DEFAULT_TIMEOUT, handle->ca,
482 on_response_change_ss_barring_password, evt_cb_data );
484 return TAPI_API_SUCCESS;
487 /**********************************************************************************************
489 * This function is used to Activate or Deactivate the call forwarding feature.
491 * @param forwardInfo[IN] of type TelSsForwardInfo_t which specifies the Teleservice and CF flavour, Forwarded to number.
492 * @return enum type TapiResult_t Specifies the API's Return result.
495 ***********************************************************************************************/
496 EXPORT_API int tel_set_ss_forward(TapiHandle *handle, const TelSsForwardInfo_t *info, tapi_response_cb callback, void *user_data)
498 struct tapi_resp_data *evt_cb_data = 0;
502 dbg("Func Entrance ");
504 TAPI_RET_ERR_NUM_IF_FAIL(handle, TAPI_API_INVALID_PTR);
505 TAPI_RET_ERR_NUM_IF_FAIL(info, TAPI_API_INVALID_PTR);
507 MAKE_RESP_CB_DATA(evt_cb_data, handle, callback, user_data);
509 param = g_variant_new("(iiiiis)", info->Class, info->Condition,
510 info->NoReplyConditionTimer, info->Ton, info->Npi, info->szPhoneNumber);
512 switch ( info->Mode ) {
513 case TAPI_SS_CF_MODE_DISABLE_EV: {
514 dbg("[ check ] forwarding deactivate");
515 method = "DeactivateForwarding";
518 case TAPI_SS_CF_MODE_ENABLE_EV: {
519 dbg("[ check ] forwarding activate");
520 method = "ActivateForwarding";
523 case TAPI_SS_CF_MODE_REGISTRATION_EV: {
524 dbg("[ check ] forwarding registration");
525 method = "RegisterForwarding";
528 case TAPI_SS_CF_MODE_ERASURE_EV: {
529 dbg("[ check ] forwarding deregistration");
530 method = "DeregisterForwarding";
534 dbg("[ error ] invalid input : (0x%x)", info->Mode);
535 return TAPI_API_INVALID_INPUT;
538 g_dbus_connection_call(handle->dbus_connection,
539 DBUS_TELEPHONY_SERVICE, handle->path, DBUS_TELEPHONY_SS_INTERFACE,
541 G_DBUS_CALL_FLAGS_NONE, TAPI_DEFAULT_TIMEOUT, handle->ca,
542 on_response_get_ss_forward_status, evt_cb_data );
544 return TAPI_API_SUCCESS;
547 /**********************************************************************************************
549 * This function is used to interrogate the status of call forwarding feature.
551 * @param forwardType[IN] of type TelSsForwardType_t which specifies the telecommunication service.
552 * @param condition[IN] is of type TelSsForwardWhen_t specified the CF flavour
553 * @return enum type TapiResult_t Specifies the API's Return result.
556 ***********************************************************************************************/
557 EXPORT_API int tel_get_ss_forward_status(TapiHandle *handle, TelSsClass_t class, TelSsForwardWhen_t condition, tapi_response_cb callback, void *user_data)
559 struct tapi_resp_data *evt_cb_data = 0;
562 dbg("Func Entrance ");
564 TAPI_RET_ERR_NUM_IF_FAIL(handle, TAPI_API_INVALID_PTR);
565 TAPI_RET_ERR_NUM_IF_FAIL(callback, TAPI_API_INVALID_PTR);
567 MAKE_RESP_CB_DATA(evt_cb_data, handle, callback, user_data);
569 param = g_variant_new("(ii)", class, condition);
571 g_dbus_connection_call(handle->dbus_connection,
572 DBUS_TELEPHONY_SERVICE, handle->path, DBUS_TELEPHONY_SS_INTERFACE,
573 "GetForwardingStatus", param, 0,
574 G_DBUS_CALL_FLAGS_NONE, TAPI_DEFAULT_TIMEOUT, handle->ca,
575 on_response_get_ss_forward_status, evt_cb_data );
577 return TAPI_API_SUCCESS;
580 /**********************************************************************************************
582 * This function is used to Activate or dectivate call waiting feature.
584 * @param waitInfo[IN] of type TelSsWaitingInfo_t which specifies the telecommunication service and mode.
585 * @return enum type TapiResult_t Specifies the API's Return result.
588 ***********************************************************************************************/
589 EXPORT_API int tel_set_ss_waiting(TapiHandle *handle, const TelSsWaitingInfo_t *info, tapi_response_cb callback, void *user_data)
591 struct tapi_resp_data *evt_cb_data = 0;
595 dbg("Func Entrance ");
597 TAPI_RET_ERR_NUM_IF_FAIL(handle, TAPI_API_INVALID_PTR);
598 TAPI_RET_ERR_NUM_IF_FAIL(info, TAPI_API_INVALID_PTR);
600 MAKE_RESP_CB_DATA(evt_cb_data, handle, callback, user_data);
602 param = g_variant_new("(i)", info->Class);
604 if ( info->Mode == TAPI_SS_CW_MODE_ACTIVATE ) {
605 dbg("[ check ] waiting activate");
606 method = "ActivateWaiting";
608 dbg("[ check ] waiting deactivate");
609 method = "DeactivateWaiting";
612 g_dbus_connection_call(handle->dbus_connection,
613 DBUS_TELEPHONY_SERVICE, handle->path, DBUS_TELEPHONY_SS_INTERFACE,
615 G_DBUS_CALL_FLAGS_NONE, TAPI_DEFAULT_TIMEOUT, handle->ca,
616 on_response_get_ss_waiting_status, evt_cb_data );
618 return TAPI_API_SUCCESS;
621 /**********************************************************************************************
623 * This function is used to interrogate the status of call waiting feature.
625 * @param CallType[IN] of type TelSsCallType_t which specifies the telecommunication service .
626 * @return enum type TapiResult_t Specifies the API's Return result.
629 ***********************************************************************************************/
631 EXPORT_API int tel_get_ss_waiting_status(TapiHandle *handle, const TelSsClass_t class, tapi_response_cb callback, void *user_data)
633 struct tapi_resp_data *evt_cb_data = 0;
636 dbg("Func Entrance ");
638 TAPI_RET_ERR_NUM_IF_FAIL(handle, TAPI_API_INVALID_PTR);
639 TAPI_RET_ERR_NUM_IF_FAIL(callback, TAPI_API_INVALID_PTR);
641 MAKE_RESP_CB_DATA(evt_cb_data, handle, callback, user_data);
643 param = g_variant_new("(i)", class);
645 g_dbus_connection_call(handle->dbus_connection,
646 DBUS_TELEPHONY_SERVICE, handle->path, DBUS_TELEPHONY_SS_INTERFACE,
647 "GetWaitingStatus", param, 0,
648 G_DBUS_CALL_FLAGS_NONE, TAPI_DEFAULT_TIMEOUT, handle->ca,
649 on_response_get_ss_waiting_status, evt_cb_data );
651 return TAPI_API_SUCCESS;
654 /**********************************************************************************************
656 * This function is used to set the status of CLI services feature.
658 * @param CliType[IN] of type TelSsCliType_t which specifies the CLI service .
659 * @return enum type TapiResult_t Specifies the API's Return result.
662 ***********************************************************************************************/
663 EXPORT_API int tel_set_ss_cli_status(TapiHandle *handle, TelSsCliType_t type, TelSsCliStatus_t status, tapi_response_cb callback, void *user_data)
665 struct tapi_resp_data *evt_cb_data = 0;
668 dbg("Func Entrance ");
670 TAPI_RET_ERR_NUM_IF_FAIL(handle, TAPI_API_INVALID_PTR);
671 TAPI_RET_ERR_NUM_IF_FAIL(callback, TAPI_API_INVALID_PTR);
673 MAKE_RESP_CB_DATA(evt_cb_data, handle, callback, user_data);
675 param = g_variant_new("(ii)", type, status);
677 g_dbus_connection_call(handle->dbus_connection,
678 DBUS_TELEPHONY_SERVICE, handle->path, DBUS_TELEPHONY_SS_INTERFACE,
679 "SetCLIStatus", param, 0,
680 G_DBUS_CALL_FLAGS_NONE, TAPI_DEFAULT_TIMEOUT, handle->ca,
681 on_response_set_ss_cli_status, evt_cb_data );
683 return TAPI_API_SUCCESS;
686 /**********************************************************************************************
688 * This function is used to interrogate the status of CLI services feature.
690 * @param CliType[IN] of type TelSsCliType_t which specifies the CLI service .
691 * @return enum type TapiResult_t Specifies the API's Return result.
694 ***********************************************************************************************/
695 EXPORT_API int tel_get_ss_cli_status(TapiHandle *handle, TelSsCliType_t type, tapi_response_cb callback, void *user_data)
697 struct tapi_resp_data *evt_cb_data = 0;
700 dbg("Func Entrance ");
702 TAPI_RET_ERR_NUM_IF_FAIL(handle, TAPI_API_INVALID_PTR);
703 TAPI_RET_ERR_NUM_IF_FAIL(callback, TAPI_API_INVALID_PTR);
705 MAKE_RESP_CB_DATA(evt_cb_data, handle, callback, user_data);
707 param = g_variant_new("(i)", type);
709 g_dbus_connection_call(handle->dbus_connection,
710 DBUS_TELEPHONY_SERVICE, handle->path, DBUS_TELEPHONY_SS_INTERFACE,
711 "GetCLIStatus", param, 0,
712 G_DBUS_CALL_FLAGS_NONE, TAPI_DEFAULT_TIMEOUT, handle->ca,
713 on_response_get_ss_cli_status, evt_cb_data );
715 return TAPI_API_SUCCESS;
718 /**********************************************************************************************
720 * This function is used to send a USSD string and also the User response for a NW intiated USSD.
722 * @param pAppMsg[IN] of type TelSsUssdMsgInfo_t which specifies the USSD String,length of the string, format of the string.
723 * @return enum type TapiResult_t Specifies the API's Return result.
724 * @remark TelSsUssdMsgInfo_t ->IndType is not used while calling this function, This is used for sending the response.
725 * Limo standard defines only one structure for Request and response.
727 ***********************************************************************************************/
728 EXPORT_API int tel_send_ss_ussd_request(TapiHandle *handle, const TelSsUssdMsgInfo_t *info, tapi_response_cb callback, void *user_data)
730 struct tapi_resp_data *evt_cb_data = 0;
733 dbg("Func Entrance ");
735 TAPI_RET_ERR_NUM_IF_FAIL(handle, TAPI_API_INVALID_PTR);
736 TAPI_RET_ERR_NUM_IF_FAIL(info, TAPI_API_INVALID_PTR);
738 MAKE_RESP_CB_DATA(evt_cb_data, handle, callback, user_data);
740 param = g_variant_new("(iiis)", info->Type, info->Dcs, info->Length, info->szString);
742 g_dbus_connection_call(handle->dbus_connection,
743 DBUS_TELEPHONY_SERVICE, handle->path, DBUS_TELEPHONY_SS_INTERFACE,
744 "SendUSSD", param, 0,
745 G_DBUS_CALL_FLAGS_NONE, G_MAXINT, handle->ca,
746 on_response_send_ss_ussd_request, evt_cb_data );
748 return TAPI_API_SUCCESS;
751 /**********************************************************************************************
753 * This function is used to Sets AOC information.
755 * @param AocType[IN] of type TelSsAocType_t which specifies the which AOC type to read.
756 * @return enum type TapiResult_t Specifies the API's Return result.
759 ***********************************************************************************************/
760 EXPORT_API int tel_get_ss_aoc_info(TapiHandle *handle, TelSsAocType_t AocType, tapi_response_cb callback, void *user_data)
765 /**********************************************************************************************
767 * This function is used to Sets AOC information.
769 * @param AocSetInfo[IN] of type TelCallAocInfo_t which specifies the AOC info parameters .
770 * @return enum type TapiResult_t Specifies the API's Return result.
773 ***********************************************************************************************/
774 EXPORT_API int tel_set_ss_aoc_info(TapiHandle *handle, TelCallAocInfo_t *AocSetInfo, tapi_response_cb callback, void *user_data)