X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=include%2Flibsigrok%2Flibsigrok.h;h=7b4ca15bbe1410abdd06267819a539a5c8d9315c;hb=4ee1e2f35feb6b78640e6c8bd64b84cfd0675fd8;hp=65e9da80a2db24757fc99697d41ab2f75a8d1f86;hpb=9ed444e6226c5d36b637708864361429f77f07a8;p=libsigrok.git diff --git a/include/libsigrok/libsigrok.h b/include/libsigrok/libsigrok.h index 65e9da80..7b4ca15b 100644 --- a/include/libsigrok/libsigrok.h +++ b/include/libsigrok/libsigrok.h @@ -76,6 +76,7 @@ enum sr_error_code { SR_ERR_TIMEOUT = -8, /**< A timeout occurred. */ SR_ERR_CHANNEL_GROUP = -9, /**< A channel group must be specified. */ SR_ERR_DATA =-10, /**< Data is invalid. */ + SR_ERR_IO =-11, /**< Input/output error. */ /* * Note: When adding entries here, don't forget to also update the @@ -223,6 +224,12 @@ enum sr_mq { SR_MQ_PHASE_ANGLE, /** Difference from reference value. */ SR_MQ_DIFFERENCE, + /** Count. */ + SR_MQ_COUNT, + /** Power factor. */ + SR_MQ_POWER_FACTOR, + /** Apparent power */ + SR_MQ_APPARENT_POWER, }; /** Unit of measured quantity, sr_datafeed_analog.unit. */ @@ -284,7 +291,7 @@ enum sr_unit { SR_UNIT_METER_SECOND, /** Pressure in hectopascal */ SR_UNIT_HECTOPASCAL, - /** Relative humidity assuming air temperature of 293 kelvin (%rF). */ + /** Relative humidity assuming air temperature of 293 Kelvin (%rF). */ SR_UNIT_HUMIDITY_293K, /** Plane angle in 1/360th of a full circle. */ SR_UNIT_DEGREE, @@ -515,6 +522,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 { @@ -526,6 +535,8 @@ enum sr_channeltype { /** Information on single channel. */ struct sr_channel { + /** The device this channel is attached to. */ + struct sr_dev_inst *sdi; /** The index of this channel, starting at 0. Logic channels will * be encoded according to this index in SR_DF_LOGIC packets. */ int index; @@ -701,8 +712,8 @@ enum sr_configkey { /** The device supports setting its sample interval, in ms. */ SR_CONF_SAMPLE_INTERVAL, - /** Number of timebases, as related to SR_CONF_TIMEBASE. */ - SR_CONF_NUM_TIMEBASE, + /** Number of horizontal divisions, as related to SR_CONF_TIMEBASE. */ + SR_CONF_NUM_HDIV, /** Number of vertical divisions, as related to SR_CONF_VDIV. */ SR_CONF_NUM_VDIV, @@ -903,6 +914,9 @@ enum sr_configkey { */ SR_CONF_DATA_SOURCE, + /** The device supports setting a probe factor. */ + SR_CONF_PROBE_FACTOR, + /*--- Acquisition modes, sample limiting ----------------------------*/ /** @@ -984,24 +998,24 @@ struct sr_dev_driver { /** API version (currently 1). */ int api_version; /** Called when driver is loaded, e.g. program startup. */ - int (*init) (struct sr_context *sr_ctx); + int (*init) (struct sr_dev_driver *driver, struct sr_context *sr_ctx); /** Called before driver is unloaded. * Driver must free all resources held by it. */ - int (*cleanup) (void); + int (*cleanup) (const struct sr_dev_driver *driver); /** Scan for devices. Driver should do all initialisation required. * Can be called several times, e.g. with different port options. * \retval NULL Error or no devices found. * \retval other GSList of a struct sr_dev_inst for each device. * Must be freed by caller! */ - GSList *(*scan) (GSList *options); + GSList *(*scan) (struct sr_dev_driver *driver, GSList *options); /** Get list of device instances the driver knows about. * \returns NULL or GSList of a struct sr_dev_inst for each device. * Must not be freed by caller! */ - GSList *(*dev_list) (void); + GSList *(*dev_list) (const struct sr_dev_driver *driver); /** Clear list of devices the driver knows about. */ - int (*dev_clear) (void); + int (*dev_clear) (const struct sr_dev_driver *driver); /** Query value of a configuration key in driver or given device instance. * @see sr_config_get(). */