/* Portability fixes for FreeBSD. */
#ifdef __FreeBSD__
#define LIBUSB_CLASS_APPLICATION 0xfe
+#define libusb_has_capability(x) 0
#define libusb_handle_events_timeout_completed(ctx, tv, c) \
libusb_handle_events_timeout(ctx, tv)
#endif
*/
const char *desc;
+ /**
+ * A NULL terminated array of strings containing a list of file name
+ * extensions typical for the input file format, or NULL if there is
+ * no typical extension for this file format.
+ */
+ const char *const *exts;
+
/**
* Zero-terminated list of metadata items the module needs to be able
* to identify an input stream. Can be all-zero, if the module cannot
SR_PRIV struct sr_channel *sr_channel_new(int index, int type,
gboolean enabled, const char *name);
+/** Device instance data */
+struct sr_dev_inst {
+ /** Device driver. */
+ struct sr_dev_driver *driver;
+ /** Device instance status. SR_ST_NOT_FOUND, etc. */
+ int status;
+ /** Device instance type. SR_INST_USB, etc. */
+ int inst_type;
+ /** Device vendor. */
+ char *vendor;
+ /** Device model. */
+ char *model;
+ /** Device version. */
+ char *version;
+ /** Serial number. */
+ char *serial_num;
+ /** Connection string to uniquely identify devices. */
+ char *connection_id;
+ /** List of channels. */
+ GSList *channels;
+ /** List of sr_channel_group structs */
+ GSList *channel_groups;
+ /** Device instance connection data (used?) */
+ void *conn;
+ /** Device instance private data (used?) */
+ void *priv;
+ /** Session to which this device is currently assigned. */
+ struct sr_session *session;
+};
+
/* Generic device instances */
-SR_PRIV struct sr_dev_inst *sr_dev_inst_new(int status,
- const char *vendor, const char *model, const char *version);
SR_PRIV void sr_dev_inst_free(struct sr_dev_inst *sdi);
#ifdef HAVE_LIBUSB_1_0
/*--- session.c -------------------------------------------------------------*/
struct sr_session {
- /** List of struct sr_dev pointers. */
+ /** List of struct sr_dev_inst pointers. */
GSList *devs;
+ /** List of struct sr_dev_inst pointers owned by this session. */
+ GSList *owned_devs;
/** List of struct datafeed_callback pointers. */
GSList *datafeed_callbacks;
struct sr_trigger *trigger;
struct sr_datafeed_packet **copy);
SR_PRIV void sr_packet_free(struct sr_datafeed_packet *packet);
+/*--- analog.c --------------------------------------------------------------*/
+
+SR_PRIV int sr_analog_init(struct sr_datafeed_analog2 *analog,
+ struct sr_analog_encoding *encoding,
+ struct sr_analog_meaning *meaning,
+ struct sr_analog_spec *spec,
+ int digits);
+
/*--- std.c -----------------------------------------------------------------*/
typedef int (*dev_close_callback)(struct sr_dev_inst *sdi);
int unitsize;
int cur_stage;
uint8_t *prev_sample;
+ uint8_t *pre_trigger_buffer;
+ uint8_t *pre_trigger_head;
+ int pre_trigger_size;
+ int pre_trigger_fill;
};
SR_PRIV struct soft_trigger_logic *soft_trigger_logic_new(
- const struct sr_dev_inst *sdi, struct sr_trigger *trigger);
+ const struct sr_dev_inst *sdi, struct sr_trigger *trigger,
+ int pre_trigger_samples);
SR_PRIV void soft_trigger_logic_free(struct soft_trigger_logic *st);
SR_PRIV int soft_trigger_logic_check(struct soft_trigger_logic *st, uint8_t *buf,
- int len);
+ int len, int *pre_trigger_samples);
/*--- hardware/serial.c -----------------------------------------------------*/
SR_PRIV int serial_open(struct sr_serial_dev_inst *serial, int flags);
SR_PRIV int serial_close(struct sr_serial_dev_inst *serial);
SR_PRIV int serial_flush(struct sr_serial_dev_inst *serial);
+SR_PRIV int serial_drain(struct sr_serial_dev_inst *serial);
SR_PRIV int serial_write_blocking(struct sr_serial_dev_inst *serial,
const void *buf, size_t count, unsigned int timeout_ms);
SR_PRIV int serial_write_nonblocking(struct sr_serial_dev_inst *serial,
SR_PRIV int sr_brymen_bm25x_parse(const uint8_t *buf, float *floatval,
struct sr_datafeed_analog *analog, void *info);
+/*--- hardware/dmm/ut71x.c --------------------------------------------------*/
+
+#define UT71X_PACKET_SIZE 11
+
+struct ut71x_info {
+ gboolean is_voltage, is_resistance, is_capacitance, is_temperature;
+ gboolean is_celsius, is_fahrenheit, is_current, is_continuity;
+ gboolean is_diode, is_frequency, is_duty_cycle, is_dc, is_ac;
+ gboolean is_auto, is_manual, is_sign, is_power, is_loop_current;
+};
+
+SR_PRIV gboolean sr_ut71x_packet_valid(const uint8_t *buf);
+SR_PRIV int sr_ut71x_parse(const uint8_t *buf, float *floatval,
+ struct sr_datafeed_analog *analog, void *info);
+
/*--- hardware/lcr/es51919.c ------------------------------------------------*/
SR_PRIV void es51919_serial_clean(void *priv);