iodrivers_base
PortStream.hpp
Go to the documentation of this file.
1 #ifndef IODRIVERS_BASE_OROGEN_STREAM_HPP
2 #define IODRIVERS_BASE_OROGEN_STREAM_HPP
3 
4 #include <iodrivers_base/IOStream.hpp>
5 #include <iodrivers_base/IOListener.hpp>
6 #include <iodrivers_base/RawPacket.hpp>
7 #include <rtt/InputPort.hpp>
8 #include <rtt/OutputPort.hpp>
9 
10 namespace iodrivers_base {
11 
12 class PortStream : public IOStream
13 {
14  RTT::InputPort<RawPacket>& mIn;
15  RTT::OutputPort<RawPacket>& mOut;
16 
17  RawPacket mPacketRead;
18  RawPacket mPacketWrite;
19 
20 public:
21  PortStream(RTT::InputPort<RawPacket>& in,
22  RTT::OutputPort<RawPacket>& out);
23 
24  bool hasQueuedData();
25  void waitRead(base::Time const& timeout);
26  void waitWrite(base::Time const& timeout);
27  size_t read(uint8_t* buffer, size_t buffer_size);
28  size_t write(uint8_t const* buffer, size_t buffer_size);
29  void clear();
30 };
31 
32 class PortListener : public IOListener
33 {
34  RTT::OutputPort<RawPacket>& mOutRead;
35  RTT::OutputPort<RawPacket>& mOutWrite;
36  RawPacket mPacket;
37 
38 public:
39  PortListener(RTT::OutputPort<RawPacket>& out_read,
40  RTT::OutputPort<RawPacket>& out_write);
41 
42  void writeData(boost::uint8_t const* buffer, size_t buffer_size);
43  void readData(boost::uint8_t const* buffer, size_t buffer_size);
44 };
45 
46 }
47 
48 #endif
void waitRead(base::Time const &timeout)
Definition: PortStream.cpp:17
PortStream(RTT::InputPort< RawPacket > &in, RTT::OutputPort< RawPacket > &out)
Definition: PortStream.cpp:6
size_t write(uint8_t const *buffer, size_t buffer_size)
Definition: PortStream.cpp:63
Definition: RawPacket.hpp:9
Definition: RawPacket.hpp:7
bool hasQueuedData()
Definition: PortStream.cpp:9
Definition: PortStream.hpp:12
void waitWrite(base::Time const &timeout)
Definition: PortStream.cpp:44
size_t read(uint8_t *buffer, size_t buffer_size)
Definition: PortStream.cpp:48
Definition: PortStream.hpp:32
void clear()
Definition: PortStream.cpp:71