#define VENDOR_MOTECH "Motech"
/** Driver scanning options. */
-static const int32_t hwopts[] = {
+static const uint32_t scanopts[] = {
SR_CONF_CONN,
SR_CONF_SERIALCOMM,
};
/** Hardware capabilities generic. */
-static const int32_t hwcaps[] = {
+static const uint32_t devopts[] = {
/* Device class */
SR_CONF_POWER_SUPPLY,
/* Aquisition modes. */
- SR_CONF_LIMIT_SAMPLES,
- SR_CONF_LIMIT_MSEC,
SR_CONF_CONTINUOUS,
+ SR_CONF_LIMIT_SAMPLES | SR_CONF_GET | SR_CONF_SET,
+ SR_CONF_LIMIT_MSEC | SR_CONF_GET | SR_CONF_SET,
/* Device configuration */
- SR_CONF_OUTPUT_CHANNEL,
+ SR_CONF_OUTPUT_CHANNEL_CONFIG | SR_CONF_GET | SR_CONF_SET | SR_CONF_LIST,
};
/** Hardware capabilities channel 1, 2. */
-static const int32_t hwcaps_ch12[] = {
- SR_CONF_OUTPUT_VOLTAGE,
- SR_CONF_OUTPUT_VOLTAGE_MAX,
- SR_CONF_OUTPUT_CURRENT,
- SR_CONF_OUTPUT_CURRENT_MAX,
- SR_CONF_OUTPUT_ENABLED,
+static const uint32_t devopts_ch12[] = {
+ SR_CONF_OUTPUT_VOLTAGE | SR_CONF_GET,
+ SR_CONF_OUTPUT_VOLTAGE_MAX | SR_CONF_GET | SR_CONF_SET | SR_CONF_LIST,
+ SR_CONF_OUTPUT_CURRENT | SR_CONF_GET,
+ SR_CONF_OUTPUT_CURRENT_MAX | SR_CONF_GET | SR_CONF_SET | SR_CONF_LIST,
+ SR_CONF_OUTPUT_ENABLED | SR_CONF_GET | SR_CONF_SET,
};
/** Hardware capabilities channel 3. (LPS-304/305 only). */
-static const int32_t hwcaps_ch3[] = {
- SR_CONF_OUTPUT_VOLTAGE,
- SR_CONF_OUTPUT_ENABLED,
+static const uint32_t devopts_ch3[] = {
+ SR_CONF_OUTPUT_VOLTAGE | SR_CONF_GET,
+ SR_CONF_OUTPUT_ENABLED | SR_CONF_GET | SR_CONF_SET,
};
static const char *channel_modes[] = {
sr_spew("lps_send_va: \"%s\"", buf);
- retc = serial_write_nonblocking(serial, buf, strlen(buf));
+ retc = serial_write_blocking(serial, buf, strlen(buf));
if (retc < 0)
return SR_ERR;
if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
return NULL;
- if (serial_open(serial, SERIAL_RDWR | SERIAL_NONBLOCK) != SR_OK)
+ if (serial_open(serial, SERIAL_RDWR) != SR_OK)
goto exit_err;
/* Query and verify model string. */
Therefore just print an error message, but do not exit with error. */
sr_err("Failed to query for hardware version: %d %s", errno, strerror(errno));
- sdi = sr_dev_inst_new(0, SR_ST_INACTIVE, VENDOR_MOTECH, models[modelid].modelstr, verstr);
+ sdi = sr_dev_inst_new(SR_ST_INACTIVE, VENDOR_MOTECH, models[modelid].modelstr, verstr);
sdi->driver = drv;
sdi->inst_type = SR_INST_SERIAL;
sdi->conn = serial;
return dev_clear_lps301();
}
-static int config_get(int key, GVariant **data, const struct sr_dev_inst *sdi,
+static int config_get(uint32_t key, GVariant **data, const struct sr_dev_inst *sdi,
const struct sr_channel_group *cg)
{
struct dev_context *devc;
case SR_CONF_LIMIT_MSEC:
*data = g_variant_new_uint64(devc->limit_msec);
break;
- case SR_CONF_OUTPUT_CHANNEL:
+ case SR_CONF_OUTPUT_CHANNEL_CONFIG:
*data = g_variant_new_string(channel_modes[devc->tracking_mode]);
break;
default:
return SR_OK;
}
-static int config_set(int key, GVariant *data, const struct sr_dev_inst *sdi,
+static int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sdi,
const struct sr_channel_group *cg)
{
struct dev_context *devc;
sr_dbg("Setting sample limit to %" PRIu64 ".",
devc->limit_samples);
break;
- case SR_CONF_OUTPUT_CHANNEL:
+ case SR_CONF_OUTPUT_CHANNEL_CONFIG:
sval = g_variant_get_string(data, NULL);
found = FALSE;
for (idx = 0; idx < (int)ARRAY_SIZE(channel_modes); idx++)
return SR_OK;
}
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *sdi,
const struct sr_channel_group *cg)
{
struct dev_context *devc;
/* Driver options, no device instance necessary. */
switch (key) {
case SR_CONF_SCAN_OPTIONS:
- *data = g_variant_new_fixed_array(G_VARIANT_TYPE_INT32,
- hwopts, ARRAY_SIZE(hwopts), sizeof(int32_t));
+ *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
+ scanopts, ARRAY_SIZE(scanopts), sizeof(uint32_t));
return SR_OK;
default:
if (sdi == NULL)
devc = sdi->priv;
}
- /* Device options, independant from channel groups. */
+ /* Device options, independent from channel groups. */
if (cg == NULL) {
switch (key) {
case SR_CONF_DEVICE_OPTIONS:
- *data = g_variant_new_fixed_array(G_VARIANT_TYPE_INT32,
- hwcaps, ARRAY_SIZE(hwcaps), sizeof(int32_t));
+ *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
+ devopts, ARRAY_SIZE(devopts), sizeof(uint32_t));
return SR_OK;
- case SR_CONF_OUTPUT_CHANNEL:
+ case SR_CONF_OUTPUT_CHANNEL_CONFIG:
if (devc->model->modelid <= LPS_303) {
/* The 1-channel models. */
*data = g_variant_new_strv(channel_modes, 1);
switch (key) {
case SR_CONF_DEVICE_OPTIONS:
if ((ch_idx == 0) || (ch_idx == 1)) /* CH1, CH2 */
- *data = g_variant_new_fixed_array(G_VARIANT_TYPE_INT32,
- hwcaps_ch12, ARRAY_SIZE(hwcaps_ch12), sizeof(int32_t));
+ *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
+ devopts_ch12, ARRAY_SIZE(devopts_ch12), sizeof(uint32_t));
else /* Must be CH3 */
- *data = g_variant_new_fixed_array(G_VARIANT_TYPE_INT32,
- hwcaps_ch3, ARRAY_SIZE(hwcaps_ch3), sizeof(int32_t));
+ *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
+ devopts_ch3, ARRAY_SIZE(devopts_ch3), sizeof(uint32_t));
break;
case SR_CONF_OUTPUT_VOLTAGE_MAX:
g_variant_builder_init(&gvb, G_VARIANT_TYPE_ARRAY);