4 * Copyright (c) 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Kyeongchul Kim <kyeongchul.kim@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 "TelDefines.h"
27 #include "tel_cs_conn.h"
28 #include "tapi_proxy.h"
29 #include "TelUtility.h"
30 #include "TapiUtility.h"
33 extern tapi_dbus_connection_name conn_name;
37 * To send envelope command (MENU SELECTION) to USIM.
39 * @return values in enum TapiResult_t.
40 * @param[in] TelSatMenuSelectionReqInfo_t menu selection evelope data.
41 * @Interface Asynchronous.
43 * @Refer TelSatMenuSelectionReqInfo_t
45 EXPORT_API int tel_select_sat_menu(TelSatMenuSelectionReqInfo_t *pMenuSelect, int *pRequestId)
49 TAPI_GLIB_INIT_PARAMS();
51 if (pMenuSelect == NULL)
52 return TAPI_API_INVALID_PTR;
54 if (pRequestId == NULL)
55 return TAPI_API_INVALID_PTR;
57 if (conn_name.length_of_name == 0) {
58 TAPI_LIB_DEBUG(LEVEL_ERR, "No dbus connection name");
59 return TAPI_API_OPERATION_FAILED;
62 TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
64 TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
65 out_param1,out_param2,out_param3,out_param4);
67 g_array_append_vals(in_param1, pMenuSelect, sizeof(TelSatMenuSelectionReqInfo_t));
69 TAPI_LIB_DEBUG(LEVEL_DEBUG, " Send env cmd... menu selection");
71 g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
73 ret = tapi_send_request(TAPI_CS_SERVICE_SIMATK, TAPI_CS_SIMATK_SEND_MENU_SELECTION_ENVELOPE, in_param1, in_param2,
74 in_param3, in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
77 ret_val = g_array_index(out_param1, int, 0);
78 *pRequestId = g_array_index(out_param2, int, 0);
81 ret_val = TAPI_API_SYSTEM_RPC_LINK_DOWN;
82 *pRequestId = INVALID_REQUEST_ID;
85 TAPI_LIB_DEBUG(LEVEL_DEBUG, " ret: %d \n", ret);
87 TAPI_LIB_DEBUG(LEVEL_DEBUG, " ret_val: %d \n", ret_val);
89 TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
90 out_param1,out_param2,out_param3,out_param4);
97 * API to send event download to SIM.
99 * @return values in enum TapiResult_t.
100 * @param[in] TelSatEventDownloadReqInfo_t event download data.
101 * @Interface Asynchronous.
103 * @Refer TelSatEventDownloadReqInfo_t
105 EXPORT_API int tel_download_sat_event(TelSatEventDownloadReqInfo_t *pEventData, int *pRequestId)
107 TAPI_LIB_DEBUG(LEVEL_DEBUG, "Enter");
112 TAPI_GLIB_INIT_PARAMS();
114 if (pEventData == NULL){
115 TAPI_LIB_DEBUG(LEVEL_ERR, "Error: 1st param is NULL");
116 return TAPI_API_INVALID_PTR;
119 if (pRequestId == NULL){
120 TAPI_LIB_DEBUG(LEVEL_ERR, "Error: 2nd param is NULL");
121 return TAPI_API_INVALID_PTR;
124 if (conn_name.length_of_name == 0) {
125 TAPI_LIB_DEBUG(LEVEL_ERR, "Error: No dbus connection name");
126 return TAPI_API_OPERATION_FAILED;
129 TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
131 TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
132 out_param1,out_param2,out_param3,out_param4);
134 g_array_append_vals(in_param1, pEventData, sizeof(TelSatEventDownloadReqInfo_t));
135 g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
137 TAPI_LIB_DEBUG(LEVEL_DEBUG, " event download: event=0x%x", pEventData->eventDownloadType);
139 ret = tapi_send_request(TAPI_CS_SERVICE_SIMATK, TAPI_CS_SIMATK_SEND_EVENT_DOWNLOAD, in_param1, in_param2,
140 in_param3, in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
143 ret_val = g_array_index(out_param1, int, 0);
144 *pRequestId = g_array_index(out_param2, int, 0);
147 ret_val = TAPI_API_SYSTEM_RPC_LINK_DOWN;
148 *pRequestId = INVALID_REQUEST_ID;
151 TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
152 out_param1,out_param2,out_param3,out_param4);
159 * API to get main menu information.
161 * @return values in enum TapiResult_t.
162 * @param[out] TelSatSetupMenuInfo_t main menu data.
163 * @Interface Synchronous.
165 * @Refer TelSatSetupMenuInfo_t
167 EXPORT_API int tel_get_sat_main_menu_info(TelSatSetupMenuInfo_t *pMainMenu)
169 TAPI_LIB_DEBUG(LEVEL_DEBUG, " Get Main Menu Information");
172 TAPI_GLIB_INIT_PARAMS();
174 if (pMainMenu == NULL)
175 return TAPI_API_INVALID_PTR;
177 TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
179 TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
180 out_param1,out_param2,out_param3,out_param4);
182 g_array_append_vals(in_param1, pMainMenu, sizeof(TelSatSetupMenuInfo_t));
183 g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
185 ret = tapi_send_request(TAPI_CS_SERVICE_SIMATK, TAPI_CS_SIMATK_GET_MAIN_MENU_INFO, in_param1, in_param2, in_param3,
186 in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
189 ret_val = g_array_index(out_param1, int, 0);
190 if (ret_val == TAPI_API_SUCCESS)
191 *pMainMenu = g_array_index(out_param2,TelSatSetupMenuInfo_t,0);
194 ret_val = TAPI_API_SYSTEM_RPC_LINK_DOWN;
197 TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
198 out_param1,out_param2,out_param3,out_param4);
205 * API to send application excution result.
207 * @return values in enum TapiResult_t.
208 * @param[in] TelSatAppsRetInfo_t application result information data.
209 * @Interface Asynchronous.
211 * @Refer TelSatAppsRetInfo_t
213 EXPORT_API int tel_send_sat_app_exec_result(TelSatAppsRetInfo_t *pAppRetInfo)
215 TAPI_LIB_DEBUG(LEVEL_DEBUG, " tel_send_sat_app_exec_result");
218 TAPI_GLIB_INIT_PARAMS();
220 if (pAppRetInfo == NULL)
221 return TAPI_API_INVALID_PTR;
223 TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
225 TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
226 out_param1,out_param2,out_param3,out_param4);
228 g_array_append_vals(in_param1, pAppRetInfo, sizeof(TelSatAppsRetInfo_t));
229 g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
231 ret = tapi_send_request(TAPI_CS_SERVICE_SIMATK, TAPI_CS_SIMATK_SEND_APP_EXEC_RESULT, in_param1, in_param2,
232 in_param3, in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
235 ret_val = g_array_index(out_param1, int, 0);
238 ret_val = TAPI_API_SYSTEM_RPC_LINK_DOWN;
241 TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
242 out_param1,out_param2,out_param3,out_param4);
249 * API to send UI display status.
251 * @return values in enum TapiResult_t.
252 * @param[in] TelSatUiDisplayStatusType_t display status data.
253 command_id command identifier
254 * @Interface Asynchronous.
256 * @Refer TelSatUiDisplayStatusType_t
258 EXPORT_API int tel_send_ui_display_status(int commandId, TelSatUiDisplayStatusType_t status)
260 TAPI_LIB_DEBUG(LEVEL_DEBUG, " tel_send_ui_display_status");
261 TAPI_LIB_DEBUG(LEVEL_DEBUG,"status [%d]\n", status);
264 TAPI_GLIB_INIT_PARAMS();
267 TAPI_LIB_DEBUG(LOG_DEBUG,"command id should be positive");
268 return TAPI_API_SAT_INVALID_COMMAND_ID;
271 if ((status != TAPI_SAT_DISPLAY_SUCCESS) && (status != TAPI_SAT_DISPLAY_FAIL)) {
272 TAPI_LIB_DEBUG(LOG_DEBUG,"invalid status sent");
273 return TAPI_API_INVALID_INPUT;
276 TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
278 TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
279 out_param1,out_param2,out_param3,out_param4);
281 g_array_append_vals(in_param1, &commandId, sizeof(int));
282 g_array_append_vals(in_param1, &status, sizeof(TelSatUiDisplayStatusType_t));
283 g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
285 ret = tapi_send_request(TAPI_CS_SERVICE_SIMATK, TAPI_CS_UI_DISPLAY_STATUS, in_param1, in_param2, in_param3,
286 in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
288 ret_val = g_array_index(out_param1, int, 0);
291 ret_val = TAPI_API_SYSTEM_RPC_LINK_DOWN;
294 TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
295 out_param1,out_param2,out_param3,out_param4);
302 * API to send UI user confirmation data.
304 * @return values in enum TapiResult_t.
305 * @param[in] command_id command identifier
306 command_type command type
307 key_type user confirmation value
308 addtional_data addtional data
310 * @Interface Asynchronous.
314 EXPORT_API int tel_send_sat_ui_user_confirm(TelSatUiUserConfirmInfo_t *pUserConfirmData)
316 TAPI_LIB_DEBUG(LEVEL_DEBUG, " tel_send_sat_ui_user_confirm");
319 TelSatTextInfo_t add_data;
320 TAPI_GLIB_INIT_PARAMS();
322 if (pUserConfirmData == NULL) {
323 TAPI_LIB_DEBUG(LEVEL_DEBUG, " pUserConfirmData is NULL");
324 return TAPI_API_INVALID_PTR;
327 if (pUserConfirmData->commandId < 0) {
328 TAPI_LIB_DEBUG(LOG_DEBUG,"command id should be positive");
329 return TAPI_API_SAT_INVALID_COMMAND_ID;
332 if (pUserConfirmData->dataLen < 0) {
333 TAPI_LIB_DEBUG(LOG_DEBUG,"data length should not be negative [%d]", pUserConfirmData->dataLen);
334 return TAPI_API_INVALID_INPUT;
337 if ((pUserConfirmData->keyType < TAPI_SAT_USER_CONFIRM_YES) || (pUserConfirmData->keyType
338 > TAPI_SAT_USER_CONFIRM_TIMEOUT)) {
339 TAPI_LIB_DEBUG(LOG_DEBUG,"invalid key type");
340 return TAPI_API_INVALID_INPUT;
343 if ((pUserConfirmData->pAdditionalData == NULL && pUserConfirmData->dataLen != 0)) {
344 TAPI_LIB_DEBUG(LOG_DEBUG,"essential data(pAdditionalData or dataLen) is absent");
345 return TAPI_API_INVALID_INPUT;
348 TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
350 TAPI_GLIB_ALLOC_PARAMS(in_param1,in_param2,in_param3,in_param4,
351 out_param1,out_param2,out_param3,out_param4);
353 g_array_append_vals(in_param1, &pUserConfirmData->commandId, sizeof(int));
354 g_array_append_vals(in_param1, &pUserConfirmData->commandType, sizeof(int));
355 g_array_append_vals(in_param1, &pUserConfirmData->keyType, sizeof(int));
356 g_array_append_vals(in_param1, &pUserConfirmData->dataLen, sizeof(int));
358 if (pUserConfirmData->pAdditionalData != NULL && pUserConfirmData->dataLen != 0) {
359 memset(&add_data, 0x00, sizeof(TelSatTextInfo_t));
360 memcpy(add_data.string, pUserConfirmData->pAdditionalData, pUserConfirmData->dataLen);
361 add_data.stringLen = pUserConfirmData->dataLen;
362 g_array_append_vals(in_param2, &add_data, sizeof(TelSatTextInfo_t));
365 g_array_append_vals(in_param4, &conn_name, sizeof(tapi_dbus_connection_name));
367 ret = tapi_send_request(TAPI_CS_SERVICE_SIMATK, TAPI_CS_UI_USER_CONFIRM, in_param1, in_param2, in_param3,
368 in_param4, &out_param1, &out_param2, &out_param3, &out_param4);
370 ret_val = g_array_index(out_param1, int, 0);
373 ret_val = TAPI_API_SYSTEM_RPC_LINK_DOWN;
376 TAPI_GLIB_FREE_PARAMS(in_param1,in_param2,in_param3,in_param4,
377 out_param1,out_param2,out_param3,out_param4);
379 if (ret_val == TAPI_API_SUCCESS) {