diff options
-rw-r--r-- | src/fig/FIGCarousel.cpp | 20 | ||||
-rw-r--r-- | src/fig/FIGCarousel.h | 3 |
2 files changed, 17 insertions, 6 deletions
diff --git a/src/fig/FIGCarousel.cpp b/src/fig/FIGCarousel.cpp index f48b62c..0d05ef7 100644 --- a/src/fig/FIGCarousel.cpp +++ b/src/fig/FIGCarousel.cpp @@ -42,12 +42,6 @@ namespace FIC { void FIGCarouselElement::reduce_deadline() { deadline -= 24; //ms - - if (deadline < 0) { - etiLog.level(debug) << - "Could not respect repetition rate for FIG " << - fig->name() << " (" << deadline << "ms late)"; - } } void FIGCarouselElement::increase_deadline() @@ -155,6 +149,16 @@ void FIGCarousel::load_and_allocate(IFIG& fig, FIBAllocation fib) void FIGCarousel::update(unsigned long currentFrame) { m_rti.currentFrame = currentFrame; + + if ((currentFrame % 250) == 0 and m_missed_deadlines.size() > 0) { + std::stringstream ss; + for (const auto& fig_missed_count : m_missed_deadlines) { + ss << " " << fig_missed_count; + } + m_missed_deadlines.clear(); + + etiLog.level(info) << "Could not respect repetition rates for FIGs:" << ss.str(); + } } void dumpfib(const uint8_t *buf, size_t bufsize) { @@ -175,6 +179,10 @@ size_t FIGCarousel::write_fibs( auto& fig = fib_fig.second; for (auto& fig_el : fig) { fig_el.reduce_deadline(); + + if (fig_el.deadline < 0) { + m_missed_deadlines.insert(fig_el.fig->name()); + } } } diff --git a/src/fig/FIGCarousel.h b/src/fig/FIGCarousel.h index 29ede3b..0d482ae 100644 --- a/src/fig/FIGCarousel.h +++ b/src/fig/FIGCarousel.h @@ -35,6 +35,7 @@ #include "fig/FIG2.h" #include <list> #include <map> +#include <unordered_set> #include <memory> #include "MuxElements.h" @@ -86,6 +87,8 @@ class FIGCarousel { void load_and_allocate(IFIG& fig, FIBAllocation fib); + std::unordered_set<std::string> m_missed_deadlines; + FIGRuntimeInformation m_rti; // Some FIGs can be mapped to a specific FIB or to FIB_ANY |