Exemple #1
0
struct iio_context * iio_create_context_from_uri(const char *uri)
{
#ifdef WITH_LOCAL_BACKEND
	if (strcmp(uri, "local:") == 0) /* No address part */
		return iio_create_local_context();
#endif

#ifdef WITH_XML_BACKEND
	if (strncmp(uri, "xml:", sizeof("xml:") - 1) == 0)
		return iio_create_xml_context(uri + sizeof("xml:") - 1);
#endif

#ifdef WITH_NETWORK_BACKEND
	if (strncmp(uri, "ip:", sizeof("ip:") - 1) == 0)
		return iio_create_network_context(uri+3);
#endif

#ifdef WITH_USB_BACKEND
	if (strncmp(uri, "usb:", sizeof("usb:") - 1) == 0)
		return usb_create_context_from_uri(uri);
#endif

#ifdef WITH_SERIAL_BACKEND
	if (strncmp(uri, "serial:", sizeof("serial:") - 1) == 0)
		return serial_create_context_from_uri(uri);
#endif

	errno = ENOSYS;
	return NULL;
}
Exemple #2
0
static struct iio_context * get_context(Dialogs *data)
{
    if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialogs.connect_net))) {
        const char *hostname = gtk_entry_get_text(GTK_ENTRY(dialogs.net_ip));
        if (!hostname[0])
            hostname = NULL;

        return iio_create_network_context(hostname);
    } else {
        return iio_create_local_context();
    }
}
Exemple #3
0
void dialogs_init(GtkBuilder *builder)
{
    const char *name = NULL;
    struct iio_context *ctx;
    GtkWidget *tmp;

    dialogs.builder = builder;

    dialogs.about = GTK_WIDGET(gtk_builder_get_object(builder, "About_dialog"));
    dialogs.connect = GTK_WIDGET(gtk_builder_get_object(builder, "connect_dialog"));
    dialogs.connect_fru = GTK_WIDGET(gtk_builder_get_object(builder, "fru_info"));
    dialogs.serial_num = GTK_WIDGET(gtk_builder_get_object(builder, "serial_number_popup"));
    dialogs.connect_iio = GTK_WIDGET(gtk_builder_get_object(builder, "connect_iio_devices"));
    dialogs.ctx_info = GTK_WIDGET(gtk_builder_get_object(builder, "connect_iio_ctx_info"));
    dialogs.load_save_profile = GTK_WIDGET(gtk_builder_get_object(builder, "load_save_profile"));
    dialogs.connect_net = GTK_WIDGET(gtk_builder_get_object(builder, "connect_net"));
    dialogs.net_ip = GTK_WIDGET(gtk_builder_get_object(builder, "connect_net_IP"));
    dialogs.ok_btn = GTK_WIDGET(gtk_builder_get_object(builder, "button3"));
    dialogs.latest_version = GTK_WIDGET(gtk_builder_get_object(builder, "latest_version_popup"));
    dialogs.ver_progress_window = GTK_WIDGET(gtk_builder_get_object(builder, "progress_window"));
    dialogs.ver_progress_bar = GTK_WIDGET(gtk_builder_get_object(builder, "progressbar"));
    gtk_builder_connect_signals(builder, &dialogs);

    /* Bind some dialogs radio buttons to text/labels */
    tmp = GTK_WIDGET(gtk_builder_get_object(builder, "connect_net_label"));
    serial_num = GTK_WIDGET(gtk_builder_get_object(builder, "serial_number"));
    fru_date = GTK_WIDGET(gtk_builder_get_object(builder, "fru_date"));
    fru_file_list = GTK_WIDGET(gtk_builder_get_object(builder, "FRU_files"));

    g_object_bind_property(dialogs.connect_net, "active", tmp, "sensitive", 0);
    g_object_bind_property(dialogs.connect_net, "active", dialogs.net_ip, "sensitive", 0);

    /* Grey out the "local context" option if it is not available */
    ctx = get_context_from_osc();
    if (ctx)
        name = iio_context_get_name(ctx);
    if (!name || strcmp(name, "local")) {
        ctx = iio_create_local_context();
        if (ctx) {
            iio_context_destroy(ctx);
        } else {
            GtkWidget *local = GTK_WIDGET(gtk_builder_get_object(
                                              builder, "connect_local"));
            gtk_widget_set_sensitive(local, false);
            gtk_toggle_button_set_active(
                GTK_TOGGLE_BUTTON(dialogs.connect_net), true);
        }
    }
}
Exemple #4
0
struct extra_ctx_info *iioc_ctx_open(void)
{

