}
+void update_scope_channel(struct scope *sc, int channel)
+{
+ struct channel_s *ch;
+ char cmd[128];
+ int offs;
+
+ if (channel == 1) {
+ ch = &(sc->status.channel.ch1);
+ strcpy(cmd, ":CHAN1:");
+ } else if (channel == 2) {
+ ch = &(sc->status.channel.ch2);
+ strcpy(cmd, ":CHAN2:");
+ } else {
+ fprintf(stderr, "Unknown channel %d!\n", channel);
+ return;
+ }
+
+ offs=strlen(cmd);
+
+ strcpy(cmd + offs, "BWL?"); ch->bwlimit_enabled = scope_get_truth_value(sc, cmd);
+ strcpy(cmd + offs, "COUP?"); COPY_SCOPE_STRING(sc, cmd, ch->coupling);
+ strcpy(cmd + offs, "DISP?"); ch->displayed = scope_get_truth_value(sc, cmd);
+ strcpy(cmd + offs, "INV?"); ch->inverted = scope_get_truth_value(sc, cmd);
+ strcpy(cmd + offs, "OFFS?"); ch->offset = scope_get_double(sc, cmd);
+ strcpy(cmd + offs, "PROB?"); ch->probe = scope_get_double(sc, cmd);
+ strcpy(cmd + offs, "SCAL?"); ch->scale = scope_get_double(sc, cmd);
+ strcpy(cmd + offs, "FILT?"); ch->filter_enabled = scope_get_truth_value(sc, cmd);
+ strcpy(cmd + offs, "MEMD?"); ch->memory_depth = scope_get_int(sc, cmd);
+ strcpy(cmd + offs, "VERN?"); COPY_SCOPE_STRING(sc, cmd, ch->vernier);
+}
+
int update_scope_status(struct scope *sc)
{
bzero(&(sc->status), sizeof(sc->status));
sc->status.display.brightness = scope_get_int(sc, ":DISP:BRIG?");
sc->status.display.intensity = scope_get_int(sc, ":DISP:INT?");
+ update_scope_channel(sc, 1);
+ update_scope_channel(sc, 2);
+
COPY_SCOPE_STRING(sc, ":ACQ:TYPE?", sc->status.acquire.type);
COPY_SCOPE_STRING(sc, ":ACQ:MODE?", sc->status.acquire.mode);
sc->status.timebase.scale = scope_get_double(sc, ":TIM:SCAL?");
COPY_SCOPE_STRING(sc, ":TIM:FORM?", sc->status.timebase.format);
+ sc->status.math.displayed = scope_get_truth_value(sc, ":MATH:DISP?");
+ sc->status.fft.displayed = scope_get_truth_value(sc, ":FFT:DISP?");
+
return 0;
}