+static int init_ascii(struct output *o)
+{
+ return init(o, DEFAULT_BPL_ASCII, MODE_ASCII);
+}
+
+static int data_ascii(struct output *o, char *data_in, uint64_t length_in,
+ char **data_out, uint64_t *length_out)
+{
+ struct context *ctx;
+ unsigned int outsize, offset, p;
+ int max_linelen;
+ uint64_t sample;
+ char *outbuf;
+
+ ctx = o->internal;
+ max_linelen = MAX_PROBENAME_LEN + 3 + ctx->samples_per_line
+ + ctx->samples_per_line / 8;
+ /*
+ * Calculate space needed for probes. Set aside 512 bytes for
+ * extra output, e.g. trigger.
+ */
+ outsize = 512 + (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;
+
+ outbuf[0] = '\0';
+ if (ctx->header) {
+ /* The header is still here, this must be the first packet. */
+ strncpy(outbuf, ctx->header, outsize);
+ free(ctx->header);
+ ctx->header = NULL;
+ }