]> sigrok.org Git - libsigrok.git/blobdiff - include/libsigrok/libsigrok.h
libsigrok.h: add new type of device: ELECTRONIC_LOAD.
[libsigrok.git] / include / libsigrok / libsigrok.h
index 1483b08e4448c384a95b1a2ad61e460c323eca94..42cdcaa5da49ccaad10671b0750044bbe2867e3d 100644 (file)
@@ -226,6 +226,10 @@ enum sr_mq {
        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. */
@@ -287,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,
@@ -531,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;
@@ -618,6 +624,9 @@ enum sr_configkey {
        /** The device can act as an LCR meter. */
        SR_CONF_LCRMETER,
 
+       /** The device can act as an LCR meter. */
+       SR_CONF_ELECTRONIC_LOAD,
+
        /*--- Driver scan options -------------------------------------------*/
 
        /**
@@ -653,6 +662,14 @@ enum sr_configkey {
         */
        SR_CONF_SERIALCOMM,
 
+       /**
+        * Modbus slave address specification.
+        *
+        * This is always an optional parameter, since a driver typically
+        * knows the default slave address of the device.
+        */
+       SR_CONF_MODBUSADDR,
+
        /*--- Device (or channel group) configuration -----------------------*/
 
        /** The device supports setting its samplerate, in Hz. */
@@ -706,8 +723,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,
@@ -752,51 +769,51 @@ enum sr_configkey {
        SR_CONF_NUM_ANALOG_CHANNELS,
 
        /**
-        * Output voltage.
+        * Current voltage.
         * @arg type: double
-        * @arg get: get measured output voltage
+        * @arg get: get measured voltage
         */
-       SR_CONF_OUTPUT_VOLTAGE,
+       SR_CONF_VOLTAGE,
 
        /**
-        * Maximum output voltage target.
+        * Maximum target voltage.
         * @arg type: double
-        * @arg get: get output voltage target
-        * @arg set: change output voltage target
+        * @arg get: get target voltage
+        * @arg set: change target voltage
         */
-       SR_CONF_OUTPUT_VOLTAGE_TARGET,
+       SR_CONF_VOLTAGE_TARGET,
 
        /**
-        * Output current.
+        * Current current.
         * @arg type: double
-        * @arg get: get measured output current
+        * @arg get: get measured current
         */
-       SR_CONF_OUTPUT_CURRENT,
+       SR_CONF_CURRENT,
 
        /**
-        * Output current limit.
+        * Current limit.
         * @arg type: double
-        * @arg get: get output current limit
-        * @arg set: change output current limit
+        * @arg get: get current limit
+        * @arg set: change current limit
         */
-       SR_CONF_OUTPUT_CURRENT_LIMIT,
+       SR_CONF_CURRENT_LIMIT,
 
        /**
-        * Enabling/disabling output.
+        * Enabling/disabling channel.
         * @arg type: boolean
         * @arg get: @b true if currently enabled
         * @arg set: enable/disable
         */
-       SR_CONF_OUTPUT_ENABLED,
+       SR_CONF_ENABLED,
 
        /**
-        * Output channel configuration.
+        * Channel configuration.
         * @arg type: string
         * @arg get: get current setting
         * @arg set: change current setting
         * @arg list: array of possible values
         */
-       SR_CONF_OUTPUT_CHANNEL_CONFIG,
+       SR_CONF_CHANNEL_CONFIG,
 
        /**
         * Over-voltage protection (OVP) feature
@@ -833,7 +850,7 @@ enum sr_configkey {
        /**
         * Over-current protection (OCP) active
         * @arg type: boolean
-        * @arg get: @b true if device has activated OCP, i.e. the output current
+        * @arg get: @b true if device has activated OCP, i.e. the current current
         *      exceeds the over-current protection threshold.
         */
        SR_CONF_OVER_CURRENT_PROTECTION_ACTIVE,
@@ -853,11 +870,11 @@ enum sr_configkey {
        SR_CONF_AMPLITUDE,
 
        /**
-        * Output channel regulation
+        * Channel regulation
         * get: "CV", "CC" or "UR", denoting constant voltage, constant current
         *      or unregulated.
         */
-       SR_CONF_OUTPUT_REGULATION,
+       SR_CONF_REGULATION,
 
        /** Over-temperature protection (OTP) */
        SR_CONF_OVER_TEMPERATURE_PROTECTION,
@@ -874,6 +891,12 @@ enum sr_configkey {
        /** Equivalent circuit model. */
        SR_CONF_EQUIV_CIRCUIT_MODEL,
 
+       /* Output frequency target in Hz. */
+       SR_CONF_OUTPUT_FREQUENCY_TARGET,
+
+       /** Over-temperature protection (OTP) active. */
+       SR_CONF_OVER_TEMPERATURE_PROTECTION_ACTIVE,
+
        /*--- Special stuff -------------------------------------------------*/
 
        /** Scan options supported by the driver. */
@@ -966,6 +989,8 @@ enum sr_dev_inst_type {
        SR_INST_SCPI,
        /** Device-instance type for user-created "devices". */
        SR_INST_USER,
+       /** Device instance type for modbus devices. */
+       SR_INST_MODBUS,
 };
 
 /** Device instance status, struct sr_dev_inst.status */
@@ -992,24 +1017,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().
         */