X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Farachnid-labs-re-load-pro%2Fprotocol.c;h=9431ff3f55ed27933e6f8be4aa5b141449c8d905;hb=c2af709b01eed17dd4f50450ec52519f2821a792;hp=697f75a0890500dff958bbe79531df3c0dfe01ba;hpb=6e68da5140e80443bbb122f0c23ae5a17d91c697;p=libsigrok.git diff --git a/src/hardware/arachnid-labs-re-load-pro/protocol.c b/src/hardware/arachnid-labs-re-load-pro/protocol.c index 697f75a0..9431ff3f 100644 --- a/src/hardware/arachnid-labs-re-load-pro/protocol.c +++ b/src/hardware/arachnid-labs-re-load-pro/protocol.c @@ -89,6 +89,21 @@ SR_PRIV int reloadpro_set_current_limit(const struct sr_dev_inst *sdi, return SR_OK; } +SR_PRIV int reloadpro_set_on_off(const struct sr_dev_inst *sdi, gboolean on) +{ + int ret; + char buf[100]; + const char *cmd; + + cmd = (on) ? "on\n" : "off\n"; + if ((ret = send_cmd(sdi, cmd, (char *)&buf, sizeof(buf))) < 0) { + sr_err("Error sending on/off command: %d.", ret); + return SR_ERR; + } + + return SR_OK; +} + SR_PRIV int reloadpro_get_current_limit(const struct sr_dev_inst *sdi, float *current) { @@ -144,11 +159,17 @@ static void handle_packet(const struct sr_dev_inst *sdi) devc = sdi->priv; if (g_str_has_prefix((const char *)devc->buf, "overtemp")) { - sr_dbg("Overtemperature condition!"); + sr_warn("Overtemperature condition!"); devc->otp_active = TRUE; return; } + if (g_str_has_prefix((const char *)devc->buf, "undervolt")) { + sr_warn("Undervoltage condition!"); + devc->uvc_active = TRUE; + return; + } + if (!g_str_has_prefix((const char *)devc->buf, "read ")) { sr_dbg("Unknown packet: '%s'.", devc->buf); return; @@ -245,7 +266,7 @@ SR_PRIV int reloadpro_receive_data(int fd, int revents, void *cb_data) if (devc->limit_samples && (devc->num_samples >= devc->limit_samples)) { sr_info("Requested number of samples reached."); - sdi->driver->dev_acquisition_stop(sdi, cb_data); + sdi->driver->dev_acquisition_stop(sdi); return TRUE; } @@ -253,7 +274,7 @@ SR_PRIV int reloadpro_receive_data(int fd, int revents, void *cb_data) t = (g_get_monotonic_time() - devc->starttime) / 1000; if (t > (int64_t)devc->limit_msec) { sr_info("Requested time limit reached."); - sdi->driver->dev_acquisition_stop(sdi, cb_data); + sdi->driver->dev_acquisition_stop(sdi); return TRUE; } }