]> sigrok.org Git - libsigrok.git/blobdiff - include/libsigrok/libsigrok.h
Add a few scale related flags.
[libsigrok.git] / include / libsigrok / libsigrok.h
index bc754f67fb5977938a7abb45e1b817e3e3cb6acc..140a8597f61e527424c5f165548597f07d4d4a40 100644 (file)
@@ -149,6 +149,7 @@ enum sr_datatype {
        SR_T_UINT64_RANGE,
        SR_T_DOUBLE_RANGE,
        SR_T_INT32,
+       SR_T_MQLIST,
 };
 
 /** Value for sr_datafeed_packet.type. */
@@ -230,6 +231,8 @@ enum sr_mq {
        SR_MQ_POWER_FACTOR,
        /** Apparent power */
        SR_MQ_APPARENT_POWER,
+       /** Mass */
+       SR_MQ_MASS,
 };
 
 /** Unit of measured quantity, sr_datafeed_analog.unit. */
@@ -297,6 +300,28 @@ enum sr_unit {
        SR_UNIT_DEGREE,
        /** Henry (inductance). */
        SR_UNIT_HENRY,
+       /** Mass in gram [g]. */
+       SR_UNIT_GRAM,
+       /** Mass in carat [ct]. */
+       SR_UNIT_CARAT,
+       /** Mass in ounce [oz]. */
+       SR_UNIT_OUNCE,
+       /** Mass in troy ounce [oz t]. */
+       SR_UNIT_TROY_OUNCE,
+       /** Mass in pound [lb]. */
+       SR_UNIT_POUND,
+       /** Mass in pennyweight [dwt]. */
+       SR_UNIT_PENNYWEIGHT,
+       /** Mass in grain [gr]. */
+       SR_UNIT_GRAIN,
+       /** Mass in tael (variants: Hong Kong, Singapore/Malaysia, Taiwan) */
+       SR_UNIT_TAEL,
+       /** Mass in momme. */
+       SR_UNIT_MOMME,
+       /** Mass in tola. */
+       SR_UNIT_TOLA,
+       /** Pieces (number of items). */
+       SR_UNIT_PIECE,
 };
 
 /** Values for sr_datafeed_analog.flags. */
@@ -349,6 +374,8 @@ enum sr_mqflag {
        SR_MQFLAG_AVG = 0x40000,
        /** Reference value shown. */
        SR_MQFLAG_REFERENCE = 0x80000,
+       /** Unstable value (hasn't settled yet). */
+       SR_MQFLAG_UNSTABLE = 0x100000,
 };
 
 enum sr_trigger_matches {
@@ -518,6 +545,12 @@ struct sr_option {
        GSList *values;
 };
 
+/** Output module flags. */
+enum sr_output_flag {
+       /** If set, this output module writes the output itself. */
+       SR_OUTPUT_INTERNAL_IO_HANDLING = 0x01,
+};
+
 struct sr_input;
 struct sr_input_module;
 struct sr_output;
@@ -568,15 +601,21 @@ struct sr_config {
        GVariant *data;
 };
 
-/** Information about a config key. */
-struct sr_config_info {
-       /** Config key like SR_CONF_CONN, etc. */
+enum sr_keytype {
+       SR_KEY_CONFIG,
+       SR_KEY_MQ,
+       SR_KEY_MQFLAGS,
+};
+
+/** Information about a key. */
+struct sr_key_info {
+       /** Config key like SR_CONF_CONN, MQ value like SR_MQ_VOLTAGE, etc. */
        uint32_t key;
-       /** Data type like SR_T_STRING, etc. */
+       /** Data type like SR_T_STRING, etc if applicable. */
        int datatype;
-       /** Id string, e.g. "serialcomm". */
+       /** Short, lowercase ID string, e.g. "serialcomm", "voltage". */
        char *id;
-       /** Name, e.g. "Serial communication". */
+       /** Full capitalized name, e.g. "Serial communication". */
        char *name;
        /** Verbose description (unused currently). */
        char *description;
@@ -624,6 +663,12 @@ enum sr_configkey {
        /** The device can act as an LCR meter. */
        SR_CONF_LCRMETER,
 
+       /** The device can act as an electronic load. */
+       SR_CONF_ELECTRONIC_LOAD,
+
+       /** The device can act as a scale. */
+       SR_CONF_SCALE,
+
        /*--- Driver scan options -------------------------------------------*/
 
        /**
@@ -659,6 +704,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. */
@@ -883,6 +936,9 @@ enum sr_configkey {
        /* 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. */
@@ -975,6 +1031,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 */
@@ -1007,13 +1065,13 @@ struct sr_dev_driver {
        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.
+        *  @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) (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.
+        *  @returns NULL or GSList of a struct sr_dev_inst for each device.
         *           Must not be freed by caller!
         */
        GSList *(*dev_list) (const struct sr_dev_driver *driver);
@@ -1057,8 +1115,8 @@ struct sr_dev_driver {
                        void *cb_data);
 
        /* Dynamic */
-       /** Device driver private data. Initialized by init(). */
-       void *priv;
+       /** Device driver context, considered private. Initialized by init(). */
+       void *context;
 };
 
 /**
@@ -1077,8 +1135,8 @@ struct sr_serial_port {
        char *description;
 };
 
-#include "proto.h"
-#include "version.h"
+#include <libsigrok/proto.h>
+#include <libsigrok/version.h>
 
 #ifdef __cplusplus
 }