- sr_dbg("%s: SR_DF_TRIGGER event", __func__);
- /* Save the trigger point for later (SR_DF_END). */
- ctx->trigger_point = 0; /* TODO: Store _actual_ value. */
+ /* Four bytes (little endian) for the trigger point. */
+ c[0] = ctx->samplecount & 0xff;
+ c[1] = (ctx->samplecount >> 8) & 0xff;
+ c[2] = (ctx->samplecount >> 16) & 0xff;
+ c[3] = (ctx->samplecount >> 24) & 0xff;
+ *out = g_string_new_len(c, 4);
+ /* Flush the pre-trigger buffer. */
+ if (ctx->pretrig_buf->len)
+ g_string_append_len(*out, ctx->pretrig_buf->str,
+ ctx->pretrig_buf->len);
+ ctx->triggered = TRUE;
+ break;
+ case SR_DF_LOGIC:
+ logic = packet->payload;
+ if (!ctx->triggered)
+ g_string_append_len(ctx->pretrig_buf, logic->data, logic->length);
+ else
+ *out = g_string_new_len(logic->data, logic->length);
+ ctx->samplecount += logic->length / logic->unitsize;