ctx->samplerate);
/* Columns / channels */
- g_string_append_printf(ctx->header, "; Channels (%d/%d): ",
+ g_string_append_printf(ctx->header, "; Channels (%d/%d):",
ctx->num_enabled_probes, num_probes);
for (l = o->sdi->probes; l; l = l->next) {
probe = l->data;
continue;
if (!probe->enabled)
continue;
- g_string_append_printf(ctx->header, "%s, ", probe->name);
+ g_string_append_printf(ctx->header, " %s,", probe->name);
}
+ if (o->sdi->probes)
+ /* Drop last separator. */
+ g_string_truncate(ctx->header, ctx->header->len - 1);
g_string_append_printf(ctx->header, "\n");
return SR_OK;
{
const struct sr_datafeed_logic *logic;
struct context *ctx;
- uint64_t sample, i, j;
+ uint64_t i, j;
+ gchar *p, c;
(void)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);
+ }
+ if (j) {
+ /* Drop last separator. */
+ g_string_truncate(*out, (*out)->len - 1);
}
g_string_append_printf(*out, "\n");
}