config (partial)
This commit is contained in:
parent
638bdaec16
commit
d70c0bc625
|
@ -44,7 +44,7 @@ static const uint32_t devopts[] = {
|
||||||
// * TRIGGER_SLOPE: probably dV/dt thing? so not applicable here
|
// * TRIGGER_SLOPE: probably dV/dt thing? so not applicable here
|
||||||
// * OUTPUT_FREQUENCY used in PATTERN_MODE?
|
// * OUTPUT_FREQUENCY used in PATTERN_MODE?
|
||||||
// * DATALOG: effect?
|
// * DATALOG: effect?
|
||||||
SR_CONF_CONN | SR_CONF_GET,
|
//SR_CONF_CONN | SR_CONF_GET, // TODO: ???
|
||||||
SR_CONF_SAMPLERATE | SR_CONF_GET | SR_CONF_SET | SR_CONF_LIST,
|
SR_CONF_SAMPLERATE | SR_CONF_GET | SR_CONF_SET | SR_CONF_LIST,
|
||||||
SR_CONF_CAPTURE_RATIO | SR_CONF_GET | SR_CONF_SET,
|
SR_CONF_CAPTURE_RATIO | SR_CONF_GET | SR_CONF_SET,
|
||||||
//SR_CONF_PATTERN_MODE | SR_CONF_GET | SR_CONF_SET, // TODO: idk how this works
|
//SR_CONF_PATTERN_MODE | SR_CONF_GET | SR_CONF_SET, // TODO: idk how this works
|
||||||
|
@ -69,6 +69,19 @@ static const uint64_t samplerates[] = {
|
||||||
SR_KHZ(500), SR_KHZ(250), SR_KHZ(100), SR_KHZ(50), SR_KHZ(10)
|
SR_KHZ(500), SR_KHZ(250), SR_KHZ(100), SR_KHZ(50), SR_KHZ(10)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static uint64_t dc_samples_to_msec(struct device_context *dc, uint64_t samples)
|
||||||
|
{
|
||||||
|
float msec_per_sample = 1.0f / ((float)dc->samplerate * 0.001f);
|
||||||
|
|
||||||
|
return (uint64_t)((float)samples * msec_per_sample);
|
||||||
|
}
|
||||||
|
static uint64_t dc_msec_to_samples(struct device_context *dc, uint64_t msec)
|
||||||
|
{
|
||||||
|
float samples_per_msec = ((float)dc->samplerate * 0.001f);
|
||||||
|
|
||||||
|
return (uint64_t)((float)msec * samples_per_msec);
|
||||||
|
}
|
||||||
|
|
||||||
static int dev_clear(struct sr_dev_driver *di)
|
static int dev_clear(struct sr_dev_driver *di)
|
||||||
{
|
{
|
||||||
return std_dev_clear_with_callback(di, (std_dev_clear_callback)sq_destroy);
|
return std_dev_clear_with_callback(di, (std_dev_clear_callback)sq_destroy);
|
||||||
|
@ -161,7 +174,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
|
||||||
gfree(manuf );
|
gfree(manuf );
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(channel_names); ++i)
|
for (i = 0; i < ARRAY_SIZE(channel_names); ++i)
|
||||||
sr_channel_new(sdi, i, SR_CHANNEL_LOGIC, TRUE/*TODO:?*/, channel_names[i]);
|
sr_channel_new(sdi, i, SR_CHANNEL_LOGIC, TRUE/* enabled */, channel_names[i]);
|
||||||
|
|
||||||
return std_scan_complete(di, g_slist_append(NULL, sdi));
|
return std_scan_complete(di, g_slist_append(NULL, sdi));
|
||||||
}
|
}
|
||||||
|
@ -243,58 +256,85 @@ static int dev_close(struct sr_dev_inst *sdi)
|
||||||
static int config_get(uint32_t key, GVariant **data,
|
static int config_get(uint32_t key, GVariant **data,
|
||||||
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
|
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
|
||||||
{
|
{
|
||||||
int ret;
|
struct dev_context *dc;
|
||||||
|
int rv;
|
||||||
|
|
||||||
|
dc = sdi->priv;
|
||||||
|
|
||||||
(void)sdi;
|
|
||||||
(void)data;
|
|
||||||
(void)cg;
|
(void)cg;
|
||||||
|
|
||||||
ret = SR_OK;
|
rv = SR_OK;
|
||||||
switch (key) {
|
switch (key) {
|
||||||
/* TODO */
|
case SR_CONF_SAMPLERATE:
|
||||||
|
*data = g_variant_new_uint64(dc->samplerate);
|
||||||
|
break;
|
||||||
|
case SR_CONF_LIMIT_MSEC:
|
||||||
|
*data = g_variant_new_uint64(dc_samples_to_msec(dc, dc->limit_samples));
|
||||||
|
break;
|
||||||
|
case SR_CONF_LIMIT_SAMPLES:
|
||||||
|
*data = g_variant_new_uint64(dc->limit_samples);
|
||||||
|
break;
|
||||||
|
case SR_CONF_CAPTURE_RATIO:
|
||||||
|
*data = g_variant_new_uint64(dc->capture_ratio);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return SR_ERR_NA;
|
rv = SR_ERR_NA;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int config_set(uint32_t key, GVariant *data,
|
static int config_set(uint32_t key, GVariant *data,
|
||||||
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
|
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
|
||||||
{
|
{
|
||||||
int ret;
|
struct dev_context *dc;
|
||||||
|
int rv;
|
||||||
|
|
||||||
|
dc = sdi->priv;
|
||||||
|
|
||||||
(void)sdi;
|
|
||||||
(void)data;
|
|
||||||
(void)cg;
|
(void)cg;
|
||||||
|
|
||||||
ret = SR_OK;
|
rv = SR_OK;
|
||||||
switch (key) {
|
switch (key) {
|
||||||
/* TODO */
|
case SR_CONF_SAMPLERATE:
|
||||||
|
dc->samplerate = g_variant_get_uint64(data);
|
||||||
|
break;
|
||||||
|
case SR_CONF_LIMIT_MSEC:
|
||||||
|
dc->limit_samples = dc_msec_to_samples(dc, g_variant_get_uint64(data));
|
||||||
|
break;
|
||||||
|
case SR_CONF_LIMIT_SAMPLES:
|
||||||
|
dc->limit_samples = g_variant_get_uint64(data);
|
||||||
|
break;
|
||||||
|
case SR_CONF_CAPTURE_RATIO:
|
||||||
|
dc->capture_ratio = g_variant_get_uint64(data);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
ret = SR_ERR_NA;
|
rv = SR_ERR_NA;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int config_list(uint32_t key, GVariant **data,
|
static int config_list(uint32_t key, GVariant **data,
|
||||||
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
|
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
|
||||||
{
|
{
|
||||||
int ret;
|
int rv;
|
||||||
|
|
||||||
(void)sdi;
|
rv = SR_OK;
|
||||||
(void)data;
|
|
||||||
(void)cg;
|
|
||||||
|
|
||||||
ret = SR_OK;
|
|
||||||
switch (key) {
|
switch (key) {
|
||||||
/* TODO */
|
case SR_CONF_DEVICE_OPTIONS:
|
||||||
|
return STD_CONFIG_LIST(key, data, sdi, cg, NO_OPTS, drvopts, devopts);
|
||||||
|
case SR_CONF_SAMPLERATE:
|
||||||
|
*data = std_gvar_samplerates(ARRAY_AND_SIZE(samplerates));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return SR_ERR_NA;
|
rv = SR_ERR_NA;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dev_acquisition_start(const struct sr_dev_inst *sdi)
|
static int dev_acquisition_start(const struct sr_dev_inst *sdi)
|
||||||
|
|
|
@ -37,9 +37,9 @@ struct dev_context {
|
||||||
|
|
||||||
/* settings for next capture */
|
/* settings for next capture */
|
||||||
uint64_t samplerate;
|
uint64_t samplerate;
|
||||||
|
uint64_t limit_samples;
|
||||||
|
uint64_t capture_ratio;
|
||||||
float voltage;
|
float voltage;
|
||||||
float total_buffer_usage_percent;
|
|
||||||
float pretrigger_percent;
|
|
||||||
|
|
||||||
uint32_t memsize_max;
|
uint32_t memsize_max;
|
||||||
int devtype; /* 25, 50, 100 or 200 for SQ25, SQ50, and so on */
|
int devtype; /* 25, 50, 100 or 200 for SQ25, SQ50, and so on */
|
||||||
|
|
Loading…
Reference in New Issue