+ sdi = g_malloc0(sizeof(struct sr_dev_inst));
+ sdi->vendor = g_strdup(hw_info->manufacturer);
+ sdi->model = g_strdup(hw_info->model);
+ sdi->version = g_strdup(hw_info->firmware_version);
+ sdi->conn = scpi;
+ sdi->driver = &gwinstek_gds_800_driver_info;
+ sdi->inst_type = SR_INST_SCPI;
+ sdi->serial_num = g_strdup(hw_info->serial_number);
+ sdi->channels = NULL;
+ sdi->channel_groups = NULL;
+
+ sr_scpi_hw_info_free(hw_info);
+
+ devc = g_malloc0(sizeof(struct dev_context));
+ devc->frame_limit = 1;
+ devc->sample_rate = 0.;
+ devc->df_started = FALSE;
+ sdi->priv = devc;
+
+ sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "CH1");
+ sr_channel_new(sdi, 1, SR_CHANNEL_ANALOG, TRUE, "CH2");
+
+ cg = g_malloc0(sizeof(struct sr_channel_group));
+ cg->name = g_strdup("");
+ cg->channels = g_slist_append(cg->channels, g_slist_nth_data(sdi->channels, 0));
+ cg->channels = g_slist_append(cg->channels, g_slist_nth_data(sdi->channels, 1));
+ cg->priv = NULL;
+ sdi->channel_groups = g_slist_append(NULL, cg);
+
+ return sdi;
+}