2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include <telephony_network.h>
19 #include <vconf-keys.h>
30 #define LOG_TAG "CAPI_TELEPHONY_NETWORK_INFO"
32 // whether vconf_notify_key_changed is registered or not
33 static bool flight_mode_is_registered = false;
34 static bool svctype_is_registered = false;
35 static bool svc_cs_is_registered = false;
36 static bool cell_id_is_registered = false;
37 static bool rssi_is_registered = false;
38 static bool roaming_is_registered = false;
40 typedef struct _telephony_cb_data
47 // Callback function data
48 static telephony_cb_data service_state_cb = {NETWORK_INFO_SERVICE_STATE_OUT_OF_SERVICE, NULL, NULL};
49 static telephony_cb_data cell_id_cb = {0, NULL, NULL};
50 static telephony_cb_data rssi_cb = {NETWORK_INFO_RSSI_0, NULL, NULL};
51 static telephony_cb_data roaming_cb = {false, NULL, NULL};
53 // Callback function adapter
54 static void __telephony_service_changed_cb_adapter(keynode_t *node, void* user_data);
55 static void __cell_id_changed_cb_adapter(keynode_t *node, void* user_data);
56 static void __rssi_changed_cb_adapter(keynode_t *node, void* user_data);
57 static void __roaming_changed_cb_adapter(keynode_t *node, void* user_data);
58 static char* __convert_error_code_to_string(network_info_error_e error_code);
59 static int __check_service_state(char* function_name);
62 #define NETWORK_INFO_CHECK_INPUT_PARAMETER(arg) \
65 LOGE("[%s] INVALID_PARAMETER(0x%08x)", __FUNCTION__, NETWORK_INFO_ERROR_INVALID_PARAMETER); \
66 return NETWORK_INFO_ERROR_INVALID_PARAMETER; \
70 int network_info_get_lac(int* lac)
72 int ret = NETWORK_INFO_ERROR_NONE;
74 NETWORK_INFO_CHECK_INPUT_PARAMETER(lac);
76 ret = __check_service_state((char*)__FUNCTION__);
77 if( ret != NETWORK_INFO_ERROR_NONE )
82 if( vconf_get_int(VCONFKEY_TELEPHONY_LAC, lac) != 0 )
84 LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
85 return NETWORK_INFO_ERROR_OPERATION_FAILED;
88 return NETWORK_INFO_ERROR_NONE;
92 int network_info_get_cell_id(int* cell_id)
94 int ret = NETWORK_INFO_ERROR_NONE;
96 NETWORK_INFO_CHECK_INPUT_PARAMETER(cell_id);
98 ret = __check_service_state((char*)__FUNCTION__);
99 if( ret != NETWORK_INFO_ERROR_NONE )
104 if( vconf_get_int(VCONFKEY_TELEPHONY_CELLID, cell_id) != 0 )
106 LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
107 return NETWORK_INFO_ERROR_OPERATION_FAILED;
110 return NETWORK_INFO_ERROR_NONE;
114 int network_info_get_rssi(network_info_rssi_e* rssi)
116 int ret = NETWORK_INFO_ERROR_NONE;
118 NETWORK_INFO_CHECK_INPUT_PARAMETER(rssi);
120 ret = __check_service_state((char*)__FUNCTION__);
121 if( ret != NETWORK_INFO_ERROR_NONE )
126 if( vconf_get_int(VCONFKEY_TELEPHONY_RSSI, (int *)rssi) != 0 )
128 LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
129 return NETWORK_INFO_ERROR_OPERATION_FAILED;
132 return NETWORK_INFO_ERROR_NONE;
136 int network_info_is_roaming(bool* is_roaming)
138 int roaming_state = 0;
139 int ret = NETWORK_INFO_ERROR_NONE;
141 NETWORK_INFO_CHECK_INPUT_PARAMETER(is_roaming);
143 ret = __check_service_state((char*)__FUNCTION__);
144 if( ret != NETWORK_INFO_ERROR_NONE )
149 if( vconf_get_int(VCONFKEY_TELEPHONY_SVC_ROAM, &roaming_state) != 0 )
151 LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
152 return NETWORK_INFO_ERROR_OPERATION_FAILED;
155 if( roaming_state == VCONFKEY_TELEPHONY_SVC_ROAM_ON )
164 return NETWORK_INFO_ERROR_NONE;
168 int network_info_get_mcc(char** mcc)
170 char plmn_str[32] = "";
173 int ret = NETWORK_INFO_ERROR_NONE;
175 NETWORK_INFO_CHECK_INPUT_PARAMETER(mcc);
177 ret = __check_service_state((char*)__FUNCTION__);
178 if( ret != NETWORK_INFO_ERROR_NONE )
183 if( vconf_get_int(VCONFKEY_TELEPHONY_PLMN, &plmn_int) != 0 )
185 LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
186 return NETWORK_INFO_ERROR_OPERATION_FAILED;
189 snprintf(plmn_str, 32, "%d", plmn_int);
190 *mcc = (char*)malloc(sizeof(char) * (mcc_length+1));
193 LOGE("[%s] OUT_OF_MEMORY(0x%08x)", __FUNCTION__, NETWORK_INFO_ERROR_OUT_OF_MEMORY);
194 return NETWORK_INFO_ERROR_OUT_OF_MEMORY;
196 memset(*mcc, 0x00, mcc_length+1);
197 strncpy(*mcc, plmn_str, mcc_length);
199 return NETWORK_INFO_ERROR_NONE;
203 int network_info_get_mnc(char** mnc)
205 char plmn_str[32] = "";
207 int mnc_length = 3; //mcc_length can 2 or 3 depending on a network, so have to proper way to get the exact length of mcc
208 int ret = NETWORK_INFO_ERROR_NONE;
210 NETWORK_INFO_CHECK_INPUT_PARAMETER(mnc);
212 ret = __check_service_state((char*)__FUNCTION__);
213 if( ret != NETWORK_INFO_ERROR_NONE )
218 if( vconf_get_int(VCONFKEY_TELEPHONY_PLMN, &plmn_int) != 0 )
220 LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
221 return NETWORK_INFO_ERROR_OPERATION_FAILED;
224 snprintf(plmn_str, 32, "%d", plmn_int);
225 *mnc = (char*)malloc(sizeof(char) * (mnc_length+1));
228 LOGE("[%s] OUT_OF_MEMORY(0x%08x)", __FUNCTION__, NETWORK_INFO_ERROR_OUT_OF_MEMORY);
229 return NETWORK_INFO_ERROR_OUT_OF_MEMORY;
231 memset(*mnc, 0x00, mnc_length+1);
232 strncpy(*mnc, plmn_str+3, mnc_length);
234 return NETWORK_INFO_ERROR_NONE;
238 int network_info_get_provider_name(char** provider_name)
240 char* provider_name_p = NULL;
241 int ret = NETWORK_INFO_ERROR_NONE;
243 NETWORK_INFO_CHECK_INPUT_PARAMETER(provider_name);
245 ret = __check_service_state((char*)__FUNCTION__);
246 if( ret != NETWORK_INFO_ERROR_NONE )
251 provider_name_p = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
252 if( provider_name_p == NULL )
254 LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
255 return NETWORK_INFO_ERROR_OPERATION_FAILED;
258 *provider_name = provider_name_p;
260 return NETWORK_INFO_ERROR_NONE;
264 int network_info_get_type(network_info_type_e* network_type)
266 int service_type = 0;
267 int ret = NETWORK_INFO_ERROR_NONE;
269 NETWORK_INFO_CHECK_INPUT_PARAMETER(network_type);
271 ret = __check_service_state((char*)__FUNCTION__);
272 if( ret != NETWORK_INFO_ERROR_NONE )
277 if( vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &service_type) != 0 )
279 LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
280 return NETWORK_INFO_ERROR_OPERATION_FAILED;
285 case VCONFKEY_TELEPHONY_SVCTYPE_2G:
286 *network_type = NETWORK_INFO_TYPE_GSM;
288 case VCONFKEY_TELEPHONY_SVCTYPE_2_5G:
289 *network_type = NETWORK_INFO_TYPE_GPRS;
291 case VCONFKEY_TELEPHONY_SVCTYPE_2_5G_EDGE:
292 *network_type = NETWORK_INFO_TYPE_EDGE;
294 case VCONFKEY_TELEPHONY_SVCTYPE_3G:
295 *network_type = NETWORK_INFO_TYPE_UMTS;;
297 case VCONFKEY_TELEPHONY_SVCTYPE_HSDPA:
298 *network_type = NETWORK_INFO_TYPE_HSDPA;
301 *network_type = NETWORK_INFO_TYPE_UNKNOWN;
305 return NETWORK_INFO_ERROR_NONE;
309 int network_info_get_service_state(network_info_service_state_e* network_service_state)
311 int service_type = 0;
313 int is_flight_mode = 0;
315 NETWORK_INFO_CHECK_INPUT_PARAMETER(network_service_state);
318 if( vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &service_type) != 0 )
320 LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to get service type", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
321 return NETWORK_INFO_ERROR_OPERATION_FAILED;
324 if( service_type == VCONFKEY_TELEPHONY_SVCTYPE_EMERGENCY )
326 *network_service_state = NETWORK_INFO_SERVICE_STATE_EMERGENCY_ONLY;
327 return NETWORK_INFO_ERROR_NONE;
330 // get circuit service
331 if( vconf_get_int(VCONFKEY_TELEPHONY_SVC_CS, &cs_status) != 0 )
333 LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to get the status of cs", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
334 return NETWORK_INFO_ERROR_OPERATION_FAILED;
337 if( cs_status == VCONFKEY_TELEPHONY_SVC_CS_ON )
339 *network_service_state = NETWORK_INFO_SERVICE_STATE_IN_SERVICE;
340 return NETWORK_INFO_ERROR_NONE;
344 if( vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &is_flight_mode) != 0 )
346 LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to get flight mode", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
347 return NETWORK_INFO_ERROR_OPERATION_FAILED;
350 if( is_flight_mode == 1 )
352 *network_service_state = NETWORK_INFO_SERVICE_STATE_RADIO_OFF;
353 return NETWORK_INFO_ERROR_NONE;
356 *network_service_state = NETWORK_INFO_SERVICE_STATE_OUT_OF_SERVICE;
357 return NETWORK_INFO_ERROR_NONE;
360 int network_info_set_service_state_changed_cb(network_info_service_state_changed_cb callback, void* user_data)
362 int ret = NETWORK_INFO_ERROR_OPERATION_FAILED;
363 network_info_service_state_e service_state = NETWORK_INFO_SERVICE_STATE_OUT_OF_SERVICE;
365 NETWORK_INFO_CHECK_INPUT_PARAMETER(callback);
367 ret = network_info_get_service_state(&service_state);
368 if( ret != NETWORK_INFO_ERROR_NONE )
370 LOGE("[%s] %s(0x%08x) : fail to get current service state", __FUNCTION__, __convert_error_code_to_string(ret), ret);
374 if( flight_mode_is_registered == false)
376 if( vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, (vconf_callback_fn)__telephony_service_changed_cb_adapter, NULL) != 0 )
378 LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to register callback of flight mode", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
379 return NETWORK_INFO_ERROR_OPERATION_FAILED;
381 flight_mode_is_registered = true;
384 if( svctype_is_registered == false )
386 if(vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVCTYPE, (vconf_callback_fn)__telephony_service_changed_cb_adapter, NULL) != 0)
388 LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to register callback of service type", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
389 return NETWORK_INFO_ERROR_OPERATION_FAILED;
391 svctype_is_registered = true;
394 if( svc_cs_is_registered == false )
396 if(vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVC_CS, (vconf_callback_fn)__telephony_service_changed_cb_adapter, NULL) != 0)
398 LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to register callback of circuit service", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
399 return NETWORK_INFO_ERROR_OPERATION_FAILED;
401 svc_cs_is_registered = true;
404 service_state_cb.previous_value = service_state;
405 service_state_cb.cb = callback;
406 service_state_cb.user_data = user_data;
408 return NETWORK_INFO_ERROR_NONE;
411 int network_info_unset_service_state_changed_cb()
413 if( flight_mode_is_registered == true )
415 if( vconf_ignore_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, (vconf_callback_fn)__telephony_service_changed_cb_adapter) != 0 )
417 LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to unregister callback of flight mode", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
418 return NETWORK_INFO_ERROR_OPERATION_FAILED;
420 flight_mode_is_registered = false;
423 if( svctype_is_registered == true )
425 if(vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVCTYPE, (vconf_callback_fn)__telephony_service_changed_cb_adapter) != 0)
427 LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to unregister callback of service type", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
428 return NETWORK_INFO_ERROR_OPERATION_FAILED;
430 svctype_is_registered = false;
433 if( svc_cs_is_registered == true )
435 if(vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVC_CS, (vconf_callback_fn)__telephony_service_changed_cb_adapter) != 0)
437 LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to unregister callback of circuit service", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
438 return NETWORK_INFO_ERROR_OPERATION_FAILED;
440 svc_cs_is_registered = false;
443 service_state_cb.previous_value = NETWORK_INFO_SERVICE_STATE_OUT_OF_SERVICE;
444 service_state_cb.cb = NULL;
445 service_state_cb.user_data = NULL;
447 return NETWORK_INFO_ERROR_NONE;
451 int network_info_set_cell_id_changed_cb(network_info_cell_id_changed_cb callback, void* user_data)
454 int ret = NETWORK_INFO_ERROR_NONE;
456 NETWORK_INFO_CHECK_INPUT_PARAMETER(callback);
458 ret = network_info_get_cell_id(&cell_id);
459 if( ret != NETWORK_INFO_ERROR_NONE )
461 LOGE("[%s] %s(0x%08x) : fail to get current CELL ID", __FUNCTION__, __convert_error_code_to_string(ret), ret);
465 if( cell_id_is_registered == false)
467 if( vconf_notify_key_changed(VCONFKEY_TELEPHONY_CELLID, (vconf_callback_fn)__cell_id_changed_cb_adapter, NULL) != 0 )
469 LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to register callback function", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
470 return NETWORK_INFO_ERROR_OPERATION_FAILED;
473 cell_id_is_registered = true;
476 cell_id_cb.previous_value = cell_id;
477 cell_id_cb.cb = callback;
478 cell_id_cb.user_data = user_data;
480 return NETWORK_INFO_ERROR_NONE;
483 int network_info_unset_cell_id_changed_cb()
485 if( cell_id_is_registered == true )
487 if( vconf_ignore_key_changed(VCONFKEY_TELEPHONY_CELLID, (vconf_callback_fn)__cell_id_changed_cb_adapter) != 0 )
489 LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to unregister callback function", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
490 return NETWORK_INFO_ERROR_OPERATION_FAILED;
493 cell_id_is_registered = false;
494 cell_id_cb.previous_value = 0;
495 cell_id_cb.cb = NULL;
496 cell_id_cb.user_data = NULL;
499 return NETWORK_INFO_ERROR_NONE;
502 int network_info_set_rssi_changed_cb(network_info_rssi_changed_cb callback, void* user_data)
504 network_info_rssi_e rssi = NETWORK_INFO_RSSI_0;
505 int ret = NETWORK_INFO_ERROR_NONE;
507 NETWORK_INFO_CHECK_INPUT_PARAMETER(callback);
509 ret = network_info_get_rssi(&rssi);
510 if( ret != NETWORK_INFO_ERROR_NONE )
512 LOGE("[%s] %s(0x%08x) : fail to get current RSSI", __FUNCTION__, __convert_error_code_to_string(ret), ret);
516 if( rssi_is_registered == false)
518 if( vconf_notify_key_changed(VCONFKEY_TELEPHONY_RSSI, (vconf_callback_fn)__rssi_changed_cb_adapter, NULL) != 0 )
520 LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to register callback function", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
521 return NETWORK_INFO_ERROR_OPERATION_FAILED;
524 rssi_is_registered = true;
527 rssi_cb.previous_value = rssi;
528 rssi_cb.cb = callback;
529 rssi_cb.user_data = user_data;
531 return NETWORK_INFO_ERROR_NONE;
534 int network_info_unset_rssi_changed_cb()
536 if( rssi_is_registered == true )
538 if( vconf_ignore_key_changed(VCONFKEY_TELEPHONY_RSSI, (vconf_callback_fn)__rssi_changed_cb_adapter) != 0 )
540 LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to unregister callback function", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
541 return NETWORK_INFO_ERROR_OPERATION_FAILED;
544 rssi_is_registered = false;
545 rssi_cb.previous_value = NETWORK_INFO_RSSI_0;
547 rssi_cb.user_data = NULL;
550 return NETWORK_INFO_ERROR_NONE;
553 int network_info_set_roaming_state_changed_cb(network_info_roaming_state_changed_cb callback, void* user_data)
555 bool is_roaming = false;
556 int ret = NETWORK_INFO_ERROR_NONE;
558 NETWORK_INFO_CHECK_INPUT_PARAMETER(callback);
560 ret = network_info_is_roaming(&is_roaming);
561 if( ret != NETWORK_INFO_ERROR_NONE )
563 LOGE("[%s] %s(0x%08x) : fail to get current roaming state", __FUNCTION__, __convert_error_code_to_string(ret), ret);
567 if( roaming_is_registered == false)
569 if( vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVC_ROAM, (vconf_callback_fn)__roaming_changed_cb_adapter, NULL) != 0 )
571 LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to register callback function", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
572 return NETWORK_INFO_ERROR_OPERATION_FAILED;
575 roaming_is_registered = true;
578 roaming_cb.previous_value = is_roaming;
579 roaming_cb.cb = callback;
580 roaming_cb.user_data = user_data;
582 return NETWORK_INFO_ERROR_NONE;
585 int network_info_unset_roaming_state_changed_cb()
587 if( roaming_is_registered == true )
589 if( vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVC_ROAM, (vconf_callback_fn)__roaming_changed_cb_adapter) != 0 )
591 LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to unregister callback function", __FUNCTION__, NETWORK_INFO_ERROR_OPERATION_FAILED);
592 return NETWORK_INFO_ERROR_OPERATION_FAILED;
595 roaming_is_registered = false;
596 roaming_cb.previous_value = false;
597 roaming_cb.cb = NULL;
598 roaming_cb.user_data = NULL;
601 return NETWORK_INFO_ERROR_NONE;
604 static void __telephony_service_changed_cb_adapter(keynode_t *node, void* user_data)
606 network_info_service_state_e status = NETWORK_INFO_SERVICE_STATE_OUT_OF_SERVICE;
608 if( service_state_cb.cb == NULL )
613 if( network_info_get_service_state(&status) == NETWORK_INFO_ERROR_NONE )
615 if( status != service_state_cb.previous_value )
617 ((network_info_service_state_changed_cb)(service_state_cb.cb))(status, service_state_cb.user_data);
618 service_state_cb.previous_value = status;
623 static void __cell_id_changed_cb_adapter(keynode_t *node, void* user_data)
627 if( cell_id_cb.cb == NULL )
629 LOGI("[%s] There is no registered callback", __FUNCTION__);
633 if( network_info_get_cell_id(&cell_id) == NETWORK_INFO_ERROR_NONE )
635 if( cell_id != cell_id_cb.previous_value )
637 LOGI("[%s] network_info_cell_id_changed_cb will be called", __FUNCTION__);
638 ((network_info_cell_id_changed_cb)(cell_id_cb.cb))(cell_id, cell_id_cb.user_data);
639 cell_id_cb.previous_value = cell_id;
644 static void __rssi_changed_cb_adapter(keynode_t *node, void* user_data)
646 network_info_rssi_e rssi = 0;
648 if( rssi_cb.cb == NULL )
653 if( network_info_get_rssi(&rssi) == NETWORK_INFO_ERROR_NONE )
655 if( rssi != rssi_cb.previous_value )
657 ((network_info_rssi_changed_cb)(rssi_cb.cb))(rssi, rssi_cb.user_data);
658 rssi_cb.previous_value = rssi;
663 static void __roaming_changed_cb_adapter(keynode_t *node, void* user_data)
667 if( roaming_cb.cb == NULL )
672 if( network_info_is_roaming(&is_roaming) == NETWORK_INFO_ERROR_NONE )
674 if( is_roaming != roaming_cb.previous_value )
676 ((network_info_roaming_state_changed_cb)(roaming_cb.cb))(is_roaming, roaming_cb.user_data);
677 roaming_cb.previous_value = is_roaming;
683 static char* __convert_error_code_to_string(network_info_error_e error_code)
687 case NETWORK_INFO_ERROR_OUT_OF_MEMORY:
688 return "OUT_OF_MEMORY";
689 case NETWORK_INFO_ERROR_INVALID_PARAMETER:
690 return "INVALID_PARAMETER";
691 case NETWORK_INFO_ERROR_OPERATION_FAILED:
692 return "OPERATION_FAILED";
693 case NETWORK_INFO_ERROR_OUT_OF_SERVICE:
694 return "OUT_OF_SERVICE";
700 static int __check_service_state(char* function_name)
702 network_info_service_state_e service_state = NETWORK_INFO_SERVICE_STATE_OUT_OF_SERVICE;
704 if( network_info_get_service_state(&service_state) != NETWORK_INFO_ERROR_NONE )
706 LOGE("[%s] OPERATION_FAILED(0x%08x)", function_name, NETWORK_INFO_ERROR_OPERATION_FAILED);
707 return NETWORK_INFO_ERROR_OPERATION_FAILED;
710 if( service_state != NETWORK_INFO_SERVICE_STATE_IN_SERVICE )
712 LOGE("[%s] OUT_OF_SERVICE(0x%08x)", function_name, NETWORK_INFO_ERROR_OUT_OF_SERVICE);
713 return NETWORK_INFO_ERROR_OUT_OF_SERVICE;
716 return NETWORK_INFO_ERROR_NONE;