/* 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)
struct sr_analog_spec {
/**
- * Number of significant digits after the decimal point if positive,
+ * Number of significant digits after the decimal point if positive,
* or number of non-significant digits before the decimal point if
* negative (refers to vendor specifications/datasheet or actual
* device display).
/** 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 */
/** The device can act as a function generator. */
SR_CONF_SIGNAL_GENERATOR,
+ /** The device can measure power. */
+ SR_CONF_POWERMETER,
+
/* Update sr_key_info_config[] (hwdriver.c) upon changes! */
/*--- Driver scan options -------------------------------------------*/
*/
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 -----------------------*/
/** Coupling. */
SR_CONF_COUPLING,
- /** Trigger matches. */
+ /** Trigger matches. */
SR_CONF_TRIGGER_MATCH,
/** The device supports setting its sample interval, in ms. */
/** Number of horizontal divisions, as related to SR_CONF_TIMEBASE. */
SR_CONF_NUM_HDIV,
- /** Number of vertical divisions, as related to SR_CONF_VDIV. */
+ /** Number of vertical divisions, as related to SR_CONF_VDIV. */
SR_CONF_NUM_VDIV,
- /** Sound pressure level frequency weighting. */
+ /** Sound pressure level frequency weighting. */
SR_CONF_SPL_WEIGHT_FREQ,
- /** Sound pressure level time weighting. */
+ /** Sound pressure level time weighting. */
SR_CONF_SPL_WEIGHT_TIME,
- /** Sound pressure level measurement range. */
+ /** Sound pressure level measurement range. */
SR_CONF_SPL_MEASUREMENT_RANGE,
/** Max hold mode. */
* 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 -------------------------------------------------*/