openbench-logic-sniffer: fix acquisition restart with trigger enabled

With trigger enabled, and with PulseView, a second (or more) acquisition
starts immediately instead of blocking. It's mandatory to try several times
to have a correct behavior.

According to http://mygizmos.org/ols/Logic-Sniffer-FPGA-Spec.pdf section 2.3.1
p.8, the Openbench Logic Sniffer must be reset before each arm command.

This fixes bug #809.

Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
This commit is contained in:
Gwenhael Goavec-Merou 2017-04-30 15:57:40 +02:00 committed by Uwe Hermann
parent 244995a2e3
commit b853eb76fb
1 changed files with 8 additions and 0 deletions

View File

@ -473,6 +473,14 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi)
return SR_ERR; return SR_ERR;
} }
if (devc->num_stages > 0) { if (devc->num_stages > 0) {
/*
* According to http://mygizmos.org/ols/Logic-Sniffer-FPGA-Spec.pdf
* reset command must be send prior each arm command
*/
sr_dbg("Send reset command before trigger configure");
if (ols_send_reset(serial) != SR_OK)
return SR_ERR;
delaycount = readcount * (1 - devc->capture_ratio / 100.0); delaycount = readcount * (1 - devc->capture_ratio / 100.0);
devc->trigger_at = (readcount - delaycount) * 4 - devc->num_stages; devc->trigger_at = (readcount - delaycount) * 4 - devc->num_stages;
for (i = 0; i <= devc->num_stages; i++) { for (i = 0; i <= devc->num_stages; i++) {