-
-SR_PRIV int bv_send_analog_channel(const struct sr_dev_inst *sdi,
- struct sr_channel *ch, const struct binary_analog_channel *bac,
- const void *data, size_t length)
-{
- int err;
- struct sr_analog_encoding encoding;
- struct sr_analog_meaning meaning;
- struct sr_analog_spec spec;
- struct sr_datafeed_analog analog;
- struct sr_datafeed_packet packet = {
- .type = SR_DF_ANALOG,
- .payload = &analog,
- };
- float value;
-
- err = bv_get_value(&value, &bac->spec, data, length);
- if (err != SR_OK)
- goto err_out;
-
- err = sr_analog_init(&analog, &encoding, &meaning, &spec, bac->digits);
- if (err != SR_OK)
- goto err_out;
-
- meaning.mq = bac->mq;
- meaning.unit = bac->unit;
- meaning.mqflags = 0;
- meaning.channels = g_slist_append(NULL, ch);
-
- spec.spec_digits = bac->digits;
-
- analog.data = &value;
- analog.num_samples = 1;
-
- err = sr_session_send(sdi, &packet);
- if (err != SR_OK)
- goto err_free;
-
- return SR_OK;
-
-err_free:
- g_slist_free(meaning.channels);
-
-err_out:
- return err;
-}