X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fgmc-mh-1x-2x%2Fprotocol.c;h=85228ab5c55da09d1b9b33e2e9d6469b3ff29937;hb=53b4680fceab9351fc87b8c5b34854733f5fdac0;hp=a5d7784b1a2a037c0ce81b57c5516f0c9d2d7544;hpb=c6c63b08af0f73b60de6726c9d5aea50d20d83d2;p=libsigrok.git diff --git a/hardware/gmc-mh-1x-2x/protocol.c b/hardware/gmc-mh-1x-2x/protocol.c index a5d7784b..85228ab5 100644 --- a/hardware/gmc-mh-1x-2x/protocol.c +++ b/hardware/gmc-mh-1x-2x/protocol.c @@ -132,7 +132,7 @@ static void decode_rs_16(uint8_t rs, struct dev_context *devc) if (devc->mq == SR_MQ_VOLTAGE) /* V */ devc->scale *= 0.1; else if (devc->mq == SR_MQ_CURRENT) /* 000.0 µA */ - devc->scale *= 0.00001; + devc->scale *= 0.00001; else if (devc->mq == SR_MQ_RESISTANCE) { if (devc->buflen >= 10) { /* °C with 10 byte msg type, otherwise GOhm. */ @@ -480,8 +480,19 @@ static void decode_ctmv_2x(uint8_t ctmv, struct dev_context *devc) devc->unit = SR_UNIT_UNITLESS; devc->mqflags |= SR_MQFLAG_AC; break; + case 0x1f: /* 11111 Undocumented: 25S in stopwatch mode. + The value is voltage, not time, so treat it such. */ + devc->mq = SR_MQ_VOLTAGE; + devc->unit = SR_UNIT_VOLT; + devc->mqflags |= SR_MQFLAG_DC; + break; + case 0x20: /* 100000 Undocumented: 25S in event count mode. + Value is 0 anyway. */ + devc->mq = SR_MQ_VOLTAGE; + devc->unit = SR_UNIT_UNITLESS; + break; default: - sr_err("decode_ctmv_2x(%d, ...): Unknown ctmv!"); + sr_err("decode_ctmv_2x(%d, ...): Unknown ctmv!", ctmv); break; } } @@ -1151,7 +1162,7 @@ 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 aquisition. */ + /* 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); @@ -1202,7 +1213,7 @@ SR_PRIV int gmc_mh_2x_receive_data(int fd, int revents, void *cb_data) } } - /* If number of samples or time limit reached, stop aquisition. */ + /* 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); @@ -1481,13 +1492,13 @@ 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_probe_group *probe_group) + const struct sr_channel_group *cg) { struct dev_context *devc; uint8_t params[9]; uint8_t msg[42]; - (void)probe_group; + (void)cg; if (sdi->status != SR_ST_ACTIVE) return SR_ERR_DEV_CLOSED; @@ -1521,12 +1532,12 @@ SR_PRIV int config_set(int key, GVariant *data, const struct sr_dev_inst *sdi, } devc->limit_msec = g_variant_get_uint64(data); sr_dbg("Setting time limit to %" PRIu64 "ms.", - devc->limit_msec); + 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); + devc->limit_samples); break; default: return SR_ERR_NA;