X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fgmc-mh-1x-2x%2Fprotocol.c;h=0c3b56f8b9840bd2e037bf073e5b03e1cb43587a;hb=f3f19d1131025b68d29a11273b627c83d748e7ea;hp=bcdc93fcec07fb16ccef690cb03a4ce255dd95b1;hpb=5791bdf6048e7151e24e5bb0cdf592781fc3d03a;p=libsigrok.git diff --git a/src/hardware/gmc-mh-1x-2x/protocol.c b/src/hardware/gmc-mh-1x-2x/protocol.c index bcdc93fc..0c3b56f8 100644 --- a/src/hardware/gmc-mh-1x-2x/protocol.c +++ b/src/hardware/gmc-mh-1x-2x/protocol.c @@ -257,7 +257,7 @@ static void decode_ctmv_18(uint8_t ctmv, struct dev_context *devc) /** * Decode range/sign/acdc byte special chars, Metrahit 18. * - * @param[in] rs Rance/sign byte. + * @param[in] rs Range/sign byte. */ static void decode_rs_18(uint8_t rs, struct dev_context *devc) { @@ -567,23 +567,28 @@ static void decode_rs_2x_TR2(uint8_t rs, struct dev_context *devc) switch (devc->mq) { case SR_MQ_CURRENT: if (devc->scale1000 == -1) /* mA */ - switch(range) { - case 0: case 1: /* 100, 300 µA */ + switch (range) { + case 0: + case 1: /* 100, 300 µA */ devc->scale *= pow(10.0, -6); break; - case 2: case 3: /* 1, 3 mA */ + case 2: + case 3: /* 1, 3 mA */ devc->scale *= pow(10.0, -5); break; - case 4: case 5: /* 10, 30 mA */ + case 4: + case 5: /* 10, 30 mA */ devc->scale *= pow(10.0, -4); break; - case 6: case 7: /* 100, 300 mA */ + case 6: + case 7: /* 100, 300 mA */ devc->scale *= pow(10.0, -3); break; } else /* A */ - switch(range) { - case 0: case 1: /* 1, 3 A */ + switch (range) { + case 0: + case 1: /* 1, 3 A */ devc->scale *= pow(10.0, -5); break; case 2: /* 10 A */ @@ -602,7 +607,6 @@ static void decode_rs_2x_TR2(uint8_t rs, struct dev_context *devc) devc->scale *= -1.0; } - /** * Decode special chars (Metrahit 2x). * @@ -652,7 +656,7 @@ static void send_value(struct sr_dev_inst *sdi) devc = sdi->priv; - memset(&analog, 0, sizeof(analog)); + memset(&analog, 0, sizeof(struct sr_datafeed_analog)); analog.channels = sdi->channels; analog.num_samples = 1; analog.mq = devc->mq; @@ -660,7 +664,7 @@ static void send_value(struct sr_dev_inst *sdi) analog.mqflags = devc->mqflags; analog.data = &devc->value; - memset(&packet, 0, sizeof(packet)); + memset(&packet, 0, sizeof(struct sr_datafeed_packet)); packet.type = SR_DF_ANALOG; packet.payload = &analog; sr_session_send(devc->cb_data, &packet); @@ -1107,7 +1111,7 @@ SR_PRIV int gmc_mh_1x_2x_receive_data(int fd, int revents, void *cb_data) if (revents == G_IO_IN) { /* Serial data arrived. */ while (GMC_BUFSIZE - devc->buflen - 1 > 0) { - len = serial_read(serial, devc->buf + devc->buflen, 1); + len = serial_read_nonblocking(serial, devc->buf + devc->buflen, 1); if (len < 1) break; buf = *(devc->buf + devc->buflen); @@ -1201,7 +1205,7 @@ SR_PRIV int gmc_mh_2x_receive_data(int fd, int revents, void *cb_data) if (revents == G_IO_IN) { /* Serial data arrived. */ while (GMC_BUFSIZE - devc->buflen - 1 > 0) { - len = serial_read(serial, devc->buf + devc->buflen, 1); + len = serial_read_nonblocking(serial, devc->buf + devc->buflen, 1); if (len < 1) break; buf = *(devc->buf + devc->buflen); @@ -1307,7 +1311,7 @@ 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(serial, msg, sizeof(msg)) == -1) { + if (serial_write_blocking(serial, msg, sizeof(msg), 0) < (int)sizeof(msg)) { return SR_ERR; } @@ -1336,13 +1340,13 @@ 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(serial, msg, sizeof(msg)) < 0) + if (serial_write_blocking(serial, msg, sizeof(msg), 0) < 0) return SR_ERR; g_usleep(1*1000*1000); - if (serial_write(serial, msg, sizeof(msg)) < 0) + if (serial_write_blocking(serial, msg, sizeof(msg), 0) < 0) return SR_ERR; g_usleep(1*1000*1000); - if (serial_write(serial, msg, sizeof(msg)) < 0) + if (serial_write_blocking(serial, msg, sizeof(msg), 0) < 0) return SR_ERR; g_usleep(1*1000*1000); serial_flush(serial); @@ -1350,7 +1354,7 @@ 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(serial, msg, sizeof(msg)) == -1) { + if (serial_write_blocking(serial, msg, sizeof(msg), 0) < (int)sizeof(msg)) { return SR_ERR; } @@ -1371,7 +1375,7 @@ SR_PRIV int gmc_decode_model_sm(uint8_t mcode) return METRAHIT_NONE; } - switch(mcode) { + switch (mcode) { case 0x04: /* 0100b */ return METRAHIT_12S; case 0x08: /* 1000b */ @@ -1497,11 +1501,9 @@ SR_PRIV const char *gmc_model_str(enum model mcode) } } - -/** @copydoc sr_dev_driver.config_set - */ -SR_PRIV int config_set(int key, GVariant *data, const struct sr_dev_inst *sdi, - const struct sr_channel_group *cg) +/** @copydoc sr_dev_driver.config_set */ +SR_PRIV int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sdi, + const struct sr_channel_group *cg) { struct dev_context *devc; uint8_t params[9]; @@ -1529,24 +1531,16 @@ SR_PRIV int config_set(int key, GVariant *data, const struct sr_dev_inst *sdi, params[0] = 5; params[1] = 5; create_cmd_14(devc->addr, 6, params, msg); - if (serial_write(sdi->conn, msg, sizeof(msg)) == -1) + if (serial_write_blocking(sdi->conn, msg, sizeof(msg), 0) < 0) return SR_ERR; else g_usleep(2000000); /* Wait to ensure transfer before interface switched off. */ break; case SR_CONF_LIMIT_MSEC: - if (g_variant_get_uint64(data) == 0) { - sr_err("LIMIT_MSEC can't be 0."); - return SR_ERR; - } devc->limit_msec = g_variant_get_uint64(data); - sr_dbg("Setting time limit to %" PRIu64 "ms.", - devc->limit_msec); break; case SR_CONF_LIMIT_SAMPLES: devc->limit_samples = g_variant_get_uint64(data); - sr_dbg("Setting sample limit to %" PRIu64 ".", - devc->limit_samples); break; default: return SR_ERR_NA;