Bugzilla – Attachment 430 Details for
Bug 299
Trigger source list not correct for all models
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Stores the trigger sources in the model struct and uses a macro to populate the info
file_299.txt (text/plain), 8.68 KB, created by
Valentin Ochs
on 2018-05-24 23:01:48 CEST
(
hide
)
Description:
Stores the trigger sources in the model struct and uses a macro to populate the info
Filename:
MIME Type:
Creator:
Valentin Ochs
Created:
2018-05-24 23:01:48 CEST
Size:
8.68 KB
patch
obsolete
>diff --git a/src/hardware/rigol-ds/api.c b/src/hardware/rigol-ds/api.c >index bcea8999..d481981b 100644 >--- a/src/hardware/rigol-ds/api.c >+++ b/src/hardware/rigol-ds/api.c >@@ -126,7 +126,13 @@ static const uint64_t vdivs[][2] = { > { 100, 1 }, > }; > >-static const char *trigger_sources[] = { >+static const char *trigger_sources_2_chans[] = { >+ "CH1", "CH2", >+ "EXT", "AC Line", >+ "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", >+ "D8", "D9", "D10", "D11", "D12", "D13", "D14", "D15", >+}; >+static const char *trigger_sources_4_chans[] = { > "CH1", "CH2", "CH3", "CH4", > "EXT", "AC Line", > "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", >@@ -191,53 +197,56 @@ static const struct rigol_ds_series supported_series[] = { > }; > > #define SERIES(x) &supported_series[x] >+/* Use a macro to select the correct list of trigger sources and its length >+ * based on the number of analog channels and presence of digital channels */ >+#define CHANNEL_INFO(num, digital) num, digital, trigger_sources_##num##_chans, digital ? ARRAY_SIZE(trigger_sources_##num##_chans) : (num + 2) > /* series, model, min timebase, analog channels, digital */ > static const struct rigol_ds_model supported_models[] = { >- {SERIES(VS5000), "VS5022", {20, 1000000000}, 2, false}, >- {SERIES(VS5000), "VS5042", {10, 1000000000}, 2, false}, >- {SERIES(VS5000), "VS5062", {5, 1000000000}, 2, false}, >- {SERIES(VS5000), "VS5102", {2, 1000000000}, 2, false}, >- {SERIES(VS5000), "VS5202", {2, 1000000000}, 2, false}, >- {SERIES(VS5000), "VS5022D", {20, 1000000000}, 2, true}, >- {SERIES(VS5000), "VS5042D", {10, 1000000000}, 2, true}, >- {SERIES(VS5000), "VS5062D", {5, 1000000000}, 2, true}, >- {SERIES(VS5000), "VS5102D", {2, 1000000000}, 2, true}, >- {SERIES(VS5000), "VS5202D", {2, 1000000000}, 2, true}, >- {SERIES(DS1000), "DS1052E", {5, 1000000000}, 2, false}, >- {SERIES(DS1000), "DS1102E", {2, 1000000000}, 2, false}, >- {SERIES(DS1000), "DS1152E", {2, 1000000000}, 2, false}, >- {SERIES(DS1000), "DS1052D", {5, 1000000000}, 2, true}, >- {SERIES(DS1000), "DS1102D", {2, 1000000000}, 2, true}, >- {SERIES(DS1000), "DS1152D", {2, 1000000000}, 2, true}, >- {SERIES(DS2000), "DS2072", {5, 1000000000}, 2, false}, >- {SERIES(DS2000), "DS2102", {5, 1000000000}, 2, false}, >- {SERIES(DS2000), "DS2202", {2, 1000000000}, 2, false}, >- {SERIES(DS2000), "DS2302", {1, 1000000000}, 2, false}, >- {SERIES(DS2000A), "DS2072A", {5, 1000000000}, 2, false}, >- {SERIES(DS2000A), "DS2102A", {5, 1000000000}, 2, false}, >- {SERIES(DS2000A), "DS2202A", {2, 1000000000}, 2, false}, >- {SERIES(DS2000A), "DS2302A", {1, 1000000000}, 2, false}, >- {SERIES(DS2000A), "MSO2072A", {5, 1000000000}, 2, true}, >- {SERIES(DS2000A), "MSO2102A", {5, 1000000000}, 2, true}, >- {SERIES(DS2000A), "MSO2202A", {2, 1000000000}, 2, true}, >- {SERIES(DS2000A), "MSO2302A", {1, 1000000000}, 2, true}, >- {SERIES(DSO1000), "DSO1002A", {5, 1000000000}, 2, false}, >- {SERIES(DSO1000), "DSO1004A", {5, 1000000000}, 4, false}, >- {SERIES(DSO1000), "DSO1012A", {2, 1000000000}, 2, false}, >- {SERIES(DSO1000), "DSO1014A", {2, 1000000000}, 4, false}, >- {SERIES(DSO1000), "DSO1022A", {2, 1000000000}, 2, false}, >- {SERIES(DSO1000), "DSO1024A", {2, 1000000000}, 4, false}, >- {SERIES(DS1000Z), "DS1054Z", {5, 1000000000}, 4, false}, >- {SERIES(DS1000Z), "DS1074Z", {5, 1000000000}, 4, false}, >- {SERIES(DS1000Z), "DS1104Z", {5, 1000000000}, 4, false}, >- {SERIES(DS1000Z), "DS1074Z-S", {5, 1000000000}, 4, false}, >- {SERIES(DS1000Z), "DS1104Z-S", {5, 1000000000}, 4, false}, >- {SERIES(DS1000Z), "DS1074Z Plus", {5, 1000000000}, 4, false}, >- {SERIES(DS1000Z), "DS1104Z Plus", {5, 1000000000}, 4, false}, >- {SERIES(DS1000Z), "MSO1074Z", {5, 1000000000}, 4, true}, >- {SERIES(DS1000Z), "MSO1104Z", {5, 1000000000}, 4, true}, >- {SERIES(DS1000Z), "MSO1074Z-S", {5, 1000000000}, 4, true}, >- {SERIES(DS1000Z), "MSO1104Z-S", {5, 1000000000}, 4, true}, >+ {SERIES(VS5000), "VS5022", {20, 1000000000}, CHANNEL_INFO(2, false)}, >+ {SERIES(VS5000), "VS5042", {10, 1000000000}, CHANNEL_INFO(2, false)}, >+ {SERIES(VS5000), "VS5062", {5, 1000000000}, CHANNEL_INFO(2, false)}, >+ {SERIES(VS5000), "VS5102", {2, 1000000000}, CHANNEL_INFO(2, false)}, >+ {SERIES(VS5000), "VS5202", {2, 1000000000}, CHANNEL_INFO(2, false)}, >+ {SERIES(VS5000), "VS5022D", {20, 1000000000}, CHANNEL_INFO(2, true)}, >+ {SERIES(VS5000), "VS5042D", {10, 1000000000}, CHANNEL_INFO(2, true)}, >+ {SERIES(VS5000), "VS5062D", {5, 1000000000}, CHANNEL_INFO(2, true)}, >+ {SERIES(VS5000), "VS5102D", {2, 1000000000}, CHANNEL_INFO(2, true)}, >+ {SERIES(VS5000), "VS5202D", {2, 1000000000}, CHANNEL_INFO(2, true)}, >+ {SERIES(DS1000), "DS1052E", {5, 1000000000}, CHANNEL_INFO(2, false)}, >+ {SERIES(DS1000), "DS1102E", {2, 1000000000}, CHANNEL_INFO(2, false)}, >+ {SERIES(DS1000), "DS1152E", {2, 1000000000}, CHANNEL_INFO(2, false)}, >+ {SERIES(DS1000), "DS1052D", {5, 1000000000}, CHANNEL_INFO(2, true)}, >+ {SERIES(DS1000), "DS1102D", {2, 1000000000}, CHANNEL_INFO(2, true)}, >+ {SERIES(DS1000), "DS1152D", {2, 1000000000}, CHANNEL_INFO(2, true)}, >+ {SERIES(DS2000), "DS2072", {5, 1000000000}, CHANNEL_INFO(2, false)}, >+ {SERIES(DS2000), "DS2102", {5, 1000000000}, CHANNEL_INFO(2, false)}, >+ {SERIES(DS2000), "DS2202", {2, 1000000000}, CHANNEL_INFO(2, false)}, >+ {SERIES(DS2000), "DS2302", {1, 1000000000}, CHANNEL_INFO(2, false)}, >+ {SERIES(DS2000A), "DS2072A", {5, 1000000000}, CHANNEL_INFO(2, false)}, >+ {SERIES(DS2000A), "DS2102A", {5, 1000000000}, CHANNEL_INFO(2, false)}, >+ {SERIES(DS2000A), "DS2202A", {2, 1000000000}, CHANNEL_INFO(2, false)}, >+ {SERIES(DS2000A), "DS2302A", {1, 1000000000}, CHANNEL_INFO(2, false)}, >+ {SERIES(DS2000A), "MSO2072A", {5, 1000000000}, CHANNEL_INFO(2, true)}, >+ {SERIES(DS2000A), "MSO2102A", {5, 1000000000}, CHANNEL_INFO(2, true)}, >+ {SERIES(DS2000A), "MSO2202A", {2, 1000000000}, CHANNEL_INFO(2, true)}, >+ {SERIES(DS2000A), "MSO2302A", {1, 1000000000}, CHANNEL_INFO(2, true)}, >+ {SERIES(DSO1000), "DSO1002A", {5, 1000000000}, CHANNEL_INFO(2, false)}, >+ {SERIES(DSO1000), "DSO1004A", {5, 1000000000}, CHANNEL_INFO(4, false)}, >+ {SERIES(DSO1000), "DSO1012A", {2, 1000000000}, CHANNEL_INFO(2, false)}, >+ {SERIES(DSO1000), "DSO1014A", {2, 1000000000}, CHANNEL_INFO(4, false)}, >+ {SERIES(DSO1000), "DSO1022A", {2, 1000000000}, CHANNEL_INFO(2, false)}, >+ {SERIES(DSO1000), "DSO1024A", {2, 1000000000}, CHANNEL_INFO(4, false)}, >+ {SERIES(DS1000Z), "DS1054Z", {5, 1000000000}, CHANNEL_INFO(4, false)}, >+ {SERIES(DS1000Z), "DS1074Z", {5, 1000000000}, CHANNEL_INFO(4, false)}, >+ {SERIES(DS1000Z), "DS1104Z", {5, 1000000000}, CHANNEL_INFO(4, false)}, >+ {SERIES(DS1000Z), "DS1074Z-S", {5, 1000000000}, CHANNEL_INFO(4, false)}, >+ {SERIES(DS1000Z), "DS1104Z-S", {5, 1000000000}, CHANNEL_INFO(4, false)}, >+ {SERIES(DS1000Z), "DS1074Z Plus", {5, 1000000000}, CHANNEL_INFO(4, false)}, >+ {SERIES(DS1000Z), "DS1104Z Plus", {5, 1000000000}, CHANNEL_INFO(4, false)}, >+ {SERIES(DS1000Z), "MSO1074Z", {5, 1000000000}, CHANNEL_INFO(4, true)}, >+ {SERIES(DS1000Z), "MSO1104Z", {5, 1000000000}, CHANNEL_INFO(4, true)}, >+ {SERIES(DS1000Z), "MSO1074Z-S", {5, 1000000000}, CHANNEL_INFO(4, true)}, >+ {SERIES(DS1000Z), "MSO1104Z-S", {5, 1000000000}, CHANNEL_INFO(4, true)}, > }; > > static struct sr_dev_driver rigol_ds_driver_info; >@@ -668,10 +677,10 @@ static int config_set(uint32_t key, GVariant *data, > devc->timebase); > return rigol_ds_config_set(sdi, ":TIM:SCAL %s", buffer); > case SR_CONF_TRIGGER_SOURCE: >- if ((idx = std_str_idx(data, ARRAY_AND_SIZE(trigger_sources))) < 0) >+ if ((idx = std_str_idx(data, devc->model->trigger_sources, devc->model->num_trigger_sources)) < 0) > return SR_ERR_ARG; > g_free(devc->trigger_source); >- devc->trigger_source = g_strdup(trigger_sources[idx]); >+ devc->trigger_source = g_strdup(devc->model->trigger_sources[idx]); > if (!strcmp(devc->trigger_source, "AC Line")) > tmp_str = "ACL"; > else if (!strcmp(devc->trigger_source, "CH1")) >@@ -794,8 +803,7 @@ static int config_list(uint32_t key, GVariant **data, > if (!devc) > /* Can't know this until we have the exact model. */ > return SR_ERR_ARG; >- *data = g_variant_new_strv(trigger_sources, >- devc->model->has_digital ? ARRAY_SIZE(trigger_sources) : 4); >+ *data = g_variant_new_strv(devc->model->trigger_sources, devc->model->num_trigger_sources); > break; > case SR_CONF_TRIGGER_SLOPE: > *data = g_variant_new_strv(ARRAY_AND_SIZE(trigger_slopes)); >diff --git a/src/hardware/rigol-ds/protocol.h b/src/hardware/rigol-ds/protocol.h >index 3b172991..840b1b27 100644 >--- a/src/hardware/rigol-ds/protocol.h >+++ b/src/hardware/rigol-ds/protocol.h >@@ -80,6 +80,8 @@ struct rigol_ds_model { > uint64_t min_timebase[2]; > unsigned int analog_channels; > bool has_digital; >+ const char **trigger_sources; >+ unsigned int num_trigger_sources; > }; > > enum wait_events {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 299
: 430