From 421aac43a03263b3564cbc83b82e19bb3642728f Mon Sep 17 00:00:00 2001 From: Cedric Roux <cedric.roux@eurecom.fr> Date: Tue, 17 May 2016 12:26:53 +0200 Subject: [PATCH] add skip_delay parameter to the framelog not very clean, might be reworked at some point the idea is to compute much less 'log' than what was done --- common/utils/T/tracer/logger/framelog.c | 30 +++++++++++++++++++++++++ common/utils/T/tracer/logger/logger.h | 2 ++ 2 files changed, 32 insertions(+) diff --git a/common/utils/T/tracer/logger/framelog.c b/common/utils/T/tracer/logger/framelog.c index 2b26a5b3a0..0889f2b80c 100644 --- a/common/utils/T/tracer/logger/framelog.c +++ b/common/utils/T/tracer/logger/framelog.c @@ -15,6 +15,11 @@ struct framelog { float *x; float *buffer; int blength; + int skip_delay; /* one frame over 'skip_delay' is truly processed + * 0 to disable (process all data) + */ + int skip_current; /* internal data for the skip mechanism */ + int skip_on; /* internal data for the skip mechanism */ }; static void _event(void *p, event e) @@ -30,6 +35,18 @@ static void _event(void *p, event e) buffer = e.e[l->buffer_arg].b; bsize = e.e[l->buffer_arg].bsize; + if (l->skip_delay != 0) { + if (subframe == 0) { + l->skip_current++; + if (l->skip_current >= l->skip_delay) { + l->skip_on = 0; + l->skip_current = 0; + } else + l->skip_on = 1; + } + } + if (l->skip_on) return; + nsamples = bsize / (2*sizeof(int16_t)); if (l->blength != nsamples * 10) { @@ -110,3 +127,16 @@ logger *new_framelog(event_handler *h, void *database, return ret; } + +/****************************************************************************/ +/* public functions */ +/****************************************************************************/ + +void framelog_set_skip(logger *_this, int skip_delay) +{ + struct framelog *l = _this; + /* TODO: protect with a lock? */ + l->skip_delay = skip_delay; + l->skip_current = 0; + l->skip_on = 0; +} diff --git a/common/utils/T/tracer/logger/logger.h b/common/utils/T/tracer/logger/logger.h index a3c09b2c23..ec04e60819 100644 --- a/common/utils/T/tracer/logger/logger.h +++ b/common/utils/T/tracer/logger/logger.h @@ -12,6 +12,8 @@ logger *new_ttilog(void *event_handler, void *database, char *data_varname, int convert_to_dB); logger *new_timelog(void *event_handler, void *database, char *event_name); +void framelog_set_skip(logger *_this, int skip_delay); + #include "view/view.h" void logger_add_view(logger *l, view *v); -- GitLab