X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fhardware%2Flink-mso19%2Fprotocol.c;h=5c263adb89317f3f2fee066c4df3c89ccdef779b;hb=15a5bfe4815f9991a9bb532c05d6244a1818a0e4;hp=1a0b7bce39820a12dffd19a5f60fa1d31f38d951;hpb=c442ffda0fc6fa9bc3c5397a21ef1d04f01a64a1;p=libsigrok.git diff --git a/src/hardware/link-mso19/protocol.c b/src/hardware/link-mso19/protocol.c index 1a0b7bce..5c263adb 100644 --- a/src/hardware/link-mso19/protocol.c +++ b/src/hardware/link-mso19/protocol.c @@ -19,6 +19,7 @@ * along with this program. If not, see . */ +#include #include "protocol.h" /* serial protocol */ @@ -29,8 +30,6 @@ static const char mso_head[] = { 0x40, 0x4c, 0x44, 0x53, 0x7e }; static const char mso_foot[] = { 0x7e }; -extern SR_PRIV struct sr_dev_driver link_mso19_driver_info; - SR_PRIV int mso_send_control_message(struct sr_serial_dev_inst *serial, uint16_t payload[], int n) { @@ -285,15 +284,12 @@ SR_PRIV int mso_toggle_led(struct sr_dev_inst *sdi, int state) SR_PRIV void stop_acquisition(const struct sr_dev_inst *sdi) { - struct sr_datafeed_packet packet; struct dev_context *devc; devc = sdi->priv; serial_source_remove(sdi->session, devc->serial); - /* Terminate session */ - packet.type = SR_DF_END; - sr_session_send(sdi, &packet); + std_session_send_df_end(sdi, LOG_PREFIX); } SR_PRIV int mso_clkrate_out(struct sr_serial_dev_inst *serial, uint16_t val) @@ -353,25 +349,10 @@ SR_PRIV int mso_receive_data(int fd, int revents, void *cb_data) { struct sr_datafeed_packet packet; struct sr_datafeed_logic logic; - struct sr_dev_inst *sdi; - GSList *l; + struct sr_dev_inst *sdi = cb_data; + struct dev_context *devc = sdi->priv; int i; - struct drv_context *drvc = di->context; - - /* Find this device's devc struct by its fd. */ - struct dev_context *devc = NULL; - for (l = drvc->instances; l; l = l->next) { - sdi = l->data; - devc = sdi->priv; - if (devc->serial->fd == fd) - break; - devc = NULL; - } - if (!devc) - /* Shouldn't happen. */ - return TRUE; - (void)revents; uint8_t in[1024]; @@ -418,13 +399,13 @@ SR_PRIV int mso_receive_data(int fd, int revents, void *cb_data) logic.length = 1024; logic.unitsize = 1; logic.data = logic_out; - sr_session_send(cb_data, &packet); + sr_session_send(sdi, &packet); devc->num_samples += 1024; if (devc->limit_samples && devc->num_samples >= devc->limit_samples) { sr_info("Requested number of samples reached."); - sdi->driver->dev_acquisition_stop(sdi, cb_data); + sdi->driver->dev_acquisition_stop(sdi); } return TRUE;