upload tizen1.0 source
[framework/telephony/libslp-tapi.git] / src / tapi_proxy_misc.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
22 #include <vconf.h>
23
24 #include <TapiUtility.h>
25 #include <TelErr.h>
26 #include <ITapiMisc.h>
27
28 #include "tel_cs_conn.h"
29 #include "tapi_proxy_internal.h"
30
31
32 static int _tel_check_tapi_state()
33 {
34         int vconf_ret = 0;
35         int tapi_state = 0;
36
37         vconf_ret = vconf_get_int(VCONFKEY_TELEPHONY_TAPI_STATE, (int *) &tapi_state);
38
39         if (vconf_ret != 0 || tapi_state != 1) {
40                 TAPI_LIB_DEBUG(LEVEL_ALERT, "FAIL TO GET VCONFKEY_TELEPHONY_TAPI_STATE or SERVICE NOT READY");
41                 return TAPI_API_SERVICE_NOT_READY;
42         }
43
44         return 0;
45 }
46
47 TS_BOOL __tel_check_misc_valid(tapi_misc_time_zone_info_type *zone_info)
48 {
49         TAPI_LIB_DEBUG(LEVEL_DEBUG, "Func Entrance");
50
51         if (0x00 > zone_info->time_zone_valid || zone_info->time_zone_valid > 0x04)
52                 return FALSE;
53
54         if (1 > zone_info->month || zone_info->month > 12)
55                 return FALSE;
56         if (1 > zone_info->day || zone_info->day > 31)
57                 return FALSE;
58         if (0 > (int) zone_info->hour || (int) zone_info->hour > 23)
59                 return FALSE;
60         if ((int) zone_info->minute > 59)
61                 return FALSE;
62         if ((int) zone_info->second > 59)
63                 return FALSE;
64
65         //no need check  (TS_UINT8)zone_info->time_zone
66
67         if (0x00 > zone_info->daylight_adjust || zone_info->daylight_adjust > 0x02)
68                 return FALSE;
69         if (0x00 > zone_info->day_of_week || zone_info->day_of_week > 0x06)
70                 return FALSE;
71
72         return TRUE;
73 }
74
75 EXPORT_API int tel_get_misc_timezone_mode(int* bTimezone_valid)
76 {
77         TS_BOOL ret = FALSE;
78         int api_err = TAPI_API_SUCCESS;
79
80         TAPI_LIB_DEBUG(LEVEL_DEBUG, "Func Entrance ");
81
82         if (_tel_check_tapi_state() != 0)
83                 return TAPI_API_SERVICE_NOT_READY;
84
85         TAPI_GLIB_INIT_PARAMS();
86         TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status_internal(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
87         TAPI_GLIB_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param1, out_param2, out_param3, out_param4);
88
89         ret = tapi_send_request_internal(TAPI_CS_SERVICE_MISC, TAPI_CS_MISC_TIMEZONE_GETMODE,
90                         in_param1, in_param2, in_param3, in_param4,
91                         &out_param1, &out_param2, &out_param3, &out_param4);
92
93         if (TRUE == ret) {
94                 *bTimezone_valid = g_array_index(out_param3,int ,0);
95                 api_err = TAPI_API_SUCCESS;
96         }
97         else {
98                 api_err = TAPI_API_SYSTEM_RPC_LINK_DOWN;
99         }
100
101         TAPI_GLIB_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param1, out_param2, out_param3, out_param4);
102
103         return api_err;
104 }
105
106 EXPORT_API int tel_get_misc_timezone_info(void)
107 {
108         TS_BOOL ret = FALSE;
109         int api_err = TAPI_API_SUCCESS;
110
111         TAPI_LIB_DEBUG(LEVEL_DEBUG, "Func Entrance ");
112
113         if (_tel_check_tapi_state() != 0)
114                 return TAPI_API_SERVICE_NOT_READY;
115
116         TAPI_GLIB_INIT_PARAMS();
117         TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status_internal(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
118         TAPI_GLIB_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param1, out_param2, out_param3, out_param4);
119
120         ret = tapi_send_request_internal(TAPI_CS_SERVICE_MISC, TAPI_CS_MISC_TIMEZONE_GETINFO,
121                         in_param1, in_param2, in_param3, in_param4,
122                         &out_param1, &out_param2, &out_param3, &out_param4);
123
124         if (TRUE == ret) {
125                 api_err = TAPI_API_SUCCESS;
126         }
127         else {
128                 api_err = TAPI_API_SYSTEM_RPC_LINK_DOWN;
129         }
130
131         TAPI_GLIB_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param1, out_param2, out_param3, out_param4);
132
133         return api_err;
134 }
135
136 EXPORT_API int tel_set_misc_timezone_info(tapi_misc_time_zone_info_type *timezone_info)
137 {
138         TS_BOOL bValid = FALSE;
139         TS_BOOL ret = FALSE;
140         int api_err = TAPI_API_SUCCESS;
141
142         TAPI_LIB_DEBUG(LEVEL_DEBUG, "Func Entrance ");
143
144         if (_tel_check_tapi_state() != 0)
145                 return TAPI_API_SERVICE_NOT_READY;
146
147         TAPI_RETURN_VAL_IF_FAIL(timezone_info, TAPI_API_MISC_INPUTPARM_ERROR);
148
149         //check validity of variable.
150         bValid = __tel_check_misc_valid(timezone_info);
151         if (bValid == FALSE) {
152                 TAPI_LIB_DEBUG(LEVEL_ALERT, "TAPI_API_MISC_VALIDITY_ERROR");
153                 return TAPI_API_MISC_VALIDITY_ERROR;
154         }
155
156         TAPI_GLIB_INIT_PARAMS();
157         TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status_internal(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
158         TAPI_GLIB_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param1, out_param2, out_param3, out_param4);
159
160         g_array_append_vals(in_param1, timezone_info, sizeof(tapi_misc_time_zone_info_type));
161
162         ret = tapi_send_request_internal(TAPI_CS_SERVICE_MISC, TAPI_CS_MISC_TIMEZONE_SETINFO,
163                         in_param1, in_param2, in_param3, in_param4,
164                         &out_param1, &out_param2, &out_param3, &out_param4);
165
166         if (TRUE == ret) {
167                 api_err = TAPI_API_SUCCESS;
168         }
169         else {
170                 api_err = TAPI_API_SYSTEM_RPC_LINK_DOWN;
171         }
172
173         TAPI_GLIB_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param1, out_param2, out_param3, out_param4);
174
175         return api_err;
176 }
177
178 EXPORT_API int tel_confirm_misc_timezone_Info(tapi_misc_time_zone_info_type *timezone_info)
179 {
180         TS_BOOL ret = FALSE;
181         int api_err = TAPI_API_SUCCESS;
182
183         TAPI_LIB_DEBUG(LEVEL_DEBUG, "Func Entrance ");
184
185         if (_tel_check_tapi_state() != 0)
186                 return TAPI_API_SERVICE_NOT_READY;
187
188         TAPI_RETURN_VAL_IF_FAIL(timezone_info, TAPI_API_MISC_INPUTPARM_ERROR);
189         TAPI_GLIB_INIT_PARAMS();
190         TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status_internal(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
191
192         TAPI_GLIB_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param1, out_param2, out_param3, out_param4);
193
194         g_array_append_vals(in_param1, timezone_info, sizeof(tapi_misc_time_zone_info_type));
195
196         ret = tapi_send_request_internal(TAPI_CS_SERVICE_MISC, TAPI_CS_MISC_TIMEZONE_CONFIRMINFO,
197                         in_param1, in_param2, in_param3, in_param4,
198                         &out_param1, &out_param2, &out_param3, &out_param4);
199
200         if (TRUE == ret) {
201                 api_err = TAPI_API_SUCCESS;
202         }
203         else {
204                 api_err = TAPI_API_SYSTEM_RPC_LINK_DOWN;
205         }
206
207         TAPI_GLIB_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param1, out_param2, out_param3, out_param4);
208
209         return api_err;
210 }
211
212 EXPORT_API int tel_get_misc_me_version(TelMiscVersionInformation* ver_info)
213 {
214         TS_BOOL ret = FALSE;
215         int api_err = TAPI_API_SUCCESS;
216
217         TAPI_LIB_DEBUG(LEVEL_DEBUG, "Func Entrance ");
218
219         if (_tel_check_tapi_state() != 0)
220                 return TAPI_API_SERVICE_NOT_READY;
221
222         TAPI_GLIB_INIT_PARAMS();
223         TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status_internal(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
224         TAPI_GLIB_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param1, out_param2, out_param3, out_param4);
225
226         ret = tapi_send_request_internal(TAPI_CS_SERVICE_MISC, TAPI_CS_MISC_ME_VERSION_GET,
227                         in_param1, in_param2, in_param3, in_param4,
228                         &out_param1, &out_param2, &out_param3, &out_param4);
229
230         if (TRUE == ret) {
231                 api_err = g_array_index(out_param1, int ,0);
232
233                 if (api_err == TAPI_API_SUCCESS) {
234                         *ver_info = g_array_index(out_param2, TelMiscVersionInformation, 0);
235
236                         TAPI_LIB_DEBUG(LEVEL_DEBUG, "ver_mask[0x%02x]", ver_info->ver_mask);
237                         TAPI_LIB_DEBUG(LEVEL_DEBUG, "szHwVersion[%s]", ver_info->szHwVersion);
238                         TAPI_LIB_DEBUG(LEVEL_DEBUG, "szSwVersion[%s]", ver_info->szSwVersion);
239                         TAPI_LIB_DEBUG(LEVEL_DEBUG, "szRfCalDate[%s]", ver_info->szRfCalDate);
240                         TAPI_LIB_DEBUG(LEVEL_DEBUG, "szProductCode[%s]", ver_info->szProductCode);
241                 }
242                 else {
243                         TAPI_LIB_DEBUG(LEVEL_DEBUG, "api_err[%d]", api_err);
244                 }
245         }
246         else {
247                 TAPI_LIB_DEBUG(LEVEL_DEBUG, "tapi_send_request_internal fail");
248                 api_err = TAPI_API_SYSTEM_RPC_LINK_DOWN;
249         }
250
251         TAPI_GLIB_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param1, out_param2, out_param3, out_param4);
252
253         return api_err;
254 }
255
256 EXPORT_API int tel_get_misc_me_sn(TelMiscSNIndexType_t sn_index, TelMiscSNInformation* sn_info)
257 {
258         TS_BOOL ret = FALSE;
259         int api_err = TAPI_API_SUCCESS;
260
261         TAPI_LIB_DEBUG(LEVEL_DEBUG, "Func Entrance");
262
263         if (_tel_check_tapi_state() != 0)
264                 return TAPI_API_SERVICE_NOT_READY;
265
266         TAPI_GLIB_INIT_PARAMS();
267         TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status_internal(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
268         TAPI_GLIB_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param1, out_param2, out_param3, out_param4);
269
270         g_array_append_vals(in_param1, &sn_index, sizeof(TelMiscSNIndexType_t));
271
272         ret = tapi_send_request_internal(TAPI_CS_SERVICE_MISC, TAPI_CS_MISC_SERIAL_NUMBER_GET,
273                         in_param1, in_param2, in_param3, in_param4,
274                         &out_param1, &out_param2, &out_param3, &out_param4);
275
276         if (TRUE == ret) {
277                 api_err = g_array_index(out_param1, int ,0);
278
279                 if (api_err == TAPI_API_SUCCESS) {
280                         *sn_info = g_array_index(out_param2, TelMiscSNInformation, 0);
281
282                         TAPI_LIB_DEBUG(LEVEL_DEBUG, "sn_index[%d]", sn_info->sn_index);
283                         TAPI_LIB_DEBUG(LEVEL_DEBUG, "sn_len[%d]", sn_info->sn_len);
284                         TAPI_LIB_DEBUG(LEVEL_DEBUG, "szNumber[%s]", sn_info->szNumber);
285                 }
286                 else {
287                         TAPI_LIB_DEBUG(LEVEL_DEBUG, "api_err[%d]", api_err);
288                 }
289         }
290         else {
291                 api_err = TAPI_API_SYSTEM_RPC_LINK_DOWN;
292         }
293
294         TAPI_GLIB_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param1, out_param2, out_param3, out_param4);
295
296         return api_err;
297 }
298
299 EXPORT_API int tel_get_misc_nam_info(unsigned short nam_info_mask, TelMiscNamIndex_t nam_index)
300 {
301         TS_BOOL ret = FALSE;
302         int api_err = TAPI_API_SUCCESS;
303
304         TAPI_LIB_DEBUG(LEVEL_DEBUG, "Func Entrance");
305
306         if (_tel_check_tapi_state() != 0)
307                 return TAPI_API_SERVICE_NOT_READY;
308
309         TAPI_GLIB_INIT_PARAMS();
310         TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status_internal(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
311         TAPI_GLIB_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param1, out_param2, out_param3, out_param4);
312
313         g_array_append_vals(in_param1, &nam_info_mask, sizeof(unsigned short));
314         g_array_append_vals(in_param2, &nam_index, sizeof(TelMiscNamIndex_t));
315
316         ret = tapi_send_request_internal(TAPI_CS_SERVICE_MISC, TAPI_CS_MISC_NAM_INFO_GET,
317                         in_param1, in_param2, in_param3, in_param4,
318                         &out_param1, &out_param2, &out_param3, &out_param4);
319
320         if (TRUE == ret) {
321                 api_err = TAPI_API_SUCCESS;
322         }
323         else {
324                 api_err = TAPI_API_SYSTEM_RPC_LINK_DOWN;
325         }
326
327         TAPI_GLIB_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param1, out_param2, out_param3, out_param4);
328
329         return api_err;
330 }
331
332 EXPORT_API int tel_set_misc_nam_info(TelMiscNamInfo_t *nam_info)
333 {
334         TS_BOOL ret = FALSE;
335         int api_err = TAPI_API_SUCCESS;
336
337         TAPI_LIB_DEBUG(LEVEL_DEBUG, "Func Entrance");
338
339         if (_tel_check_tapi_state() != 0)
340                 return TAPI_API_SERVICE_NOT_READY;
341
342         TAPI_GLIB_INIT_PARAMS();
343         TAPI_RET_ERR_NUM_IF_FAIL(tapi_check_dbus_status_internal(), TAPI_API_SYSTEM_RPC_LINK_NOT_EST);
344         TAPI_GLIB_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param1, out_param2, out_param3, out_param4);
345
346         g_array_append_vals(in_param1, nam_info, sizeof(TelMiscNamInfo_t));
347
348         ret = tapi_send_request_internal(TAPI_CS_SERVICE_MISC, TAPI_CS_MISC_NAM_INFO_SET,
349                         in_param1, in_param2, in_param3, in_param4,
350                         &out_param1, &out_param2, &out_param3, &out_param4);
351
352         if (TRUE == ret) {
353                 api_err = TAPI_API_SUCCESS;
354         }
355         else {
356                 api_err = TAPI_API_SYSTEM_RPC_LINK_DOWN;
357         }
358
359         TAPI_GLIB_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param1, out_param2, out_param3, out_param4);
360
361         return api_err;
362 }
363
364 EXPORT_API int tel_set_misc_emergency_mode(int mode) {
365         TAPI_LIB_DEBUG(LEVEL_DEBUG, "Func Entrance with request mode[%d]", mode);
366
367         if (_tel_check_tapi_state() != 0)
368                 return TAPI_API_SERVICE_NOT_READY;
369
370         if (mode != 0 && mode != 1)
371                 return TAPI_API_INVALID_INPUT;
372
373         if (vconf_set_int("db/telephony/emergency", mode) != 0) {
374                 TAPI_LIB_DEBUG(LEVEL_ERR, "[FAIL]UPDATE db/telephony/emergency");
375                 return TAPI_API_OPERATION_FAILED;
376         }
377         return TAPI_API_SUCCESS;
378 }
379
380 EXPORT_API int tel_get_misc_emergency_mode(int *mode) {
381         TAPI_LIB_DEBUG(LEVEL_DEBUG, "Func Entrance");
382
383         if (_tel_check_tapi_state() != 0)
384                 return TAPI_API_SERVICE_NOT_READY;
385
386         if (vconf_get_int("db/telephony/emergency", mode) != 0) {
387                 TAPI_LIB_DEBUG(LEVEL_ERR, "[FAIL]GET db/telephony/emergency");
388                 return TAPI_API_OPERATION_FAILED;
389         }
390         TAPI_LIB_DEBUG(LEVEL_DEBUG, "emergency mode[%d]", *mode);
391         return TAPI_API_SUCCESS;
392 }