hwdriver: Change TRIGGER_SLOPE setting to string type.
Drivers interpreted the uint64 values to the SR_CONF_TRIGGER_SLOPE configuration setting in different ways. In order to orthogonalize the API, change the type of the setting to a string with the same format as uses for logic probes.
This commit is contained in:
parent
fe90fbb782
commit
ca9b9f4834
|
@ -513,7 +513,7 @@ static int config_set(int key, GVariant *data, const struct sr_dev_inst *sdi,
|
||||||
struct scope_config *model;
|
struct scope_config *model;
|
||||||
struct scope_state *state;
|
struct scope_state *state;
|
||||||
const char *tmp;
|
const char *tmp;
|
||||||
uint64_t p, q, tmp_u64;
|
uint64_t p, q;
|
||||||
double tmp_d;
|
double tmp_d;
|
||||||
gboolean update_sample_rate;
|
gboolean update_sample_rate;
|
||||||
|
|
||||||
|
@ -612,16 +612,16 @@ static int config_set(int key, GVariant *data, const struct sr_dev_inst *sdi,
|
||||||
ret = sr_scpi_send(sdi->conn, command);
|
ret = sr_scpi_send(sdi->conn, command);
|
||||||
break;
|
break;
|
||||||
case SR_CONF_TRIGGER_SLOPE:
|
case SR_CONF_TRIGGER_SLOPE:
|
||||||
tmp_u64 = g_variant_get_uint64(data);
|
tmp = g_variant_get_string(data, NULL);
|
||||||
|
|
||||||
if (tmp_u64 != 0 && tmp_u64 != 1)
|
if (!tmp || !(tmp[0] == 'f' || tmp[0] == 'r'))
|
||||||
return SR_ERR;
|
return SR_ERR_ARG;
|
||||||
|
|
||||||
state->trigger_slope = tmp_u64;
|
state->trigger_slope = (tmp[0] == 'r') ? 0 : 1;
|
||||||
|
|
||||||
g_snprintf(command, sizeof(command),
|
g_snprintf(command, sizeof(command),
|
||||||
(*model->scpi_dialect)[SCPI_CMD_SET_TRIGGER_SLOPE],
|
(*model->scpi_dialect)[SCPI_CMD_SET_TRIGGER_SLOPE],
|
||||||
tmp_u64 ? "POS" : "NEG");
|
(state->trigger_slope == 0) ? "POS" : "NEG");
|
||||||
|
|
||||||
ret = sr_scpi_send(sdi->conn, command);
|
ret = sr_scpi_send(sdi->conn, command);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -478,10 +478,11 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
|
||||||
devc->limit_frames = g_variant_get_uint64(data);
|
devc->limit_frames = g_variant_get_uint64(data);
|
||||||
break;
|
break;
|
||||||
case SR_CONF_TRIGGER_SLOPE:
|
case SR_CONF_TRIGGER_SLOPE:
|
||||||
tmp_u64 = g_variant_get_uint64(data);
|
tmp_str = g_variant_get_string(data, NULL);
|
||||||
if (tmp_u64 != SLOPE_NEGATIVE && tmp_u64 != SLOPE_POSITIVE)
|
if (!tmp_str || !(tmp_str[0] == 'f' || tmp_str[0] == 'r'))
|
||||||
ret = SR_ERR_ARG;
|
return SR_ERR_ARG;
|
||||||
devc->triggerslope = tmp_u64;
|
devc->triggerslope = (tmp_str[0] == 'r')
|
||||||
|
? SLOPE_POSITIVE : SLOPE_NEGATIVE;
|
||||||
break;
|
break;
|
||||||
case SR_CONF_HORIZ_TRIGGERPOS:
|
case SR_CONF_HORIZ_TRIGGERPOS:
|
||||||
tmp_double = g_variant_get_double(data);
|
tmp_double = g_variant_get_double(data);
|
||||||
|
|
|
@ -302,7 +302,8 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
struct dev_context *devc;
|
struct dev_context *devc;
|
||||||
uint64_t num_samples, slope;
|
uint64_t num_samples;
|
||||||
|
const char *slope;
|
||||||
int trigger_pos;
|
int trigger_pos;
|
||||||
double pos;
|
double pos;
|
||||||
|
|
||||||
|
@ -334,12 +335,14 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
|
||||||
ret = SR_OK;
|
ret = SR_OK;
|
||||||
break;
|
break;
|
||||||
case SR_CONF_TRIGGER_SLOPE:
|
case SR_CONF_TRIGGER_SLOPE:
|
||||||
slope = g_variant_get_uint64(data);
|
slope = g_variant_get_string(data, NULL);
|
||||||
if (slope != SLOPE_NEGATIVE && slope != SLOPE_POSITIVE) {
|
|
||||||
|
if (!slope || !(slope[0] == 'f' || slope[0] == 'r'))
|
||||||
sr_err("Invalid trigger slope");
|
sr_err("Invalid trigger slope");
|
||||||
ret = SR_ERR_ARG;
|
ret = SR_ERR_ARG;
|
||||||
} else {
|
} else {
|
||||||
devc->trigger_slope = slope;
|
devc->trigger_slope = (slope[0] == 'r')
|
||||||
|
? SLOPE_POSITIVE : SLOPE_NEGATIVE;
|
||||||
ret = SR_OK;
|
ret = SR_OK;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -657,7 +657,7 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
|
||||||
const struct sr_probe_group *probe_group)
|
const struct sr_probe_group *probe_group)
|
||||||
{
|
{
|
||||||
struct dev_context *devc;
|
struct dev_context *devc;
|
||||||
uint64_t tmp_u64, p, q;
|
uint64_t p, q;
|
||||||
double t_dbl;
|
double t_dbl;
|
||||||
unsigned int i, j;
|
unsigned int i, j;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -682,11 +682,13 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
|
||||||
devc->limit_frames = g_variant_get_uint64(data);
|
devc->limit_frames = g_variant_get_uint64(data);
|
||||||
break;
|
break;
|
||||||
case SR_CONF_TRIGGER_SLOPE:
|
case SR_CONF_TRIGGER_SLOPE:
|
||||||
tmp_u64 = g_variant_get_uint64(data);
|
tmp_str = g_variant_get_string(data, NULL);
|
||||||
if (tmp_u64 != 0 && tmp_u64 != 1)
|
|
||||||
return SR_ERR;
|
if (!tmp_str || !(tmp_str[0] == 'f' || tmp_str[0] == 'r'))
|
||||||
|
return SR_ERR_ARG;
|
||||||
|
|
||||||
g_free(devc->trigger_slope);
|
g_free(devc->trigger_slope);
|
||||||
devc->trigger_slope = g_strdup(tmp_u64 ? "POS" : "NEG");
|
devc->trigger_slope = g_strdup((tmp_str[0] == 'r') ? "POS" : "NEG");
|
||||||
ret = rigol_ds_config_set(sdi, ":TRIG:EDGE:SLOP %s", devc->trigger_slope);
|
ret = rigol_ds_config_set(sdi, ":TRIG:EDGE:SLOP %s", devc->trigger_slope);
|
||||||
break;
|
break;
|
||||||
case SR_CONF_HORIZ_TRIGGERPOS:
|
case SR_CONF_HORIZ_TRIGGERPOS:
|
||||||
|
|
|
@ -62,7 +62,7 @@ static struct sr_config_info sr_config_info_data[] = {
|
||||||
"Swap channel order", NULL},
|
"Swap channel order", NULL},
|
||||||
{SR_CONF_RLE, SR_T_BOOL, "rle",
|
{SR_CONF_RLE, SR_T_BOOL, "rle",
|
||||||
"Run Length Encoding", NULL},
|
"Run Length Encoding", NULL},
|
||||||
{SR_CONF_TRIGGER_SLOPE, SR_T_UINT64, "triggerslope",
|
{SR_CONF_TRIGGER_SLOPE, SR_T_CHAR, "triggerslope",
|
||||||
"Trigger slope", NULL},
|
"Trigger slope", NULL},
|
||||||
{SR_CONF_TRIGGER_SOURCE, SR_T_CHAR, "triggersource",
|
{SR_CONF_TRIGGER_SOURCE, SR_T_CHAR, "triggersource",
|
||||||
"Trigger source", NULL},
|
"Trigger source", NULL},
|
||||||
|
|
Loading…
Reference in New Issue