Skip to content

Commit c2eb7ea

Browse files
author
Ананьев Александр
committed
Merge remote-tracking branch 'origin/dev'
2 parents d8f2216 + ad6c725 commit c2eb7ea

115 files changed

Lines changed: 11210 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# C++ objects and libs
2+
*.slo
3+
*.lo
4+
*.o
5+
*.a
6+
*.la
7+
*.lai
8+
*.so
9+
*.dll
10+
*.lib
11+
*.exe
12+
13+
# Qt-es
14+
object_script.*.Release
15+
object_script.*.Debug
16+
*_plugin_import.cpp
17+
/.qmake.cache
18+
/.qmake.stash
19+
/.qtc_clangd
20+
*.pro.user
21+
*.pro.user.*
22+
*.qbs.user
23+
*.qbs.user.*
24+
*.moc
25+
moc_*.cpp
26+
moc_*.h
27+
qrc_*.cpp
28+
ui_*.h
29+
*.qmlc
30+
*.jsc
31+
Makefile*
32+
*build-*
33+
debug
34+
release
35+
36+
# Qt unit tests
37+
target_wrapper.*
38+
39+
# QtCreator
40+
*.autosave
41+
.qtc_clangd
42+
43+
# QtCreator Qml
44+
*.qmlproject.user
45+
*.qmlproject.user.*
46+
47+
# QtCreator CMake
48+
CMakeLists.txt.user*
49+
50+
.directory
51+
*.bat
52+
*.qmake.stash
53+
*.idx
54+
*.rc
55+
*.qtds

omodsim/connectiondetails.h

