upload tizen1.0 source
[framework/telephony/libslp-tapi.git] / src / tapi_proxy_sat.c
1 /*
2  * libslp-tapi
3  *
4  * Copyright (c) 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: Ja-young Gu <jygu@samsung.com>
7  *
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
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
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.
19  */
20
21 #include <stdio.h>
22 #include <string.h>
23
24 #include <vconf.h>
25
26 #include "TelDefines.h"
27 #include "tel_cs_conn.h"
28 #include "tapi_proxy.h"
29 #include "TelUtility.h"
30 #include "TapiUtility.h"
31 #include "TelSat.h"
32
33 extern tapi_dbus_connection_name conn_name;
34
35 /**
36  *
37  * To send envelope command (MENU SELECTION) to USIM.
38  *
39  * @return              values in enum TapiResult_t.
40  * @param[in]           TelSatMenuSelectionReqInfo_t    menu selection evelope data.
41  * @Interface           Asynchronous.
42  * @remark
43  * @Refer               TelSatMenuSelectionReqInfo_t
44  */
45 EXPORT_API int tel_select_sat_menu(TelSatMenuSelectionReqInfo_t *pMenuSelect, int *pRequestId)
46 {
47         int ret_val;
48         TS_BOOL ret = FALSE;
49
50         TAPI_GLIB_INIT_PARAMS();
51
52         if (pMenuSelect == NULL)
53                 return TAPI_API_INVALID_PTR;
54
55         if (pRequestId == NULL)
56                 return TAPI_API_INVALID_PTR;
57
58         if (conn_name.length_of_name == 0) {
59                 TAPI_LIB_DEBUG(LEVEL_ERR, "No dbus connection name");
60                 return TAPI_API_OPERATION_FAILED;
61         }
62
63         TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
64
65         TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
66                         out_param1,out_param2,out_param3,out_param4);
67
68         g_array_append_vals(in_param1, pMenuSelect, sizeof(TelSatMenuSelectionReqInfo_t));
69
70         TAPI_LIB_DEBUG(LEVEL_DEBUG, " Send env cmd... menu selection");
71
72         g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
73
74         ret = tapi_send_request(TAPI_CS_SERVICE_SIMATK, TAPI_CS_SIMATK_SEND_MENU_SELECTION_ENVELOPE, in_param1, in_param2,
75                         in_param3, in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
76
77         if (TRUE == ret) {
78                 ret_val = g_array_index(out_param1, int, 0);
79                 *pRequestId = g_array_index(out_param2, int, 0);
80         }
81         else {
82                 ret_val = TAPI_API_SYSTEM_RPC_LINK_DOWN;
83                 *pRequestId = INVALID_REQUEST_ID;
84         }
85
86         TAPI_LIB_DEBUG(LEVEL_DEBUG, " ret: %d \n", ret);
87
88         TAPI_LIB_DEBUG(LEVEL_DEBUG, " ret_val: %d \n", ret_val);
89
90         TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
91                         out_param1,out_param2,out_param3,out_param4);
92
93         return ret_val;
94 }
95
96 /**
97  *
98  * API to send event download to SIM.
99  *
100  * @return              values in enum TapiResult_t.
101  * @param[in]           TelSatEventDownloadReqInfo_t    event download data.
102  * @Interface           Asynchronous.
103  * @remark
104  * @Refer               TelSatEventDownloadReqInfo_t
105  */
106 EXPORT_API int tel_download_sat_event(TelSatEventDownloadReqInfo_t *pEventData, int *pRequestId)
107 {
108         TAPI_LIB_DEBUG(LEVEL_DEBUG, "Enter");
109
110         int ret_val;
111         TS_BOOL ret = FALSE;
112
113         return TAPI_API_NOT_SUPPORTED;
114 #if 0
115         TAPI_GLIB_INIT_PARAMS();
116
117         if (pEventData == NULL){
118                 TAPI_LIB_DEBUG(LEVEL_ERR, "Error: 1st param is NULL");
119                 return TAPI_API_INVALID_PTR;
120         }
121
122         if (pRequestId == NULL){
123                 TAPI_LIB_DEBUG(LEVEL_ERR, "Error: 2nd param is NULL");
124                 return TAPI_API_INVALID_PTR;
125         }
126
127         if (conn_name.length_of_name == 0) {
128                 TAPI_LIB_DEBUG(LEVEL_ERR, "Error: No dbus connection name");
129                 return TAPI_API_OPERATION_FAILED;
130         }
131
132         TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
133
134         TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
135                         out_param1,out_param2,out_param3,out_param4);
136
137         g_array_append_vals(in_param1, pEventData, sizeof(TelSatEventDownloadReqInfo_t));
138         g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
139
140         TAPI_LIB_DEBUG(LEVEL_DEBUG, " event download: event=0x%x", pEventData->eventDownloadType);
141
142         ret = tapi_send_request(TAPI_CS_SERVICE_SIMATK, TAPI_CS_SIMATK_SEND_EVENT_DOWNLOAD, in_param1, in_param2,
143                         in_param3, in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
144         //prevent 2223
145         if (TRUE == ret) {
146                 ret_val = g_array_index(out_param1, int, 0);
147                 *pRequestId = g_array_index(out_param2, int, 0);
148         }
149         else {
150                 ret_val = TAPI_API_SYSTEM_RPC_LINK_DOWN;
151                 *pRequestId = INVALID_REQUEST_ID;
152         }
153
154         TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
155                         out_param1,out_param2,out_param3,out_param4);
156
157         return ret_val;
158 #endif
159 }
160
161 /**
162  *
163  * API to get main menu information.
164  *
165  * @return              values in enum TapiResult_t.
166  * @param[out]          TelSatSetupMenuInfo_t   main menu data.
167  * @Interface           Synchronous.
168  * @remark
169  * @Refer               TelSatSetupMenuInfo_t
170  */
171 EXPORT_API int tel_get_sat_main_menu_info(TelSatSetupMenuInfo_t *pMainMenu)
172 {
173         TAPI_LIB_DEBUG(LEVEL_DEBUG, " Get Main Menu Information");
174         int ret_val;
175         TS_BOOL ret = FALSE;
176
177         TAPI_GLIB_INIT_PARAMS();
178
179         if (pMainMenu == NULL)
180                 return TAPI_API_INVALID_PTR;
181
182         TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
183
184         TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
185                         out_param1,out_param2,out_param3,out_param4);
186
187         g_array_append_vals(in_param1, pMainMenu, sizeof(TelSatSetupMenuInfo_t));
188         g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
189
190         ret = tapi_send_request(TAPI_CS_SERVICE_SIMATK, TAPI_CS_SIMATK_GET_MAIN_MENU_INFO, in_param1, in_param2, in_param3,
191                         in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
192
193         if (TRUE == ret) {
194                 ret_val = g_array_index(out_param1, int, 0);
195                 if (ret_val == TAPI_API_SUCCESS)
196                         *pMainMenu = g_array_index(out_param2,TelSatSetupMenuInfo_t,0);
197         }
198         else {
199                 ret_val = TAPI_API_SYSTEM_RPC_LINK_DOWN;
200         }
201
202         TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
203                         out_param1,out_param2,out_param3,out_param4);
204
205         return ret_val;
206 }
207
208 /**
209  *
210  * API to send application excution result.
211  *
212  * @return              values in enum TapiResult_t.
213  * @param[in]           TelSatAppsRetInfo_t     application result information data.
214  * @Interface           Asynchronous.
215  * @remark
216  * @Refer               TelSatAppsRetInfo_t
217  */
218 EXPORT_API int tel_send_sat_app_exec_result(TelSatAppsRetInfo_t *pAppRetInfo)
219 {
220         TAPI_LIB_DEBUG(LEVEL_DEBUG, " tel_send_sat_app_exec_result");
221         int ret_val;
222         TS_BOOL ret = FALSE;
223
224         TAPI_GLIB_INIT_PARAMS();
225
226         if (pAppRetInfo == NULL)
227                 return TAPI_API_INVALID_PTR;
228
229         TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
230
231         TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
232                         out_param1,out_param2,out_param3,out_param4);
233
234         g_array_append_vals(in_param1, pAppRetInfo, sizeof(TelSatAppsRetInfo_t));
235         g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
236
237         ret = tapi_send_request(TAPI_CS_SERVICE_SIMATK, TAPI_CS_SIMATK_SEND_APP_EXEC_RESULT, in_param1, in_param2,
238                         in_param3, in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
239
240         if (TRUE == ret) {
241                 ret_val = g_array_index(out_param1, int, 0);
242         }
243         else {
244                 ret_val = TAPI_API_SYSTEM_RPC_LINK_DOWN;
245         }
246
247         TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
248                         out_param1,out_param2,out_param3,out_param4);
249
250         return ret_val;
251 }
252
253 /**
254  *
255  * API to send UI display status.
256  *
257  * @return              values in enum TapiResult_t.
258  * @param[in]           TelSatUiDisplayStatusType_t     display status data.
259  command_id     command identifier
260  * @Interface           Asynchronous.
261  * @remark
262  * @Refer               TelSatUiDisplayStatusType_t
263  */
264 EXPORT_API int tel_send_ui_display_status(int commandId, TelSatUiDisplayStatusType_t status)
265 {
266         TAPI_LIB_DEBUG(LEVEL_DEBUG, " tel_send_ui_display_status");
267         TAPI_LIB_DEBUG(LEVEL_DEBUG,"status [%d]\n", status);
268         int ret_val;
269         TS_BOOL ret = FALSE;
270
271         return TAPI_API_NOT_SUPPORTED;
272
273 #if 0
274         TAPI_GLIB_INIT_PARAMS();
275
276         if (commandId < 0) {
277                 TAPI_LIB_DEBUG(LOG_DEBUG,"command id should be positive");
278                 return TAPI_API_SAT_INVALID_COMMAND_ID;
279         }
280
281         if ((status != TAPI_SAT_DISPLAY_SUCCESS) && (status != TAPI_SAT_DISPLAY_FAIL)) {
282                 TAPI_LIB_DEBUG(LOG_DEBUG,"invalid status sent");
283                 return TAPI_API_INVALID_INPUT;
284         }
285
286         TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
287
288         TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
289                         out_param1,out_param2,out_param3,out_param4);
290
291         g_array_append_vals(in_param1, &commandId, sizeof(int));
292         g_array_append_vals(in_param1, &status, sizeof(TelSatUiDisplayStatusType_t));
293         g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
294
295         ret = tapi_send_request(TAPI_CS_SERVICE_SIMATK, TAPI_CS_UI_DISPLAY_STATUS, in_param1, in_param2, in_param3,
296                         in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
297         if (TRUE == ret) {
298                 ret_val = g_array_index(out_param1, int, 0);
299         }
300         else {
301                 ret_val = TAPI_API_SYSTEM_RPC_LINK_DOWN;
302         }
303
304         TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
305                         out_param1,out_param2,out_param3,out_param4);
306
307         return ret_val;
308 #endif
309 }
310
311 /**
312  *
313  * API to send UI user confirmation data.
314  *
315  * @return              values in enum TapiResult_t.
316  * @param[in]           command_id      command identifier
317  command_type           command type
318  key_type                       user confirmation value
319  addtional_data         addtional data
320  data_len                       data length
321  * @Interface           Asynchronous.
322  * @remark
323  * @Refer
324  */
325 EXPORT_API int tel_send_sat_ui_user_confirm(TelSatUiUserConfirmInfo_t *pUserConfirmData)
326 {
327         TAPI_LIB_DEBUG(LEVEL_DEBUG, " tel_send_sat_ui_user_confirm");
328         int ret_val;
329         TS_BOOL ret = FALSE;
330         TelSatTextInfo_t add_data;
331
332         TAPI_GLIB_INIT_PARAMS();
333
334         if (pUserConfirmData == NULL) {
335                 TAPI_LIB_DEBUG(LEVEL_DEBUG, " pUserConfirmData is NULL");
336                 return TAPI_API_INVALID_PTR;
337         }
338
339         if (pUserConfirmData->commandId < 0) {
340                 TAPI_LIB_DEBUG(LOG_DEBUG,"command id should be positive");
341                 return TAPI_API_SAT_INVALID_COMMAND_ID;
342         }
343
344         if (pUserConfirmData->dataLen < 0) {
345                 TAPI_LIB_DEBUG(LOG_DEBUG,"data length should not be negative [%d]", pUserConfirmData->dataLen);
346                 return TAPI_API_INVALID_INPUT;
347         }
348
349         if ((pUserConfirmData->keyType < TAPI_SAT_USER_CONFIRM_YES) || (pUserConfirmData->keyType
350                         > TAPI_SAT_USER_CONFIRM_TIMEOUT)) {
351                 TAPI_LIB_DEBUG(LOG_DEBUG,"invalid key type");
352                 return TAPI_API_INVALID_INPUT;
353         }
354
355         if ((pUserConfirmData->pAdditionalData == NULL && pUserConfirmData->dataLen != 0)) {
356                 TAPI_LIB_DEBUG(LOG_DEBUG,"essential data(pAdditionalData or dataLen) is absent");
357                 return TAPI_API_INVALID_INPUT;
358         }
359
360         TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
361
362         TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
363                         out_param1,out_param2,out_param3,out_param4);
364
365         g_array_append_vals(in_param1, &pUserConfirmData->commandId, sizeof(int));
366         g_array_append_vals(in_param1, &pUserConfirmData->commandType, sizeof(int));
367         g_array_append_vals(in_param1, &pUserConfirmData->keyType, sizeof(int));
368         g_array_append_vals(in_param1, &pUserConfirmData->dataLen, sizeof(int));
369
370         if (pUserConfirmData->pAdditionalData != NULL && pUserConfirmData->dataLen != 0) {
371                 memset(&add_data, 0x00, sizeof(TelSatTextInfo_t));
372                 memcpy(add_data.string, pUserConfirmData->pAdditionalData, pUserConfirmData->dataLen);
373                 add_data.stringLen = pUserConfirmData->dataLen;
374                 g_array_append_vals(in_param2, &add_data, sizeof(TelSatTextInfo_t));
375         }
376
377         g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
378
379         ret = tapi_send_request(TAPI_CS_SERVICE_SIMATK, TAPI_CS_UI_USER_CONFIRM, in_param1, in_param2, in_param3,
380                         in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
381         if (TRUE == ret) {
382                 ret_val = g_array_index(out_param1, int, 0);
383         }
384         else {
385                 ret_val = TAPI_API_SYSTEM_RPC_LINK_DOWN;
386         }
387
388         TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
389                         out_param1,out_param2,out_param3,out_param4);
390
391         if (ret_val == TAPI_API_SUCCESS) {
392                 return TRUE;
393         }
394
395         return FALSE;
396 }