summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/element_impl.hpp13
-rw-r--r--lib/top_block.cpp20
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)