tcp.hpp
Go to the documentation of this file.
1 #include "sick_scan/sick_scan_base.h" /* Base definitions included in all header files, added by add_sick_scan_base_header.py. Do not edit this line. */
2 //
3 // TCP.hpp
4 //
5 // Ethernet TCP data sender/receiver.
6 //
7 // Sick AG
8 //
9 // HISTORY
10 //
11 // 1.0.0 10.11.2011, VWi
12 // Initial version.
13 //
14 
15 
16 
17 #ifndef TCP_HPP
18 #define TCP_HPP
19 
22 #ifdef _MSC_VER
23 #include <winsock2.h>
24 #else
25 #include <sys/socket.h> /* for socket(), bind(), and connect() */
26 #include <arpa/inet.h> /* for sockaddr_in and inet_ntoa() */
27 #endif
28 #include "sick_scan/tcp/Mutex.hpp"
30 #include <list>
31 
32 
33 //
34 // Sender and receiver for data over a TCP connection. Client!
35 //
36 class Tcp
37 {
38 public:
39  Tcp();
40  ~Tcp();
41 
42  // Opens the connection.
43  bool open(std::string ipAddress, UINT16 port, bool enableVerboseDebugOutput = false);
44  bool open(UINT32 ipAddress, UINT16 port, bool enableVerboseDebugOutput = false);
45  void close(); // Closes the connection, if it was open.
46  bool isOpen(); // "True" if a connection is currently open.
47  bool write(UINT8* buffer, UINT32 numberOfBytes); // Writes numberOfBytes bytes to the open connection.
48  std::string readString(UINT8 delimiter); // Reads a string, if available. Strings are separated with the delimiter char.
49 
50  // Buffer read function (for polling)
51  UINT32 getNumReadableBytes(); // Returns the number of bytes currently available for reading.
52  UINT32 read(UINT8* buffer, UINT32 bufferLen); // Reads up to bufferLen bytes from the buffer.
53 
54  // Read callbacks (for being called when data is available)
55  typedef void (*ReadFunction)(void* obj, UINT8* inputBuffer, UINT32& numBytes); // ReadFunction
56  void setReadCallbackFunction(ReadFunction readFunction, void* obj);
57 
58  // Information if the connection is disconnected.
59  typedef void (*DisconnectFunction)(void* obj); // Called on disconnect
60  void setDisconnectCallbackFunction(DisconnectFunction discFunction, void* obj);
61 
62  uint64_t getNanosecTimestampLastTcpMessageReceived(void) { return m_last_tcp_msg_received_nsec; } // Returns a timestamp in nanoseconds of the last received tcp message (or 0 if no message received)
63 
64 private:
66  std::string m_rxString; // fuer readString()
68  std::list<unsigned char> m_rxBuffer; // Main input buffer
69  void closeSocket();
70  void stopReadThread();
71  void startServerThread();
72  void stopServerThread();
73 
74  struct sockaddr_in m_serverAddr; // Local address
77 #ifndef _MSC_VER
78  INT32 m_connectionSocket; // Socket, wenn wir der Client sind (z.B. Verbindung zum Scanner)
79 #else
80  SOCKET m_connectionSocket; // Socket, wenn wir der Client sind (z.B. Verbindung zum Scanner)
81 #endif
82  void readThreadFunction(bool& endThread, UINT16& waitTimeMs);
85 
86  ReadFunction m_readFunction; // Receive callback
87  void* m_readFunctionObjPtr; // Object of the Receive callback
89  void* m_disconnectFunctionObjPtr; // Object of the Disconect callback
90 
91  uint64_t m_last_tcp_msg_received_nsec; // timestamp in nanoseconds of the last received tcp message (or 0 if no message received)
92 };
93 
94 #endif // TCP_HPP
Tcp::isClientConnected_unlocked
bool isClientConnected_unlocked()
UINT16
uint16_t UINT16
Definition: BasicDatatypes.hpp:73
UINT8
uint8_t UINT8
Definition: BasicDatatypes.hpp:75
Tcp::isOpen
bool isOpen()
Definition: tcp.cpp:107
SOCKET
int SOCKET
Definition: udp_sockets.h:81
Tcp::m_last_tcp_msg_received_nsec
uint64_t m_last_tcp_msg_received_nsec
Definition: tcp.hpp:91
Tcp::m_rxBuffer
std::list< unsigned char > m_rxBuffer
Definition: tcp.hpp:68
BasicDatatypes.hpp
Tcp::getNumReadableBytes
UINT32 getNumReadableBytes()
Definition: tcp.cpp:441
Tcp::m_disconnectFunctionObjPtr
void * m_disconnectFunctionObjPtr
Definition: tcp.hpp:89
Tcp::DisconnectFunction
void(* DisconnectFunction)(void *obj)
Definition: tcp.hpp:59
Tcp::m_rxString
std::string m_rxString
Definition: tcp.hpp:66
Tcp::stopReadThread
void stopReadThread()
Definition: tcp.cpp:420
Tcp::ReadFunction
void(* ReadFunction)(void *obj, UINT8 *inputBuffer, UINT32 &numBytes)
Definition: tcp.hpp:55
Tcp::~Tcp
~Tcp()
Definition: tcp.cpp:46
INT32
int32_t INT32
Definition: BasicDatatypes.hpp:71
sick_ros_wrapper.h
Tcp::write
bool write(UINT8 *buffer, UINT32 numberOfBytes)
Definition: tcp.cpp:57
Tcp::setDisconnectCallbackFunction
void setDisconnectCallbackFunction(DisconnectFunction discFunction, void *obj)
Definition: tcp.cpp:94
Tcp::stopServerThread
void stopServerThread()
SickThread< Tcp, &Tcp::readThreadFunction >
Mutex.hpp
Tcp::m_readFunctionObjPtr
void * m_readFunctionObjPtr
Definition: tcp.hpp:87
Tcp::m_serverAddr
struct sockaddr_in m_serverAddr
Definition: tcp.hpp:74
Tcp::readString
std::string readString(UINT8 delimiter)
Definition: tcp.cpp:476
Mutex
Definition: Mutex.hpp:19
Tcp::m_longStringWarningPrinted
bool m_longStringWarningPrinted
Definition: tcp.hpp:65
Tcp::m_beVerbose
bool m_beVerbose
Definition: tcp.hpp:75
Tcp
Definition: tcp.hpp:36
Tcp::readInputData
INT32 readInputData()
Definition: tcp.cpp:263
Tcp::setReadCallbackFunction
void setReadCallbackFunction(ReadFunction readFunction, void *obj)
Definition: tcp.cpp:122
Tcp::m_readFunction
ReadFunction m_readFunction
Definition: tcp.hpp:86
Tcp::getNanosecTimestampLastTcpMessageReceived
uint64_t getNanosecTimestampLastTcpMessageReceived(void)
Definition: tcp.hpp:62
SickThread.hpp
Tcp::read
UINT32 read(UINT8 *buffer, UINT32 bufferLen)
Definition: tcp.cpp:455
sick_scan_base.h
Tcp::m_connectionSocket
INT32 m_connectionSocket
Definition: tcp.hpp:78
Tcp::startServerThread
void startServerThread()
UINT32
uint32_t UINT32
Definition: BasicDatatypes.hpp:72
Tcp::close
void close()
Definition: tcp.cpp:373
Tcp::m_socketMutex
Mutex m_socketMutex
Definition: tcp.hpp:76
Tcp::readThreadFunction
void readThreadFunction(bool &endThread, UINT16 &waitTimeMs)
Definition: tcp.cpp:229
Tcp::m_disconnectFunction
DisconnectFunction m_disconnectFunction
Definition: tcp.hpp:88
Tcp::Tcp
Tcp()
Definition: tcp.cpp:27
Tcp::closeSocket
void closeSocket()
Definition: tcp.cpp:400
Tcp::m_readThread
SickThread< Tcp, &Tcp::readThreadFunction > * m_readThread
Definition: tcp.hpp:83
Tcp::open
bool open(std::string ipAddress, UINT16 port, bool enableVerboseDebugOutput=false)
Definition: tcp.cpp:148


sick_scan_xd
Author(s): Michael Lehning , Jochen Sprickerhof , Martin Günther
autogenerated on Fri Oct 25 2024 02:47:12