iodrivers_base
Bus.hpp
Go to the documentation of this file.
1 #ifndef IODRIVERS_BASE_BUS_HH
2 #define IODRIVERS_BASE_BUS_HH
3 
4 #include <iodrivers_base/Driver.hpp>
5 #include <list>
6 #include <inttypes.h>
7 #include <boost/thread/recursive_mutex.hpp>
8 
9 namespace iodrivers_base {
10 class Bus;
11 
18 class Parser{
19 public:
20  /*
21  * Give the Constructer the bus, which it belongs to
22  */
23  Parser(Bus *bus);
24  virtual ~Parser(){};
25 
32  virtual int readPacket(uint8_t* buffer, int buffer_size, int packet_timeout, int first_byte_timeout=-1);
36  virtual int extractPacket(uint8_t const* buffer, size_t buffer_size) const = 0;
40  bool writePacket(uint8_t const* buffer, int bufsize, int timeout);
41 protected:
42  Bus *bus;
43 };
44 
45 
52 class BusHandler : public Parser{
53 public:
57  BusHandler(Bus *bus, bool auto_register=true);
58  ~BusHandler();
59 
63  virtual void packedReady(uint8_t const* buffer, size_t size)=0;
64 
68  virtual int readPacket(uint8_t* buffer, int buffer_size, int packet_timeout, int first_byte_timeout=-1);
69 };
70 
71 
77 class Bus : public Driver{
78 public:
79  Bus(int max_packet_size, bool extract_last = false);
80  int readPacket(uint8_t* buffer, int buffer_size, int packet_timeout, int first_byte_timeout=-1, Parser *parser=0);
81  void addParser(Parser *parser);
82  void removeParser(Parser *parser);
83  int extractPacket(uint8_t const* buffer, size_t buffer_size) const;
84  bool writePacket(uint8_t const* buffer, int buffer_size, int timeout);
85 protected:
86  std::list<Parser*> parser;
88  boost::recursive_mutex mutex;
89 };
90 }
91 
92 #endif
93 
boost::recursive_mutex mutex
Definition: Bus.hpp:88
Parser * caller
Definition: Bus.hpp:87
Definition: Driver.hpp:69
Definition: Bus.hpp:52
Definition: Bus.hpp:77
virtual int readPacket(uint8_t *buffer, int buffer_size, int packet_timeout, int first_byte_timeout=-1)
Definition: Bus.cpp:13
Parser(Bus *bus)
Definition: Bus.cpp:8
Definition: Bus.hpp:9
virtual int extractPacket(uint8_t const *buffer, size_t buffer_size) const =0
Bus * bus
Definition: Bus.hpp:42
Definition: Bus.hpp:18
virtual ~Parser()
Definition: Bus.hpp:24
bool writePacket(uint8_t const *buffer, int bufsize, int timeout)
Definition: Bus.cpp:17
std::list< Parser * > parser
Definition: Bus.hpp:86