From: poljar (Damir Jelić) Date: Thu, 16 Jan 2014 14:28:52 +0000 (+0100) Subject: hameg-hmo: Send the DF_END packet in acquisition_stop() X-Git-Tag: libsigrok-0.3.0~270 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=66e3219dbd086dc57087281f10fdefbe060ee5c8;p=libsigrok.git hameg-hmo: Send the DF_END packet in acquisition_stop() The DF_END packet was send out after all configured frames were fetched, but devices may stop the acquisition at any point in time and an DF_END will not be send out in this case. Send the DF_END packet inside of acquisition_stop() so this can't happen. --- diff --git a/hardware/hameg-hmo/api.c b/hardware/hameg-hmo/api.c index 3b474921..9e1d6e1f 100644 --- a/hardware/hameg-hmo/api.c +++ b/hardware/hameg-hmo/api.c @@ -882,9 +882,14 @@ static int dev_acquisition_stop(struct sr_dev_inst *sdi, void *cb_data) { struct dev_context *devc; struct sr_scpi_dev_inst *scpi; + struct sr_datafeed_packet packet; (void)cb_data; + packet.type = SR_DF_END; + packet.payload = NULL; + sr_session_send(sdi, &packet); + if (sdi->status != SR_ST_ACTIVE) return SR_ERR_DEV_CLOSED; diff --git a/hardware/hameg-hmo/protocol.c b/hardware/hameg-hmo/protocol.c index 2f7f5ab4..f3de7638 100644 --- a/hardware/hameg-hmo/protocol.c +++ b/hardware/hameg-hmo/protocol.c @@ -621,8 +621,6 @@ SR_PRIV int hmo_receive_data(int fd, int revents, void *cb_data) devc->current_probe = devc->current_probe->next; hmo_request_data(sdi); } else if (++devc->num_frames == devc->frame_limit) { - packet.type = SR_DF_END; - sr_session_send(sdi, &packet); sdi->driver->dev_acquisition_stop(sdi, cb_data); } else { devc->current_probe = devc->enabled_probes;