if (tmp_d < 0.0 || tmp_d > 1.0)
return SR_ERR;
- state->horiz_triggerpos = -(tmp_d - 0.5) * state->timebase * model->num_xdivs;
+ state->horiz_triggerpos = tmp_d;
+ tmp_d = -(tmp_d - 0.5) *
+ ((double) (*model->timebases)[state->timebase][0] /
+ (*model->timebases)[state->timebase][1])
+ * model->num_xdivs;
+
+ g_ascii_formatd(float_str, sizeof(float_str), "%E", tmp_d);
g_snprintf(command, sizeof(command),
(*model->scpi_dialect)[SCPI_CMD_SET_HORIZ_TRIGGERPOS],
- state->horiz_triggerpos);
+ float_str);
ret = sr_scpi_send(sdi->conn, command);
break;
[SCPI_CMD_SET_DIG_CHAN_STATE] = ":LOG%d:STAT %d",
[SCPI_CMD_GET_VERTICAL_OFFSET] = ":CHAN%d:POS?",
[SCPI_CMD_GET_HORIZ_TRIGGERPOS] = ":TIM:POS?",
- [SCPI_CMD_SET_HORIZ_TRIGGERPOS] = ":TIM:POS %E",
+ [SCPI_CMD_SET_HORIZ_TRIGGERPOS] = ":TIM:POS %s",
[SCPI_CMD_GET_ANALOG_CHAN_STATE] = ":CHAN%d:STAT?",
[SCPI_CMD_SET_ANALOG_CHAN_STATE] = ":CHAN%d:STAT %d",
};
sr_info("Current samplerate: %s", tmp);
g_free(tmp);
- sr_info("Current trigger: %s (source), %s (slope) %2.2e (offset)",
+ sr_info("Current trigger: %s (source), %s (slope) %.2f (offset)",
(*config->trigger_sources)[state->trigger_source],
(*config->trigger_slopes)[state->trigger_slope],
state->horiz_triggerpos);
if (sr_scpi_get_float(sdi->conn,
(*config->scpi_dialect)[SCPI_CMD_GET_HORIZ_TRIGGERPOS],
- &state->horiz_triggerpos) != SR_OK)
+ &tmp_float) != SR_OK)
return SR_ERR;
+ state->horiz_triggerpos = tmp_float /
+ (((double) (*config->timebases)[state->timebase][0] /
+ (*config->timebases)[state->timebase][1]) * config->num_xdivs);
+ state->horiz_triggerpos -= 0.5;
+ state->horiz_triggerpos *= -1;
if (scope_state_get_array_option(sdi->conn,
(*config->scpi_dialect)[SCPI_CMD_GET_TRIGGER_SOURCE],