libsigrok  unreleased development snapshot
sigrok hardware access and backend library
libsigrok.h
Go to the documentation of this file.
1 /*
2  * This file is part of the libsigrok project.
3  *
4  * Copyright (C) 2013 Bert Vermeulen <bert@biot.com>
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program. If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #ifndef LIBSIGROK_LIBSIGROK_H
21 #define LIBSIGROK_LIBSIGROK_H
22 
23 #include <stdio.h>
24 #include <sys/time.h>
25 #include <stdint.h>
26 #include <inttypes.h>
27 #include <glib.h>
28 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 
33 /**
34  * @file
35  *
36  * The public libsigrok header file to be used by frontends.
37  *
38  * This is the only file that libsigrok users (frontends) are supposed to
39  * use and \#include. There are other header files which get installed with
40  * libsigrok, but those are not meant to be used directly by frontends.
41  *
42  * The correct way to get/use the libsigrok API functions is:
43  *
44  * @code{.c}
45  * #include <libsigrok/libsigrok.h>
46  * @endcode
47  */
48 
49 /*
50  * All possible return codes of libsigrok functions must be listed here.
51  * Functions should never return hardcoded numbers as status, but rather
52  * use these enum values. All error codes are negative numbers.
53  *
54  * The error codes are globally unique in libsigrok, i.e. if one of the
55  * libsigrok functions returns a "malloc error" it must be exactly the same
56  * return value as used by all other functions to indicate "malloc error".
57  * There must be no functions which indicate two different errors via the
58  * same return code.
59  *
60  * Also, for compatibility reasons, no defined return codes are ever removed
61  * or reused for different errors later. You can only add new entries and
62  * return codes, but never remove or redefine existing ones.
63  */
64 
65 /** Status/error codes returned by libsigrok functions. */
67  SR_OK = 0, /**< No error. */
68  SR_ERR = -1, /**< Generic/unspecified error. */
69  SR_ERR_MALLOC = -2, /**< Malloc/calloc/realloc error. */
70  SR_ERR_ARG = -3, /**< Function argument error. */
71  SR_ERR_BUG = -4, /**< Errors hinting at internal bugs. */
72  SR_ERR_SAMPLERATE = -5, /**< Incorrect samplerate. */
73  SR_ERR_NA = -6, /**< Not applicable. */
74  SR_ERR_DEV_CLOSED = -7, /**< Device is closed, but must be open. */
75  SR_ERR_TIMEOUT = -8, /**< A timeout occurred. */
76  SR_ERR_CHANNEL_GROUP = -9, /**< A channel group must be specified. */
77  SR_ERR_DATA =-10, /**< Data is invalid. */
78  SR_ERR_IO =-11, /**< Input/output error. */
79 
80  /* Update sr_strerror()/sr_strerror_name() (error.c) upon changes! */
81 };
82 
83 /** Ternary return type for DMM/LCR/etc packet parser validity checks. */
85  SR_PACKET_INVALID = -1, /**< Certainly invalid. */
86  SR_PACKET_VALID = 0, /**< Certainly valid. */
87  SR_PACKET_NEED_RX = +1, /**< Need more RX data. */
88 };
89 
90 #define SR_MAX_CHANNELNAME_LEN 32
91 
92 /* Handy little macros */
93 #define SR_HZ(n) (n)
94 #define SR_KHZ(n) ((n) * UINT64_C(1000))
95 #define SR_MHZ(n) ((n) * UINT64_C(1000000))
96 #define SR_GHZ(n) ((n) * UINT64_C(1000000000))
97 
98 #define SR_HZ_TO_NS(n) (UINT64_C(1000000000) / (n))
99 
100 /** libsigrok loglevels. */
102  SR_LOG_NONE = 0, /**< Output no messages at all. */
103  SR_LOG_ERR = 1, /**< Output error messages. */
104  SR_LOG_WARN = 2, /**< Output warnings. */
105  SR_LOG_INFO = 3, /**< Output informational messages. */
106  SR_LOG_DBG = 4, /**< Output debug messages. */
107  SR_LOG_SPEW = 5, /**< Output very noisy debug messages. */
108 };
109 
110 /*
111  * Use SR_API to mark public API symbols, and SR_PRIV for private symbols.
112  *
113  * Variables and functions marked 'static' are private already and don't
114  * need SR_PRIV. However, functions which are not static (because they need
115  * to be used in other libsigrok-internal files) but are also not meant to
116  * be part of the public libsigrok API, must use SR_PRIV.
117  *
118  * This uses the 'visibility' feature of gcc (requires gcc >= 4.0).
119  *
120  * This feature is not available on MinGW/Windows, as it is a feature of
121  * ELF files and MinGW/Windows uses PE files.
122  *
123  * Details: http://gcc.gnu.org/wiki/Visibility
124  */
125 
126 /* Marks public libsigrok API symbols. */
127 #ifndef _WIN32
128 #define SR_API __attribute__((visibility("default")))
129 #else
130 #define SR_API
131 #endif
132 
133 /* Marks private, non-public libsigrok symbols (not part of the API). */
134 #ifndef _WIN32
135 #define SR_PRIV __attribute__((visibility("hidden")))
136 #else
137 #define SR_PRIV
138 #endif
139 
140 /** Type definition for callback function for data reception. */
141 typedef int (*sr_receive_data_callback)(int fd, int revents, void *cb_data);
142 
143 /** Data types used by sr_config_info(). */
145  SR_T_UINT64 = 10000,
157 
158  /* Update sr_variant_type_get() (hwdriver.c) upon changes! */
159 };
160 
161 /** Value for sr_datafeed_packet.type. */
163  /** Payload is sr_datafeed_header. */
164  SR_DF_HEADER = 10000,
165  /** End of stream (no further data). */
167  /** Payload is struct sr_datafeed_meta */
169  /** The trigger matched at this point in the data feed. No payload. */
171  /** Payload is struct sr_datafeed_logic. */
173  /** Beginning of frame. No payload. */
175  /** End of frame. No payload. */
177  /** Payload is struct sr_datafeed_analog. */
179 
180  /* Update datafeed_dump() (session.c) upon changes! */
181 };
182 
183 /** Measured quantity, sr_analog_meaning.mq. */
184 enum sr_mq {
185  SR_MQ_VOLTAGE = 10000,
191  /** Duty cycle, e.g. on/off ratio. */
193  /** Continuity test. */
197  /** Electrical power, usually in W, or dBm. */
199  /** Gain (a transistor's gain, or hFE, for example). */
201  /** Logarithmic representation of sound pressure relative to a
202  * reference value. */
204  /** Carbon monoxide level */
206  /** Humidity */
208  /** Time */
210  /** Wind speed */
212  /** Pressure */
214  /** Parallel inductance (LCR meter model). */
216  /** Parallel capacitance (LCR meter model). */
218  /** Parallel resistance (LCR meter model). */
220  /** Series inductance (LCR meter model). */
222  /** Series capacitance (LCR meter model). */
224  /** Series resistance (LCR meter model). */
226  /** Dissipation factor. */
228  /** Quality factor. */
230  /** Phase angle. */
232  /** Difference from reference value. */
234  /** Count. */
236  /** Power factor. */
238  /** Apparent power */
240  /** Mass */
242  /** Harmonic ratio */
244  /** Energy. */
246  /** Electric charge. */
248 
249  /* Update sr_key_info_mq[] (hwdriver.c) upon changes! */
250 };
251 
252 /** Unit of measured quantity, sr_analog_meaning.unit. */
253 enum sr_unit {
254  /** Volt */
255  SR_UNIT_VOLT = 10000,
256  /** Ampere (current). */
258  /** Ohm (resistance). */
260  /** Farad (capacity). */
262  /** Kelvin (temperature). */
264  /** Degrees Celsius (temperature). */
266  /** Degrees Fahrenheit (temperature). */
268  /** Hertz (frequency, 1/s, [Hz]). */
270  /** Percent value. */
272  /** Boolean value. */
274  /** Time in seconds. */
276  /** Unit of conductance, the inverse of resistance. */
278  /**
279  * An absolute measurement of power, in decibels, referenced to
280  * 1 milliwatt (dBm).
281  */
283  /** Voltage in decibel, referenced to 1 volt (dBV). */
285  /**
286  * Measurements that intrinsically do not have units attached, such
287  * as ratios, gains, etc. Specifically, a transistor's gain (hFE) is
288  * a unitless quantity, for example.
289  */
291  /** Sound pressure level, in decibels, relative to 20 micropascals. */
293  /**
294  * Normalized (0 to 1) concentration of a substance or compound with 0
295  * representing a concentration of 0%, and 1 being 100%. This is
296  * represented as the fraction of number of particles of the substance.
297  */
299  /** Revolutions per minute. */
301  /** Apparent power [VA]. */
303  /** Real power [W]. */
305  /** Energy (consumption) in watt hour [Wh]. */
307  /** Wind speed in meters per second. */
309  /** Pressure in hectopascal */
311  /** Relative humidity assuming air temperature of 293 Kelvin (%rF). */
313  /** Plane angle in 1/360th of a full circle. */
315  /** Henry (inductance). */
317  /** Mass in gram [g]. */
319  /** Mass in carat [ct]. */
321  /** Mass in ounce [oz]. */
323  /** Mass in troy ounce [oz t]. */
325  /** Mass in pound [lb]. */
327  /** Mass in pennyweight [dwt]. */
329  /** Mass in grain [gr]. */
331  /** Mass in tael (variants: Hong Kong, Singapore/Malaysia, Taiwan) */
333  /** Mass in momme. */
335  /** Mass in tola. */
337  /** Pieces (number of items). */
339  /** Energy in joule. */
341  /** Electric charge in coulomb. */
343  /** Electric charge in ampere hour [Ah]. */
345 
346  /*
347  * Update unit_strings[] (analog.c) and fancyprint() (output/analog.c)
348  * upon changes!
349  */
350 };
351 
352 /** Values for sr_analog_meaning.mqflags. */
353 enum sr_mqflag {
354  /** Voltage measurement is alternating current (AC). */
355  SR_MQFLAG_AC = 0x01,
356  /** Voltage measurement is direct current (DC). */
357  SR_MQFLAG_DC = 0x02,
358  /** This is a true RMS measurement. */
360  /** Value is voltage drop across a diode, or NAN. */
362  /** Device is in "hold" mode (repeating the last measurement). */
364  /** Device is in "max" mode, only updating upon a new max value. */
366  /** Device is in "min" mode, only updating upon a new min value. */
368  /** Device is in autoranging mode. */
370  /** Device is in relative mode. */
372  /** Sound pressure level is A-weighted in the frequency domain,
373  * according to IEC 61672:2003. */
375  /** Sound pressure level is C-weighted in the frequency domain,
376  * according to IEC 61672:2003. */
378  /** Sound pressure level is Z-weighted (i.e. not at all) in the
379  * frequency domain, according to IEC 61672:2003. */
381  /** Sound pressure level is not weighted in the frequency domain,
382  * albeit without standards-defined low and high frequency limits. */
384  /** Sound pressure level measurement is S-weighted (1s) in the
385  * time domain. */
387  /** Sound pressure level measurement is F-weighted (125ms) in the
388  * time domain. */
390  /** Sound pressure level is time-averaged (LAT), also known as
391  * Equivalent Continuous A-weighted Sound Level (LEQ). */
393  /** Sound pressure level represented as a percentage of measurements
394  * that were over a preset alarm level. */
396  /** Time is duration (as opposed to epoch, ...). */
398  /** Device is in "avg" mode, averaging upon each new value. */
399  SR_MQFLAG_AVG = 0x40000,
400  /** Reference value shown. */
402  /** Unstable value (hasn't settled yet). */
403  SR_MQFLAG_UNSTABLE = 0x100000,
404  /** Measurement is four wire (e.g. Kelvin connection). */
406 
407  /*
408  * Update mq_strings[] (analog.c) and fancyprint() (output/analog.c)
409  * upon changes!
410  */
411 };
412 
421 };
422 
423 /** The representation of a trigger, consisting of one or more stages
424  * containing one or more matches on a channel.
425  */
426 struct sr_trigger {
427  /** A name for this trigger. This may be NULL if none is needed. */
428  char *name;
429  /** List of pointers to struct sr_trigger_stage. */
430  GSList *stages;
431 };
432 
433 /** A trigger stage. */
435  /** Starts at 0. */
436  int stage;
437  /** List of pointers to struct sr_trigger_match. */
438  GSList *matches;
439 };
440 
441 /** A channel to match and what to match it on. */
443  /** The channel to trigger on. */
445  /** The trigger match to use.
446  * For logic channels, only the following matches may be used:
447  * SR_TRIGGER_ZERO
448  * SR_TRIGGER_ONE
449  * SR_TRIGGER_RISING
450  * SR_TRIGGER_FALLING
451  * SR_TRIGGER_EDGE
452  *
453  * For analog channels, only these matches may be used:
454  * SR_TRIGGER_RISING
455  * SR_TRIGGER_FALLING
456  * SR_TRIGGER_OVER
457  * SR_TRIGGER_UNDER
458  *
459  */
460  int match;
461  /** If the trigger match is one of SR_TRIGGER_OVER or SR_TRIGGER_UNDER,
462  * this contains the value to compare against. */
463  float value;
464 };
465 
466 /**
467  * @struct sr_context
468  * Opaque structure representing a libsigrok context.
469  *
470  * None of the fields of this structure are meant to be accessed directly.
471  *
472  * @see sr_init(), sr_exit().
473  */
474 struct sr_context;
475 
476 /**
477  * @struct sr_session
478  * Opaque structure representing a libsigrok session.
479  *
480  * None of the fields of this structure are meant to be accessed directly.
481  *
482  * @see sr_session_new(), sr_session_destroy().
483  */
484 struct sr_session;
485 
486 struct sr_rational {
487  /** Numerator of the rational number. */
488  int64_t p;
489  /** Denominator of the rational number. */
490  uint64_t q;
491 };
492 
493 /** Packet in a sigrok data feed. */
495  uint16_t type;
496  const void *payload;
497 };
498 
499 /** Header of a sigrok data feed. */
502  struct timeval starttime;
503 };
504 
505 /** Datafeed payload for type SR_DF_META. */
507  GSList *config;
508 };
509 
510 /** Logic datafeed payload for type SR_DF_LOGIC. */
512  uint64_t length;
513  uint16_t unitsize;
514  void *data;
515 };
516 
517 /** Analog datafeed payload for type SR_DF_ANALOG. */
519  void *data;
520  uint32_t num_samples;
524 };
525 
527  uint8_t unitsize;
528  gboolean is_signed;
529  gboolean is_float;
530  gboolean is_bigendian;
531  /**
532  * Number of significant digits after the decimal point, if positive.
533  * When negative, exponent with reversed polarity that is necessary to
534  * express the value with all digits without a decimal point.
535  * Refers to the value we actually read on the wire.
536  *
537  * Examples:
538  *
539  * | Disp. value | Exp. notation | Exp. not. normalized | digits |
540  * |-------------|---------------------|----------------------|--------|
541  * | 12.34 MOhm | 1.234 * 10^7 Ohm | 1234 * 10^4 Ohm | -4 |
542  * | 1.2345 MOhm | 1.2345 * 10^6 Ohm | 12345 * 10^2 Ohm | -2 |
543  * | 123.4 kOhm | 1.234 * 10^5 Ohm | 1234 * 10^2 Ohm | -2 |
544  * | 1234 Ohm | 1.234 * 10^3 Ohm | 1234 * 10^0 Ohm | 0 |
545  * | 12.34 Ohm | 1.234 * 10^1 Ohm | 1234 * 10^-2 Ohm | 2 |
546  * | 0.0123 Ohm | 1.23 * 10^-2 Ohm | 123 * 10^-4 Ohm | 4 |
547  * | 1.234 pF | 1.234 * 10^-12 F | 1234 * 10^-15 F | 15 |
548  */
549  int8_t digits;
551  struct sr_rational scale;
552  struct sr_rational offset;
553 };
554 
556  enum sr_mq mq;
557  enum sr_unit unit;
558  enum sr_mqflag mqflags;
559  GSList *channels;
560 };
561 
563  /**
564  * Number of significant digits after the decimal point, if positive.
565  * When negative, exponent with reversed polarity that is necessary to
566  * express the value with all digits without a decimal point.
567  * Refers to vendor specifications/datasheet or actual device display.
568  *
569  * Examples:
570  *
571  * | On the wire | Exp. notation | Exp. not. normalized | spec_digits |
572  * |-------------|---------------------|----------------------|-------------|
573  * | 12.34 MOhm | 1.234 * 10^7 Ohm | 1234 * 10^4 Ohm | -4 |
574  * | 1.2345 MOhm | 1.2345 * 10^6 Ohm | 12345 * 10^2 Ohm | -2 |
575  * | 123.4 kOhm | 1.234 * 10^5 Ohm | 1234 * 10^2 Ohm | -2 |
576  * | 1234 Ohm | 1.234 * 10^3 Ohm | 1234 * 10^0 Ohm | 0 |
577  * | 12.34 Ohm | 1.234 * 10^1 Ohm | 1234 * 10^-2 Ohm | 2 |
578  * | 0.0123 Ohm | 1.23 * 10^-2 Ohm | 123 * 10^-4 Ohm | 4 |
579  * | 1.234 pF | 1.234 * 10^-12 F | 1234 * 10^-15 F | 15 |
580  */
581  int8_t spec_digits;
582 };
583 
584 /** Generic option struct used by various subsystems. */
585 struct sr_option {
586  /* Short name suitable for commandline usage, [a-z0-9-]. */
587  const char *id;
588  /* Short name suitable for GUI usage, can contain UTF-8. */
589  const char *name;
590  /* Description of the option, in a sentence. */
591  const char *desc;
592  /* Default value for this option. */
593  GVariant *def;
594  /* List of possible values, if this is an option with few values. */
595  GSList *values;
596 };
597 
598 /** Resource type.
599  * @since 0.4.0
600  */
603 };
604 
605 /** Resource descriptor.
606  * @since 0.4.0
607  */
608 struct sr_resource {
609  /** Size of resource in bytes; set by resource open callback. */
610  uint64_t size;
611  /** File handle or equivalent; set by resource open callback. */
612  void *handle;
613  /** Resource type (SR_RESOURCE_FIRMWARE, ...) */
614  int type;
615 };
616 
617 /** Output module flags. */
619  /** If set, this output module writes the output itself. */
621 };
622 
623 struct sr_input;
624 struct sr_input_module;
625 struct sr_output;
626 struct sr_output_module;
627 struct sr_transform;
628 struct sr_transform_module;
629 
630 /** Constants for channel type. */
632  /** Channel type is logic channel. */
634  /** Channel type is analog channel. */
636 };
637 
638 /** Information on single channel. */
639 struct sr_channel {
640  /** The device this channel is attached to. */
641  struct sr_dev_inst *sdi;
642  /** The index of this channel, starting at 0. Logic channels will
643  * be encoded according to this index in SR_DF_LOGIC packets. */
644  int index;
645  /** Channel type (SR_CHANNEL_LOGIC, ...) */
646  int type;
647  /** Is this channel enabled? */
648  gboolean enabled;
649  /** Name of channel. */
650  char *name;
651  /** Private data for driver use. */
652  void *priv;
653 };
654 
655 /** Structure for groups of channels that have common properties. */
657  /** Name of the channel group. */
658  char *name;
659  /** List of sr_channel structs of the channels belonging to this group. */
660  GSList *channels;
661  /** Private data for driver use. */
662  void *priv;
663 };
664 
665 /** Used for setting or getting value of a config item. */
666 struct sr_config {
667  /** Config key like SR_CONF_CONN, etc. */
668  uint32_t key;
669  /** Key-specific data. */
670  GVariant *data;
671 };
672 
677 };
678 
679 /** Information about a key. */
680 struct sr_key_info {
681  /** Config key like SR_CONF_CONN, MQ value like SR_MQ_VOLTAGE, etc. */
682  uint32_t key;
683  /** Data type like SR_T_STRING, etc if applicable. */
684  int datatype;
685  /** Short, lowercase ID string, e.g. "serialcomm", "voltage". */
686  const char *id;
687  /** Full capitalized name, e.g. "Serial communication". */
688  const char *name;
689  /** Verbose description (unused currently). */
690  const char *description;
691 };
692 
693 /** Configuration capabilities. */
695  /** Value can be read. */
696  SR_CONF_GET = (1UL << 31),
697  /** Value can be written. */
698  SR_CONF_SET = (1UL << 30),
699  /** Possible values can be enumerated. */
700  SR_CONF_LIST = (1UL << 29),
701 };
702 
703 /** Configuration keys */
705  /*--- Device classes ------------------------------------------------*/
706 
707  /** The device can act as logic analyzer. */
709 
710  /** The device can act as an oscilloscope. */
712 
713  /** The device can act as a multimeter. */
715 
716  /** The device is a demo device. */
718 
719  /** The device can act as a sound level meter. */
721 
722  /** The device can measure temperature. */
724 
725  /** The device can measure humidity. */
727 
728  /** The device can measure energy consumption. */
730 
731  /** The device can act as a signal demodulator. */
733 
734  /** The device can act as a programmable power supply. */
736 
737  /** The device can act as an LCR meter. */
739 
740  /** The device can act as an electronic load. */
742 
743  /** The device can act as a scale. */
745 
746  /** The device can act as a function generator. */
748 
749  /** The device can measure power. */
751 
752  /**
753  * The device can switch between multiple sources, e.g. a relay actuator
754  * or multiplexer.
755  */
757 
758  /* Update sr_key_info_config[] (hwdriver.c) upon changes! */
759 
760  /*--- Driver scan options -------------------------------------------*/
761 
762  /**
763  * Specification on how to connect to a device.
764  *
765  * In combination with SR_CONF_SERIALCOMM, this is a serial port in
766  * the form which makes sense to the OS (e.g., /dev/ttyS0).
767  * Otherwise this specifies a USB device, either in the form of
768  * @verbatim <bus>.<address> @endverbatim (decimal, e.g. 1.65) or
769  * @verbatim <vendorid>.<productid> @endverbatim
770  * (hexadecimal, e.g. 1d6b.0001).
771  */
772  SR_CONF_CONN = 20000,
773 
774  /**
775  * Serial communication specification, in the form:
776  *
777  * @verbatim <baudrate>/<databits><parity><stopbits> @endverbatim
778  *
779  * Example: 9600/8n1
780  *
781  * The string may also be followed by one or more special settings,
782  * in the form "/key=value". Supported keys and their values are:
783  *
784  * rts 0,1 set the port's RTS pin to low or high
785  * dtr 0,1 set the port's DTR pin to low or high
786  * flow 0 no flow control
787  * 1 hardware-based (RTS/CTS) flow control
788  * 2 software-based (XON/XOFF) flow control
789  *
790  * This is always an optional parameter, since a driver typically
791  * knows the speed at which the device wants to communicate.
792  */
794 
795  /**
796  * Modbus slave address specification.
797  *
798  * This is always an optional parameter, since a driver typically
799  * knows the default slave address of the device.
800  */
802 
803  /**
804  * User specified forced driver attachment to unknown devices.
805  *
806  * By design the interpretation of the string depends on the
807  * specific driver. It typically would be either a replacement
808  * '*IDN?' response value, or a sub-driver name. But could also
809  * be anything else and totally arbitrary.
810  */
812 
813  /**
814  * Override builtin probe names from user specs.
815  *
816  * Users may want to override the names which are assigned to
817  * probes during scan (these usually match the vendor's labels
818  * on the device). This avoids the interactive tedium of
819  * changing channel names after device creation and before
820  * protocol decoder attachment. Think of IEEE488 recorders or
821  * parallel computer bus loggers. The scan option eliminates
822  * the issue of looking up previously assigned names before
823  * renaming a channel (see sigrok-cli -C), which depends on
824  * the device as well as the application, and is undesirable.
825  * The scan option is limited to those drivers which implement
826  * support for it, but works identically across those drivers.
827  *
828  * The value is a string, either a comma separated list of
829  * probe names, or an alias for a typical set of names.
830  */
832 
833  /* Update sr_key_info_config[] (hwdriver.c) upon changes! */
834 
835  /*--- Device (or channel group) configuration -----------------------*/
836 
837  /** The device supports setting its samplerate, in Hz. */
839 
840  /** The device supports setting a pre/post-trigger capture ratio. */
842 
843  /** The device supports setting a pattern (pattern generator mode). */
845 
846  /** The device supports run-length encoding (RLE). */
848 
849  /** The device supports setting trigger slope. */
851 
852  /** The device supports averaging. */
854 
855  /**
856  * The device supports setting number of samples to be
857  * averaged over.
858  */
860 
861  /** Trigger source. */
863 
864  /** Horizontal trigger position. */
866 
867  /** Buffer size. */
869 
870  /** Time base. */
872 
873  /** Filter. */
875 
876  /** Volts/div. */
878 
879  /** Coupling. */
881 
882  /** Trigger matches. */
884 
885  /** The device supports setting its sample interval, in ms. */
887 
888  /** Number of horizontal divisions, as related to SR_CONF_TIMEBASE. */
890 
891  /** Number of vertical divisions, as related to SR_CONF_VDIV. */
893 
894  /** Sound pressure level frequency weighting. */
896 
897  /** Sound pressure level time weighting. */
899 
900  /** Sound pressure level measurement range. */
902 
903  /** Max hold mode. */
905 
906  /** Min hold mode. */
908 
909  /** Logic low-high threshold range. */
911 
912  /** The device supports using an external clock. */
914 
915  /**
916  * The device supports swapping channels. Typical this is between
917  * buffered and unbuffered channels.
918  */
920 
921  /** Center frequency.
922  * The input signal is downmixed by this frequency before the ADC
923  * anti-aliasing filter.
924  */
926 
927  /** The device supports setting the number of logic channels. */
929 
930  /** The device supports setting the number of analog channels. */
932 
933  /**
934  * Current voltage.
935  * @arg type: double
936  * @arg get: get measured voltage
937  */
939 
940  /**
941  * Maximum target voltage.
942  * @arg type: double
943  * @arg get: get target voltage
944  * @arg set: change target voltage
945  */
947 
948  /**
949  * Current current.
950  * @arg type: double
951  * @arg get: get measured current
952  */
954 
955  /**
956  * Current limit.
957  * @arg type: double
958  * @arg get: get current limit
959  * @arg set: change current limit
960  */
962 
963  /**
964  * Enabling/disabling channel.
965  * @arg type: boolean
966  * @arg get: @b true if currently enabled
967  * @arg set: enable/disable
968  */
970 
971  /**
972  * Channel configuration.
973  * @arg type: string
974  * @arg get: get current setting
975  * @arg set: change current setting
976  * @arg list: array of possible values
977  */
979 
980  /**
981  * Over-voltage protection (OVP) feature
982  * @arg type: boolean
983  * @arg get: @b true if currently enabled
984  * @arg set: enable/disable
985  */
987 
988  /**
989  * Over-voltage protection (OVP) active
990  * @arg type: boolean
991  * @arg get: @b true if device has activated OVP, i.e. the output voltage
992  * exceeds the over-voltage protection threshold.
993  */
995 
996  /**
997  * Over-voltage protection (OVP) threshold
998  * @arg type: double (voltage)
999  * @arg get: get current threshold
1000  * @arg set: set new threshold
1001  */
1003 
1004  /**
1005  * Over-current protection (OCP) feature
1006  * @arg type: boolean
1007  * @arg get: @b true if currently enabled
1008  * @arg set: enable/disable
1009  */
1011 
1012  /**
1013  * Over-current protection (OCP) active
1014  * @arg type: boolean
1015  * @arg get: @b true if device has activated OCP, i.e. the current current
1016  * exceeds the over-current protection threshold.
1017  */
1019 
1020  /**
1021  * Over-current protection (OCP) threshold
1022  * @arg type: double (current)
1023  * @arg get: get current threshold
1024  * @arg set: set new threshold
1025  */
1027 
1028  /** Choice of clock edge for external clock ("r" or "f"). */
1030 
1031  /** Amplitude of a source without strictly-defined MQ. */
1033 
1034  /**
1035  * Channel regulation
1036  * get: "CV", "CC" or "UR", denoting constant voltage, constant current
1037  * or unregulated.
1038  * "CC-" denotes a power supply in current sink mode (e.g. HP 66xxB).
1039  * "" is used when there is no regulation, e.g. the output is disabled.
1040  */
1042 
1043  /** Over-temperature protection (OTP) */
1045 
1046  /** Output frequency in Hz. */
1048 
1049  /** Output frequency target in Hz. */
1051 
1052  /** Measured quantity. */
1054 
1055  /** Equivalent circuit model. */
1057 
1058  /** Over-temperature protection (OTP) active. */
1060 
1061  /** Under-voltage condition. */
1063 
1064  /** Under-voltage condition active. */
1066 
1067  /** Trigger level. */
1069 
1070  /** Under-voltage condition threshold. */
1072 
1073  /**
1074  * Which external clock source to use if the device supports
1075  * multiple external clock channels.
1076  */
1078 
1079  /** Offset of a source without strictly-defined MQ. */
1081 
1082  /** The device supports setting a pattern for the logic trigger. */
1084 
1085  /** High resolution mode. */
1087 
1088  /** Peak detection. */
1090 
1091  /** Logic threshold: predefined levels (TTL, ECL, CMOS, etc). */
1093 
1094  /** Logic threshold: custom numerical value. */
1096 
1097  /** The measurement range of a DMM or the output range of a power supply. */
1099 
1100  /** The number of digits (e.g. for a DMM). */
1102 
1103  /** Phase of a source signal. */
1105 
1106  /** Duty cycle of a source signal. */
1108 
1109  /**
1110  * Current power.
1111  * @arg type: double
1112  * @arg get: get measured power
1113  */
1115 
1116  /**
1117  * Power target.
1118  * @arg type: double
1119  * @arg get: get power target
1120  * @arg set: change power target
1121  */
1123 
1124  /**
1125  * Resistance target.
1126  * @arg type: double
1127  * @arg get: get resistance target
1128  * @arg set: change resistance target
1129  */
1131 
1132  /**
1133  * Over-current protection (OCP) delay
1134  * @arg type: double (time)
1135  * @arg get: get current delay
1136  * @arg set: set new delay
1137  */
1139 
1140  /* Update sr_key_info_config[] (hwdriver.c) upon changes! */
1141 
1142  /*--- Special stuff -------------------------------------------------*/
1143 
1144  /** Session filename. */
1146 
1147  /** The device supports specifying a capturefile to inject. */
1149 
1150  /** The device supports specifying the capturefile unit size. */
1152 
1153  /** Power off the device. */
1155 
1156  /**
1157  * Data source for acquisition. If not present, acquisition from
1158  * the device is always "live", i.e. acquisition starts when the
1159  * frontend asks and the results are sent out as soon as possible.
1160  *
1161  * If present, it indicates that either the device has no live
1162  * acquisition capability (for example a pure data logger), or
1163  * there is a choice. sr_config_list() returns those choices.
1164  *
1165  * In any case if a device has live acquisition capabilities, it
1166  * is always the default.
1167  */
1169 
1170  /** The device supports setting a probe factor. */
1172 
1173  /** Number of powerline cycles for ADC integration time. */
1175 
1176  /* Update sr_key_info_config[] (hwdriver.c) upon changes! */
1177 
1178  /*--- Acquisition modes, sample limiting ----------------------------*/
1179 
1180  /**
1181  * The device supports setting a sample time limit (how long
1182  * the sample acquisition should run, in ms).
1183  */
1185 
1186  /**
1187  * The device supports setting a sample number limit (how many
1188  * samples should be acquired).
1189  */
1191 
1192  /**
1193  * The device supports setting a frame limit (how many
1194  * frames should be acquired).
1195  */
1197 
1198  /**
1199  * The device supports continuous sampling. Neither a time limit
1200  * nor a sample number limit has to be supplied, it will just acquire
1201  * samples continuously, until explicitly stopped by a certain command.
1202  */
1204 
1205  /** The device has internal storage, into which data is logged. This
1206  * starts or stops the internal logging. */
1208 
1209  /** Device mode for multi-function devices. */
1211 
1212  /** Self test mode. */
1214 
1215  /* Update sr_key_info_config[] (hwdriver.c) upon changes! */
1216 };
1217 
1218 /**
1219  * Opaque structure representing a libsigrok device instance.
1220  *
1221  * None of the fields of this structure are meant to be accessed directly.
1222  */
1223 struct sr_dev_inst;
1224 
1225 /** Types of device instance, struct sr_dev_inst.type */
1227  /** Device instance type for USB devices. */
1228  SR_INST_USB = 10000,
1229  /** Device instance type for serial port devices. */
1231  /** Device instance type for SCPI devices. */
1233  /** Device-instance type for user-created "devices". */
1235  /** Device instance type for Modbus devices. */
1237 };
1238 
1239 /** Device instance status, struct sr_dev_inst.status */
1241  /** The device instance was not found. */
1243  /** The device instance was found, but is still booting. */
1245  /** The device instance is live, but not in use. */
1247  /** The device instance is actively in use in a session. */
1249  /** The device is winding down its session. */
1251 };
1252 
1253 /** Device driver data. See also http://sigrok.org/wiki/Hardware_driver_API . */
1255  /* Driver-specific */
1256  /** Driver name. Lowercase a-z, 0-9 and dashes (-) only. */
1257  const char *name;
1258  /** Long name. Verbose driver name shown to user. */
1259  const char *longname;
1260  /** API version (currently 1). */
1262  /** Called when driver is loaded, e.g. program startup. */
1263  int (*init) (struct sr_dev_driver *driver, struct sr_context *sr_ctx);
1264  /** Called before driver is unloaded.
1265  * Driver must free all resources held by it. */
1266  int (*cleanup) (const struct sr_dev_driver *driver);
1267  /** Scan for devices. Driver should do all initialisation required.
1268  * Can be called several times, e.g. with different port options.
1269  * @retval NULL Error or no devices found.
1270  * @retval other GSList of a struct sr_dev_inst for each device.
1271  * Must be freed by caller!
1272  */
1273  GSList *(*scan) (struct sr_dev_driver *driver, GSList *options);
1274  /** Get list of device instances the driver knows about.
1275  * @returns NULL or GSList of a struct sr_dev_inst for each device.
1276  * Must not be freed by caller!
1277  */
1278  GSList *(*dev_list) (const struct sr_dev_driver *driver);
1279  /** Clear list of devices the driver knows about. */
1280  int (*dev_clear) (const struct sr_dev_driver *driver);
1281  /** Query value of a configuration key in driver or given device instance.
1282  * @see sr_config_get().
1283  */
1284  int (*config_get) (uint32_t key, GVariant **data,
1285  const struct sr_dev_inst *sdi,
1286  const struct sr_channel_group *cg);
1287  /** Set value of a configuration key in driver or a given device instance.
1288  * @see sr_config_set(). */
1289  int (*config_set) (uint32_t key, GVariant *data,
1290  const struct sr_dev_inst *sdi,
1291  const struct sr_channel_group *cg);
1292  /** Channel status change.
1293  * @see sr_dev_channel_enable(). */
1294  int (*config_channel_set) (const struct sr_dev_inst *sdi,
1295  struct sr_channel *ch, unsigned int changes);
1296  /** Apply configuration settings to the device hardware.
1297  * @see sr_config_commit().*/
1298  int (*config_commit) (const struct sr_dev_inst *sdi);
1299  /** List all possible values for a configuration key in a device instance.
1300  * @see sr_config_list().
1301  */
1302  int (*config_list) (uint32_t key, GVariant **data,
1303  const struct sr_dev_inst *sdi,
1304  const struct sr_channel_group *cg);
1305 
1306  /* Device-specific */
1307  /** Open device */
1308  int (*dev_open) (struct sr_dev_inst *sdi);
1309  /** Close device */
1310  int (*dev_close) (struct sr_dev_inst *sdi);
1311  /** Begin data acquisition on the specified device. */
1312  int (*dev_acquisition_start) (const struct sr_dev_inst *sdi);
1313  /** End data acquisition on the specified device. */
1314  int (*dev_acquisition_stop) (struct sr_dev_inst *sdi);
1315 
1316  /* Dynamic */
1317  /** Device driver context, considered private. Initialized by init(). */
1318  void *context;
1319 };
1320 
1321 /** Serial port descriptor. */
1323  /** The OS dependent name of the serial port. */
1324  char *name;
1325  /** An end user friendly description for the serial port. */
1327 };
1328 
1329 #include <libsigrok/proto.h>
1330 #include <libsigrok/version.h>
1331 
1332 #ifdef __cplusplus
1333 }
1334 #endif
1335 
1336 #endif
The device can measure humidity.
Definition: libsigrok.h:726
Serial port descriptor.
Definition: libsigrok.h:1322
Sound pressure level, in decibels, relative to 20 micropascals.
Definition: libsigrok.h:292
Pressure in hectopascal.
Definition: libsigrok.h:310
sr_configkey
Configuration keys.
Definition: libsigrok.h:704
Device is in "min" mode, only updating upon a new min value.
Definition: libsigrok.h:367
Mass in tola.
Definition: libsigrok.h:336
Output error messages.
Definition: libsigrok.h:103
Device is in "max" mode, only updating upon a new max value.
Definition: libsigrok.h:365
Current limit.
Definition: libsigrok.h:961
struct sr_analog_encoding * encoding
Definition: libsigrok.h:521
GSList * channels
Definition: libsigrok.h:559
Specification on how to connect to a device.
Definition: libsigrok.h:772
Percent value.
Definition: libsigrok.h:271
The device supports continuous sampling.
Definition: libsigrok.h:1203
Data is invalid.
Definition: libsigrok.h:77
Current voltage.
Definition: libsigrok.h:938
Output frequency in Hz.
Definition: libsigrok.h:1047
Information on single channel.
Definition: libsigrok.h:639
Value can be written.
Definition: libsigrok.h:698
GSList * stages
List of pointers to struct sr_trigger_stage.
Definition: libsigrok.h:430
Ampere (current).
Definition: libsigrok.h:257
No error.
Definition: libsigrok.h:67
int8_t digits
Number of significant digits after the decimal point, if positive.
Definition: libsigrok.h:549
The device can act as a signal demodulator.
Definition: libsigrok.h:732
typedef int
Definition: lzoconf.h:282
const char * name
Driver name.
Definition: libsigrok.h:1257
A channel to match and what to match it on.
Definition: libsigrok.h:442
The device supports setting a pattern for the logic trigger.
Definition: libsigrok.h:1083
Certainly valid.
Definition: libsigrok.h:86
uint32_t key
Config key like SR_CONF_CONN, etc.
Definition: libsigrok.h:668
struct sr_channel * channel
The channel to trigger on.
Definition: libsigrok.h:444
Mass in pound [lb].
Definition: libsigrok.h:326
Header of a sigrok data feed.
Definition: libsigrok.h:500
Wind speed.
Definition: libsigrok.h:211
The device supports setting a sample time limit (how long the sample acquisition should run...
Definition: libsigrok.h:1184
Sound pressure level is time-averaged (LAT), also known as Equivalent Continuous A-weighted Sound Lev...
Definition: libsigrok.h:392
Over-voltage protection (OVP) active.
Definition: libsigrok.h:994
const void * payload
Definition: libsigrok.h:496
Possible values can be enumerated.
Definition: libsigrok.h:700
Certainly invalid.
Definition: libsigrok.h:85
sr_mqflag
Values for sr_analog_meaning.mqflags.
Definition: libsigrok.h:353
Time base.
Definition: libsigrok.h:871
Apparent power.
Definition: libsigrok.h:239
Version number definitions and macros.
Over-voltage protection (OVP) threshold.
Definition: libsigrok.h:1002
GSList * channels
List of sr_channel structs of the channels belonging to this group.
Definition: libsigrok.h:660
const char * longname
Long name.
Definition: libsigrok.h:1259
Value can be read.
Definition: libsigrok.h:696
Volt.
Definition: libsigrok.h:255
Resistance target.
Definition: libsigrok.h:1130
Ohm (resistance).
Definition: libsigrok.h:259
sr_keytype
Definition: libsigrok.h:673
const char * description
Verbose description (unused currently).
Definition: libsigrok.h:690
GSList * matches
List of pointers to struct sr_trigger_match.
Definition: libsigrok.h:438
Real power [W].
Definition: libsigrok.h:304
Payload is struct sr_datafeed_meta.
Definition: libsigrok.h:168
char * description
An end user friendly description for the serial port.
Definition: libsigrok.h:1326
Device is in relative mode.
Definition: libsigrok.h:371
Time.
Definition: libsigrok.h:209
The device can act as a sound level meter.
Definition: libsigrok.h:720
Mass in grain [gr].
Definition: libsigrok.h:330
GVariant * def
Definition: libsigrok.h:593
Output no messages at all.
Definition: libsigrok.h:102
int type
Channel type (SR_CHANNEL_LOGIC, ...)
Definition: libsigrok.h:646
Sound pressure level represented as a percentage of measurements that were over a preset alarm level...
Definition: libsigrok.h:395
Resource descriptor.
Definition: libsigrok.h:608
The device supports setting a frame limit (how many frames should be acquired).
Definition: libsigrok.h:1196
Parallel resistance (LCR meter model).
Definition: libsigrok.h:219
Payload is sr_datafeed_header.
Definition: libsigrok.h:164
The measurement range of a DMM or the output range of a power supply.
Definition: libsigrok.h:1098
Duty cycle of a source signal.
Definition: libsigrok.h:1107
Generic option struct used by various subsystems.
Definition: libsigrok.h:585
Output very noisy debug messages.
Definition: libsigrok.h:107
sr_valid_code
Ternary return type for DMM/LCR/etc packet parser validity checks.
Definition: libsigrok.h:84
Boolean value.
Definition: libsigrok.h:273
The device instance was found, but is still booting.
Definition: libsigrok.h:1244
const char * id
Short, lowercase ID string, e.g.
Definition: libsigrok.h:686
Over-current protection (OCP) feature.
Definition: libsigrok.h:1010
A timeout occurred.
Definition: libsigrok.h:75
Channel type is analog channel.
Definition: libsigrok.h:635
The device supports setting a pattern (pattern generator mode).
Definition: libsigrok.h:844
Device instance type for serial port devices.
Definition: libsigrok.h:1230
Under-voltage condition threshold.
Definition: libsigrok.h:1071
Phase angle.
Definition: libsigrok.h:231
Voltage in decibel, referenced to 1 volt (dBV).
Definition: libsigrok.h:284
sr_error_code
Status/error codes returned by libsigrok functions.
Definition: libsigrok.h:66
Session filename.
Definition: libsigrok.h:1145
sr_channeltype
Constants for channel type.
Definition: libsigrok.h:631
The device can act as a programmable power supply.
Definition: libsigrok.h:735
sr_resource_type
Resource type.
Definition: libsigrok.h:601
Logic low-high threshold range.
Definition: libsigrok.h:910
Mass in carat [ct].
Definition: libsigrok.h:320
End of frame.
Definition: libsigrok.h:176
Enabling/disabling channel.
Definition: libsigrok.h:969
int64_t p
Numerator of the rational number.
Definition: libsigrok.h:488
Packet in a sigrok data feed.
Definition: libsigrok.h:494
GVariant * data
Key-specific data.
Definition: libsigrok.h:670
GSList * config
Definition: libsigrok.h:507
struct sr_dev_inst * sdi
The device this channel is attached to.
Definition: libsigrok.h:641
Trigger level.
Definition: libsigrok.h:1068
Measurements that intrinsically do not have units attached, such as ratios, gains, etc.
Definition: libsigrok.h:290
uint32_t key
Config key like SR_CONF_CONN, MQ value like SR_MQ_VOLTAGE, etc.
Definition: libsigrok.h:682
Device is in "avg" mode, averaging upon each new value.
Definition: libsigrok.h:399
Device is in autoranging mode.
Definition: libsigrok.h:369
Under-voltage condition.
Definition: libsigrok.h:1062
const char * desc
Definition: libsigrok.h:591
Logic threshold: predefined levels (TTL, ECL, CMOS, etc).
Definition: libsigrok.h:1092
The device is winding down its session.
Definition: libsigrok.h:1250
The device can measure temperature.
Definition: libsigrok.h:723
The device can act as a function generator.
Definition: libsigrok.h:747
The device can act as an oscilloscope.
Definition: libsigrok.h:711
Need more RX data.
Definition: libsigrok.h:87
Power target.
Definition: libsigrok.h:1122
Mass in troy ounce [oz t].
Definition: libsigrok.h:324
The device instance is actively in use in a session.
Definition: libsigrok.h:1248
Output warnings.
Definition: libsigrok.h:104
sr_output_flag
Output module flags.
Definition: libsigrok.h:618
Mass in pennyweight [dwt].
Definition: libsigrok.h:328
Normalized (0 to 1) concentration of a substance or compound with 0 representing a concentration of 0...
Definition: libsigrok.h:298
Max hold mode.
Definition: libsigrok.h:904
Self test mode.
Definition: libsigrok.h:1213
gboolean is_float
Definition: libsigrok.h:529
Logarithmic representation of sound pressure relative to a reference value.
Definition: libsigrok.h:203
High resolution mode.
Definition: libsigrok.h:1086
Measurement is four wire (e.g.
Definition: libsigrok.h:405
Payload is struct sr_datafeed_logic.
Definition: libsigrok.h:172
The device supports specifying a capturefile to inject.
Definition: libsigrok.h:1148
sr_dev_inst_type
Types of device instance, struct sr_dev_inst.type.
Definition: libsigrok.h:1226
sr_unit
Unit of measured quantity, sr_analog_meaning.unit.
Definition: libsigrok.h:253
Input/output error.
Definition: libsigrok.h:78
The device instance is live, but not in use.
Definition: libsigrok.h:1246
Revolutions per minute.
Definition: libsigrok.h:300
Plane angle in 1/360th of a full circle.
Definition: libsigrok.h:314
Gain (a transistor&#39;s gain, or hFE, for example).
Definition: libsigrok.h:200
Parallel capacitance (LCR meter model).
Definition: libsigrok.h:217
Sound pressure level frequency weighting.
Definition: libsigrok.h:895
Duty cycle, e.g.
Definition: libsigrok.h:192
int index
The index of this channel, starting at 0.
Definition: libsigrok.h:644
The representation of a trigger, consisting of one or more stages containing one or more matches on a...
Definition: libsigrok.h:426
Incorrect samplerate.
Definition: libsigrok.h:72
Under-voltage condition active.
Definition: libsigrok.h:1065
Mass in ounce [oz].
Definition: libsigrok.h:322
Override builtin probe names from user specs.
Definition: libsigrok.h:831
The device instance was not found.
Definition: libsigrok.h:1242
Analog datafeed payload for type SR_DF_ANALOG.
Definition: libsigrok.h:518
Electric charge in coulomb.
Definition: libsigrok.h:342
Channel type is logic channel.
Definition: libsigrok.h:633
Sound pressure level is Z-weighted (i.e.
Definition: libsigrok.h:380
The device can act as an electronic load.
Definition: libsigrok.h:741
The device supports setting its samplerate, in Hz.
Definition: libsigrok.h:838
The device supports setting number of samples to be averaged over.
Definition: libsigrok.h:859
Over-current protection (OCP) active.
Definition: libsigrok.h:1018
Used for setting or getting value of a config item.
Definition: libsigrok.h:666
Generic/unspecified error.
Definition: libsigrok.h:68
Current current.
Definition: libsigrok.h:953
sr_mq
Measured quantity, sr_analog_meaning.mq.
Definition: libsigrok.h:184
Volts/div.
Definition: libsigrok.h:877
gboolean enabled
Is this channel enabled?
Definition: libsigrok.h:648
void * context
Device driver context, considered private.
Definition: libsigrok.h:1318
gboolean is_bigendian
Definition: libsigrok.h:530
Over-current protection (OCP) delay.
Definition: libsigrok.h:1138
struct sr_analog_meaning * meaning
Definition: libsigrok.h:522
An absolute measurement of power, in decibels, referenced to 1 milliwatt (dBm).
Definition: libsigrok.h:282
User specified forced driver attachment to unknown devices.
Definition: libsigrok.h:811
void * priv
Private data for driver use.
Definition: libsigrok.h:662
Pieces (number of items).
Definition: libsigrok.h:338
Maximum target voltage.
Definition: libsigrok.h:946
The device supports setting the number of logic channels.
Definition: libsigrok.h:928
Over-voltage protection (OVP) feature.
Definition: libsigrok.h:986
Datafeed payload for type SR_DF_META.
Definition: libsigrok.h:506
int stage
Starts at 0.
Definition: libsigrok.h:436
Over-temperature protection (OTP)
Definition: libsigrok.h:1044
Difference from reference value.
Definition: libsigrok.h:233
gboolean is_digits_decimal
Definition: libsigrok.h:550
Over-temperature protection (OTP) active.
Definition: libsigrok.h:1059
Reference value shown.
Definition: libsigrok.h:401
Sound pressure level is not weighted in the frequency domain, albeit without standards-defined low an...
Definition: libsigrok.h:383
Value is voltage drop across a diode, or NAN.
Definition: libsigrok.h:361
Serial communication specification, in the form:
Definition: libsigrok.h:793
int(* dev_clear)(const struct sr_dev_driver *driver)
Clear list of devices the driver knows about.
Definition: libsigrok.h:1280
Device mode for multi-function devices.
Definition: libsigrok.h:1210
Header file containing API function prototypes.
Min hold mode.
Definition: libsigrok.h:907
The number of digits (e.g.
Definition: libsigrok.h:1101
Electrical power, usually in W, or dBm.
Definition: libsigrok.h:198
char * name
A name for this trigger.
Definition: libsigrok.h:428
Device instance type for SCPI devices.
Definition: libsigrok.h:1232
Unit of conductance, the inverse of resistance.
Definition: libsigrok.h:277
If set, this output module writes the output itself.
Definition: libsigrok.h:620
Information about a key.
Definition: libsigrok.h:680
Apparent power [VA].
Definition: libsigrok.h:302
int8_t spec_digits
Number of significant digits after the decimal point, if positive.
Definition: libsigrok.h:581
Series capacitance (LCR meter model).
Definition: libsigrok.h:223
The device can act as a multimeter.
Definition: libsigrok.h:714
sr_packettype
Value for sr_datafeed_packet.type.
Definition: libsigrok.h:162
const char * name
Definition: libsigrok.h:589
struct sr_analog_spec * spec
Definition: libsigrok.h:523
Errors hinting at internal bugs.
Definition: libsigrok.h:71
Beginning of frame.
Definition: libsigrok.h:174
Time in seconds.
Definition: libsigrok.h:275
Channel regulation get: "CV", "CC" or "UR", denoting constant voltage, constant current or unregulate...
Definition: libsigrok.h:1041
Number of vertical divisions, as related to SR_CONF_VDIV.
Definition: libsigrok.h:892
uint16_t unitsize
Definition: libsigrok.h:513
Series inductance (LCR meter model).
Definition: libsigrok.h:221
Measured quantity.
Definition: libsigrok.h:1053
The device supports specifying the capturefile unit size.
Definition: libsigrok.h:1151
int api_version
API version (currently 1).
Definition: libsigrok.h:1261
The device supports using an external clock.
Definition: libsigrok.h:913
The device can act as logic analyzer.
Definition: libsigrok.h:708
Voltage measurement is alternating current (AC).
Definition: libsigrok.h:355
Sound pressure level measurement is S-weighted (1s) in the time domain.
Definition: libsigrok.h:386
Payload is struct sr_datafeed_analog.
Definition: libsigrok.h:178
Henry (inductance).
Definition: libsigrok.h:316
Trigger matches.
Definition: libsigrok.h:883
Horizontal trigger position.
Definition: libsigrok.h:865
sr_datatype
Data types used by sr_config_info().
Definition: libsigrok.h:144
Number of horizontal divisions, as related to SR_CONF_TIMEBASE.
Definition: libsigrok.h:889
Opaque structure representing a libsigrok session.
Definition: libsigrok.h:474
Electric charge in ampere hour [Ah].
Definition: libsigrok.h:344
gboolean is_signed
Definition: libsigrok.h:528
Trigger source.
Definition: libsigrok.h:862
The device can measure power.
Definition: libsigrok.h:750
Mass in gram [g].
Definition: libsigrok.h:318
Power factor.
Definition: libsigrok.h:237
Opaque structure representing a libsigrok context.
uint64_t q
Denominator of the rational number.
Definition: libsigrok.h:490
Current power.
Definition: libsigrok.h:1114
const char * name
Full capitalized name, e.g.
Definition: libsigrok.h:688
float value
If the trigger match is one of SR_TRIGGER_OVER or SR_TRIGGER_UNDER, this contains the value to compar...
Definition: libsigrok.h:463
Malloc/calloc/realloc error.
Definition: libsigrok.h:69
char * name
The OS dependent name of the serial port.
Definition: libsigrok.h:1324
Dissipation factor.
Definition: libsigrok.h:227
Structure for groups of channels that have common properties.
Definition: libsigrok.h:656
Unstable value (hasn&#39;t settled yet).
Definition: libsigrok.h:403
Data source for acquisition.
Definition: libsigrok.h:1168
Device is in "hold" mode (repeating the last measurement).
Definition: libsigrok.h:363
Function argument error.
Definition: libsigrok.h:70
A channel group must be specified.
Definition: libsigrok.h:76
Output frequency target in Hz.
Definition: libsigrok.h:1050
Sound pressure level is C-weighted in the frequency domain, according to IEC 61672:2003.
Definition: libsigrok.h:377
Device instance type for USB devices.
Definition: libsigrok.h:1228
Count.
Definition: libsigrok.h:235
Modbus slave address specification.
Definition: libsigrok.h:801
Offset of a source without strictly-defined MQ.
Definition: libsigrok.h:1080
Time is duration (as opposed to epoch, ...).
Definition: libsigrok.h:397
Voltage measurement is direct current (DC).
Definition: libsigrok.h:357
int match
The trigger match to use.
Definition: libsigrok.h:460
char * name
Name of the channel group.
Definition: libsigrok.h:658
Peak detection.
Definition: libsigrok.h:1089
int(* config_get)(uint32_t key, GVariant **data, const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
Query value of a configuration key in driver or given device instance.
Definition: libsigrok.h:1284
The device has internal storage, into which data is logged.
Definition: libsigrok.h:1207
GSList * values
Definition: libsigrok.h:595
Parallel inductance (LCR meter model).
Definition: libsigrok.h:215
Sound pressure level is A-weighted in the frequency domain, according to IEC 61672:2003.
Definition: libsigrok.h:374
Sound pressure level time weighting.
Definition: libsigrok.h:898
The device is a demo device.
Definition: libsigrok.h:717
The device supports setting trigger slope.
Definition: libsigrok.h:850
The device supports setting a sample number limit (how many samples should be acquired).
Definition: libsigrok.h:1190
The device can act as an LCR meter.
Definition: libsigrok.h:738
Energy.
Definition: libsigrok.h:245
Harmonic ratio.
Definition: libsigrok.h:243
uint64_t length
Definition: libsigrok.h:512
The device supports run-length encoding (RLE).
Definition: libsigrok.h:847
Mass in tael (variants: Hong Kong, Singapore/Malaysia, Taiwan)
Definition: libsigrok.h:332
sr_loglevel
libsigrok loglevels.
Definition: libsigrok.h:101
End of stream (no further data).
Definition: libsigrok.h:166
Electric charge.
Definition: libsigrok.h:247
Energy (consumption) in watt hour [Wh].
Definition: libsigrok.h:306
Which external clock source to use if the device supports multiple external clock channels...
Definition: libsigrok.h:1077
This is a true RMS measurement.
Definition: libsigrok.h:359
void * priv
Private data for driver use.
Definition: libsigrok.h:652
Sound pressure level measurement range.
Definition: libsigrok.h:901
Channel configuration.
Definition: libsigrok.h:978
sr_trigger_matches
Definition: libsigrok.h:413
The device supports setting a pre/post-trigger capture ratio.
Definition: libsigrok.h:841
sr_configcap
Configuration capabilities.
Definition: libsigrok.h:694
Hertz (frequency, 1/s, [Hz]).
Definition: libsigrok.h:269
Equivalent circuit model.
Definition: libsigrok.h:1056
Sound pressure level measurement is F-weighted (125ms) in the time domain.
Definition: libsigrok.h:389
Power off the device.
Definition: libsigrok.h:1154
Not applicable.
Definition: libsigrok.h:73
Wind speed in meters per second.
Definition: libsigrok.h:308
The trigger matched at this point in the data feed.
Definition: libsigrok.h:170
Output debug messages.
Definition: libsigrok.h:106
Carbon monoxide level.
Definition: libsigrok.h:205
A trigger stage.
Definition: libsigrok.h:434
Device is closed, but must be open.
Definition: libsigrok.h:74
Over-current protection (OCP) threshold.
Definition: libsigrok.h:1026
const char * id
Definition: libsigrok.h:587
The device supports setting a probe factor.
Definition: libsigrok.h:1171
Amplitude of a source without strictly-defined MQ.
Definition: libsigrok.h:1032
Kelvin (temperature).
Definition: libsigrok.h:263
Logic datafeed payload for type SR_DF_LOGIC.
Definition: libsigrok.h:511
int(* sr_receive_data_callback)(int fd, int revents, void *cb_data)
Type definition for callback function for data reception.
Definition: libsigrok.h:141
Phase of a source signal.
Definition: libsigrok.h:1104
Mass.
Definition: libsigrok.h:241
The device can act as a scale.
Definition: libsigrok.h:744
The device supports averaging.
Definition: libsigrok.h:853
Continuity test.
Definition: libsigrok.h:194
Farad (capacity).
Definition: libsigrok.h:261
Degrees Celsius (temperature).
Definition: libsigrok.h:265
Energy in joule.
Definition: libsigrok.h:340
Output informational messages.
Definition: libsigrok.h:105
The device can switch between multiple sources, e.g.
Definition: libsigrok.h:756
Relative humidity assuming air temperature of 293 Kelvin (rF).
Definition: libsigrok.h:312
Buffer size.
Definition: libsigrok.h:868
void * handle
File handle or equivalent; set by resource open callback.
Definition: libsigrok.h:612
The device can measure energy consumption.
Definition: libsigrok.h:729
Choice of clock edge for external clock ("r" or "f").
Definition: libsigrok.h:1029
The device supports setting its sample interval, in ms.
Definition: libsigrok.h:886
Center frequency.
Definition: libsigrok.h:925
uint32_t num_samples
Definition: libsigrok.h:520
Number of powerline cycles for ADC integration time.
Definition: libsigrok.h:1174
Device-instance type for user-created "devices".
Definition: libsigrok.h:1234
Logic threshold: custom numerical value.
Definition: libsigrok.h:1095
The device supports swapping channels.
Definition: libsigrok.h:919
Coupling.
Definition: libsigrok.h:880
sr_dev_inst_status
Device instance status, struct sr_dev_inst.status.
Definition: libsigrok.h:1240
uint64_t size
Size of resource in bytes; set by resource open callback.
Definition: libsigrok.h:610
Mass in momme.
Definition: libsigrok.h:334
Quality factor.
Definition: libsigrok.h:229
int datatype
Data type like SR_T_STRING, etc if applicable.
Definition: libsigrok.h:684
The device supports setting the number of analog channels.
Definition: libsigrok.h:931
Filter.
Definition: libsigrok.h:874
Device driver data.
Definition: libsigrok.h:1254
Pressure.
Definition: libsigrok.h:213
Degrees Fahrenheit (temperature).
Definition: libsigrok.h:267
Series resistance (LCR meter model).
Definition: libsigrok.h:225
int type
Resource type (SR_RESOURCE_FIRMWARE, ...)
Definition: libsigrok.h:614
Device instance type for Modbus devices.
Definition: libsigrok.h:1236
char * name
Name of channel.
Definition: libsigrok.h:650