]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/lascar-el-usb/protocol.c
demo: support up to 128 logic channels, enable the lower 8 by default
[libsigrok.git] / src / hardware / lascar-el-usb / protocol.c
index 901b2525cb609420b67b927d9047c136bd97b582..fc24fbe77cd81780201ea786afdbc61d33a526f7 100644 (file)
@@ -398,6 +398,7 @@ static void lascar_el_usb_dispatch(struct sr_dev_inst *sdi, unsigned char *buf,
 
        devc = sdi->priv;
 
+       /* Note: digits/spec_digits will be overridden later. */
        sr_analog_init(&analog, &encoding, &meaning, &spec, 0);
 
        samples = buflen / devc->sample_size;
@@ -434,10 +435,15 @@ static void lascar_el_usb_dispatch(struct sr_dev_inst *sdi, unsigned char *buf,
                if (ch->enabled) {
                        analog.meaning->channels = g_slist_append(NULL, ch);
                        analog.meaning->mq = SR_MQ_TEMPERATURE;
-                       if (devc->temp_unit == 1)
+                       if (devc->temp_unit == 1) {
                                analog.meaning->unit = SR_UNIT_FAHRENHEIT;
-                       else
+                               analog.encoding->digits = 0;
+                               analog.spec->spec_digits = 0;
+                       } else {
                                analog.meaning->unit = SR_UNIT_CELSIUS;
+                               analog.encoding->digits = 1;
+                               analog.spec->spec_digits = 1;
+                       }
                        analog.data = (void *)temp;
                        sr_session_send(sdi, &packet);
                        g_slist_free(analog.meaning->channels);
@@ -448,6 +454,8 @@ static void lascar_el_usb_dispatch(struct sr_dev_inst *sdi, unsigned char *buf,
                        analog.meaning->channels = g_slist_append(NULL, ch);
                        analog.meaning->mq = SR_MQ_RELATIVE_HUMIDITY;
                        analog.meaning->unit = SR_UNIT_PERCENTAGE;
+                       analog.encoding->digits = 1;
+                       analog.spec->spec_digits = 1;
                        analog.data = (void *)rh;
                        sr_session_send(sdi, &packet);
                        g_slist_free(analog.meaning->channels);