+ start = g_get_monotonic_time();
+ while (g_get_monotonic_time() - start < MAX_SCAN_TIME) {
+ if (serial_read(serial, &c, 1) == 1 && c == 0xa5) {
+ /* Found one. */
+ if (!(sdi = sr_dev_inst_new(0, SR_ST_INACTIVE, "CEM",
+ "DT-885x", NULL)))
+ return NULL;
+
+ if (!(devc = g_try_malloc0(sizeof(struct dev_context)))) {
+ sr_dbg("Device context malloc failed.");
+ return NULL;
+ }
+
+ if (!(sdi->conn = sr_serial_dev_inst_new(conn, SERIALCOMM)))
+ return NULL;
+
+ sdi->inst_type = SR_INST_SERIAL;
+ sdi->priv = devc;
+ sdi->driver = di;
+ if (!(probe = sr_probe_new(0, SR_PROBE_ANALOG, TRUE, "P1")))
+ return NULL;
+ sdi->probes = g_slist_append(sdi->probes, probe);
+ drvc->instances = g_slist_append(drvc->instances, sdi);
+ devices = g_slist_append(devices, sdi);
+ break;
+ }
+ /* It takes about 1ms for a byte to come in. */
+ g_usleep(1000);
+ }