SR_PRIV gboolean sr_channels_differ(struct sr_channel *ch1, struct sr_channel *ch2);
SR_PRIV gboolean sr_channel_lists_differ(GSList *l1, GSList *l2);
+SR_PRIV struct sr_channel_group *sr_channel_group_new(struct sr_dev_inst *sdi,
+ const char *name, void *priv);
+SR_PRIV void sr_channel_group_free(struct sr_channel_group *cg);
+SR_PRIV void sr_channel_group_free_cb(void *cg);
+
/** Device instance data */
struct sr_dev_inst {
/** Device driver. */
SR_PRIV struct sr_usb_dev_inst *sr_usb_dev_inst_new(uint8_t bus,
uint8_t address, struct libusb_device_handle *hdl);
SR_PRIV void sr_usb_dev_inst_free(struct sr_usb_dev_inst *usb);
+SR_PRIV void sr_usb_dev_inst_free_cb(gpointer p); /* Glib wrapper. */
#endif
#ifdef HAVE_SERIAL_COMM
/*--- usb.c -----------------------------------------------------------------*/
+SR_PRIV int sr_usb_split_conn(const char *conn,
+ uint16_t *vid, uint16_t *pid, uint8_t *bus, uint8_t *addr);
#ifdef HAVE_LIBUSB_1_0
SR_PRIV GSList *sr_usb_find(libusb_context *usb_ctx, const char *conn);
SR_PRIV int sr_usb_open(libusb_context *usb_ctx, struct sr_usb_dev_inst *usb);
/** Binary value specification */
struct binary_value_spec {
- /** Offset into binary blob */
- size_t offset;
- /** Data type to decode */
- enum binary_value_type type;
- /** Scale factor to get native units */
- float scale;
+ size_t offset; /**!< Offset into binary blob */
+ enum binary_value_type type; /**!< Data type to decode */
+ float scale; /**!< Scale factor to native units */
};
/** Binary channel definition */
struct binary_analog_channel {
- /** Channel name */
- const char *name;
- /** Binary value in data stream */
- struct binary_value_spec spec;
- /** Significant digits */
- int digits;
- /** Measured quantity */
- enum sr_mq mq;
- /** Measured unit */
- enum sr_unit unit;
+ const char *name; /**!< Channel name */
+ struct binary_value_spec spec; /**!< Binary value in data stream */
+ int digits; /**!< Significant digits */
+ enum sr_mq mq; /**!< Measured quantity */
+ enum sr_unit unit; /**!< Measured unit */
};
/**
* Read extract a value from a binary blob.
*
- * @param out Pointer to output buffer.
- * @param spec Binary value specification
- * @param data Pointer to binary blob
- * @param length Size of binary blob
+ * @param[out] out Pointer to output buffer (conversion result)
+ * @param[in] spec Binary value specification
+ * @param[in] data Pointer to binary input data
+ * @param[in] length Size of binary input data
+ *
* @return SR_OK on success, SR_ERR_* error code on failure.
*/
-SR_PRIV int bv_get_value(float *out, const struct binary_value_spec *spec, const void *data, size_t length);
+SR_PRIV int bv_get_value(float *out, const struct binary_value_spec *spec,
+ const void *data, size_t length);
/**
* Send an analog channel packet based on a binary analog channel
* specification.
*
- * @param sdi Device instance
- * @param ch Sigrok channel
- * @param spec Channel specification
- * @param data Pointer to binary blob
- * @param length Size of binary blob
+ * @param[in] sdi Device instance
+ * @param[in] ch Sigrok channel
+ * @param[in] spec Channel specification
+ * @param[in] data Pointer to binary blob
+ * @param[in] length Size of binary blob
+ *
* @return SR_OK on success, SR_ERR_* error code on failure.
*/
-SR_PRIV int bv_send_analog_channel(const struct sr_dev_inst *sdi, struct sr_channel *ch,
- const struct binary_analog_channel *spec, const void *data, size_t length);
+SR_PRIV int bv_send_analog_channel(const struct sr_dev_inst *sdi,
+ struct sr_channel *ch, const struct binary_analog_channel *spec,
+ const void *data, size_t length);
/*--- crc.c -----------------------------------------------------------------*/
SR_API struct feed_queue_analog *feed_queue_analog_alloc(
const struct sr_dev_inst *sdi,
size_t sample_count, int digits, struct sr_channel *ch);
+SR_API int feed_queue_analog_mq_unit(struct feed_queue_analog *q,
+ enum sr_mq mq, enum sr_mqflag mq_flag, enum sr_unit unit);
+SR_API int feed_queue_analog_scale_offset(struct feed_queue_analog *q,
+ const struct sr_rational *scale, const struct sr_rational *offset);
SR_API int feed_queue_analog_submit(struct feed_queue_analog *q,
float data, size_t count);
SR_API int feed_queue_analog_flush(struct feed_queue_analog *q);