static const struct korad_kaxxxxp_model models[] = {
/* Device enum, vendor, model, ID reply, channels, voltage, current */
static const struct korad_kaxxxxp_model models[] = {
/* Device enum, vendor, model, ID reply, channels, voltage, current */
- {VELLEMAN_LABPS_3005D, "Velleman", "LABPS3005D",
+ {VELLEMAN_PS3005D, "Velleman", "PS3005D",
+ "VELLEMANPS3005DV2.0", 1, {0, 31, 0.01}, {0, 5, 0.001}},
+ {VELLEMAN_LABPS3005D, "Velleman", "LABPS3005D",
"VELLEMANLABPS3005DV2.0", 1, {0, 31, 0.01}, {0, 5, 0.001}},
{KORAD_KA3005P, "Korad", "KA3005P",
"KORADKA3005PV2.0", 1, {0, 31, 0.01}, {0, 5, 0.001}},
"VELLEMANLABPS3005DV2.0", 1, {0, 31, 0.01}, {0, 5, 0.001}},
{KORAD_KA3005P, "Korad", "KA3005P",
"KORADKA3005PV2.0", 1, {0, 31, 0.01}, {0, 5, 0.001}},
+ /* Sometimes the KA3005P has an extra 0x01 after the ID. */
+ {KORAD_KA3005P_0X01, "Korad", "KA3005P",
+ "KORADKA3005PV2.0\x01", 1, {0, 31, 0.01}, {0, 5, 0.001}},
-SR_PRIV struct sr_dev_driver korad_kaxxxxp_driver_info;
-
-static int init(struct sr_dev_driver *di, struct sr_context *sr_ctx)
-{
- return std_init(sr_ctx, di, LOG_PREFIX);
-}
-
- sr_dbg("Found: %s %s", models[model_id].vendor, models[model_id].name);
+ sr_dbg("Found: %s %s (idx %d, ID '%s').", models[model_id].vendor,
+ models[model_id].name, model_id, models[model_id].id);
/* Init device instance, etc. */
sdi = g_malloc0(sizeof(struct sr_dev_inst));
/* Init device instance, etc. */
sdi = g_malloc0(sizeof(struct sr_dev_inst));
sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "CH1");
devc = g_malloc0(sizeof(struct dev_context));
sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "CH1");
devc = g_malloc0(sizeof(struct dev_context));
/* Get current status of device. */
if (korad_kaxxxxp_get_all_values(serial, devc) < 0)
goto exit_err;
/* Get current status of device. */
if (korad_kaxxxxp_get_all_values(serial, devc) < 0)
goto exit_err;
-static GSList *dev_list(const struct sr_dev_driver *di)
-{
- return ((struct drv_context *)(di->context))->instances;
-}
-
-static int dev_clear(const struct sr_dev_driver *di)
-{
- return std_dev_clear(di, NULL);
-}
-
-static int cleanup(const struct sr_dev_driver *di)
-{
- dev_clear(di);
- return SR_OK;
-}
-
static int config_get(uint32_t key, GVariant **data,
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
{
static int config_get(uint32_t key, GVariant **data,
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
{
- case SR_CONF_LIMIT_SAMPLES:
- *data = g_variant_new_uint64(devc->limit_samples);
- break;
- case SR_CONF_LIMIT_MSEC:
- *data = g_variant_new_uint64(devc->limit_msec);
- break;
+ return sr_sw_limits_config_get(&devc->limits, key, data);
case SR_CONF_VOLTAGE_TARGET:
dval = g_variant_get_double(data);
if (dval < devc->model->voltage[0] || dval > devc->model->voltage[1])
case SR_CONF_VOLTAGE_TARGET:
dval = g_variant_get_double(data);
if (dval < devc->model->voltage[0] || dval > devc->model->voltage[1])
static int config_list(uint32_t key, GVariant **data,
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
{
static int config_list(uint32_t key, GVariant **data,
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
{
- /* Send header packet to the session bus. */
- std_session_send_df_header(cb_data, LOG_PREFIX);
+ sr_sw_limits_acquisition_start(&devc->limits);
+ std_session_send_df_header(sdi);
- return std_serial_dev_acquisition_stop(sdi, cb_data,
- std_serial_dev_close, sdi->conn, LOG_PREFIX);
+ return std_serial_dev_acquisition_stop(sdi,
+ std_serial_dev_close);
.config_get = config_get,
.config_set = config_set,
.config_list = config_list,
.config_get = config_get,
.config_set = config_set,
.config_list = config_list,