-SR_PRIV int rigol_ds_send(const struct sr_dev_inst *sdi, const char *format, ...)
-{
- va_list args;
- char buf[256];
- int len, out, ret;
- struct sr_usbtmc_dev_inst *usbtmc = sdi->conn;
-
- va_start(args, format);
- len = vsnprintf(buf, 255, format, args);
- va_end(args);
- strcat(buf, "\n");
- len++;
- out = write(usbtmc->fd, buf, len);
- buf[len - 1] = '\0';
- if (out != len) {
- sr_dbg("Only sent %d/%d bytes of '%s'.", out, len, buf);
- ret = SR_ERR;
- } else {
- sr_spew("Sent '%s'.", buf);
- ret = SR_OK;
- }
-
- return ret;
-}
-
-static int get_cfg(const struct sr_dev_inst *sdi, char *cmd, char *reply, size_t maxlen)
-{
- int len;
- struct dev_context *devc = sdi->priv;
- struct sr_usbtmc_dev_inst *usbtmc = sdi->conn;
-
- if (rigol_ds_send(sdi, cmd) != SR_OK)
- return SR_ERR;
-
- if ((len = read(usbtmc->fd, reply, maxlen - 1)) < 0)
- return SR_ERR;
- reply[len] = '\0';
-
- if (devc->model->protocol == PROTOCOL_IEEE488_2) {
- /* get rid of trailing linefeed */
- if (len >= 1 && reply[len-1] == '\n')
- reply[len-1] = '\0';
- }
-
- sr_spew("Received '%s'.", reply);
-
- return SR_OK;
-}
-
-static int get_cfg_int(const struct sr_dev_inst *sdi, char *cmd, int *i)
-{
- char buf[32];
-
- if (get_cfg(sdi, cmd, buf, sizeof(buf)) != SR_OK)
- return SR_ERR;
-
- if (parse_int(buf, i) != SR_OK)
- return SR_ERR;
-
- return SR_OK;
-}
-
-static int get_cfg_float(const struct sr_dev_inst *sdi, char *cmd, float *f)
-{
- char buf[32], *e;
-
- if (get_cfg(sdi, cmd, buf, sizeof(buf)) != SR_OK)
- return SR_ERR;
- *f = strtof(buf, &e);
- if (e == buf || (fpclassify(*f) & (FP_ZERO | FP_NORMAL)) == 0) {
- sr_dbg("failed to parse response to '%s': '%s'", cmd, buf);
- return SR_ERR;
- }
-
- return SR_OK;
-}
-
-static int get_cfg_string(const struct sr_dev_inst *sdi, char *cmd, char **buf)
-{
- if (!(*buf = g_try_malloc0(256)))
- return SR_ERR_MALLOC;
-
- if (get_cfg(sdi, cmd, *buf, 256) != SR_OK)
- return SR_ERR;
-
- return SR_OK;
-}
-