From 42970488bba01fdecab1b9f2f7df60c4998e7680 Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Sun, 19 Jul 2015 19:02:35 +0200 Subject: Increment/Decrement deadline correctly --- src/fig/FIG0.cpp | 1 - src/fig/FIGCarousel.cpp | 12 +++++++++--- src/fig/FIGCarousel.h | 4 +++- 3 files changed, 12 insertions(+), 5 deletions(-) (limited to 'src/fig') diff --git a/src/fig/FIG0.cpp b/src/fig/FIG0.cpp index 677bb9a..67c462a 100644 --- a/src/fig/FIG0.cpp +++ b/src/fig/FIG0.cpp @@ -393,7 +393,6 @@ size_t FIG0_3::fill(uint8_t *buf, size_t max_size) return max_size - remaining; } - //=========== FIG 0/17 =========== FIG0_17::FIG0_17(FIGRuntimeInformation *rti) : diff --git a/src/fig/FIGCarousel.cpp b/src/fig/FIGCarousel.cpp index 0e3742c..7f3721b 100644 --- a/src/fig/FIGCarousel.cpp +++ b/src/fig/FIGCarousel.cpp @@ -32,8 +32,12 @@ /**************** FIGCarouselElement ****************/ void FIGCarouselElement::reduce_deadline() { -#error "Wrong: deadline should decrement identically for all FIGs" - deadline -= rate_increment_ms(fig->repetition_rate()); + deadline -= 24; //ms +} + +void FIGCarouselElement::increase_deadline() +{ + deadline += rate_increment_ms(fig->repetition_rate()); std::cerr << "FIG " << fig->name() << " deadline: " << deadline << std::endl; @@ -102,7 +106,7 @@ size_t FIGCarousel::fib0(uint8_t *buf, size_t bufsize, int framephase) { std::vector sorted_figs; - /* Decrement all deadlines according to the desired repetition rate */ + /* Decrement all deadlines */ for (auto& fig_el : figs) { fig_el.reduce_deadline(); @@ -154,6 +158,8 @@ size_t FIGCarousel::fib0(uint8_t *buf, size_t bufsize, int framephase) { if (written > 0) { available_size -= written; buf += written; + + fig_el->increase_deadline(); } sorted_figs.erase(fig_el); diff --git a/src/fig/FIGCarousel.h b/src/fig/FIGCarousel.h index e823bef..f65bd81 100644 --- a/src/fig/FIGCarousel.h +++ b/src/fig/FIGCarousel.h @@ -38,9 +38,11 @@ struct FIGCarouselElement { IFIG* fig; - int deadline; + int deadline; // unit: ms void reduce_deadline(void); + + void increase_deadline(void); }; class FIGCarousel { -- cgit v1.2.3