	struct extra_ctx_info *ctx_info = (struct extra_ctx_info *)calloc(1, sizeof(*ctx_info));
	if (!ctx_info) {
		IIOC_DBG("Can not calloc memory for struct extra_ctx_info.\n");
		return NULL;
	}
	ctx_info->ctx = iio_create_local_context();
	if (!ctx_info->ctx) {
		IIOC_DBG("iio_create_local_context error.\n");
		return NULL;
	}

	ctx_info->nb_devices = iio_context_get_devices_count(ctx_info->ctx);
	IIOC_DBG("There are %d devices in local.\n", ctx_info->nb_devices);
	if (ctx_info->nb_devices == 0) {
		IIOC_DBG("No device found.\n");
		return NULL;
	}

	return ctx_info;
	//for (i = 0; i < ctx_info->nb_devices; i++) {
	//	struct iio_device *dev = iio_context_get_device(ctx_info->ctx, i);
	//	char *dev_name = iio_device_get_name(dev);
	//	char *dev_id = iio_device_get_id(dev);
	//	unsigned int nb_channels = iio_device_get_channels_count(dev);
	//	unsigned int nb_attrs = iio_device_get_attrs_count(dev);
	//
	//
	//	IIOC_DBG("Device%d: %s - %s, Channels count: %d, attritubes count: %d, is_input_device: %s.\n", i, dev_id, dev_name, nb_channels, nb_attrs, dev_info->input_device ? "yes" : "no");

	//	for (j = 0; j < nb_channels; j++) {
	//		struct iio_channel *ch = iio_device_get_channel(dev, j);
	//		char *ch_id = iio_channel_get_id(ch);
	//		char *ch_name = iio_channel_get_name(ch);
	//		IIOC_DBG("\tCH%d: %s - %s.\n", j, ch_id, ch_name);
	//		struct extra_chn_info *info = calloc(1, sizeof(*info));
	//		info->dev = dev;
	//		iio_channel_set_data(ch, info);
	//	}

	//	for (k = 0; k < nb_attrs; k++) {
	//		char *attr_name = iio_device_get_attr(dev, k);
	//		IIOC_DBG("\t>> Attr%d: %s.\n", k, attr_name);
	//	}
	//}
}
Exemple #5
0
struct iio_context * iio_create_default_context(void)
{
#if NETWORK_BACKEND
    char *hostname = getenv("IIOD_REMOTE");

    if (hostname) {
        /* If the environment variable is an empty string, we will
         * discover the server using ZeroConf */
        if (strlen(hostname) == 0)
            hostname = NULL;

        return iio_create_network_context(hostname);
    }
#endif
    return iio_create_local_context();
}
Exemple #6
0
struct iio_context * iio_create_default_context(void)
{
	char *hostname = getenv("IIOD_REMOTE");

	if (hostname) {
		struct iio_context *ctx;

		ctx = iio_create_context_from_uri(hostname);
		if (ctx)
			return ctx;

#ifdef WITH_NETWORK_BACKEND
		/* If the environment variable is an empty string, we will
		 * discover the server using ZeroConf */
		if (strlen(hostname) == 0)
			hostname = NULL;

		return iio_create_network_context(hostname);
#endif
	}

