X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=libsigrok.h;h=dd776c35146ee4e62dc45b71673d7d778ff04b2d;hb=ac136b574ac289efffe4273fd7f1e29c70e19208;hp=0b6888d93c663376a9242a8de38dd99c2c82de04;hpb=ace218f9223c39a3eb6738e36f4b89fae5142673;p=libsigrok.git diff --git a/libsigrok.h b/libsigrok.h index 0b6888d9..dd776c35 100644 --- a/libsigrok.h +++ b/libsigrok.h @@ -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. */ @@ -686,8 +738,8 @@ enum sr_configkey { /** Coupling. */ SR_CONF_COUPLING, - /** Trigger types. */ - SR_CONF_TRIGGER_TYPE, + /** Trigger matches. */ + SR_CONF_TRIGGER_MATCH, /** The device supports setting its sample interval, in ms. */ SR_CONF_SAMPLE_INTERVAL, @@ -927,7 +979,7 @@ struct sr_dev_driver { const struct sr_dev_inst *sdi, const struct sr_channel_group *cg); /** Channel status change. - * @see sr_dev_channel_enable(), sr_dev_trigger_set(). */ + * @see sr_dev_channel_enable(). */ int (*config_channel_set) (const struct sr_dev_inst *sdi, struct sr_channel *ch, unsigned int changes); /** Apply configuration settings to the device hardware.