zeroplus-logic-cube: Adjust to GVariant-based sr_config_* functions
This commit is contained in:
parent
c8733a2bbb
commit
8386096f01
|
@ -54,12 +54,11 @@ static const struct zp_model zeroplus_models[] = {
|
||||||
{ 0, 0, 0, 0, 0, 0 }
|
{ 0, 0, 0, 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static const int hwcaps[] = {
|
static const int32_t hwcaps[] = {
|
||||||
SR_CONF_LOGIC_ANALYZER,
|
SR_CONF_LOGIC_ANALYZER,
|
||||||
SR_CONF_SAMPLERATE,
|
SR_CONF_SAMPLERATE,
|
||||||
SR_CONF_CAPTURE_RATIO,
|
SR_CONF_CAPTURE_RATIO,
|
||||||
SR_CONF_LIMIT_SAMPLES,
|
SR_CONF_LIMIT_SAMPLES,
|
||||||
0,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -80,7 +79,7 @@ static struct sr_dev_driver *di = &zeroplus_logic_cube_driver_info;
|
||||||
* options hardcoded into the vendor's Windows GUI.
|
* options hardcoded into the vendor's Windows GUI.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static const uint64_t zp_supported_samplerates_100[] = {
|
static const uint64_t samplerates_100[] = {
|
||||||
SR_HZ(100),
|
SR_HZ(100),
|
||||||
SR_HZ(500),
|
SR_HZ(500),
|
||||||
SR_KHZ(1),
|
SR_KHZ(1),
|
||||||
|
@ -97,10 +96,9 @@ static const uint64_t zp_supported_samplerates_100[] = {
|
||||||
SR_MHZ(50),
|
SR_MHZ(50),
|
||||||
SR_MHZ(80),
|
SR_MHZ(80),
|
||||||
SR_MHZ(100),
|
SR_MHZ(100),
|
||||||
0,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint64_t zp_supported_samplerates_200[] = {
|
const uint64_t samplerates_200[] = {
|
||||||
SR_HZ(100),
|
SR_HZ(100),
|
||||||
SR_HZ(500),
|
SR_HZ(500),
|
||||||
SR_KHZ(1),
|
SR_KHZ(1),
|
||||||
|
@ -119,21 +117,6 @@ const uint64_t zp_supported_samplerates_200[] = {
|
||||||
SR_MHZ(100),
|
SR_MHZ(100),
|
||||||
SR_MHZ(150),
|
SR_MHZ(150),
|
||||||
SR_MHZ(200),
|
SR_MHZ(200),
|
||||||
0,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct sr_samplerates samplerates_100 = {
|
|
||||||
.low = 0,
|
|
||||||
.high = 0,
|
|
||||||
.step = 0,
|
|
||||||
.list = zp_supported_samplerates_100,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct sr_samplerates samplerates_200 = {
|
|
||||||
.low = 0,
|
|
||||||
.high = 0,
|
|
||||||
.step = 0,
|
|
||||||
.list = zp_supported_samplerates_200,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static int hw_dev_close(struct sr_dev_inst *sdi);
|
static int hw_dev_close(struct sr_dev_inst *sdi);
|
||||||
|
@ -485,7 +468,7 @@ static int hw_cleanup(void)
|
||||||
return SR_OK;
|
return SR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int config_get(int id, const void **data, const struct sr_dev_inst *sdi)
|
static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
|
||||||
{
|
{
|
||||||
struct dev_context *devc;
|
struct dev_context *devc;
|
||||||
|
|
||||||
|
@ -493,7 +476,7 @@ static int config_get(int id, const void **data, const struct sr_dev_inst *sdi)
|
||||||
case SR_CONF_SAMPLERATE:
|
case SR_CONF_SAMPLERATE:
|
||||||
if (sdi) {
|
if (sdi) {
|
||||||
devc = sdi->priv;
|
devc = sdi->priv;
|
||||||
*data = &devc->cur_samplerate;
|
*data = g_variant_new_uint64(devc->cur_samplerate);
|
||||||
sr_spew("Returning samplerate: %" PRIu64 "Hz.",
|
sr_spew("Returning samplerate: %" PRIu64 "Hz.",
|
||||||
devc->cur_samplerate);
|
devc->cur_samplerate);
|
||||||
} else
|
} else
|
||||||
|
@ -506,7 +489,7 @@ static int config_get(int id, const void **data, const struct sr_dev_inst *sdi)
|
||||||
return SR_OK;
|
return SR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int config_set(int id, const void *value, const struct sr_dev_inst *sdi)
|
static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
|
||||||
{
|
{
|
||||||
struct dev_context *devc;
|
struct dev_context *devc;
|
||||||
|
|
||||||
|
@ -522,11 +505,11 @@ static int config_set(int id, const void *value, const struct sr_dev_inst *sdi)
|
||||||
|
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case SR_CONF_SAMPLERATE:
|
case SR_CONF_SAMPLERATE:
|
||||||
return zp_set_samplerate(devc, *(const uint64_t *)value);
|
return zp_set_samplerate(devc, g_variant_get_uint64(data));
|
||||||
case SR_CONF_LIMIT_SAMPLES:
|
case SR_CONF_LIMIT_SAMPLES:
|
||||||
return set_limit_samples(devc, *(const uint64_t *)value);
|
return set_limit_samples(devc, g_variant_get_uint64(data));
|
||||||
case SR_CONF_CAPTURE_RATIO:
|
case SR_CONF_CAPTURE_RATIO:
|
||||||
return set_capture_ratio(devc, *(const uint64_t *)value);
|
return set_capture_ratio(devc, g_variant_get_uint64(data));
|
||||||
default:
|
default:
|
||||||
return SR_ERR;
|
return SR_ERR;
|
||||||
}
|
}
|
||||||
|
@ -534,28 +517,38 @@ static int config_set(int id, const void *value, const struct sr_dev_inst *sdi)
|
||||||
return SR_OK;
|
return SR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int config_list(int key, const void **data, const struct sr_dev_inst *sdi)
|
static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
|
||||||
{
|
{
|
||||||
struct dev_context *devc;
|
struct dev_context *devc;
|
||||||
|
GVariant *gvar;
|
||||||
|
GVariantBuilder gvb;
|
||||||
|
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case SR_CONF_DEVICE_OPTIONS:
|
case SR_CONF_DEVICE_OPTIONS:
|
||||||
*data = hwcaps;
|
*data = g_variant_new_fixed_array(G_VARIANT_TYPE_INT32,
|
||||||
|
hwcaps, ARRAY_SIZE(hwcaps), sizeof(int32_t));
|
||||||
break;
|
break;
|
||||||
case SR_CONF_SAMPLERATE:
|
case SR_CONF_SAMPLERATE:
|
||||||
devc = sdi->priv;
|
devc = sdi->priv;
|
||||||
|
g_variant_builder_init(&gvb, G_VARIANT_TYPE("a{sv}"));
|
||||||
if (devc->prof->max_sampling_freq == 100) {
|
if (devc->prof->max_sampling_freq == 100) {
|
||||||
*data = &samplerates_100;
|
gvar = g_variant_new_fixed_array(G_VARIANT_TYPE("t"),
|
||||||
|
samplerates_100, ARRAY_SIZE(samplerates_100),
|
||||||
|
sizeof(uint64_t));
|
||||||
} else if (devc->prof->max_sampling_freq == 200) {
|
} else if (devc->prof->max_sampling_freq == 200) {
|
||||||
*data = &samplerates_200;
|
gvar = g_variant_new_fixed_array(G_VARIANT_TYPE("t"),
|
||||||
|
samplerates_200, ARRAY_SIZE(samplerates_200),
|
||||||
|
sizeof(uint64_t));
|
||||||
} else {
|
} else {
|
||||||
sr_err("Internal error: Unknown max. samplerate: %d.",
|
sr_err("Internal error: Unknown max. samplerate: %d.",
|
||||||
devc->prof->max_sampling_freq);
|
devc->prof->max_sampling_freq);
|
||||||
return SR_ERR_ARG;
|
return SR_ERR_ARG;
|
||||||
}
|
}
|
||||||
|
g_variant_builder_add(&gvb, "{sv}", "samplerates", gvar);
|
||||||
|
*data = g_variant_builder_end(&gvb);
|
||||||
break;
|
break;
|
||||||
case SR_CONF_TRIGGER_TYPE:
|
case SR_CONF_TRIGGER_TYPE:
|
||||||
*data = TRIGGER_TYPE;
|
*data = g_variant_new_string(TRIGGER_TYPE);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return SR_ERR_ARG;
|
return SR_ERR_ARG;
|
||||||
|
|
Loading…
Reference in New Issue