static void send_connection_status(jvalue_ref *reply) { if(NULL == reply) return; jobject_put(*reply, J_CSTR_TO_JVAL("returnValue"), jboolean_create(true)); gboolean online = connman_manager_is_manager_online(manager); jobject_put(*reply, J_CSTR_TO_JVAL("isInternetConnectionAvailable"), jboolean_create(online)); jvalue_ref connected_wired_status = jobject_create(); jvalue_ref disconnected_wired_status = jobject_create(); jvalue_ref connected_wifi_status = jobject_create(); jvalue_ref disconnected_wifi_status = jobject_create(); jobject_put(disconnected_wired_status, J_CSTR_TO_JVAL("state"), jstring_create("disconnected")); jobject_put(disconnected_wifi_status, J_CSTR_TO_JVAL("state"), jstring_create("disconnected")); /* Get the service which is connecting or already in connected state */ connman_service_t *connected_wired_service = connman_manager_get_connected_service(manager->wired_services); if(NULL != connected_wired_service) { update_connection_status(connected_wired_service, &connected_wired_status); jobject_put(*reply, J_CSTR_TO_JVAL("wired"), connected_wired_status); j_release(&disconnected_wired_status); } else { jobject_put(*reply, J_CSTR_TO_JVAL("wired"), disconnected_wired_status); j_release(&connected_wired_status); } connman_service_t *connected_wifi_service = connman_manager_get_connected_service(manager->wifi_services); if(NULL != connected_wifi_service) { update_connection_status(connected_wifi_service, &connected_wifi_status); jobject_put(*reply, J_CSTR_TO_JVAL("wifi"), connected_wifi_status); j_release(&disconnected_wifi_status); } else { jobject_put(*reply, J_CSTR_TO_JVAL("wifi"), disconnected_wifi_status); j_release(&connected_wifi_status); } }
/* this is run once a second. */ static void WANIPConnection_Update(timer_t t, PService psvc) { PWANIPConnectionData pdata = (PWANIPConnectionData) psvc->opaque; if (igd_config_generation != pdata->igd_generation) { pdata->igd_generation = igd_config_generation; mapmgr_update(); if (pdata->nportmappings != mapmgr_port_map_count()) { pdata->nportmappings = mapmgr_port_map_count(); mark_changed(psvc, VAR_PortMappingNumberOfEntries); } } update_external_address(psvc); update_connection_status(psvc); if ((psvc->flags & VAR_CHANGED) == VAR_CHANGED) { update_all_subscriptions(psvc); } }