X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fhardware%2Fmotech-lps-30x%2Fprotocol.c;h=b31f2ee1d33ad83bcf48f33e8881a32f55290f4b;hb=3029e904e8729d48938b81233ab550b2353089cb;hp=beb2bcdef3b2ea60c5c1aa22758282275dfff8fd;hpb=bcaadb366f56127b1a39ce54b0de03c975701c4c;p=libsigrok.git
diff --git a/src/hardware/motech-lps-30x/protocol.c b/src/hardware/motech-lps-30x/protocol.c
index beb2bcde..b31f2ee1 100644
--- a/src/hardware/motech-lps-30x/protocol.c
+++ b/src/hardware/motech-lps-30x/protocol.c
@@ -18,11 +18,6 @@
* along with this program. If not, see .
*/
-/** @file
- * Motech LPS-30x series power supply driver
- * @internal
- */
-
#include
#include
#include
@@ -44,6 +39,7 @@ static void send_data(struct sr_dev_inst *sdi)
packet.type = SR_DF_ANALOG;
packet.payload = &analog;
+ /* Note: digits/spec_digits will be overridden later. */
sr_analog_init(&analog, &encoding, &meaning, &spec, 0);
analog.meaning->channels = sdi->channels;
@@ -80,6 +76,8 @@ static void process_line(struct sr_dev_inst *sdi)
int auxint;
devc = sdi->priv;
+ if (!devc)
+ return;
switch (devc->acq_req_pending) {
case 0: /* Should not happen... */
@@ -91,13 +89,15 @@ static void process_line(struct sr_dev_inst *sdi)
case AQ_U2:
case AQ_I1:
case AQ_I2:
- if (sr_atod(devc->buf, &dbl) != SR_OK) {
+ dbl = 0.0;
+ if (sr_atod_ascii(devc->buf, &dbl) != SR_OK) {
sr_err("Failed to convert '%s' to double, errno=%d %s",
devc->buf, errno, g_strerror(errno));
dbl = 0.0;
}
break;
case AQ_STATUS:
+ auxint = 0;
if (sr_atoi(devc->buf, &auxint) != SR_OK) {
sr_err("Failed to convert '%s' to int, errno=%d %s",
devc->buf, errno, g_strerror(errno));
@@ -189,7 +189,7 @@ SR_PRIV int motech_lps_30x_receive_data(int fd, int revents, void *cb_data)
}
if (sr_sw_limits_check(&devc->limits))
- sdi->driver->dev_acquisition_stop(sdi);
+ sr_dev_acquisition_stop(sdi);
/* Only request the next packet if required. */
if (!((sdi->status == SR_ST_ACTIVE) && (devc->acq_running)))