X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=include%2Flibsigrok%2Flibsigrok.h;h=c0ec19fff226ef041fb2c25c31117f9f2811ba6d;hb=790320f605062718115d791d2b46c1e54bc4908e;hp=837233aff31e3387e39fbe90cd3f483daafa20b8;hpb=c7c8994c204cc0bc86d07fe671b6c469ba5d6b50;p=libsigrok.git diff --git a/include/libsigrok/libsigrok.h b/include/libsigrok/libsigrok.h index 837233af..c0ec19ff 100644 --- a/include/libsigrok/libsigrok.h +++ b/include/libsigrok/libsigrok.h @@ -168,6 +168,8 @@ enum sr_packettype { SR_DF_FRAME_BEGIN, /** End of frame. No payload. */ SR_DF_FRAME_END, + /** Payload is struct sr_datafeed_analog2. */ + SR_DF_ANALOG2, }; /** Measured quantity, sr_datafeed_analog.mq. */ @@ -340,10 +342,6 @@ enum sr_mqflag { SR_MQFLAG_AVG = 0x40000, /** Reference value shown. */ SR_MQFLAG_REFERENCE = 0x80000, - /** Device selects the measured quantity automatically. */ - SR_MQFLAG_AUTOMQ = 0x100000, - /** Device selects the measurement model automatically. */ - SR_MQFLAG_AUTOMODEL = 0x200000, }; enum sr_trigger_matches { @@ -419,6 +417,13 @@ struct sr_context; */ struct sr_session; +struct sr_rational { + /** Numerator of the rational number. */ + uint64_t p; + /** Denominator of the rational number. */ + uint64_t q; +}; + /** Packet in a sigrok data feed. */ struct sr_datafeed_packet { uint16_t type; @@ -461,6 +466,37 @@ struct sr_datafeed_analog { float *data; }; +/** Analog datafeed payload for type SR_DF_ANALOG2. */ +struct sr_datafeed_analog2 { + void *data; + uint32_t num_samples; + struct sr_analog_encoding *encoding; + struct sr_analog_meaning *meaning; + struct sr_analog_spec *spec; +}; + +struct sr_analog_encoding { + uint8_t unitsize; + gboolean is_signed; + gboolean is_float; + gboolean is_bigendian; + uint8_t digits; + gboolean is_digits_decimal; + struct sr_rational scale; + struct sr_rational offset; +}; + +struct sr_analog_meaning { + enum sr_mq mq; + enum sr_unit unit; + enum sr_mqflag mqflags; + GSList *channels; +}; + +struct sr_analog_spec { + uint8_t spec_digits; +}; + /** Generic option struct used by various subsystems. */ struct sr_option { /* Short name suitable for commandline usage, [a-z0-9-]. */ @@ -479,6 +515,8 @@ struct sr_input; struct sr_input_module; struct sr_output; struct sr_output_module; +struct sr_transform; +struct sr_transform_module; /** Constants for channel type. */ enum sr_channeltype { @@ -540,7 +578,7 @@ struct sr_config_info { #define SR_CONF_LIST (1 << 29) #define SR_CONF_MASK 0x1fffffff -/** Constants for device classes */ +/** Configuration keys */ enum sr_configkey { /*--- Device classes ------------------------------------------------*/ @@ -568,13 +606,13 @@ enum sr_configkey { /** The device can measure energy consumption. */ SR_CONF_ENERGYMETER, - /** The device can demodulate signals. */ + /** The device can act as a signal demodulator. */ SR_CONF_DEMODULATOR, - /** Programmable power supply. */ + /** The device can act as a programmable power supply. */ SR_CONF_POWER_SUPPLY, - /** LCR meter. */ + /** The device can act as an LCR meter. */ SR_CONF_LCRMETER, /*--- Driver scan options -------------------------------------------*/ @@ -612,7 +650,7 @@ enum sr_configkey { */ SR_CONF_SERIALCOMM, - /*--- Device configuration ------------------------------------------*/ + /*--- Device (or channel group) configuration -----------------------*/ /** The device supports setting its samplerate, in Hz. */ SR_CONF_SAMPLERATE = 30000, @@ -623,12 +661,21 @@ enum sr_configkey { /** The device supports setting a pattern (pattern generator mode). */ SR_CONF_PATTERN_MODE, - /** The device supports Run Length Encoding. */ + /** The device supports run-length encoding (RLE). */ SR_CONF_RLE, /** The device supports setting trigger slope. */ SR_CONF_TRIGGER_SLOPE, + /** The device supports averaging. */ + SR_CONF_AVERAGING, + + /** + * The device supports setting number of samples to be + * averaged over. + */ + SR_CONF_AVG_SAMPLES, + /** Trigger source. */ SR_CONF_TRIGGER_SOURCE, @@ -815,6 +862,15 @@ enum sr_configkey { /** Output frequency in Hz. */ SR_CONF_OUTPUT_FREQUENCY, + /** Measured quantity. */ + SR_CONF_MEASURED_QUANTITY, + + /** Measured secondary quantity. */ + SR_CONF_MEASURED_2ND_QUANTITY, + + /** Equivalent circuit model. */ + SR_CONF_EQUIV_CIRCUIT_MODEL, + /*--- Special stuff -------------------------------------------------*/ /** Scan options supported by the driver. */ @@ -849,7 +905,7 @@ enum sr_configkey { */ SR_CONF_DATA_SOURCE, - /*--- Acquisition modes ---------------------------------------------*/ + /*--- Acquisition modes, sample limiting ----------------------------*/ /** * The device supports setting a sample time limit (how long @@ -887,36 +943,12 @@ enum sr_configkey { SR_CONF_TEST_MODE, }; -/** Device instance data +/** + * Opaque structure representing a libsigrok device instance. + * + * None of the fields of this structure are meant to be accessed directly. */ -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; -}; +struct sr_dev_inst; /** Types of device instance, struct sr_dev_inst.type */ enum sr_dev_inst_type { @@ -926,6 +958,8 @@ enum sr_dev_inst_type { SR_INST_SERIAL, /** Device instance type for SCPI devices. */ SR_INST_SCPI, + /** Device-instance type for user-created "devices". */ + SR_INST_USER, }; /** Device instance status, struct sr_dev_inst.status */ @@ -954,7 +988,7 @@ struct sr_dev_driver { /** Called when driver is loaded, e.g. program startup. */ int (*init) (struct sr_context *sr_ctx); /** Called before driver is unloaded. - * Driver must free all resouces held by it. */ + * Driver must free all resources held by it. */ int (*cleanup) (void); /** Scan for devices. Driver should do all initialisation required. * Can be called several times, e.g. with different port options. @@ -1020,6 +1054,14 @@ struct sr_dev_driver { */ struct sr_session; +/** Serial port descriptor. */ +struct sr_serial_port { + /** The OS dependent name of the serial port. */ + char *name; + /** An end user friendly description for the serial port. */ + char *description; +}; + #include "proto.h" #include "version.h"