X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=output%2Fcsv.c;h=5ca8c392d3afcb8300a5576294f2d08913548595;hb=e96cf218c08d474fca0285113ad334823a60a3b9;hp=f097024ed7c3e912f03162ec78eb7c7f8eca8d08;hpb=4829d37d6ad74c9368784b3cf3cae6f1a0a651c4;p=libsigrok.git diff --git a/output/csv.c b/output/csv.c index f097024e..5ca8c392 100644 --- a/output/csv.c +++ b/output/csv.c @@ -118,7 +118,8 @@ static int receive(struct sr_output *o, const struct sr_dev_inst *sdi, { const struct sr_datafeed_logic *logic; struct context *ctx; - uint64_t sample, i, j; + uint64_t i, j; + gchar *p, c; (void)sdi; @@ -143,11 +144,11 @@ static int receive(struct sr_output *o, const struct sr_dev_inst *sdi, } for (i = 0; i <= logic->length - ctx->unitsize; i += ctx->unitsize) { - memcpy(&sample, logic->data + i, ctx->unitsize); for (j = 0; j < ctx->num_enabled_probes; j++) { - g_string_append_printf(*out, "%d%c", - (int)((sample & (1 << j)) >> j), - ctx->separator); + p = logic->data + i + j / 8; + c = *p & (1 << (j % 8)); + g_string_append_c(*out, c ? '1' : '0'); + g_string_append_c(*out, ctx->separator); } g_string_append_printf(*out, "\n"); }