Ejemplo n.º 1
0
DeviceOptions::DeviceOptions(struct sr_dev_inst *sdi) :
	_sdi(sdi)
{
	GVariant *gvar_opts, *gvar_list;
	gsize num_opts;

    if ((sr_config_list(sdi->driver, SR_CONF_DEVICE_CONFIGS,
		&gvar_opts, sdi) != SR_OK))
		/* Driver supports no device instance options. */
		return;

	const int *const options = (const int32_t *)g_variant_get_fixed_array(
		gvar_opts, &num_opts, sizeof(int32_t));
	for (unsigned int i = 0; i < num_opts; i++) {
		const struct sr_config_info *const info =
			sr_config_info_get(options[i]);

		if (!info)
			continue;

		const int key = info->key;

		if(sr_config_list(_sdi->driver, key, &gvar_list, _sdi) != SR_OK)
			gvar_list = NULL;

		const QString name(info->name);

		switch(key)
		{
		case SR_CONF_SAMPLERATE:
			bind_samplerate(name, gvar_list);
			break;

		case SR_CONF_CAPTURE_RATIO:
			bind_int(name, key, "%", pair<int64_t, int64_t>(0, 100));
			break;

        case SR_CONF_DEVICE_MODE:
		case SR_CONF_PATTERN_MODE:
		case SR_CONF_BUFFERSIZE:
		case SR_CONF_TRIGGER_SOURCE:
		case SR_CONF_FILTER:
		case SR_CONF_COUPLING:
			bind_enum(name, key, gvar_list);
			break;

		case SR_CONF_RLE:
			bind_bool(name, key);
			break;

        case SR_CONF_CLOCK_TYPE:
            bind_bool(name, key);
            break;

		case SR_CONF_TIMEBASE:
			bind_enum(name, key, gvar_list, print_timebase);
			break;

		case SR_CONF_VDIV:
			bind_enum(name, key, gvar_list, print_vdiv);
			break;
		}

		if (gvar_list)
			g_variant_unref(gvar_list);
	}
	g_variant_unref(gvar_opts);
}
Ejemplo n.º 2
0
DeviceOptions::DeviceOptions(struct sr_dev_inst *sdi) :
	_sdi(sdi)
{
	GVariant *gvar_opts, *gvar_list;
	gsize num_opts;

    if ((sr_config_list(sdi->driver, sdi, NULL, SR_CONF_DEVICE_CONFIGS,
        &gvar_opts) != SR_OK))
		/* Driver supports no device instance options. */
		return;

	const int *const options = (const int32_t *)g_variant_get_fixed_array(
		gvar_opts, &num_opts, sizeof(int32_t));
	for (unsigned int i = 0; i < num_opts; i++) {
		const struct sr_config_info *const info =
			sr_config_info_get(options[i]);

		if (!info)
			continue;

		const int key = info->key;

        if(sr_config_list(_sdi->driver, _sdi, NULL, key, &gvar_list) != SR_OK)
			gvar_list = NULL;

        const QString name(info->label);

		switch(key)
		{
		case SR_CONF_SAMPLERATE:
			bind_samplerate(name, gvar_list);
			break;

		case SR_CONF_CAPTURE_RATIO:
			bind_int(name, key, "%", pair<int64_t, int64_t>(0, 100));
			break;

		case SR_CONF_PATTERN_MODE:
		case SR_CONF_BUFFERSIZE:
		case SR_CONF_TRIGGER_SOURCE:
		case SR_CONF_FILTER:
        case SR_CONF_COUPLING:
        case SR_CONF_EN_CH:
        case SR_CONF_OPERATION_MODE:
        case SR_CONF_THRESHOLD:
        case SR_CONF_ZERO:
        case SR_CONF_STREAM:
        case SR_CONF_TEST:
        case SR_CONF_STATUS:
        case SR_CONF_FACTOR:
			bind_enum(name, key, gvar_list);
			break;

        case SR_CONF_VTH:
            bind_double(name, key, "V", pair<double, double>(0.0, 5.0), 1, 0.1);
            break;

		case SR_CONF_RLE:
			bind_bool(name, key);
			break;

        case SR_CONF_CLOCK_TYPE:
        case SR_CONF_CLOCK_EDGE:
        case SR_CONF_INSTANT:
        case SR_CONF_DATALOCK:
            bind_bool(name, key);
            break;

		case SR_CONF_TIMEBASE:
			bind_enum(name, key, gvar_list, print_timebase);
			break;

        case SR_CONF_VDIV:
			bind_enum(name, key, gvar_list, print_vdiv);
            break;
        default:
            gvar_list = NULL;
		}

		if (gvar_list)
			g_variant_unref(gvar_list);
	}
	g_variant_unref(gvar_opts);
}