VectorNav C++ Library
port.h
1 #ifndef _VN_XPLAT_PORT_H_
2 #define _VN_XPLAT_PORT_H_
3 
4 #include <cstddef>
5 
6 #include "export.h"
7 
8 namespace vn {
9 namespace xplat {
10 
12 class vn_proglib_DLLEXPORT IPort
13 {
14 
15  // Types //////////////////////////////////////////////////////////////////
16 
17 public:
18 
24  typedef void(*DataReceivedHandler)(void* userData);
25 
26  // Public Methods /////////////////////////////////////////////////////////
27 
28 public:
29 
30  virtual ~IPort() = 0;
31 
33  virtual void open() = 0;
34 
36  virtual void close() = 0;
37 
41  virtual bool isOpen() = 0;
42 
47  virtual void write(const char data[], size_t length) = 0;
48 
56  virtual void read(char dataBuffer[], size_t numOfBytesToRead, size_t &numOfBytesActuallyRead) = 0;
57 
64  virtual void registerDataReceivedHandler(void* userData, DataReceivedHandler handler) = 0;
65 
67  virtual void unregisterDataReceivedHandler() = 0;
68 
69  #if PYTHON && !PL156_ORIGINAL && !PL156_FIX_ATTEMPT_1
70 
71  virtual void stopThread(){}
72  virtual bool threadStopped(){ return false; }
73  virtual void resumeThread(){}
74 
75  #endif
76 
77 };
78 
79 }
80 }
81 
82 #endif
Interface for a simple port.
Definition: port.h:12
Definition: mock.h:4
Definition: attitude.h:8