return NULL;
serial_flush(serial);
- if (serial_write_blocking(serial, "*IDN?\r\n", 7) == -1) {
- sr_err("Unable to send identification string: %s.",
- strerror(errno));
+ if (serial_write_blocking(serial, "*IDN?\r\n", 7, SERIAL_WRITE_TIMEOUT_MS) < 7) {
+ sr_err("Unable to send identification string.");
return NULL;
}
for (i = 0; supported_agdmm[i].model; i++) {
if (strcmp(supported_agdmm[i].modelname, tokens[1]))
continue;
- if (!(sdi = sr_dev_inst_new(0, SR_ST_INACTIVE, "Agilent",
- tokens[1], tokens[3])))
- return NULL;
+ sdi = sr_dev_inst_new();
+ sdi->status = SR_ST_INACTIVE;
+ sdi->vendor = g_strdup("Agilent");
+ sdi->model = g_strdup(tokens[1]);
+ sdi->version = g_strdup(tokens[3]);
if (!(devc = g_try_malloc0(sizeof(struct dev_context)))) {
sr_err("Device context malloc failed.");
return NULL;
scanopts, ARRAY_SIZE(scanopts), sizeof(uint32_t));
break;
case SR_CONF_DEVICE_OPTIONS:
- *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
- devopts, ARRAY_SIZE(devopts), sizeof(uint32_t));
+ if (!sdi)
+ *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
+ devopts, ARRAY_SIZE(devopts), sizeof(uint32_t));
+ else
+ *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
+ devopts, 0, sizeof(uint32_t));
break;
default:
return SR_ERR_NA;