{
struct context *ctx;
const struct sr_datafeed_analog *analog;
+ const struct sr_datafeed_meta *meta;
+ const struct sr_config *src;
+ const struct sr_key_info *srci;
struct sr_channel *ch;
GSList *l;
float *fdata;
case SR_DF_FRAME_END:
*out = g_string_new("FRAME-END\n");
break;
+ case SR_DF_META:
+ meta = packet->payload;
+ for (l = meta->config; l; l = l->next) {
+ src = l->data;
+ if (!(srci = sr_key_info_get(SR_KEY_CONFIG, src->key)))
+ return SR_ERR;
+ *out = g_string_sized_new(512);
+ g_string_append(*out, "META ");
+ g_string_append_printf(*out, "%s: ", srci->id);
+ if (srci->datatype == SR_T_BOOL) {
+ g_string_append_printf(*out, "%u",
+ g_variant_get_boolean(src->data));
+ } else if (srci->datatype == SR_T_FLOAT) {
+ g_string_append_printf(*out, "%f",
+ g_variant_get_double(src->data));
+ } else if (srci->datatype == SR_T_UINT64) {
+ g_string_append_printf(*out, "%" PRIu64,
+ g_variant_get_uint64(src->data));
+ }
+ g_string_append(*out, "\n");
+ }
+ break;
case SR_DF_ANALOG:
analog = packet->payload;
num_channels = g_slist_length(analog->meaning->channels);