ConnectionConfig.h
2.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#pragma once
#include <string>
#include <unordered_map>
enum class ConnectionPort : unsigned int
{
CP_EXTERNAL = 0,
CP_IOBUS,
CP_TCP
};
enum class Parity : unsigned int
{
PAR_ODD,
PAR_EVEN,
PAR_NONE
};
enum class ConnectionType : unsigned int
{
CT_SERIAL,
CT_TCP,
CT_UNKNOWN
};
class ConnectionConfig
{
public:
ConnectionConfig( ConnectionPort port, int baud = 115200, Parity parity = Parity::PAR_NONE, int dataBits = 8, int stopBits = 1, int timeOut = -1 )
: m_port( port )
, m_baudRate( baud )
, m_parity( parity )
, m_dataBits( dataBits )
, m_stopBits( stopBits )
, m_ipaddress()
, m_portnumber( -1 )
, m_timeOut( timeOut )
{}
ConnectionConfig( ConnectionPort port, const std::string &ip, int portnum, int timeOut = -1 )
: m_port( port )
, m_baudRate( -1 )
, m_parity( Parity::PAR_NONE )
, m_dataBits( -1 )
, m_stopBits( -1 )
, m_ipaddress( ip )
, m_portnumber( portnum )
, m_timeOut( timeOut )
{}
// Getters and Setters. Implemented to avoid outside meddling on the member variables.
ConnectionType getType() const { return m_conType; }
std::string getPort() const { return m_portMap.at(m_port); }
int getBaudRate() const { return m_baudRate; }
char getParity() const { return m_parityMap.at(m_parity); }
int getDataBits() const { return m_dataBits; }
int getStopBits() const { return m_stopBits; }
std::string getIpAddress() const { return m_ipaddress; }
int getTcpPort() const { return m_portnumber; }
int getTimeOut() const { return m_timeOut; }
private:
ConnectionType m_conType;
/// Serial connections
ConnectionPort m_port;
int m_baudRate;
Parity m_parity;
int m_dataBits;
int m_stopBits;
/// TCP connections
std::string m_ipaddress;
int m_portnumber;
/// Generic
int m_timeOut;
std::unordered_map<ConnectionPort, std::string> m_portMap =
{
{ ConnectionPort::CP_EXTERNAL, "/dev/ttyUSB0" },
{ ConnectionPort::CP_IOBUS, "/dev/ttyUSB1" }
};
std::unordered_map<Parity, char> m_parityMap =
{
{ Parity::PAR_EVEN, 'E' },
{ Parity::PAR_ODD, 'O' },
{ Parity::PAR_NONE, 'N' }
};
};