* @internal
*/
+#include <config.h>
#include "protocol.h"
#define LINE_LENGTH 20
SR_PRIV const struct nmadmm_req nmadmm_requests[] = {
{ NMADMM_REQ_IDN, "IDN?" },
{ NMADMM_REQ_IDN, "STATUS?" },
- { 0, NULL },
+ ALL_ZERO
};
static int nma_send_req(const struct sr_dev_inst *sdi, int req, char *params)
devc->last_req = req;
devc->last_req_pending = TRUE;
- if (serial_write_blocking(serial, buf, len, 0) < 0) {
+ if (serial_write_blocking(serial, buf, len,
+ serial_timeout(serial, len)) < 0) {
sr_err("Unable to send request.");
devc->last_req_pending = FALSE;
return SR_ERR;
int mmode, devstat; /* Measuring mode, device status */
float value; /* Measured value */
float scale; /* Scaling factor depending on range and function */
- struct sr_datafeed_analog analog;
+ struct sr_datafeed_analog_old analog;
struct sr_datafeed_packet packet;
devc = sdi->priv;
/* Start decoding. */
value = 0.0;
scale = 1.0;
- memset(&analog, 0, sizeof(struct sr_datafeed_analog));
+ memset(&analog, 0, sizeof(struct sr_datafeed_analog_old));
/*
* The numbers are hex digits, starting from 0.
analog.data = &value;
memset(&packet, 0, sizeof(struct sr_datafeed_packet));
- packet.type = SR_DF_ANALOG;
+ packet.type = SR_DF_ANALOG_OLD;
packet.payload = &analog;
- sr_session_send(devc->cb_data, &packet);
+ sr_session_send(sdi, &packet);
/* Finish processing. */
- devc->num_samples++;
+ sr_sw_limits_update_samples_read(&devc->limits, 1);
devc->buflen = 0;
}
struct dev_context *devc;
struct sr_serial_dev_inst *serial;
int len;
- gboolean terminating;
- gdouble elapsed_s;
(void)fd;
}
}
- /* If number of samples or time limit reached, stop acquisition. */
- terminating = FALSE;
- if (devc->limit_samples && (devc->num_samples >= devc->limit_samples)) {
- sdi->driver->dev_acquisition_stop(sdi, cb_data);
- terminating = TRUE;
- }
-
- if (devc->limit_msec) {
- elapsed_s = g_timer_elapsed(devc->elapsed_msec, NULL);
- if ((elapsed_s * 1000) >= devc->limit_msec) {
- sdi->driver->dev_acquisition_stop(sdi, cb_data);
- terminating = TRUE;
- }
- }
-
- /* Request next package. */
- if (!terminating) {
+ if (sr_sw_limits_check(&devc->limits)) {
+ sdi->driver->dev_acquisition_stop(sdi);
+ } else {
+ /* Request next package. */
if (devc->last_req_pending) {
gint64 elapsed_us = g_get_monotonic_time() - devc->req_sent_at;
if (elapsed_us > NMADMM_TIMEOUT_MS * 1000) {/* Timeout! */