X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=libsigrok.h;h=ade8277151c4e1711f4a66d7e184ea0474bad0d0;hb=7b5e6d2978b9fe7afa952b7fa9f8837c87e8ed26;hp=4a81b96d371b1ce265da25b133894b84556a78ae;hpb=768579456c7800e462a404c2c28af1e306989fd8;p=libsigrok.git diff --git a/libsigrok.h b/libsigrok.h index 4a81b96d..ade82771 100644 --- a/libsigrok.h +++ b/libsigrok.h @@ -41,9 +41,9 @@ extern "C" { * * The correct way to get/use the libsigrok API functions is: * - @code{.c} - #include - @endcode + * @code{.c} + * #include + * @endcode */ /* @@ -137,7 +137,7 @@ typedef int (*sr_receive_data_callback)(int fd, int revents, void *cb_data); /** Data types used by sr_config_info(). */ enum sr_datatype { SR_T_UINT64 = 10000, - SR_T_CHAR, + SR_T_STRING, SR_T_BOOL, SR_T_FLOAT, SR_T_RATIONAL_PERIOD, @@ -236,7 +236,7 @@ enum sr_unit { * a unitless quantity, for example. */ SR_UNIT_UNITLESS, - /** Sound pressure level relative so 20 micropascals. */ + /** Sound pressure level, in decibels, relative to 20 micropascals. */ SR_UNIT_DECIBEL_SPL, /** * Normalized (0 to 1) concentration of a substance or compound with 0 @@ -304,6 +304,59 @@ enum sr_mqflag { SR_MQFLAG_AVG = 0x40000, }; +enum sr_trigger_matches { + SR_TRIGGER_ZERO = 1, + SR_TRIGGER_ONE, + SR_TRIGGER_RISING, + SR_TRIGGER_FALLING, + SR_TRIGGER_EDGE, + SR_TRIGGER_OVER, + SR_TRIGGER_UNDER, +}; + +/** The representation of a trigger, consisting of one or more stages + * containing one or more matches on a channel. + */ +struct sr_trigger { + /** A name for this trigger. This may be NULL if none is needed. */ + char *name; + /** List of pointers to struct sr_trigger_stage. */ + GSList *stages; +}; + +/** A trigger stage. */ +struct sr_trigger_stage { + /** Starts at 0. */ + int stage; + /** List of pointers to struct sr_trigger_match. */ + GSList *matches; +}; + +/** A channel to match and what to match it on. */ +struct sr_trigger_match { + /** The channel to trigger on. */ + struct sr_channel *channel; + /** The trigger match to use. + * For logic channels, only the following matches may be used: + * SR_TRIGGER_ZERO + * SR_TRIGGER_ONE + * SR_TRIGGER_RISING + * SR_TRIGGER_FALLING + * SR_TRIGGER_EDGE + * + * For analog channels, only these matches may be used: + * SR_TRIGGER_RISING + * SR_TRIGGER_FALLING + * SR_TRIGGER_OVER + * SR_TRIGGER_UNDER + * + */ + int match; + /** If the trigger match is one of SR_TRIGGER_OVER or SR_TRIGGER_UNDER, + * this contains the value to compare against. */ + float value; +}; + /** * @struct sr_context * Opaque structure representing a libsigrok context. @@ -535,7 +588,8 @@ enum sr_channeltype { /** Information on single channel. */ struct sr_channel { - /** Number of channels, starting at 0. */ + /** The index of this channel, starting at 0. Logic channels will + * be encoded according to this index in SR_DF_LOGIC packets. */ int index; /** Channel type (SR_CHANNEL_LOGIC, ...) */ int type; @@ -543,8 +597,6 @@ struct sr_channel { gboolean enabled; /** Name of channel. */ char *name; - /** Trigger string, format like used by sigrok-cli */ - char *trigger; }; /** Structure for groups of channels that have common properties. */ @@ -569,7 +621,7 @@ struct sr_config { struct sr_config_info { /** Config key like SR_CONF_CONN, etc. */ int key; - /** Data type like SR_T_CHAR, etc. */ + /** Data type like SR_T_STRING, etc. */ int datatype; /** Id string, e.g. "serialcomm". */ char *id;