]> sigrok.org Git - libsigrok.git/blobdiff - src/libsigrok-internal.h
input: Added preferred file extension field
[libsigrok.git] / src / libsigrok-internal.h
index c94e42932ea1ba5cd7dfad12b8b2f1b641efc8f1..debd27719a69a45da99b198a43639d9c64b7c25e 100644 (file)
 /* 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
@@ -237,6 +238,13 @@ struct sr_input_module {
         */
        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
@@ -490,9 +498,37 @@ enum {
 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
@@ -574,6 +610,14 @@ SR_PRIV int sr_packet_copy(const struct sr_datafeed_packet *packet,
                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);
@@ -610,13 +654,18 @@ struct soft_trigger_logic {
        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 -----------------------------------------------------*/
 
@@ -631,6 +680,7 @@ typedef gboolean (*packet_valid_callback)(const uint8_t *buf);
 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,
@@ -912,6 +962,21 @@ SR_PRIV gboolean sr_brymen_bm25x_packet_valid(const uint8_t *buf);
 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);