Use EventReader in Serial as well
authorMikko Rasa <tdb@tdb.fi>
Mon, 13 Jun 2011 14:42:49 +0000 (17:42 +0300)
committerMikko Rasa <tdb@tdb.fi>
Mon, 13 Jun 2011 14:42:49 +0000 (17:42 +0300)
source/io/serial.cpp
source/io/serial.h

index 74af366856cd6ceaf99866e00d977e2108c1803c..5d335b6faa82e0226c043d14ba3a158e8a84d8ae 100644 (file)
@@ -149,7 +149,8 @@ void set_stop_bits(DeviceState &state, unsigned bits)
 namespace Msp {
 namespace IO {
 
-Serial::Serial(const string &descr)
+Serial::Serial(const string &descr):
+       reader(handle, 1024)
 {
        string::size_type comma = descr.find(',');
        string port = descr.substr(0, comma);
@@ -291,16 +292,7 @@ unsigned Serial::do_read(char *buf, unsigned size)
        if(size==0)
                return 0;
 
-       return sys_read(handle, buf, size);
-}
-
-const Handle &Serial::get_event_handle()
-{
-#ifdef WIN32
-       throw logic_error("Serial port events not supported on win32 yet");
-#else
-       return handle;
-#endif
+       return reader.read(buf, size);
 }
 
 } // namespace IO
index 98b16674b464d098f7c051e72b5837c68d1fa797..39ca27ab78a4e97b353e88b3ab419f9f2e8ff426 100644 (file)
@@ -2,6 +2,7 @@
 #define MSP_IO_SERIAL_H_
 
 #include "eventobject.h"
+#include "eventreader.h"
 #include "handle.h"
 
 namespace Msp {
@@ -19,6 +20,7 @@ public:
 
 private:
        Handle handle;
+       EventReader reader;
 
 public:
        Serial(const std::string &);
@@ -41,7 +43,7 @@ private:
        virtual unsigned do_read(char *, unsigned);
 
 public:
-       virtual const Handle &get_event_handle();
+       virtual const Handle &get_event_handle() { return reader.get_event(); }
 };
 
 } // namespace IO