]> sigrok.org Git - libsigrok.git/blobdiff - include/libsigrok/libsigrok.h
sr_rational: Make numerator signed.
[libsigrok.git] / include / libsigrok / libsigrok.h
index 0e35957f05ee76a95868136e92ed6069c101f2db..cf8f9b20ed6dda7042c17dfa2cf7d24044e22fee 100644 (file)
@@ -64,7 +64,6 @@ extern "C" {
 
 /** Status/error codes returned by libsigrok functions. */
 enum sr_error_code {
-       SR_OK_CONTINUE       =  1, /**< Keep going. */
        SR_OK                =  0, /**< No error. */
        SR_ERR               = -1, /**< Generic/unspecified error. */
        SR_ERR_MALLOC        = -2, /**< Malloc/calloc/realloc error. */
@@ -78,10 +77,7 @@ enum sr_error_code {
        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
-        * sr_strerror() and sr_strerror_name() functions in error.c.
-        */
+       /* Update sr_strerror()/sr_strerror_name() (error.c) upon changes! */
 };
 
 #define SR_MAX_CHANNELNAME_LEN 32
@@ -149,6 +145,9 @@ enum sr_datatype {
        SR_T_UINT64_RANGE,
        SR_T_DOUBLE_RANGE,
        SR_T_INT32,
+       SR_T_MQ,
+
+       /* Update sr_variant_type_get() (hwdriver.c) upon changes! */
 };
 
 /** Value for sr_datafeed_packet.type. */
@@ -171,6 +170,8 @@ enum sr_packettype {
        SR_DF_FRAME_END,
        /** Payload is struct sr_datafeed_analog2. */
        SR_DF_ANALOG2,
+
+       /* Update datafeed_dump() (session.c) upon changes! */
 };
 
 /** Measured quantity, sr_datafeed_analog.mq. */
@@ -230,6 +231,10 @@ enum sr_mq {
        SR_MQ_POWER_FACTOR,
        /** Apparent power */
        SR_MQ_APPARENT_POWER,
+       /** Mass */
+       SR_MQ_MASS,
+
+       /* Update sr_key_info_mq[] (hwdriver.c) upon changes! */
 };
 
 /** Unit of measured quantity, sr_datafeed_analog.unit. */
@@ -297,6 +302,33 @@ 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,
+
+       /*
+        * Update unit_strings[] (analog.c) and fancyprint() (output/analog.c)
+        * upon changes!
+        */
 };
 
 /** Values for sr_datafeed_analog.flags. */
@@ -349,6 +381,13 @@ enum sr_mqflag {
        SR_MQFLAG_AVG = 0x40000,
        /** Reference value shown. */
        SR_MQFLAG_REFERENCE = 0x80000,
+       /** Unstable value (hasn't settled yet). */
+       SR_MQFLAG_UNSTABLE = 0x100000,
+
+       /*
+        * Update mq_strings[] (analog.c) and fancyprint() (output/analog.c)
+        * upon changes!
+        */
 };
 
 enum sr_trigger_matches {
@@ -426,7 +465,7 @@ struct sr_session;
 
 struct sr_rational {
        /** Numerator of the rational number. */
-       uint64_t p;
+       int64_t p;
        /** Denominator of the rational number. */
        uint64_t q;
 };
@@ -574,15 +613,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;
@@ -633,6 +678,11 @@ enum sr_configkey {
        /** The device can act as an electronic load. */
        SR_CONF_ELECTRONIC_LOAD,
 
+       /** The device can act as a scale. */
+       SR_CONF_SCALE,
+
+       /* Update sr_key_info_config[] (hwdriver.c) upon changes! */
+
        /*--- Driver scan options -------------------------------------------*/
 
        /**
@@ -676,6 +726,8 @@ enum sr_configkey {
         */
        SR_CONF_MODBUSADDR,
 
+       /* Update sr_key_info_config[] (hwdriver.c) upon changes! */
+
        /*--- Device (or channel group) configuration -----------------------*/
 
        /** The device supports setting its samplerate, in Hz. */
@@ -888,21 +940,20 @@ enum sr_configkey {
        /** Output frequency in Hz. */
        SR_CONF_OUTPUT_FREQUENCY,
 
+       /** Output frequency target in Hz. */
+       SR_CONF_OUTPUT_FREQUENCY_TARGET,
+
        /** Measured quantity. */
        SR_CONF_MEASURED_QUANTITY,
 
-       /** Measured secondary quantity. */
-       SR_CONF_MEASURED_2ND_QUANTITY,
-
        /** 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,
 
+       /* Update sr_key_info_config[] (hwdriver.c) upon changes! */
+
        /*--- Special stuff -------------------------------------------------*/
 
        /** Scan options supported by the driver. */
@@ -940,6 +991,8 @@ enum sr_configkey {
        /** The device supports setting a probe factor. */
        SR_CONF_PROBE_FACTOR,
 
+       /* Update sr_key_info_config[] (hwdriver.c) upon changes! */
+
        /*--- Acquisition modes, sample limiting ----------------------------*/
 
        /**
@@ -976,6 +1029,8 @@ enum sr_configkey {
 
        /** Self test mode. */
        SR_CONF_TEST_MODE,
+
+       /* Update sr_key_info_config[] (hwdriver.c) upon changes! */
 };
 
 /**