diff options
Diffstat (limited to 'src/fig')
-rw-r--r-- | src/fig/FIG0.cpp | 1 | ||||
-rw-r--r-- | src/fig/FIGCarousel.cpp | 12 | ||||
-rw-r--r-- | src/fig/FIGCarousel.h | 4 |
3 files changed, 12 insertions, 5 deletions
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<FIGCarouselElement> 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 { |