Hi Gwenhael, This is great! Just by coincidence, I was running into this exact issue last week. I had to click the Run button in PulseView 4-times before it would re-arm the capture.
Your patch seems to completely fix the issue here. Thank you! Joel On 30/04/17 07:57, Gwenhael Goavec-Merou wrote: > From: Gwenhael Goavec-Merou <gwenhael.goavec-me...@trabucayre.com> > > Openbench logic sniffer reset is a little more complex than a simple send. > To avoid code duplication, this patch adds a new function dedicated to > this task. > > Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-me...@trabucayre.com> > --- > src/hardware/openbench-logic-sniffer/api.c | 9 +-------- > src/hardware/openbench-logic-sniffer/protocol.c | 12 ++++++++++++ > src/hardware/openbench-logic-sniffer/protocol.h | 1 + > 3 files changed, 14 insertions(+), 8 deletions(-) > > diff --git a/src/hardware/openbench-logic-sniffer/api.c > b/src/hardware/openbench-logic-sniffer/api.c > index 1e22c5b..c045953 100644 > --- a/src/hardware/openbench-logic-sniffer/api.c > +++ b/src/hardware/openbench-logic-sniffer/api.c > @@ -126,14 +126,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList > *options) > if (serial_open(serial, SERIAL_RDWR) != SR_OK) > return NULL; > > - ret = SR_OK; > - for (i = 0; i < 5; i++) { > - if ((ret = send_shortcommand(serial, CMD_RESET)) != SR_OK) { > - sr_err("Port %s is not writable.", conn); > - break; > - } > - } > - if (ret != SR_OK) { > + if (ols_send_reset(serial) != SR_OK) { > serial_close(serial); > sr_err("Could not use port %s. Quitting.", conn); > return NULL; > diff --git a/src/hardware/openbench-logic-sniffer/protocol.c > b/src/hardware/openbench-logic-sniffer/protocol.c > index a7c3f96..0d6efeb 100644 > --- a/src/hardware/openbench-logic-sniffer/protocol.c > +++ b/src/hardware/openbench-logic-sniffer/protocol.c > @@ -57,6 +57,18 @@ SR_PRIV int send_longcommand(struct sr_serial_dev_inst > *serial, > return SR_OK; > } > > +SR_PRIV int ols_send_reset(struct sr_serial_dev_inst *serial) > +{ > + unsigned int i; > + > + for (i = 0; i < 5; i++) { > + if (send_shortcommand(serial, CMD_RESET) != SR_OK) > + return SR_ERR; > + } > + > + return SR_OK; > +} > + > /* Configures the channel mask based on which channels are enabled. */ > SR_PRIV void ols_channel_mask(const struct sr_dev_inst *sdi) > { > diff --git a/src/hardware/openbench-logic-sniffer/protocol.h > b/src/hardware/openbench-logic-sniffer/protocol.h > index 1e6cd69..4525ba2 100644 > --- a/src/hardware/openbench-logic-sniffer/protocol.h > +++ b/src/hardware/openbench-logic-sniffer/protocol.h > @@ -107,6 +107,7 @@ SR_PRIV int send_shortcommand(struct sr_serial_dev_inst > *serial, > uint8_t command); > SR_PRIV int send_longcommand(struct sr_serial_dev_inst *serial, > uint8_t command, uint8_t *data); > +SR_PRIV int ols_send_reset(struct sr_serial_dev_inst *serial); > SR_PRIV void ols_channel_mask(const struct sr_dev_inst *sdi); > SR_PRIV int ols_convert_trigger(const struct sr_dev_inst *sdi); > SR_PRIV struct dev_context *ols_dev_new(void); > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ sigrok-devel mailing list sigrok-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sigrok-devel