- 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);
+ for (i = 0; i <= logic->length - logic->unitsize; i += logic->unitsize) {
+ for (j = 0; j < ctx->num_enabled_channels; j++) {
+ idx = ctx->channel_index[j];
+ p = logic->data + i + idx / 8;
+ c = *p & (1 << (idx % 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);