static void modem_prop_changed_cb(const gchar *name, void *data) { struct ofono_wan_data *od = data; const char *path = ofono_modem_get_path(od->modem); if (g_str_equal(name, "Interfaces")) { if (!od->cm && ofono_modem_is_interface_supported(od->modem, OFONO_MODEM_INTERFACE_CONNECTION_MANAGER)) { od->cm = ofono_connection_manager_create(path); ofono_connection_manager_register_prop_changed_cb(od->cm, manager_property_changed_cb, od); ofono_connection_manager_register_contexts_changed_cb(od->cm, send_status_update_cb, od); } else if (od->cm && !ofono_modem_is_interface_supported(od->modem, OFONO_MODEM_INTERFACE_CONNECTION_MANAGER)) { ofono_connection_manager_free(od->cm); od->cm = NULL; } if (!od->netreg && ofono_modem_is_interface_supported(od->modem, OFONO_MODEM_INTERFACE_NETWORK_REGISTRATION)) { od->netreg = ofono_network_registration_create(path); ofono_network_registration_register_prop_changed_handler(od->netreg, network_prop_changed_cb, od); } else if (od->netreg && !ofono_modem_is_interface_supported(od->modem, OFONO_MODEM_INTERFACE_NETWORK_REGISTRATION)) { ofono_network_registration_free(od->netreg); od->netreg = NULL; send_status_update_cb(od); } } }
static void handle_current_service_property(struct ofono_wan_data *od, const gchar *name, GVariant *value) { GVariant *state_v = 0; const gchar *state = 0; gboolean wan_disable_before = od->wan_disabled; if (g_strcmp0(name, "State") == 0) { state_v = g_variant_get_variant(value); state = g_variant_get_string(state_v, NULL); if (g_strcmp0(state, "ready") == 0 || g_strcmp0(state, "online") == 0) od->wan_disabled = FALSE; else od->wan_disabled = TRUE; g_variant_unref(state_v); } if (od->wan_disabled != wan_disable_before) send_status_update_cb(od); }
static void context_prop_changed_cb(const char *name, void *data) { send_status_update_cb(data); }
static void manager_property_changed_cb(const gchar *name, void *data) { send_status_update_cb(data); }
static void network_prop_changed_cb(const gchar *name, void *data) { send_status_update_cb(data); }