예제 #1
0
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);
		}
	}
}
예제 #2
0
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);
}
예제 #3
0
파일: wan.c 프로젝트: ysei/webos-telephonyd
static void context_prop_changed_cb(const char *name, void *data)
{
	send_status_update_cb(data);
}
예제 #4
0
파일: wan.c 프로젝트: ysei/webos-telephonyd
static void manager_property_changed_cb(const gchar *name, void *data)
{
	send_status_update_cb(data);
}
예제 #5
0
static void network_prop_changed_cb(const gchar *name, void *data)
{
	send_status_update_cb(data);
}