X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=include%2Flibsigrok%2Flibsigrok.h;h=c0ec19fff226ef041fb2c25c31117f9f2811ba6d;hb=790320f605062718115d791d2b46c1e54bc4908e;hp=746ee3743141a450dcb4c984d1658713fd936710;hpb=a42a39ac378534782d44f166b879e84cefa66ed6;p=libsigrok.git diff --git a/include/libsigrok/libsigrok.h b/include/libsigrok/libsigrok.h index 746ee374..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. */ @@ -415,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; @@ -457,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-]. */ @@ -475,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 { @@ -536,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 ------------------------------------------------*/ @@ -564,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 -------------------------------------------*/ @@ -608,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, @@ -619,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, @@ -854,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 @@ -892,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 { @@ -931,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 */ @@ -1025,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"