diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/element_impl.hpp | 13 | ||||
-rw-r--r-- | lib/top_block.cpp | 20 |
2 files changed, 28 insertions, 5 deletions
diff --git a/lib/element_impl.hpp b/lib/element_impl.hpp index ffdb171..f09ddc8 100644 --- a/lib/element_impl.hpp +++ b/lib/element_impl.hpp @@ -25,8 +25,17 @@ #include <gr_types.h> #include <vector> -static const int STATE_INERT = 0; -static const int STATE_ACTIVE = 1; +struct TopBlockUpdateEvent +{ + enum + { + UPDATE, + ACTIVE, + INERT, + HINT, + } state; + size_t hint; +}; static inline int mylround(double x) { diff --git a/lib/top_block.cpp b/lib/top_block.cpp index 62cc3d2..0fade0d 100644 --- a/lib/top_block.cpp +++ b/lib/top_block.cpp @@ -34,17 +34,31 @@ TopBlock::TopBlock(const std::string &name): void TopBlock::update(void) { - (*this)->executor.update(); + TopBlockUpdateEvent event; + event.state = TopBlockUpdateEvent::UPDATE; + (*this)->executor.update(event); +} + +void TopBlock::set_buffer_hint(const size_t hint) +{ + TopBlockUpdateEvent event; + event.state = TopBlockUpdateEvent::HINT; + event.hint = hint; + (*this)->executor.update(event); } void TopBlock::start(void) { - (*this)->executor.set_state(STATE_ACTIVE); + TopBlockUpdateEvent event; + event.state = TopBlockUpdateEvent::ACTIVE; + (*this)->executor.update(event); } void TopBlock::stop(void) { - (*this)->executor.set_state(STATE_INERT); + TopBlockUpdateEvent event; + event.state = TopBlockUpdateEvent::INERT; + (*this)->executor.update(event); } void TopBlock::wait(void) |