]> sigrok.org Git - libsigrok.git/blobdiff - libsigrok.h
sr: corrected VID for Victor 70C
[libsigrok.git] / libsigrok.h
index 42406d5419b568ca3077452e08be4a261000924f..53905b6f8127a5965066270c4448e0268b707b36 100644 (file)
@@ -145,6 +145,7 @@ enum {
        SR_MQ_TEMPERATURE,
        SR_MQ_FREQUENCY,
        SR_MQ_DUTY_CYCLE,
+       SR_MQ_CONTINUITY,
 };
 
 /* sr_datafeed_analog.unit values */
@@ -153,10 +154,34 @@ enum {
        SR_UNIT_AMPERE,
        SR_UNIT_OHM,
        SR_UNIT_FARAD,
-       SR_UNIT_CELSIUS,
        SR_UNIT_KELVIN,
+       SR_UNIT_CELSIUS,
+       SR_UNIT_FAHRENHEIT,
        SR_UNIT_HERTZ,
        SR_UNIT_PERCENTAGE,
+       SR_UNIT_BOOLEAN,
+};
+
+/** sr_datafeed_analog.flags values */
+enum {
+       /** Voltage measurement is alternating current. */
+       SR_MQFLAG_AC = 0x01,
+       /** Voltage measurement is direct current. */
+       SR_MQFLAG_DC = 0x02,
+       /** This is a true RMS measurement. */
+       SR_MQFLAG_RMS = 0x04,
+       /** Value is voltage drop across a diode, or NAN. */
+       SR_MQFLAG_DIODE = 0x08,
+       /** Device is in "hold" mode, i.e. repeating the last measurement. */
+       SR_MQFLAG_HOLD = 0x10,
+       /** Device is in "max" mode, only updating when a new max value is found. */
+       SR_MQFLAG_MAX = 0x20,
+       /** Device is in "min" mode, only updating when a new min value is found. */
+       SR_MQFLAG_MIN = 0x40,
+       /** Device is in autoranging mode. */
+       SR_MQFLAG_AUTORANGE = 0x80,
+       /** Device is in relative mode. */
+       SR_MQFLAG_RELATIVE = 0x100,
 };
 
 struct sr_datafeed_packet {
@@ -186,15 +211,19 @@ struct sr_datafeed_meta_analog {
 
 struct sr_datafeed_analog {
        int num_samples;
-       int mq; /* Measured quantity (e.g. voltage, current, temperature) */
-       int unit; /* Unit in which the MQ is measured. */
+       /** Measured quantity (e.g. voltage, current, temperature) */
+       int mq;
+       /** Unit in which the MQ is measured. */
+       int unit;
+       /** Bitmap with extra information about the MQ. */
+       uint64_t mqflags;
        float *data;
 };
 
 struct sr_input {
        struct sr_input_format *format;
        GHashTable *param;
-       struct sr_dev *vdev;
+       struct sr_dev_inst *sdi;
        void *internal;
 };
 
@@ -208,7 +237,7 @@ struct sr_input_format {
 
 struct sr_output {
        struct sr_output_format *format;
-       struct sr_dev *dev;
+       struct sr_dev_inst *sdi;
        char *param;
        void *internal;
 };
@@ -251,6 +280,7 @@ struct sr_dev {
 
 enum {
        SR_PROBE_LOGIC,
+       SR_PROBE_ANALOG,
 };
 
 struct sr_probe {
@@ -268,6 +298,8 @@ struct sr_hwopt {
 
 /* Hardware driver options */
 enum {
+       SR_HWOPT_DUMMY = 0, /* Used to terminate lists. Must be 0! */
+
        /** Some drivers cannot detect the exact model they're talking to. */
        SR_HWOPT_MODEL,
 
@@ -302,10 +334,6 @@ enum {
        /** The device supports setting/changing its samplerate. */
        SR_HWCAP_SAMPLERATE,
 
-       /* TODO: Better description? Rename to PROBE_AND_TRIGGER_CONFIG? */
-       /** The device supports setting a probe mask. */
-       SR_HWCAP_PROBECONFIG,
-
        /** The device supports setting a pre/post-trigger capture ratio. */
        SR_HWCAP_CAPTURE_RATIO,
 
@@ -396,6 +424,7 @@ struct sr_hwcap_option {
 };
 
 struct sr_dev_inst {
+       struct sr_dev_driver *driver;
        int index;
        int status;
        int inst_type;
@@ -432,8 +461,10 @@ enum {
 
 /* Device info IDs */
 enum {
-       /* struct sr_dev_inst for this specific device */
-       SR_DI_INST,
+       /* A list of options supported by the driver. */
+       SR_DI_HWOPTS,
+       /* A list of capabilities supported by the device. */
+       SR_DI_HWCAPS,
        /* The number of probes connected to this device */
        SR_DI_NUM_PROBES,
        /* The probe names on this device */
@@ -480,16 +511,23 @@ struct sr_dev_driver {
        int (*init) (void);
        int (*cleanup) (void);
        GSList *(*scan) (GSList *options);
+       GSList *(*dev_list) (void);
+       int (*dev_clear) (void);
 
        /* Device-specific */
-       int (*dev_open) (int dev_index);
-       int (*dev_close) (int dev_index);
-       const void *(*dev_info_get) (int dev_index, int dev_info_id);
-       int (*dev_status_get) (int dev_index);
-       const int *(*hwcap_get_all) (void);
-       int (*dev_config_set) (int dev_index, int hwcap, const void *value);
-       int (*dev_acquisition_start) (int dev_index, void *session_dev_id);
-       int (*dev_acquisition_stop) (int dev_index, void *session_dev_id);
+       int (*dev_open) (struct sr_dev_inst *sdi);
+       int (*dev_close) (struct sr_dev_inst *sdi);
+       int (*info_get) (int info_id, const void **data,
+                       const struct sr_dev_inst *sdi);
+       int (*dev_config_set) (const struct sr_dev_inst *sdi, int hwcap,
+                       const void *value);
+       int (*dev_acquisition_start) (const struct sr_dev_inst *sdi,
+                       void *cb_data);
+       int (*dev_acquisition_stop) (const struct sr_dev_inst *sdi,
+                       void *cb_data);
+
+       /* Dynamic */
+       void *priv;
 };
 
 struct sr_session {
@@ -498,7 +536,6 @@ struct sr_session {
        /* list of sr_receive_data_callback_t */
        GSList *datafeed_callbacks;
        GTimeVal starttime;
-       gboolean running;
 
        unsigned int num_sources;