+/* Do not change the order of entries */
+static const char *data_sources[] = {
+ "Live",
+ "Memory",
+ "Segmented",
+};
+
+enum vendor {
+ RIGOL,
+ AGILENT,
+};
+
+enum series {
+ VS5000,
+ DS1000,
+ DS2000,
+ DS2000A,
+ DSO1000,
+};
+
+/* short name, full name */
+static const struct rigol_ds_vendor supported_vendors[] = {
+ [RIGOL] = {"Rigol", "Rigol Technologies"},
+ [AGILENT] = {"Agilent", "Rigol Technologies"},
+};
+
+#define VENDOR(x) &supported_vendors[x]
+/* vendor, series, protocol, max timebase, min vdiv, number of horizontal divs,
+ * live waveform samples, memory buffer samples */
+static const struct rigol_ds_series supported_series[] = {
+ [VS5000] = {VENDOR(RIGOL), "VS5000", PROTOCOL_V1, FORMAT_RAW,
+ {50, 1}, {2, 1000}, 14, 2048, 0},
+ [DS1000] = {VENDOR(RIGOL), "DS1000", PROTOCOL_V2, FORMAT_IEEE488_2,
+ {50, 1}, {2, 1000}, 12, 600, 1048576},
+ [DS2000] = {VENDOR(RIGOL), "DS2000", PROTOCOL_V3, FORMAT_IEEE488_2,
+ {500, 1}, {2, 1000}, 14, 1400, 14000},
+ [DS2000A] = {VENDOR(RIGOL), "DS2000A", PROTOCOL_V3, FORMAT_IEEE488_2,
+ {1000, 1}, {500, 1000000}, 14, 1400, 14000},
+ [DSO1000] = {VENDOR(AGILENT), "DSO1000", PROTOCOL_V3, FORMAT_IEEE488_2,
+ {50, 1}, {2, 1000}, 12, 600, 20480},
+};
+
+#define SERIES(x) &supported_series[x]
+/* 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(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},