From: Ralf Date: Fri, 23 Oct 2020 10:00:02 +0000 (+0200) Subject: rigol-dg: Use user name in waveform spec for rigol_dg_waveform_to_string X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=c4cb9ae31199ab8fdade93bddcf03c5ea4ffac1f;p=libsigrok.git rigol-dg: Use user name in waveform spec for rigol_dg_waveform_to_string --- diff --git a/src/hardware/rigol-dg/api.c b/src/hardware/rigol-dg/api.c index 3201cfe1..537d6188 100644 --- a/src/hardware/rigol-dg/api.c +++ b/src/hardware/rigol-dg/api.c @@ -584,6 +584,7 @@ static int config_get(uint32_t key, GVariant **data, 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; @@ -689,6 +690,7 @@ static int config_set(uint32_t key, GVariant *data, 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) @@ -805,6 +807,7 @@ static int config_list(uint32_t key, GVariant **data, 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); diff --git a/src/hardware/rigol-dg/protocol.c b/src/hardware/rigol-dg/protocol.c index 89165f09..0b26bc59 100644 --- a/src/hardware/rigol-dg/protocol.c +++ b/src/hardware/rigol-dg/protocol.c @@ -22,37 +22,15 @@ #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"; diff --git a/src/hardware/rigol-dg/protocol.h b/src/hardware/rigol-dg/protocol.h index 3a1e16ac..3e48e751 100644 --- a/src/hardware/rigol-dg/protocol.h +++ b/src/hardware/rigol-dg/protocol.h @@ -133,7 +133,8 @@ struct dev_context { 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(