#include <config.h>
#include "protocol.h"
-#define REQ_TIMEOUT_MS 500
#define DEVICE_PROCESSING_TIME_MS 80
SR_PRIV int korad_kaxxxxp_send_cmd(struct sr_serial_dev_inst *serial,
char reply[6];
float *value;
char status_byte;
+ gboolean needs_ovp_quirk;
gboolean prev_status;
g_mutex_lock(&devc->rw_mutex);
break;
default:
sr_err("Don't know how to query %d.", target);
+ ret = SR_ERR;
+ }
+ if (ret < 0) {
g_mutex_unlock(&devc->rw_mutex);
- return SR_ERR;
+ return ret;
}
devc->req_sent_at = g_get_monotonic_time();
return ret;
}
- reply[count] = 0;
-
if (value) {
sr_atof_ascii((const char *)&reply, value);
sr_dbg("value: %f", *value);
devc->output_enabled_changed = devc->output_enabled != prev_status;
/* OVP enabled, special handling for Velleman LABPS3005 quirk. */
- if ((devc->model->model_id == VELLEMAN_LABPS3005D && devc->output_enabled) ||
- devc->model->model_id != VELLEMAN_LABPS3005D) {
-
+ needs_ovp_quirk = devc->model->quirks & KORAD_QUIRK_LABPS_OVP_EN;
+ if (!needs_ovp_quirk || devc->output_enabled) {
prev_status = devc->ovp_enabled;
devc->ovp_enabled = status_byte & (1 << 7);
devc->ovp_enabled_changed = devc->ovp_enabled != prev_status;