	return iio_create_local_context();
}
Exemple #7
0
int main(int argc, char **argv)
{
	struct iio_context *ctx;
	int c, option_index = 0, arg_index = 0;
	enum backend backend = LOCAL;
	unsigned int major, minor;
	char git_tag[8];
	int ret;

	while ((c = getopt_long(argc, argv, "+hn:x:",
					options, &option_index)) != -1) {
		switch (c) {
		case 'h':
			usage();
			return EXIT_SUCCESS;
		case 'n':
			if (backend != LOCAL) {
				ERROR("-x and -n are mutually exclusive\n");
				return EXIT_FAILURE;
			}
			backend = NETWORK;
			arg_index += 2;
			break;
		case 'x':
			if (backend != LOCAL) {
				ERROR("-x and -n are mutually exclusive\n");
				return EXIT_FAILURE;
			}
			backend = XML;
			arg_index += 2;
			break;
		case '?':
			return EXIT_FAILURE;
		}
	}

	if (arg_index >= argc) {
		fprintf(stderr, "Incorrect number of arguments.\n\n");
		usage();
		return EXIT_FAILURE;
	}

	iio_library_get_version(&major, &minor, git_tag);
	INFO("Library version: %u.%u (git tag: %s)\n", major, minor, git_tag);

	if (backend == XML)
		ctx = iio_create_xml_context(argv[arg_index]);
	else if (backend == NETWORK)
		ctx = iio_create_network_context(argv[arg_index]);
	else
		ctx = iio_create_local_context();

	if (!ctx) {
		ERROR("Unable to create IIO context\n");
		return EXIT_FAILURE;
	}

	INFO("IIO context created with %s backend.\n",
			iio_context_get_name(ctx));

	ret = iio_context_get_version(ctx, &major, &minor, git_tag);
	if (!ret)
		INFO("Backend version: %u.%u (git tag: %s)\n",
				major, minor, git_tag);
	else
		ERROR("Unable to get backend version: %i\n", ret);

	unsigned int nb_devices = iio_context_get_devices_count(ctx);
	INFO("IIO context has %u devices:\n", nb_devices);

	unsigned int i;
	for (i = 0; i < nb_devices; i++) {
		const struct iio_device *dev = iio_context_get_device(ctx, i);
		const char *name = iio_device_get_name(dev);
		INFO("\t%s: %s\n", iio_device_get_id(dev), name ? name : "" );

		unsigned int nb_channels = iio_device_get_channels_count(dev);
		INFO("\t\t%u channels found:\n", nb_channels);

		unsigned int j;
		for (j = 0; j < nb_channels; j++) {
			struct iio_channel *ch = iio_device_get_channel(dev, j);
			const char *type_name;

			if (iio_channel_is_output(ch))
				type_name = "output";
			else
				type_name = "input";

			name = iio_channel_get_name(ch);
			INFO("\t\t\t%s: %s (%s)\n",
					iio_channel_get_id(ch),
					name ? name : "", type_name);

			unsigned int nb_attrs = iio_channel_get_attrs_count(ch);
			if (!nb_attrs)
				continue;

			INFO("\t\t\t%u channel-specific attributes found:\n",
					nb_attrs);

			unsigned int k;
			for (k = 0; k < nb_attrs; k++) {
				const char *attr = iio_channel_get_attr(ch, k);
				char buf[1024];
				ret = (int) iio_channel_attr_read(ch,
						attr, buf, 1024);
				if (ret > 0)
					INFO("\t\t\t\tattr %u: %s"
							" value: %s\n", k,
							attr, buf);
				else if (ret == -ENOSYS)
					INFO("\t\t\t\tattr %u: %s\n", k, attr);
				else
					ERROR("Unable to read attribute %s\n",
							attr);
			}
		}

		unsigned int nb_attrs = iio_device_get_attrs_count(dev);
		if (!nb_attrs)
			continue;

		INFO("\t\t%u device-specific attributes found:\n", nb_attrs);
		for (j = 0; j < nb_attrs; j++) {
			const char *attr = iio_device_get_attr(dev, j);
			char buf[1024];
			ret = (int) iio_device_attr_read(dev,
					attr, buf, 1024);
			if (ret > 0)
				INFO("\t\t\t\tattr %u: %s value: %s\n", j,
						attr, buf);
			else if (ret == -ENOSYS)
				INFO("\t\t\t\tattr %u: %s\n", j, attr);
			else
				ERROR("Unable to read attribute: %s\n", attr);
		}
	}

	iio_context_destroy(ctx);
	return EXIT_SUCCESS;
}