if ((ret = rigol_dg_get_channel_state(sdi, cg)) == SR_OK) {
*data = g_variant_new_string(
rigol_dg_waveform_to_string(
+ &devc->device->channels[ch->index],
ch_status->wf));
}
break;
mode = g_variant_get_string(data, NULL);
for (i = 0; i < ch_spec->num_waveforms; i++) {
mode_name = rigol_dg_waveform_to_string(
+ &devc->device->channels[ch->index],
ch_spec->waveforms[i].waveform);
if (g_ascii_strncasecmp(mode, mode_name,
strlen(mode_name)) == 0)
for (i = 0; i < ch_spec->num_waveforms; i++) {
g_variant_builder_add(b, "s",
rigol_dg_waveform_to_string(
+ &devc->device->channels[ch->index],
ch_spec->waveforms[i].waveform));
}
*data = g_variant_new("as", b);
#include "scpi.h"
#include "protocol.h"
-SR_PRIV const char *rigol_dg_waveform_to_string(enum waveform_type type)
+SR_PRIV const char *rigol_dg_waveform_to_string(const struct channel_spec *ch,
+ enum waveform_type type)
{
- switch (type) {
- case WF_DC:
- return "DC";
- case WF_SINE:
- return "Sine";
- case WF_SQUARE:
- return "Square";
- case WF_RAMP:
- return "Ramp";
- case WF_PULSE:
- return "Pulse";
- case WF_NOISE:
- return "Noise";
- case WF_ARB:
- return "Arb";
- case WF_SINC:
- return "Sinc";
- case WF_EXPRISE:
- return "ExpRise";
- case WF_EXPFALL:
- return "ExpFall";
- case WF_ECG:
- return "ECG";
- case WF_GAUSS:
- return "Gauss";
- case WF_LORENTZ:
- return "Lorentz";
- case WF_HAVERSINE:
- return "Haversine";
+ unsigned int i;
+
+ for (i = 0; i < ch->num_waveforms; i++) {
+ if (ch->waveforms[i].waveform == type) {
+ return ch->waveforms[i].user_name;
+ }
}
return "Unknown";
uint32_t quirks;
};
-SR_PRIV const char *rigol_dg_waveform_to_string(enum waveform_type type);
+SR_PRIV const char *rigol_dg_waveform_to_string(const struct channel_spec *ch,
+ enum waveform_type type);
SR_PRIV int rigol_dg_string_to_waveform(
const struct channel_spec *ch, const char *s, enum waveform_type *wf);
SR_PRIV const struct waveform_spec *rigol_dg_get_waveform_spec(