}
/* Read the header of a data block. */
-static int siglent_sds_read_header(struct sr_dev_inst *sdi, int channelIndex)
+static int siglent_sds_read_header(struct sr_dev_inst *sdi)
{
struct sr_scpi_dev_inst *scpi = sdi->conn;
struct dev_context *devc = sdi->priv;
memcpy(&desc_length, buf + 36, 4); /* Descriptor block length */
memcpy(&dataLength, buf + 60, 4); /* Data block length */
- devc->vdiv[channelIndex] = 2;
- devc->vert_offset[channelIndex] = 0;
devc->block_header_size = desc_length + 15;
ret = dataLength;
g_usleep(4900000); /* Sleep for large memory set. */
}
sr_dbg("New block header expected.");
- len = siglent_sds_read_header(sdi, ch->index);
+ len = siglent_sds_read_header(sdi);
expected_data_bytes = len;
if (len == 0)
/* Still reading the header. */
unsigned int i;
int res, num_tokens;
gchar **tokens;
+ int len;
+ float trigger_pos;
devc = sdi->priv;
sr_dbg("Current trigger source: %s.", devc->trigger_source);
/* TODO: Horizontal trigger position. */
-
- devc->horiz_triggerpos = 0;
- sr_dbg("Current horizontal trigger position: %g.", devc->horiz_triggerpos);
+ response = "";
+ trigger_pos = 0;
+ if (sr_scpi_get_string(sdi->conn, g_strdup_printf("%s:TRDL?", devc->trigger_source), &response) != SR_OK)
+ return SR_ERR;
+ len = strlen(response);
+ if (!g_ascii_strcasecmp(response + (len - 2), "us")) {
+ trigger_pos = atof(response) / SR_GHZ(1);
+ sr_dbg("Current trigger position us %s.", response);
+ } else if (!g_ascii_strcasecmp(response + (len - 2), "ns")) {
+ trigger_pos = atof(response) / SR_MHZ(1);
+ sr_dbg("Current trigger position ms %s.", response);
+ } else if (!g_ascii_strcasecmp(response + (len - 2), "ms")) {
+ trigger_pos = atof(response) / SR_KHZ(1);
+ sr_dbg("Current trigger position ns %s.", response);
+ } else if (!g_ascii_strcasecmp(response + (len - 2), "s")) {
+ trigger_pos = atof(response);
+ sr_dbg("Current trigger position s %s.", response);
+ };
+ devc->horiz_triggerpos = trigger_pos;
+
+ sr_dbg("Current horizontal trigger position %.10f", devc->horiz_triggerpos);
/* Trigger slope. */
cmd = g_strdup_printf("%s:TRSL?", devc->trigger_source);