/* Update sr_strerror()/sr_strerror_name() (error.c) upon changes! */
};
+/** Ternary return type for DMM/LCR/etc packet parser validity checks. */
+enum sr_valid_code {
+ SR_PACKET_INVALID = -1, /**< Certainly invalid. */
+ SR_PACKET_VALID = 0, /**< Certainly valid. */
+ SR_PACKET_NEED_RX = +1, /**< Need more RX data. */
+};
+
#define SR_MAX_CHANNELNAME_LEN 32
/* Handy little macros */
#define SR_HZ(n) (n)
-#define SR_KHZ(n) ((n) * (uint64_t)(1000ULL))
-#define SR_MHZ(n) ((n) * (uint64_t)(1000000ULL))
-#define SR_GHZ(n) ((n) * (uint64_t)(1000000000ULL))
+#define SR_KHZ(n) ((n) * UINT64_C(1000))
+#define SR_MHZ(n) ((n) * UINT64_C(1000000))
+#define SR_GHZ(n) ((n) * UINT64_C(1000000000))
-#define SR_HZ_TO_NS(n) ((uint64_t)(1000000000ULL) / (n))
+#define SR_HZ_TO_NS(n) (UINT64_C(1000000000) / (n))
/** libsigrok loglevels. */
enum sr_loglevel {
SR_MQ_MASS,
/** Harmonic ratio */
SR_MQ_HARMONIC_RATIO,
+ /** Energy. */
+ SR_MQ_ENERGY,
+ /** Electric charge. */
+ SR_MQ_ELECTRIC_CHARGE,
/* Update sr_key_info_mq[] (hwdriver.c) upon changes! */
};
SR_UNIT_VOLT_AMPERE,
/** Real power [W]. */
SR_UNIT_WATT,
- /** Consumption [Wh]. */
+ /** Energy (consumption) in watt hour [Wh]. */
SR_UNIT_WATT_HOUR,
/** Wind speed in meters per second. */
SR_UNIT_METER_SECOND,
SR_UNIT_TOLA,
/** Pieces (number of items). */
SR_UNIT_PIECE,
+ /** Energy in joule. */
+ SR_UNIT_JOULE,
+ /** Electric charge in coulomb. */
+ SR_UNIT_COULOMB,
+ /** Electric charge in ampere hour [Ah]. */
+ SR_UNIT_AMPERE_HOUR,
/*
* Update unit_strings[] (analog.c) and fancyprint() (output/analog.c)
/** Configuration capabilities. */
enum sr_configcap {
/** Value can be read. */
- SR_CONF_GET = (1 << 31),
+ SR_CONF_GET = (1UL << 31),
/** Value can be written. */
- SR_CONF_SET = (1 << 30),
+ SR_CONF_SET = (1UL << 30),
/** Possible values can be enumerated. */
- SR_CONF_LIST = (1 << 29),
+ SR_CONF_LIST = (1UL << 29),
};
/** Configuration keys */
*/
SR_CONF_MODBUSADDR,
+ /**
+ * User specified forced driver attachment to unknown devices.
+ *
+ * By design the interpretation of the string depends on the
+ * specific driver. It typically would be either a replacement
+ * '*IDN?' response value, or a sub-driver name. But could also
+ * be anything else and totally arbitrary.
+ */
+ SR_CONF_FORCE_DETECT,
+
/* Update sr_key_info_config[] (hwdriver.c) upon changes! */
/*--- Device (or channel group) configuration -----------------------*/
* Channel regulation
* get: "CV", "CC" or "UR", denoting constant voltage, constant current
* or unregulated.
+ * "CC-" denotes a power supply in current sink mode (e.g. HP 66xxB).
+ * "" is used when there is no regulation, e.g. the output is disabled.
*/
SR_CONF_REGULATION,
/** Trigger level. */
SR_CONF_TRIGGER_LEVEL,
+ /** Under-voltage condition threshold. */
+ SR_CONF_UNDER_VOLTAGE_CONDITION_THRESHOLD,
+
+ /**
+ * Which external clock source to use if the device supports
+ * multiple external clock channels.
+ */
+ SR_CONF_EXTERNAL_CLOCK_SOURCE,
+
+ /** Offset of a source without strictly-defined MQ. */
+ SR_CONF_OFFSET,
+
+ /** The device supports setting a pattern for the logic trigger. */
+ SR_CONF_TRIGGER_PATTERN,
+
+ /** High resolution mode. */
+ SR_CONF_HIGH_RESOLUTION,
+
+ /** Peak detection. */
+ SR_CONF_PEAK_DETECTION,
+
+ /** Logic threshold: predefined levels (TTL, ECL, CMOS, etc). */
+ SR_CONF_LOGIC_THRESHOLD,
+
+ /** Logic threshold: custom numerical value. */
+ SR_CONF_LOGIC_THRESHOLD_CUSTOM,
+
+ /** The measurement range of a DMM or the output range of a power supply. */
+ SR_CONF_RANGE,
+
+ /** The number of digits (e.g. for a DMM). */
+ SR_CONF_DIGITS,
+
+ /** Phase of a source signal. */
+ SR_CONF_PHASE,
+
+ /** Duty cycle of a source signal. */
+ SR_CONF_DUTY_CYCLE,
+
+ /**
+ * Current power.
+ * @arg type: double
+ * @arg get: get measured power
+ */
+ SR_CONF_POWER,
+
+ /**
+ * Power target.
+ * @arg type: double
+ * @arg get: get power target
+ * @arg set: change power target
+ */
+ SR_CONF_POWER_TARGET,
+
+ /**
+ * Resistance target.
+ * @arg type: double
+ * @arg get: get resistance target
+ * @arg set: change resistance target
+ */
+ SR_CONF_RESISTANCE_TARGET,
+
/* Update sr_key_info_config[] (hwdriver.c) upon changes! */
/*--- Special stuff -------------------------------------------------*/