Lines changed: 309 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,309 @@
1+
#ifndef CONNECTIONDETAILS_H
2+
#define CONNECTIONDETAILS_H
3+
4+
#include <QHostAddress>
5+
#include <QSerialPort>
6+
#include <QModbusDevice>
7+
#include <QDataStream>
8+
#include <QSettings>
9+
#include "enums.h"
10+
11+
///
12+
/// \brief The TcpConnectionParams class
13+
///
14+
struct TcpConnectionParams
15+
{
16+
quint16 ServicePort = 502;
17+
const QString IPAddress = "0.0.0.0";
18+
19+
void normalize()
20+
{
21+
ServicePort = qMax<quint16>(1, ServicePort);
22+
}
23+
24+
TcpConnectionParams& operator=(const TcpConnectionParams& params)
25+
{
26+
ServicePort = params.ServicePort;
27+
return *this;
28+
}
29+
30+
friend bool operator==(const TcpConnectionParams& params1, const TcpConnectionParams& params2) noexcept
31+
{
32+
return params1.ServicePort == params2.ServicePort && params1.IPAddress == params2.IPAddress;
33+
}
34+
};
35+
Q_DECLARE_METATYPE(TcpConnectionParams)
36+
37+
///
38+
/// \brief operator <<
39+
/// \param out
40+
/// \param params
41+
/// \return
42+
///
43+
inline QDataStream& operator <<(QDataStream& out, const TcpConnectionParams& params)
44+
{
45+
out << params.ServicePort;
46+
return out;
47+
}
48+
49+
///
50+
/// \brief operator >>
51+
/// \param in
52+
/// \param params
53+
/// \return
54+
///
55+
inline QDataStream& operator >>(QDataStream& in, TcpConnectionParams& params)
56+
{
57+
in >> params.ServicePort;
58+
params.normalize();
59+
return in;
60+
}
61+
62+
///
63+
/// \brief operator <<
64+
/// \param out
65+
/// \param params
66+
/// \return
67+
///
68+
inline QSettings& operator <<(QSettings& out, const TcpConnectionParams& params)
69+
{
70+
out.setValue("TcpParams/ServicePort", params.ServicePort);
71+
return out;
72+
}
73+
74+
///
75+
/// \brief operator >>
76+
/// \param in
77+
/// \param params
78+
/// \return
79+
///
80+
inline QSettings& operator >>(QSettings& in, TcpConnectionParams& params)
81+
{
82+
params.ServicePort = in.value("TcpParams/ServicePort", 502).toUInt();
83+
params.normalize();
84+
return in;
85+
}
86+
87+
///
88+
/// \brief The SerialConnectionParams class
89+
///
90+
struct SerialConnectionParams
91+
{
92+
QString PortName;
93+
QSerialPort::BaudRate BaudRate = QSerialPort::Baud9600;
94+
QSerialPort::DataBits WordLength = QSerialPort::Data8;
95+
QSerialPort::Parity Parity = QSerialPort::NoParity;
96+
QSerialPort::StopBits StopBits = QSerialPort::OneStop;
97+
QSerialPort::FlowControl FlowControl = QSerialPort::NoFlowControl;
98+
bool SetDTR = true;
99+
bool SetRTS = true;
100+
101+
void normalize()
102+
{
103+
BaudRate = qBound(QSerialPort::Baud1200, BaudRate, QSerialPort::Baud115200);
104+
WordLength = qBound(QSerialPort::Data5, WordLength, QSerialPort::Data8);
105+
Parity = qBound(QSerialPort::NoParity, Parity, QSerialPort::MarkParity);
106+
FlowControl = qBound(QSerialPort::NoFlowControl, FlowControl, QSerialPort::SoftwareControl);
107+
}
108+
109+
SerialConnectionParams& operator=(const SerialConnectionParams& params)
110+
{
111+
PortName = params.PortName;
112+
BaudRate = params.BaudRate;
113+
WordLength = params.WordLength;
114+
Parity = params.Parity;
115+
StopBits = params.StopBits;
116+
FlowControl = params.FlowControl;
117+
SetDTR = params.SetDTR;
118+
SetRTS = params.SetRTS;
119+
return *this;
120+
}
121+
122+
friend bool operator==(const SerialConnectionParams& params1, const SerialConnectionParams& params2) noexcept
123+
{
124+
return params1.PortName == params2.PortName &&
125+
params1.BaudRate == params2.BaudRate &&
126+
params1.WordLength == params2.WordLength &&
127+
params1.Parity == params2.Parity &&
128+
params1.StopBits == params2.StopBits &&
129+
params1.FlowControl == params2.FlowControl &&
130+
params1.SetDTR == params2.SetDTR &&
131+
params1.SetRTS == params2.SetRTS;
132+
}
133+
};
134+
Q_DECLARE_METATYPE(SerialConnectionParams)
135+
136+
///
137+
/// \brief operator <<
138+
/// \param out
139+
/// \param params
140+
/// \return
141+
///
142+
inline QDataStream& operator <<(QDataStream& out, const SerialConnectionParams& params)
143+
{
144+
out << params.PortName;
145+
out << params.BaudRate;
146+
out << params.WordLength;
147+
out << params.Parity;
148+
out << params.StopBits;
149+
out << params.FlowControl;
150+
out << params.SetDTR;
151+
out << params.SetRTS;
152+
153+
return out;
154+
}
155+
156+
///
157+
/// \brief operator >>
158+
/// \param in
159+
/// \param params
160+
/// \return
161+
///
162+
inline QDataStream& operator >>(QDataStream& in, SerialConnectionParams& params)
163+
{
164+
in >> params.PortName;
165+
in >> params.BaudRate;
166+
in >> params.WordLength;
167+
in >> params.Parity;
168+
in >> params.StopBits;
169+
in >> params.FlowControl;
170+
in >> params.SetDTR;
171+
in >> params.SetRTS;
172+
173+
params.normalize();
174+
return in;
175+
}
176+
177+
///
178+
/// \brief operator <<
179+
/// \param out
180+
/// \param params
181+
/// \return
182+
///
183+
inline QSettings& operator <<(QSettings& out, const SerialConnectionParams& params)
184+
{
185+
out.setValue("SerialParams/PortName", params.PortName);
186+
out.setValue("SerialParams/BaudRate", params.BaudRate);
187+
out.setValue("SerialParams/WordLength", params.WordLength);
188+
out.setValue("SerialParams/Parity", params.Parity);
189+
out.setValue("SerialParams/FlowControl", params.FlowControl);
190+
out.setValue("SerialParams/DTR", params.SetDTR);
191+
out.setValue("SerialParams/RTS", params.SetRTS);
192+
193+
return out;
194+
}
195+
196+
///
197+
/// \brief operator >>
198+
/// \param in
199+
/// \param params
200+
/// \return
201+
///
202+
inline QSettings& operator >>(QSettings& in, SerialConnectionParams& params)
203+
{
204+
params.PortName = in.value("SerialParams/PortName").toString();
205+
params.BaudRate = (QSerialPort::BaudRate)in.value("SerialParams/BaudRate", 9600).toUInt();
206+
params.WordLength = (QSerialPort::DataBits)in.value("SerialParams/WordLength", 8).toUInt();
207+
params.Parity = (QSerialPort::Parity)in.value("SerialParams/Parity", 0).toUInt();
208+
params.FlowControl = (QSerialPort::FlowControl)in.value("SerialParams/FlowControl", 0).toUInt();
209+
params.SetDTR = in.value("SerialParams/DTR", false).toBool();
210+
params.SetRTS = in.value("SerialParams/RTS", false).toBool();
211+
212+
params.normalize();
213+
return in;
214+
}
215+
216+
///
217+
/// \brief The ConnectionDetails class
218+
///
219+
struct ConnectionDetails
220+
{
221+
ConnectionType Type = ConnectionType::Tcp;
222+
TcpConnectionParams TcpParams;
223+
SerialConnectionParams SerialParams;
224+
225+
ConnectionDetails& operator=(const ConnectionDetails& cd) noexcept
226+
{
227+
Type = cd.Type;
228+
TcpParams = cd.TcpParams;
229+
SerialParams = cd.SerialParams;
230+
return *this;
231+
}
232+
233+
friend bool operator==(const ConnectionDetails& cd1, const ConnectionDetails& cd2) noexcept
234+
{
235+
switch(cd1.Type)
236+
{
237+
case ConnectionType::Tcp:
238+
return cd2.Type == ConnectionType::Tcp && cd1.TcpParams == cd2.TcpParams;
239+
240+
case ConnectionType::Serial:
241+
return cd2.Type == ConnectionType::Serial && cd1.SerialParams == cd2.SerialParams;
242+
}
243+
244+
return false;
245+
}
246+
};
247+
Q_DECLARE_METATYPE(ConnectionDetails)
248+
249+
///
250+
/// \brief operator <<
251+
/// \param out
252+
/// \param params
253+
/// \return
254+
///
255+
inline QDataStream& operator <<(QDataStream& out, const ConnectionDetails& params)
256+
{
257+
out << params.Type;
258+
out << params.TcpParams;
259+
out << params.SerialParams;
260+
261+
return out;
262+
}
263+
264+
///
265+
/// \brief operator >>
266+
/// \param in
267+
/// \param params
268+
/// \return
269+
///
270+
inline QDataStream& operator >>(QDataStream& in, ConnectionDetails& params)
271+
{
272+
in >> params.Type;
273+
in >> params.TcpParams;
274+
in >> params.SerialParams;
275+
276+
return in;
277+
}
278+
279+
///
280+
/// \brief operator <<
281+
/// \param out
282+
/// \param params
283+
/// \return
284+
///
285+
inline QSettings& operator <<(QSettings& out, const ConnectionDetails& params)
286+
{
287+
out.setValue("ConnectionParams/Type", (uint)params.Type);
288+
out << params.TcpParams;
289+
out << params.SerialParams;
290+
291+
return out;
292+
}
293+
294+
///
295+
/// \brief operator >>
296+
/// \param in
297+
/// \param params
298+
/// \return
299+
///
300+
inline QSettings& operator >>(QSettings& in, ConnectionDetails& params)
301+
{
302+
params.Type = (ConnectionType)in.value("ConnectionParams/Type", 0).toUInt();
303+
in >> params.TcpParams;
304+
in >> params.SerialParams;
305+
306+
return in;
307+
}
308+
309+
#endif // CONNECTIONDETAILS_H
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#include "booleancombobox.h"
2+
3+
///
4+
/// \brief BooleanComboBox::BooleanComboBox
5+
/// \param parent
6+
///
7+
BooleanComboBox::BooleanComboBox(QWidget* parent)
8+
:QComboBox(parent)
9+
{
10+
addItem("Disable", false);
11+
addItem("Enable", true);
12+
}
13+
14+
///
15+
/// \brief BooleanComboBox::currentValue
16+
/// \return
17+
///
18+
bool BooleanComboBox::currentValue() const
19+
{
20+
return currentData().value<bool>();
21+
}
22+
23+
///
24+
/// \brief BooleanComboBox::setCurrentValue
25+
/// \param value
26+
///
27+
void BooleanComboBox::setCurrentValue(bool value)
28+
{
29+
const auto idx = findData(value);
30+
setCurrentIndex(idx);
31+
}

0 commit comments

Comments
 (0)