X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fgmc-mh-1x-2x%2Fprotocol.c;h=1607bfa430adf632379a77d56344a110bb0a626e;hb=695dc859c15ba4190f5c1aa2e1a6e2dc6a6e5845;hp=63ed2572f313288ec66ce168c9c82f9b956bfb4c;hpb=c442ffda0fc6fa9bc3c5397a21ef1d04f01a64a1;p=libsigrok.git diff --git a/src/hardware/gmc-mh-1x-2x/protocol.c b/src/hardware/gmc-mh-1x-2x/protocol.c index 63ed2572..1607bfa4 100644 --- a/src/hardware/gmc-mh-1x-2x/protocol.c +++ b/src/hardware/gmc-mh-1x-2x/protocol.c @@ -22,6 +22,7 @@ * @internal */ +#include #include #include #include "protocol.h" @@ -651,12 +652,12 @@ static void clean_ctmv_rs_v(struct dev_context *devc) static void send_value(struct sr_dev_inst *sdi) { struct dev_context *devc; - struct sr_datafeed_analog analog; + struct sr_datafeed_analog_old analog; struct sr_datafeed_packet packet; devc = sdi->priv; - memset(&analog, 0, sizeof(struct sr_datafeed_analog)); + memset(&analog, 0, sizeof(struct sr_datafeed_analog_old)); analog.channels = sdi->channels; analog.num_samples = 1; analog.mq = devc->mq; @@ -665,9 +666,9 @@ static void send_value(struct sr_dev_inst *sdi) analog.data = &devc->value; memset(&packet, 0, sizeof(struct sr_datafeed_packet)); - packet.type = SR_DF_ANALOG; + packet.type = SR_DF_ANALOG_OLD; packet.payload = &analog; - sr_session_send(devc->cb_data, &packet); + sr_session_send(sdi, &packet); devc->num_samples++; } @@ -856,7 +857,7 @@ static void process_msg_inf_13(struct sr_dev_inst *sdi) devc->value += pow(10.0, cnt) * dgt; } sr_spew("process_msg_inf_13() value=%f scale=%f scale1000=%d mq=%d " - "unit=%d mqflags=0x%02llx", devc->value, devc->scale, + "unit=%d mqflags=0x%02" PRIx64, devc->value, devc->scale, devc->scale1000, devc->mq, devc->unit, devc->mqflags); if (devc->value != NAN) devc->value *= devc->scale * pow(1000.0, devc->scale1000); @@ -872,7 +873,7 @@ static void process_msg_inf_13(struct sr_dev_inst *sdi) * @param buf Pointer to array of 14 data bytes. * @param[in] raw Write only data bytes, no interpretation. */ -void dump_msg14(guchar *buf, gboolean raw) +static void dump_msg14(guchar *buf, gboolean raw) { if (!buf) return; @@ -937,7 +938,6 @@ static int chk_msg14(struct sr_dev_inst *sdi) } if (devc->buf[1] == 0) { /* Error msg from device! */ - retc = SR_ERR_ARG; switch (devc->buf[2]) { case 1: /* Not used */ sr_err("Device: Illegal error code!"); @@ -1002,7 +1002,7 @@ SR_PRIV int process_msg14(struct sr_dev_inst *sdi) sr_spew("Cmd %d unimplemented!", devc->buf[3]); break; case 3: /* Read firmware version and status */ - sr_spew("Cmd 3, Read firmware and status", devc->buf[3]); + sr_spew("Cmd 3, Read firmware and status"); switch (devc->cmd_idx) { case 0: devc->fw_ver_maj = devc->buf[5]; @@ -1073,7 +1073,7 @@ SR_PRIV int process_msg14(struct sr_dev_inst *sdi) devc->value += pow(10.0, cnt) * dgt; } sr_spew("process_msg14() value=%f scale=%f scale1000=%d mq=%d " - "unit=%d mqflags=0x%02llx", devc->value, devc->scale, + "unit=%d mqflags=0x%02" PRIx64, devc->value, devc->scale, devc->scale1000, devc->mq, devc->unit, devc->mqflags); if (devc->value != NAN) devc->value *= devc->scale * pow(1000.0, devc->scale1000); @@ -1173,12 +1173,12 @@ SR_PRIV int gmc_mh_1x_2x_receive_data(int fd, int revents, void *cb_data) /* If number of samples or time limit reached, stop acquisition. */ if (devc->limit_samples && (devc->num_samples >= devc->limit_samples)) - sdi->driver->dev_acquisition_stop(sdi, cb_data); + sdi->driver->dev_acquisition_stop(sdi); if (devc->limit_msec) { elapsed_s = g_timer_elapsed(devc->elapsed_msec, NULL); if ((elapsed_s * 1000) >= devc->limit_msec) - sdi->driver->dev_acquisition_stop(sdi, cb_data); + sdi->driver->dev_acquisition_stop(sdi); } return TRUE; @@ -1224,12 +1224,12 @@ SR_PRIV int gmc_mh_2x_receive_data(int fd, int revents, void *cb_data) /* If number of samples or time limit reached, stop acquisition. */ if (devc->limit_samples && (devc->num_samples >= devc->limit_samples)) - sdi->driver->dev_acquisition_stop(sdi, cb_data); + sdi->driver->dev_acquisition_stop(sdi); if (devc->limit_msec) { elapsed_s = g_timer_elapsed(devc->elapsed_msec, NULL); if ((elapsed_s * 1000) >= devc->limit_msec) - sdi->driver->dev_acquisition_stop(sdi, cb_data); + sdi->driver->dev_acquisition_stop(sdi); } /* Request next data set, if required */ @@ -1261,7 +1261,7 @@ SR_PRIV int gmc_mh_2x_receive_data(int fd, int revents, void *cb_data) * @param[in] params Further parameters (9 bytes) * @param[out] buf Buffer to create msg in (42 bytes). */ -void create_cmd_14(guchar addr, guchar func, guchar *params, guchar *buf) +static void create_cmd_14(guchar addr, guchar func, guchar *params, guchar *buf) { uint8_t dta[GMC_REPLY_SIZE]; /* Unencoded message */ int cnt; @@ -1311,7 +1311,8 @@ int req_meas14(const struct sr_dev_inst *sdi) devc->cmd_idx = 0; create_cmd_14(devc->addr, 8, params, msg); devc->req_sent_at = g_get_monotonic_time(); - if (serial_write_blocking(serial, msg, sizeof(msg), 0) < (int)sizeof(msg)) { + if (serial_write_blocking(serial, msg, sizeof(msg), + serial_timeout(serial, sizeof(msg))) < (int)sizeof(msg)) { return SR_ERR; } @@ -1340,13 +1341,16 @@ int req_stat14(const struct sr_dev_inst *sdi, gboolean power_on) if (power_on) { sr_info("Write some data and wait 3s to turn on powered off device..."); - if (serial_write_blocking(serial, msg, sizeof(msg), 0) < 0) + if (serial_write_blocking(serial, msg, sizeof(msg), + serial_timeout(serial, sizeof(msg))) < 0) return SR_ERR; g_usleep(1 * 1000 * 1000); - if (serial_write_blocking(serial, msg, sizeof(msg), 0) < 0) + if (serial_write_blocking(serial, msg, sizeof(msg), + serial_timeout(serial, sizeof(msg))) < 0) return SR_ERR; g_usleep(1 * 1000 * 1000); - if (serial_write_blocking(serial, msg, sizeof(msg), 0) < 0) + if (serial_write_blocking(serial, msg, sizeof(msg), + serial_timeout(serial, sizeof(msg))) < 0) return SR_ERR; g_usleep(1 * 1000 * 1000); serial_flush(serial); @@ -1354,7 +1358,8 @@ int req_stat14(const struct sr_dev_inst *sdi, gboolean power_on) /* Write message and wait for reply */ devc->req_sent_at = g_get_monotonic_time(); - if (serial_write_blocking(serial, msg, sizeof(msg), 0) < (int)sizeof(msg)) { + if (serial_write_blocking(serial, msg, sizeof(msg), + serial_timeout(serial, sizeof(msg))) < (int)sizeof(msg)) { return SR_ERR; } @@ -1531,7 +1536,8 @@ SR_PRIV int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *s params[0] = 5; params[1] = 5; create_cmd_14(devc->addr, 6, params, msg); - if (serial_write_blocking(sdi->conn, msg, sizeof(msg), 0) < 0) + if (serial_write_blocking(sdi->conn, msg, sizeof(msg), + serial_timeout(sdi->conn, sizeof(msg))) < 0) return SR_ERR; else g_usleep(2 * 1000 * 1000); /* Wait to ensure transfer before interface switched off. */