X-Git-Url: https://sigrok.org/gitweb/?p=libsigrok.git;a=blobdiff_plain;f=src%2Fhardware%2Fopenbench-logic-sniffer%2Fprotocol.c;h=3bfb890fddf6623f8af8af9495d667b25d71b028;hp=6fb6b44fb087be9f3321f9d049c245d7854ae39d;hb=6745488b1a33acda728440e69f83e8bb0a0663f1;hpb=8105e82913aface2a430c51ef3e9a45cfce68170 diff --git a/src/hardware/openbench-logic-sniffer/protocol.c b/src/hardware/openbench-logic-sniffer/protocol.c index 6fb6b44f..3bfb890f 100644 --- a/src/hardware/openbench-logic-sniffer/protocol.c +++ b/src/hardware/openbench-logic-sniffer/protocol.c @@ -20,8 +20,6 @@ #include #include "protocol.h" -extern SR_PRIV struct sr_dev_driver ols_driver_info; - SR_PRIV int send_shortcommand(struct sr_serial_dev_inst *serial, uint8_t command) { @@ -59,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) { @@ -131,7 +141,6 @@ SR_PRIV struct dev_context *ols_dev_new(void) /* Acquisition settings */ devc->limit_samples = devc->capture_ratio = 0; devc->trigger_at = -1; - devc->channel_mask = 0xffffffff; devc->flag_reg = 0; return devc; @@ -149,7 +158,6 @@ SR_PRIV struct sr_dev_inst *get_metadata(struct sr_serial_dev_inst *serial) sdi = g_malloc0(sizeof(struct sr_dev_inst)); sdi->status = SR_ST_INACTIVE; - sdi->driver = &ols_driver_info; devc = ols_dev_new(); sdi->priv = devc; @@ -315,15 +323,12 @@ SR_PRIV int ols_set_samplerate(const struct sr_dev_inst *sdi, SR_PRIV void abort_acquisition(const struct sr_dev_inst *sdi) { - struct sr_datafeed_packet packet; struct sr_serial_dev_inst *serial; serial = sdi->conn; serial_source_remove(sdi->session, serial); - /* Terminate session */ - packet.type = SR_DF_END; - sr_session_send(sdi, &packet); + std_session_send_df_end(sdi); } SR_PRIV int ols_receive_data(int fd, int revents, void *cb_data) @@ -475,12 +480,12 @@ SR_PRIV int ols_receive_data(int fd, int revents, void *cb_data) logic.unitsize = 4; logic.data = devc->raw_sample_buf + (devc->limit_samples - devc->num_samples) * 4; - sr_session_send(cb_data, &packet); + sr_session_send(sdi, &packet); } /* Send the trigger. */ packet.type = SR_DF_TRIGGER; - sr_session_send(cb_data, &packet); + sr_session_send(sdi, &packet); /* Send post-trigger samples. */ packet.type = SR_DF_LOGIC; @@ -489,7 +494,7 @@ SR_PRIV int ols_receive_data(int fd, int revents, void *cb_data) logic.unitsize = 4; logic.data = devc->raw_sample_buf + devc->trigger_at * 4 + (devc->limit_samples - devc->num_samples) * 4; - sr_session_send(cb_data, &packet); + sr_session_send(sdi, &packet); } else { /* no trigger was used */ packet.type = SR_DF_LOGIC; @@ -498,7 +503,7 @@ SR_PRIV int ols_receive_data(int fd, int revents, void *cb_data) logic.unitsize = 4; logic.data = devc->raw_sample_buf + (devc->limit_samples - devc->num_samples) * 4; - sr_session_send(cb_data, &packet); + sr_session_send(sdi, &packet); } g_free(devc->raw_sample_buf);