X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=output%2Foutput_text.c;h=6e2d4f08f46b0d02e1fda80b936fed0d08811b16;hb=3aa403e858a490aee17c23c11d3a09cdd4eb324d;hp=3c3fbb5046229120607520c19a9d3928c0b49345;hpb=655756e01d929607f67a9d576222917c72513b4b;p=libsigrok.git diff --git a/output/output_text.c b/output/output_text.c index 3c3fbb50..6e2d4f08 100644 --- a/output/output_text.c +++ b/output/output_text.c @@ -25,7 +25,7 @@ #include "config.h" #define DEFAULT_BPL_BITS 64 -#define DEFAULT_BPL_HEX 256 +#define DEFAULT_BPL_HEX 192 struct context { unsigned int num_enabled_probes; @@ -112,8 +112,8 @@ static int init(struct output *o, int default_spl) } snprintf(ctx->header, 511, "%s\n", PACKAGE_STRING); + num_probes = g_slist_length(o->device->probes); if (o->device->plugin) { - num_probes = g_slist_length(o->device->probes); samplerate = *((uint64_t *) o->device->plugin->get_device_info( o->device->plugin_index, DI_CUR_SAMPLERATE)); if (!(samplerate_s = sigrok_samplerate_string(samplerate))) { @@ -154,6 +154,8 @@ static int event(struct output *o, int event_type, char **data_out, switch (event_type) { case DF_TRIGGER: ctx->mark_trigger = ctx->spl_cnt; + *data_out = NULL; + *length_out = 0; break; case DF_END: outsize = ctx->num_enabled_probes @@ -166,6 +168,10 @@ static int event(struct output *o, int event_type, char **data_out, free(o->internal); o->internal = NULL; break; + default: + *data_out = NULL; + *length_out = 0; + break; } return SIGROK_OK; @@ -188,8 +194,8 @@ static int data_bits(struct output *o, char *data_in, uint64_t length_in, ctx = o->internal; max_linelen = MAX_PROBENAME_LEN + 3 + ctx->samples_per_line + ctx->samples_per_line / 8; - outsize = length_in / ctx->unitsize * ctx->num_enabled_probes - / ctx->samples_per_line * max_linelen + 512; + outsize = (1 + (length_in / ctx->unitsize) / ctx->samples_per_line) + * (ctx->num_enabled_probes * max_linelen); if (!(outbuf = calloc(1, outsize + 1))) return SIGROK_ERR_MALLOC; @@ -241,7 +247,7 @@ static int data_bits(struct output *o, char *data_in, uint64_t length_in, static int init_hex(struct output *o) { - return init(o, DEFAULT_BPL_BITS); + return init(o, DEFAULT_BPL_HEX); } static int data_hex(struct output *o, char *data_in, uint64_t length_in, @@ -315,7 +321,7 @@ struct output_format output_text_bits = { struct output_format output_text_hex = { "hex", - "Hexadecimal (takes argument, default 256)", + "Hexadecimal (takes argument, default 192)", DF_LOGIC, init_hex, data_hex,