/*
* TODO
*
- * - Unbreak analog data when submitted in the 'double' data type. This
- * was observed with sigrok-cli screen output. Is analog.encoding->unitsize
- * not handled appropriately? Is it a sigrok-cli or libsigrok issue?
* - Add a test suite for input modules in general, and CSV in specific?
* Becomes more important with the multitude of options and their
* interaction. Could cover edge cases (BOM presence, line termination
* samplerates, etc).
*/
-typedef float csv_analog_t; /* 'double' currently is flawed. */
+typedef double csv_analog_t;
/* Single column formats. */
enum single_col_format {
static int flush_samplerate(const struct sr_input *in)
{
struct context *inc;
- struct sr_datafeed_packet packet;
- struct sr_datafeed_meta meta;
- struct sr_config *src;
inc = in->priv;
if (!inc->calc_samplerate && inc->samplerate)
inc->calc_samplerate = inc->samplerate;
if (inc->calc_samplerate && !inc->samplerate_sent) {
- packet.type = SR_DF_META;
- packet.payload = &meta;
- src = sr_config_new(SR_CONF_SAMPLERATE, g_variant_new_uint64(inc->calc_samplerate));
- meta.config = g_slist_append(NULL, src);
- sr_session_send(in->sdi, &packet);
- g_slist_free(meta.config);
- sr_config_free(src);
+ (void)sr_session_send_meta(in->sdi, SR_CONF_SAMPLERATE,
+ g_variant_new_uint64(inc->calc_samplerate));
inc->samplerate_sent = TRUE;
}
* line won't get processed another time.
*/
column = column_texts[detail->col_nr - 1];
- if (inc->use_header && column && *column)
+ if (inc->use_header && column && *column) {
+ column = g_strstrip(column);
caption = sr_scpi_unquote_string(column);
- else
+ } else {
caption = NULL;
+ }
if (!caption || !*caption)
caption = NULL;
/*
*/
static char **split_line(char *buf, struct context *inc)
{
- return g_strsplit(buf, inc->delimiter->str, 0);
+ char **fields, *f;
+ size_t l;
+
+ fields = g_strsplit(buf, inc->delimiter->str, 0);
+ if (!fields)
+ return NULL;
+
+ l = g_strv_length(fields);
+ while (l--) {
+ f = fields[l];
+ g_strchomp(f);
+ }
+
+ return fields;
}
/**
},
[OPT_HEADER] = {
"header", "Get channel names from first line.",
- "Use the first processed line's column captions (when available) as channel names. Off by default",
+ "Use the first processed line's column captions (when available) as channel names. Enabled by default.",
NULL, NULL,
},
[OPT_SAMPLERATE] = {
l = g_slist_append(l, g_variant_ref_sink(g_variant_new_string("oct")));
options[OPT_SINGLE_FMT].values = l;
options[OPT_START_LINE].def = g_variant_ref_sink(g_variant_new_uint32(1));
- options[OPT_HEADER].def = g_variant_ref_sink(g_variant_new_boolean(FALSE));
+ options[OPT_HEADER].def = g_variant_ref_sink(g_variant_new_boolean(TRUE));
options[OPT_SAMPLERATE].def = g_variant_ref_sink(g_variant_new_uint64(0));
options[OPT_COL_SEP].def = g_variant_ref_sink(g_variant_new_string(","));
options[OPT_COMMENT].def = g_variant_ref_sink(g_variant_new_string(";"));