PsService *service = object;
g_return_val_if_fail(service != NULL, FALSE);
- _ps_update_cellular_state_key(service);
if(service->ps_attached == ps_attached && service->roaming == roaming)
return TRUE;
_ps_service_set_ps_attached(service, ps_attached);
_ps_service_set_roaming(service, roaming);
+ _ps_update_cellular_state_key(service);
if(service->ps_attached)
_ps_service_connect_default_context(service);
return TELEPHONY_PS_NO_SERVICE;
}
- if(!service->ps_attached){
- return TELEPHONY_PS_NO_SERVICE;
- }
-
state = _ps_modem_get_flght_mode(service->p_modem);
if(state){
return TELEPHONY_PS_FLIGHT_MODE;
}
- state = _ps_modem_get_data_roaming_allowed(service->p_modem);
- if(service->roaming && !state){
- return TELEPHONY_PS_ROAMING_OFF;
+ if(!service->ps_attached){
+ return TELEPHONY_PS_NO_SERVICE;
}
state = _ps_modem_get_data_allowed(service->p_modem);
return TELEPHONY_PS_3G_OFF;
}
+ state = _ps_modem_get_data_roaming_allowed(service->p_modem);
+ if(service->roaming && !state){
+ return TELEPHONY_PS_ROAMING_OFF;
+ }
+
return TELEPHONY_PS_ON;
}
Server *s = NULL;
gpointer handle = NULL;
static Storage *strg;
- int err_reason = 0;
+ int cur_cell_state = 0;
+ int stored_cell_state = 0;
s = tcore_plugin_ref_server( (TcorePlugin *)_ps_service_ref_plugin(service) );
strg = tcore_server_find_storage(s, "vconf");
return FALSE;
}
- err_reason = _ps_service_check_cellular_state(service);
- tcore_storage_set_int(strg,STORAGE_KEY_CELLULAR_STATE, err_reason);
+ cur_cell_state = _ps_service_check_cellular_state(service);
+ stored_cell_state = tcore_storage_get_int(strg,STORAGE_KEY_CELLULAR_STATE);
+ dbg("cellular state, current (%d), cur_cell_state (%d)", stored_cell_state, cur_cell_state);
+ if(stored_cell_state != cur_cell_state)
+ tcore_storage_set_int(strg,STORAGE_KEY_CELLULAR_STATE, cur_cell_state);
return TRUE;
}