/** 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. */
SR_ERR_DEV_CLOSED = -7, /**< Device is closed, but must be open. */
SR_ERR_TIMEOUT = -8, /**< A timeout occurred. */
SR_ERR_CHANNEL_GROUP = -9, /**< A channel group must be specified. */
+ SR_ERR_DATA =-10, /**< Data is invalid. */
/*
* Note: When adding entries here, don't forget to also update the
GSList *values;
};
-/** Input module metadata keys. */
-enum sr_input_meta_keys {
- /** The input filename, if there is one. */
- SR_INPUT_META_FILENAME = 0x01,
- /** The input file's size in bytes. */
- SR_INPUT_META_FILESIZE = 0x02,
- /** The first 128 bytes of the file, provided as a GString. */
- SR_INPUT_META_HEADER = 0x04,
- /** The file's MIME type. */
- SR_INPUT_META_MIMETYPE = 0x08,
-
- /** The module cannot identify a file without this metadata. */
- SR_INPUT_META_REQUIRED = 0x80,
-};
-
struct sr_input;
struct sr_input_module;
struct sr_output;
gboolean enabled;
/** Name of channel. */
char *name;
+ /** Private data for driver use. */
+ void *priv;
};
/** Structure for groups of channels that have common properties. */
/** Used for setting or getting value of a config item. */
struct sr_config {
/** Config key like SR_CONF_CONN, etc. */
- int key;
+ uint32_t key;
/** Key-specific data. */
GVariant *data;
};
/** Information about a config key. */
struct sr_config_info {
/** Config key like SR_CONF_CONN, etc. */
- int key;
+ uint32_t key;
/** Data type like SR_T_STRING, etc. */
int datatype;
/** Id string, e.g. "serialcomm". */
char *description;
};
+#define SR_CONF_GET (1 << 31)
+#define SR_CONF_SET (1 << 30)
+#define SR_CONF_LIST (1 << 29)
+#define SR_CONF_MASK 0x1fffffff
+
/** Constants for device classes */
enum sr_configkey {
/*--- Device classes ------------------------------------------------*/
/** The device supports setting the number of analog channels. */
SR_CONF_NUM_ANALOG_CHANNELS,
- /** Output voltage. */
+ /**
+ * Output voltage.
+ * @arg type: double
+ * @arg get: get output voltage
+ */
SR_CONF_OUTPUT_VOLTAGE,
- /** Maximum output voltage. */
+ /**
+ * Maximum output voltage.
+ * @arg type: double
+ * @arg get: get maximum output voltage limit
+ * @arg set: change output voltage limit
+ */
SR_CONF_OUTPUT_VOLTAGE_MAX,
- /** Output current. */
+ /**
+ * Output current.
+ * @arg type: double
+ * @arg get: get output current
+ */
SR_CONF_OUTPUT_CURRENT,
- /** Maximum output current. */
+ /**
+ * Maximum output current.
+ * @arg type: double
+ * @arg get: get maximum output voltage limit
+ * @arg set: change output voltage limit
+ */
SR_CONF_OUTPUT_CURRENT_MAX,
- /** Enabling/disabling output. */
+ /**
+ * Enabling/disabling output.
+ * @arg type: boolean
+ * @arg get: @b true if currently enabled
+ * @arg set: enable/disable
+ */
SR_CONF_OUTPUT_ENABLED,
- /** Channel output configuration. */
- SR_CONF_OUTPUT_CHANNEL,
+ /**
+ * Output channel configuration.
+ * @arg type: string
+ * @arg get: get current setting
+ * @arg set: change current setting
+ * @arg list: array of possible values
+ */
+ SR_CONF_OUTPUT_CHANNEL_CONFIG,
- /** Over-voltage protection (OVP) */
- SR_CONF_OVER_VOLTAGE_PROTECTION,
+ /**
+ * Over-voltage protection (OVP) feature
+ * @arg type: boolean
+ * @arg get: @b true if currently enabled
+ * @arg set: enable/disable
+ */
+ SR_CONF_OVER_VOLTAGE_PROTECTION_ENABLED,
- /** Over-current protection (OCP) */
- SR_CONF_OVER_CURRENT_PROTECTION,
+ /**
+ * Over-voltage protection (OVP) active
+ * @arg type: boolean
+ * @arg get: @b true if device has activated OVP, i.e. the output voltage
+ * exceeds the over-voltage protection threshold.
+ */
+ SR_CONF_OVER_VOLTAGE_PROTECTION_ACTIVE,
+
+ /**
+ * Over-voltage protection (OVP) threshold
+ * @arg type: double (voltage)
+ * @arg get: get current threshold
+ * @arg set: set new threshold
+ */
+ SR_CONF_OVER_VOLTAGE_PROTECTION_THRESHOLD,
+
+ /**
+ * Over-current protection (OCP) feature
+ * @arg type: boolean
+ * @arg get: @b true if currently enabled
+ * @arg set: enable/disable
+ */
+ SR_CONF_OVER_CURRENT_PROTECTION_ENABLED,
+
+ /**
+ * Over-current protection (OCP) active
+ * @arg type: boolean
+ * @arg get: @b true if device has activated OCP, i.e. the output current
+ * exceeds the over-current protection threshold.
+ */
+ SR_CONF_OVER_CURRENT_PROTECTION_ACTIVE,
+
+ /**
+ * Over-current protection (OCP) threshold
+ * @arg type: double (current)
+ * @arg get: get current threshold
+ * @arg set: set new threshold
+ */
+ SR_CONF_OVER_CURRENT_PROTECTION_THRESHOLD,
/** Choice of clock edge for external clock ("r" or "f"). */
SR_CONF_CLOCK_EDGE,
/** Amplitude of a source without strictly-defined MQ. */
SR_CONF_AMPLITUDE,
+ /**
+ * Output channel regulation
+ * get: "CV", "CC" or "UR", denoting constant voltage, constant current
+ * or unregulated.
+ */
+ SR_CONF_OUTPUT_REGULATION,
+
+ /** Over-temperature protection (OTP) */
+ SR_CONF_OVER_TEMPERATURE_PROTECTION,
+
/*--- Special stuff -------------------------------------------------*/
/** Scan options supported by the driver. */
char *model;
/** Device version. */
char *version;
+ /** Serial number. */
+ char *serial_num;
+ /** Connection string to uniquely identify devices. */
+ char *connection_id;
/** List of channels. */
GSList *channels;
/** List of sr_channel_group structs */
/** Query value of a configuration key in driver or given device instance.
* @see sr_config_get().
*/
- int (*config_get) (int id, GVariant **data,
+ int (*config_get) (uint32_t key, GVariant **data,
const struct sr_dev_inst *sdi,
const struct sr_channel_group *cg);
/** Set value of a configuration key in driver or a given device instance.
* @see sr_config_set(). */
- int (*config_set) (int id, GVariant *data,
+ int (*config_set) (uint32_t key, GVariant *data,
const struct sr_dev_inst *sdi,
const struct sr_channel_group *cg);
/** Channel status change.
/** List all possible values for a configuration key in a device instance.
* @see sr_config_list().
*/
- int (*config_list) (int info_id, GVariant **data,
+ int (*config_list) (uint32_t key, GVariant **data,
const struct sr_dev_inst *sdi,
const struct sr_channel_group *cg);