X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=include%2Flibsigrok%2Flibsigrok.h;h=7d9260edabf714cc404b529fde981ac4c738afd1;hb=28c95cc6c45ede9ec9d184d606bfc16505834429;hp=983ddc0666b0e86e2d132a3583ab8fe90b09305a;hpb=428d79a810fd4e2b905faf06f0b2e6cadaed82fe;p=libsigrok.git diff --git a/include/libsigrok/libsigrok.h b/include/libsigrok/libsigrok.h index 983ddc06..7d9260ed 100644 --- a/include/libsigrok/libsigrok.h +++ b/include/libsigrok/libsigrok.h @@ -162,19 +162,17 @@ enum sr_packettype { SR_DF_TRIGGER, /** Payload is struct sr_datafeed_logic. */ SR_DF_LOGIC, - /** Payload is struct sr_datafeed_analog. */ - SR_DF_ANALOG, /** Beginning of frame. No payload. */ SR_DF_FRAME_BEGIN, /** End of frame. No payload. */ SR_DF_FRAME_END, - /** Payload is struct sr_datafeed_analog2. */ - SR_DF_ANALOG2, + /** Payload is struct sr_datafeed_analog. */ + SR_DF_ANALOG, /* Update datafeed_dump() (session.c) upon changes! */ }; -/** Measured quantity, sr_datafeed_analog.mq. */ +/** Measured quantity, sr_analog_meaning.mq. */ enum sr_mq { SR_MQ_VOLTAGE = 10000, SR_MQ_CURRENT, @@ -237,7 +235,7 @@ enum sr_mq { /* Update sr_key_info_mq[] (hwdriver.c) upon changes! */ }; -/** Unit of measured quantity, sr_datafeed_analog.unit. */ +/** Unit of measured quantity, sr_analog_meaning.unit. */ enum sr_unit { /** Volt */ SR_UNIT_VOLT = 10000, @@ -331,7 +329,7 @@ enum sr_unit { */ }; -/** Values for sr_datafeed_analog.flags. */ +/** Values for sr_analog_meaning.mqflags. */ enum sr_mqflag { /** Voltage measurement is alternating current (AC). */ SR_MQFLAG_AC = 0x01, @@ -383,6 +381,8 @@ enum sr_mqflag { SR_MQFLAG_REFERENCE = 0x80000, /** Unstable value (hasn't settled yet). */ SR_MQFLAG_UNSTABLE = 0x100000, + /** Measurement is four wire (e.g. Kelvin connection). */ + SR_MQFLAG_FOUR_WIRE = 0x200000, /* * Update mq_strings[] (analog.c) and fancyprint() (output/analog.c) @@ -465,7 +465,7 @@ struct sr_session; struct sr_rational { /** Numerator of the rational number. */ - uint64_t p; + int64_t p; /** Denominator of the rational number. */ uint64_t q; }; @@ -496,24 +496,6 @@ struct sr_datafeed_logic { /** Analog datafeed payload for type SR_DF_ANALOG. */ struct sr_datafeed_analog { - /** The channels for which data is included in this packet. */ - GSList *channels; - /** Number of samples in data */ - int num_samples; - /** Measured quantity (voltage, current, temperature, and so on). - * Use SR_MQ_VOLTAGE, ... */ - int mq; - /** Unit in which the MQ is measured. Use SR_UNIT_VOLT, ... */ - int unit; - /** Bitmap with extra information about the MQ. Use SR_MQFLAG_AC, ... */ - uint64_t mqflags; - /** The analog value(s). The data is interleaved according to - * the channels list. */ - 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; @@ -526,7 +508,7 @@ struct sr_analog_encoding { gboolean is_signed; gboolean is_float; gboolean is_bigendian; - uint8_t digits; + int8_t digits; gboolean is_digits_decimal; struct sr_rational scale; struct sr_rational offset; @@ -540,23 +522,42 @@ struct sr_analog_meaning { }; struct sr_analog_spec { - uint8_t spec_digits; + int8_t spec_digits; }; /** Generic option struct used by various subsystems. */ struct sr_option { /* Short name suitable for commandline usage, [a-z0-9-]. */ - char *id; + const char *id; /* Short name suitable for GUI usage, can contain UTF-8. */ - char *name; + const char *name; /* Description of the option, in a sentence. */ - char *desc; + const char *desc; /* Default value for this option. */ GVariant *def; /* List of possible values, if this is an option with few values. */ GSList *values; }; +/** Resource type. + * @since 0.4.0 + */ +enum sr_resource_type { + SR_RESOURCE_FIRMWARE = 1, +}; + +/** Resource descriptor. + * @since 0.4.0 + */ +struct sr_resource { + /** Size of resource in bytes; set by resource open callback. */ + uint64_t size; + /** File handle or equivalent; set by resource open callback. */ + void *handle; + /** Resource type (SR_RESOURCE_FIRMWARE, ...) */ + int type; +}; + /** Output module flags. */ enum sr_output_flag { /** If set, this output module writes the output itself. */ @@ -626,17 +627,22 @@ struct sr_key_info { /** Data type like SR_T_STRING, etc if applicable. */ int datatype; /** Short, lowercase ID string, e.g. "serialcomm", "voltage". */ - char *id; + const char *id; /** Full capitalized name, e.g. "Serial communication". */ - char *name; + const char *name; /** Verbose description (unused currently). */ - char *description; + const char *description; }; -#define SR_CONF_GET (1 << 31) -#define SR_CONF_SET (1 << 30) -#define SR_CONF_LIST (1 << 29) -#define SR_CONF_MASK 0x1fffffff +/** Configuration capabilities. */ +enum sr_configcap { + /** Value can be read. */ + SR_CONF_GET = (1 << 31), + /** Value can be written. */ + SR_CONF_SET = (1 << 30), + /** Possible values can be enumerated. */ + SR_CONF_LIST = (1 << 29), +}; /** Configuration keys */ enum sr_configkey { @@ -952,18 +958,21 @@ enum sr_configkey { /** Over-temperature protection (OTP) active. */ SR_CONF_OVER_TEMPERATURE_PROTECTION_ACTIVE, - /* Update sr_key_info_config[] (hwdriver.c) upon changes! */ + /** Under-voltage condition. */ + SR_CONF_UNDER_VOLTAGE_CONDITION, - /*--- Special stuff -------------------------------------------------*/ + /** Under-voltage condition active. */ + SR_CONF_UNDER_VOLTAGE_CONDITION_ACTIVE, - /** Scan options supported by the driver. */ - SR_CONF_SCAN_OPTIONS = 40000, + /** Trigger level. */ + SR_CONF_TRIGGER_LEVEL, - /** Device options for a particular device. */ - SR_CONF_DEVICE_OPTIONS, + /* Update sr_key_info_config[] (hwdriver.c) upon changes! */ + + /*--- Special stuff -------------------------------------------------*/ /** Session filename. */ - SR_CONF_SESSIONFILE, + SR_CONF_SESSIONFILE = 40000, /** The device supports specifying a capturefile to inject. */ SR_CONF_CAPTUREFILE, @@ -991,6 +1000,9 @@ enum sr_configkey { /** The device supports setting a probe factor. */ SR_CONF_PROBE_FACTOR, + /** Number of powerline cycles for ADC integration time. */ + SR_CONF_ADC_POWERLINE_CYCLES, + /* Update sr_key_info_config[] (hwdriver.c) upon changes! */ /*--- Acquisition modes, sample limiting ----------------------------*/ @@ -1072,9 +1084,9 @@ enum sr_dev_inst_status { struct sr_dev_driver { /* Driver-specific */ /** Driver name. Lowercase a-z, 0-9 and dashes (-) only. */ - char *name; + const char *name; /** Long name. Verbose driver name shown to user. */ - char *longname; + const char *longname; /** API version (currently 1). */ int api_version; /** Called when driver is loaded, e.g. program startup. */ @@ -1127,25 +1139,15 @@ struct sr_dev_driver { /** Close device */ int (*dev_close) (struct sr_dev_inst *sdi); /** Begin data acquisition on the specified device. */ - int (*dev_acquisition_start) (const struct sr_dev_inst *sdi, - void *cb_data); + int (*dev_acquisition_start) (const struct sr_dev_inst *sdi); /** End data acquisition on the specified device. */ - int (*dev_acquisition_stop) (struct sr_dev_inst *sdi, - void *cb_data); + int (*dev_acquisition_stop) (struct sr_dev_inst *sdi); /* Dynamic */ /** Device driver context, considered private. Initialized by init(). */ void *context; }; -/** - * @struct sr_session - * - * Opaque data structure representing a libsigrok session. None of the fields - * of this structure are meant to be accessed directly. - */ -struct sr_session; - /** Serial port descriptor. */ struct sr_serial_port { /** The OS dependent name of the serial port. */