diff --git a/examples/Threading/Demo_Source_Sink_Counter/Consumer.inot b/examples/Threading/Demo_Source_Sink_Counter/Consumer.inot index d892c67..b5c1fd6 100644 --- a/examples/Threading/Demo_Source_Sink_Counter/Consumer.inot +++ b/examples/Threading/Demo_Source_Sink_Counter/Consumer.inot @@ -7,5 +7,5 @@ void setup() void loop() { - Serial.println(counter.read()); + Serial.println(counter); } diff --git a/examples/Threading/Demo_Source_Sink_Counter/Producer.inot b/examples/Threading/Demo_Source_Sink_Counter/Producer.inot index fe0a250..a038d37 100644 --- a/examples/Threading/Demo_Source_Sink_Counter/Producer.inot +++ b/examples/Threading/Demo_Source_Sink_Counter/Producer.inot @@ -8,6 +8,6 @@ void setup() void loop() { static int i = 0; - counter.write(i); + counter = i; i++; } diff --git a/examples/Threading/Demo_Source_Sink_LED/Sink_Thread.inot b/examples/Threading/Demo_Source_Sink_LED/Sink_Thread.inot index 51f9031..14a9723 100644 --- a/examples/Threading/Demo_Source_Sink_LED/Sink_Thread.inot +++ b/examples/Threading/Demo_Source_Sink_LED/Sink_Thread.inot @@ -16,6 +16,5 @@ void loop() * this call will surely block until something comes from the connected SOURCE. In this case * the pace is dictated by the SOURCE that sends data every 100 ms. */ - bool led_on = led.read(); - digitalWrite(LED_BUILTIN, led_on); + digitalWrite(LED_BUILTIN, led); } diff --git a/examples/Threading/Demo_Source_Sink_LED/Source_Thread.inot b/examples/Threading/Demo_Source_Sink_LED/Source_Thread.inot index 1bf7fca..4585f85 100644 --- a/examples/Threading/Demo_Source_Sink_LED/Source_Thread.inot +++ b/examples/Threading/Demo_Source_Sink_LED/Source_Thread.inot @@ -8,8 +8,8 @@ void setup() void loop() { - led.write(true); + led = true; delay(100); - led.write(false); + led = false; delay(100); } diff --git a/src/threading/Sink.hpp b/src/threading/Sink.hpp index 40179a2..0d9c291 100644 --- a/src/threading/Sink.hpp +++ b/src/threading/Sink.hpp @@ -36,7 +36,7 @@ class SinkBase virtual ~SinkBase() { } - virtual T read() = 0; + virtual operator T() = 0; virtual void inject(T const & value) = 0; }; @@ -48,7 +48,7 @@ class SinkNonBlocking : public SinkBase SinkNonBlocking() { } virtual ~SinkNonBlocking() { } - virtual T read() override; + virtual operator T() override; virtual void inject(T const & value) override; @@ -67,7 +67,7 @@ class SinkBlocking : public SinkBase SinkBlocking(); virtual ~SinkBlocking() { } - virtual T read() override; + virtual operator T() override; virtual void inject(T const & value) override; @@ -86,7 +86,7 @@ class SinkBlocking : public SinkBase **************************************************************************************/ template -T SinkNonBlocking::read() +SinkNonBlocking::operator T() { _mutex.lock(); return _data; @@ -113,7 +113,7 @@ SinkBlocking::SinkBlocking() { } template -T SinkBlocking::read() +SinkBlocking::operator T() { _mutex.lock(); while (!_is_data_available) diff --git a/src/threading/Source.hpp b/src/threading/Source.hpp index 0a3893c..d75ac8c 100644 --- a/src/threading/Source.hpp +++ b/src/threading/Source.hpp @@ -43,7 +43,7 @@ class Source public: void connectTo(SinkBase & sink); - void write(T const & value); + void operator = (T const & other); private: std::list *> _sink_list; @@ -60,7 +60,7 @@ void Source::connectTo(SinkBase & sink) } template -void Source::write(T const & value) +void Source::operator = (T const & value) { std::for_each(std::begin(_sink_list), std::end (_sink_list),