forked from Ivasoft/DSView
add trigger hold off time setting @ DSO mode
This commit is contained in:
@@ -88,6 +88,7 @@ static const int32_t sessions[] = {
|
||||
SR_CONF_TRIGGER_SLOPE,
|
||||
SR_CONF_TRIGGER_SOURCE,
|
||||
SR_CONF_HORIZ_TRIGGERPOS,
|
||||
SR_CONF_TRIGGER_HOLDOFF,
|
||||
};
|
||||
|
||||
static const char *probe_names[] = {
|
||||
@@ -584,6 +585,7 @@ static struct DSL_context *DSCope_dev_new(void)
|
||||
devc->timebase = 10000;
|
||||
devc->trigger_slope = DSO_TRIGGER_RISING;
|
||||
devc->trigger_source = DSO_TRIGGER_AUTO;
|
||||
devc->trigger_holdoff = 0;
|
||||
devc->trigger_hpos = 0x0;
|
||||
devc->trigger_hrate = 0;
|
||||
devc->zero = FALSE;
|
||||
@@ -902,6 +904,10 @@ static uint64_t dso_cmd_gen(struct sr_dev_inst *sdi, struct sr_channel* ch, int
|
||||
case SR_CONF_ZERO_OVER:
|
||||
cmd += 0x50;
|
||||
break;
|
||||
case SR_CONF_TRIGGER_HOLDOFF:
|
||||
cmd += 0x58;
|
||||
cmd += ((uint64_t)devc->trigger_holdoff << 8);
|
||||
break;
|
||||
case SR_CONF_DSO_SYNC:
|
||||
cmd = 0xa5a5a500;
|
||||
break;
|
||||
@@ -1020,6 +1026,11 @@ static int dev_open(struct sr_dev_inst *sdi)
|
||||
sr_err("Set Horiz Trigger Position command failed!");
|
||||
return ret;
|
||||
}
|
||||
ret = command_dso_ctrl(usb->devhdl, dso_cmd_gen(sdi, NULL, SR_CONF_TRIGGER_HOLDOFF));
|
||||
if (ret != SR_OK) {
|
||||
sr_err("Set Trigger Holdoff Time command failed!");
|
||||
return ret;
|
||||
}
|
||||
ret = command_dso_ctrl(usb->devhdl, dso_cmd_gen(sdi, NULL, SR_CONF_TRIGGER_SLOPE));
|
||||
if (ret != SR_OK) {
|
||||
sr_err("Set Trigger Slope command failed!");
|
||||
@@ -1234,6 +1245,12 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi,
|
||||
devc = sdi->priv;
|
||||
*data = g_variant_new_byte(devc->trigger_hrate);
|
||||
break;
|
||||
case SR_CONF_TRIGGER_HOLDOFF:
|
||||
if (!sdi)
|
||||
return SR_ERR;
|
||||
devc = sdi->priv;
|
||||
*data = g_variant_new_uint64(devc->trigger_holdoff);
|
||||
break;
|
||||
case SR_CONF_ZERO:
|
||||
if (!sdi)
|
||||
return SR_ERR;
|
||||
@@ -1509,6 +1526,17 @@ static int config_set(int id, GVariant *data, struct sr_dev_inst *sdi,
|
||||
else
|
||||
sr_dbg("%s: setting DSO Horiz Trigger Position to %d failed",
|
||||
__func__, devc->trigger_hpos);
|
||||
} else if (id == SR_CONF_TRIGGER_HOLDOFF) {
|
||||
devc->trigger_holdoff = g_variant_get_uint64(data);
|
||||
if (sdi->mode == DSO) {
|
||||
ret = command_dso_ctrl(usb->devhdl, dso_cmd_gen(sdi, NULL, SR_CONF_TRIGGER_HOLDOFF));
|
||||
}
|
||||
if (ret == SR_OK)
|
||||
sr_dbg("%s: setting Trigger Holdoff Time to %d",
|
||||
__func__, devc->trigger_holdoff);
|
||||
else
|
||||
sr_dbg("%s: setting Trigger Holdoff Time to %d failed",
|
||||
__func__, devc->trigger_holdoff);
|
||||
} else if (id == SR_CONF_ZERO) {
|
||||
devc->zero = g_variant_get_boolean(data);
|
||||
} else if (id == SR_CONF_ZERO_SET) {
|
||||
@@ -2059,7 +2087,11 @@ static int dev_transfer_start(const struct sr_dev_inst *sdi)
|
||||
// num_transfers = get_number_of_transfers(devc);
|
||||
// size = get_buffer_size(devc);
|
||||
timeout = 500;
|
||||
#ifndef _WIN32
|
||||
num_transfers = 1;
|
||||
#else
|
||||
num_transfers = buffer_cnt;
|
||||
#endif
|
||||
uint16_t channel_en_cnt = 0;
|
||||
uint16_t channel_cnt = 0;
|
||||
GSList *l;
|
||||
|
||||
Reference in New Issue
Block a user