"Serial communication", NULL},
{SR_CONF_MODBUSADDR, SR_T_UINT64, "modbusaddr",
"Modbus slave address", NULL},
+ {SR_CONF_FORCE_DETECT, SR_T_STRING, "force_detect",
+ "Forced detection", NULL},
/* Device (or channel group) configuration */
{SR_CONF_SAMPLERATE, SR_T_UINT64, "samplerate",
"Under-voltage condition", NULL},
{SR_CONF_UNDER_VOLTAGE_CONDITION_ACTIVE, SR_T_BOOL, "uvc_active",
"Under-voltage condition active", NULL},
+ {SR_CONF_UNDER_VOLTAGE_CONDITION_THRESHOLD, SR_T_FLOAT, "uvc_threshold",
+ "Under-voltage condition threshold", NULL},
{SR_CONF_TRIGGER_LEVEL, SR_T_FLOAT, "triggerlevel",
"Trigger level", NULL},
+ {SR_CONF_EXTERNAL_CLOCK_SOURCE, SR_T_STRING, "external_clock_source",
+ "External clock source", NULL},
+ {SR_CONF_OFFSET, SR_T_FLOAT, "offset",
+ "Offset", NULL},
+ {SR_CONF_TRIGGER_PATTERN, SR_T_STRING, "triggerpattern",
+ "Trigger pattern", NULL},
+ {SR_CONF_HIGH_RESOLUTION, SR_T_BOOL, "highresolution",
+ "High resolution", NULL},
+ {SR_CONF_PEAK_DETECTION, SR_T_BOOL, "peakdetection",
+ "Peak detection", NULL},
+ {SR_CONF_LOGIC_THRESHOLD, SR_T_STRING, "logic_threshold",
+ "Logic threshold (predefined)", NULL},
+ {SR_CONF_LOGIC_THRESHOLD_CUSTOM, SR_T_FLOAT, "logic_threshold_custom",
+ "Logic threshold (custom)", NULL},
+ {SR_CONF_RANGE, SR_T_STRING, "range",
+ "Range", NULL},
+ {SR_CONF_DIGITS, SR_T_STRING, "digits",
+ "Digits", NULL},
+ {SR_CONF_PHASE, SR_T_FLOAT, "phase",
+ "Phase", NULL},
+ {SR_CONF_DUTY_CYCLE, SR_T_FLOAT, "output_duty_cycle",
+ "Duty Cycle", NULL},
+ {SR_CONF_POWER, SR_T_FLOAT, "power",
+ "Power", NULL},
+ {SR_CONF_POWER_TARGET, SR_T_FLOAT, "power_target",
+ "Power Target", NULL},
+ {SR_CONF_RESISTANCE_TARGET, SR_T_FLOAT, "resistance_target",
+ "Resistance Target", NULL},
/* Special stuff */
{SR_CONF_SESSIONFILE, SR_T_STRING, "sessionfile",
{SR_MQ_APPARENT_POWER, 0, "apparent_power", "Apparent power", NULL},
{SR_MQ_MASS, 0, "mass", "Mass", NULL},
{SR_MQ_HARMONIC_RATIO, 0, "harmonic_ratio", "Harmonic ratio", NULL},
+ {SR_MQ_ENERGY, 0, "energy", "Energy", NULL},
+ {SR_MQ_ELECTRIC_CHARGE, 0, "electric_charge", "Electric charge", NULL},
ALL_ZERO
};
*
* A floating reference can be passed in for data.
*
+ * @param key The config key to use.
+ * @param data The GVariant data to use.
+ *
+ * @return The newly allocated struct sr_config. This function is assumed
+ * to never fail.
+ *
* @private
*/
SR_PRIV struct sr_config *sr_config_new(uint32_t key, GVariant *data)
}
static void log_key(const struct sr_dev_inst *sdi,
- const struct sr_channel_group *cg, uint32_t key, int op, GVariant *data)
+ const struct sr_channel_group *cg, uint32_t key, unsigned int op,
+ GVariant *data)
{
const char *opstr;
const struct sr_key_info *srci;
static int check_key(const struct sr_dev_driver *driver,
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg,
- uint32_t key, int op, GVariant *data)
+ uint32_t key, unsigned int op, GVariant *data)
{
const struct sr_key_info *srci;
gsize num_opts, i;
const char *opstr;
if (sdi && cg)
- suffix = " for this device and channel group";
+ suffix = " for this device instance and channel group";
else if (sdi)
- suffix = " for this device";
+ suffix = " for this device instance";
else
suffix = "";
return SR_ERR_ARG;
}
break;
+ case SR_CONF_CAPTURE_RATIO:
+ /* Capture ratio must always be between 0 and 100. */
+ if (op != SR_CONF_SET || !data)
+ break;
+ if (g_variant_get_uint64(data) > 100) {
+ sr_err("Capture ratio must be 0..100.");
+ return SR_ERR_ARG;
+ }
+ break;
}
if (sr_config_list(driver, sdi, cg, SR_CONF_DEVICE_OPTIONS, &gvar_opts) != SR_OK) {
g_variant_ref_sink(*data);
}
+ if (ret == SR_ERR_CHANNEL_GROUP)
+ sr_err("%s: No channel group specified.",
+ (sdi) ? sdi->driver->name : "unknown");
+
return ret;
}
g_variant_unref(data);
+ if (ret == SR_ERR_CHANNEL_GROUP)
+ sr_err("%s: No channel group specified.",
+ (sdi) ? sdi->driver->name : "unknown");
+
return ret;
}
* @param[in] cg The channel group on the device instance for which to list
* the values, or NULL. If this device instance doesn't
* have channel groups, this must not be != NULL.
+ * If cg is NULL, this function will return the "common" device
+ * instance options that are channel-group independent. Otherwise
+ * it will return the channel-group specific options.
* @param[in] key The configuration key (SR_CONF_*).
* @param[in,out] data A pointer to a GVariant where the list will be stored.
* The caller is given ownership of the GVariant and must thus