summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
inline | side by side (from parent 1:
fbf9e65)
Add support for the SR_CONF_PROBE_NAMES scan option. Optionally assign
user specified channel names instead of the driver's builtin names.
static const uint32_t scanopts[] = {
SR_CONF_CONN,
SR_CONF_SERIALCOMM,
static const uint32_t scanopts[] = {
SR_CONF_CONN,
SR_CONF_SERIALCOMM,
};
static const uint32_t drvopts[] = {
};
static const uint32_t drvopts[] = {
GSList *l;
int num_read;
unsigned int i;
GSList *l;
int num_read;
unsigned int i;
- const char *conn, *serialcomm;
+ const char *conn, *serialcomm, *probe_names;
char buf[4] = { 0, 0, 0, 0 };
struct dev_context *devc;
size_t ch_max;
conn = serialcomm = NULL;
char buf[4] = { 0, 0, 0, 0 };
struct dev_context *devc;
size_t ch_max;
conn = serialcomm = NULL;
for (l = options; l; l = l->next) {
src = l->data;
switch (src->key) {
for (l = options; l; l = l->next) {
src = l->data;
switch (src->key) {
case SR_CONF_SERIALCOMM:
serialcomm = g_variant_get_string(src->data, NULL);
break;
case SR_CONF_SERIALCOMM:
serialcomm = g_variant_get_string(src->data, NULL);
break;
+ case SR_CONF_PROBE_NAMES:
+ probe_names = g_variant_get_string(src->data, NULL);
+ break;
devc = g_malloc0(sizeof(*devc));
sdi->priv = devc;
devc->trigger_at_smpl = OLS_NO_TRIGGER;
devc = g_malloc0(sizeof(*devc));
sdi->priv = devc;
devc->trigger_at_smpl = OLS_NO_TRIGGER;
+ devc->channel_names = sr_parse_probe_names(probe_names,
+ ols_channel_names, ARRAY_SIZE(ols_channel_names),
+ ARRAY_SIZE(ols_channel_names), &ch_max);
/*
* Definitely using the OLS protocol, check if it supports
/*
* Definitely using the OLS protocol, check if it supports
sdi->vendor = g_strdup("Sump");
sdi->model = g_strdup("Logic Analyzer");
sdi->version = g_strdup("v1.0");
sdi->vendor = g_strdup("Sump");
sdi->model = g_strdup("Logic Analyzer");
sdi->version = g_strdup("v1.0");
- devc->max_channels = ARRAY_SIZE(ols_channel_names);
+ devc->max_channels = ch_max;
- ch_max = ARRAY_SIZE(ols_channel_names);
if (devc->max_channels && ch_max > devc->max_channels)
ch_max = devc->max_channels;
for (i = 0; i < ch_max; i++) {
sr_channel_new(sdi, i, SR_CHANNEL_LOGIC, TRUE,
if (devc->max_channels && ch_max > devc->max_channels)
ch_max = devc->max_channels;
for (i = 0; i < ch_max; i++) {
sr_channel_new(sdi, i, SR_CHANNEL_LOGIC, TRUE,
+ devc->channel_names[i]);
}
/* Configure samplerate and divider. */
if (ols_set_samplerate(sdi, DEFAULT_SAMPLERATE) != SR_OK)
}
/* Configure samplerate and divider. */
if (ols_set_samplerate(sdi, DEFAULT_SAMPLERATE) != SR_OK)
#define OLS_NO_TRIGGER (-1)
struct dev_context {
#define OLS_NO_TRIGGER (-1)
struct dev_context {
+ char **channel_names;
+
/* constant device properties: */
size_t max_channels;
uint32_t max_samples;
/* constant device properties: */
size_t max_channels;
uint32_t max_samples;