+ devices = NULL;
+
+ conn = serialcomm = NULL;
+ for (l = options; l; l = l->next) {
+ if (!(src = l->data)) {
+ sr_err("Invalid option data, skipping.");
+ continue;
+ }
+ switch (src->key) {
+ case SR_CONF_CONN:
+ conn = g_variant_get_string(src->data, NULL);
+ break;
+ case SR_CONF_SERIALCOMM:
+ serialcomm = g_variant_get_string(src->data, NULL);
+ break;
+ default:
+ sr_err("Unknown option %d, skipping.", src->key);
+ break;
+ }
+ }
+ if (!conn)
+ return NULL;
+ if (!serialcomm)
+ serialcomm = SERIALCOMM;
+
+ if (!(sdi = sr_dev_inst_new(0, SR_ST_INACTIVE, "Tondaj",
+ "SL-814", NULL))) {
+ sr_err("Failed to create device instance.");
+ return NULL;
+ }
+
+ if (!(devc = g_try_malloc0(sizeof(struct dev_context)))) {
+ sr_err("Device context malloc failed.");
+ return NULL;
+ }
+
+ if (!(devc->serial = sr_serial_dev_inst_new(conn, serialcomm)))
+ return NULL;
+
+ if (serial_open(devc->serial, SERIAL_RDWR | SERIAL_NONBLOCK) != SR_OK)
+ return NULL;
+
+ sdi->priv = devc;
+ sdi->driver = di;
+ probe = sr_probe_new(0, SR_PROBE_ANALOG, TRUE, "P1");
+ if (!probe) {
+ sr_err("Failed to create probe.");
+ return NULL;
+ }
+ sdi->probes = g_slist_append(sdi->probes, probe);
+ drvc->instances = g_slist_append(drvc->instances, sdi);
+ devices = g_slist_append(devices, sdi);