1 #ifndef IODRIVERS_BASE_DRIVER_HH 2 #define IODRIVERS_BASE_DRIVER_HH 10 #include <iodrivers_base/Status.hpp> 11 #include <iodrivers_base/Exceptions.hpp> 31 if (fd != -1) close(fd);
35 int get()
const {
return fd; }
75 static const int INVALID_FD = -1;
79 uint8_t* internal_buffer;
81 size_t internal_buffer_size;
129 std::pair<int, bool> readPacketInternal(uint8_t* buffer,
int bufsize);
144 std::pair<uint8_t const*, int> findPacket(uint8_t
const* buffer,
int buffer_size)
const;
149 std::pair<int, bool> extractPacketFromInternalBuffer(uint8_t* buffer,
int out_buffer_size);
155 int doPacketExtraction(uint8_t* buffer);
159 void openIPClient(std::string
const& hostname,
int port, addrinfo
const& hints);
169 Driver(
int max_packet_size,
bool extract_last =
false);
176 void setReadTimeout(base::Time
const& t);
179 base::Time getReadTimeout()
const;
184 void setWriteTimeout(base::Time
const& t);
187 base::Time getWriteTimeout()
const;
216 void setExtractLastPacket(
bool flag);
222 bool getExtractLastPacket()
const;
233 virtual void openURI(std::string
const& uri);
240 bool openInet(
const char *hostname,
int port);
245 void openTCP(std::string
const& hostname,
int port);
255 void openUDP(std::string
const& hostname,
int remote_port);
264 void openUDPBidirectional(std::string
const& hostname,
int out_port,
int in_port);
275 bool openSerial(std::string
const& port,
int baudrate);
280 void openFile(std::string
const& path);
286 static int openSerialIO(std::string
const& port,
int baudrate);
294 static bool setNonBlockingFlag(
int fd);
303 void setFileDescriptor(
int fd,
bool auto_close =
true);
308 int getFileDescriptor()
const;
311 bool isValid()
const;
320 SERIAL_19200 = 19200,
321 SERIAL_38400 = 38400,
322 SERIAL_57600 = 57600,
323 SERIAL_115200 = 115200,
324 SERIAL_230400 = 230400,
325 SERIAL_460800 = 460800,
326 SERIAL_576000 = 576000,
327 SERIAL_921600 = 921600,
328 SERIAL_1152000 = 1152000
336 bool setSerialBaudrate(
int rate);
343 static bool setSerialBaudrate(
int fd,
int rate);
346 virtual void close();
349 bool hasPacket()
const;
356 int readPacket(uint8_t* buffer,
int bufsize);
362 int readPacket(uint8_t* buffer,
int bufsize, base::Time
const& packet_timeout);
369 int readPacket(uint8_t* buffer,
int bufsize,
int packet_timeout,
int first_byte_timeout = -1);
389 int readPacket(uint8_t* buffer,
int bufsize, base::Time
const& packet_timeout, base::Time
const& first_byte_timeout);
395 bool writePacket(uint8_t
const* buffer,
int bufsize);
399 bool writePacket(uint8_t
const* buffer,
int bufsize,
int timeout);
408 bool writePacket(uint8_t
const* buffer,
int bufsize, base::Time
const& timeout);
428 virtual int extractPacket(uint8_t
const* buffer,
size_t buffer_size)
const = 0;
436 void setMainStream(
IOStream* stream);
468 static std::string printable_com(std::string
const& buffer);
469 static std::string printable_com(uint8_t
const* buffer,
size_t buffer_size);
470 static std::string printable_com(
char const* buffer,
size_t buffer_size);
472 static std::string binary_com(std::string
const& str);
473 static std::string binary_com(uint8_t
const* str,
size_t str_size);
474 static std::string binary_com(
char const* str,
size_t str_size);
int release()
Definition: Driver.hpp:36
std::set< IOListener * > m_listeners
Definition: Driver.hpp:93
~FileGuard()
Definition: Driver.hpp:27
Definition: Driver.hpp:69
iodrivers_base::Status Statistics
Definition: Driver.hpp:73
int const MAX_PACKET_SIZE
Definition: Driver.hpp:84
bool m_extract_last
Definition: Driver.hpp:106
void reset(int new_fd=-1)
Definition: Driver.hpp:29
Definition: Driver.hpp:21
Definition: IOStream.hpp:19
base::Time m_read_timeout
Definition: Driver.hpp:112
FileGuard(int fd=-1)
Definition: Driver.hpp:25
Status getStats() const
Definition: Driver.hpp:206
Status m_stats
Definition: Driver.hpp:157
base::Time m_write_timeout
Definition: Driver.hpp:118
IOStream * m_stream
Definition: Driver.hpp:89
Definition: IOListener.hpp:12
SERIAL_RATES
Definition: Driver.hpp:314
void resetStats()
Definition: Driver.hpp:210
bool m_auto_close
Definition: Driver.hpp:99