1// Copyright (C) 2015 basysKom GmbH, opensource@basyskom.com
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include "qopcuaaxisinformation.h"
5#include "qopcuaeuinformation.h"
6#include "qopcuarange.h"
7#include "qopcualocalizedtext.h"
8
9QT_BEGIN_NAMESPACE
10
11/*!
12 \class QOpcUaAxisInformation
13 \inmodule QtOpcUa
14 \brief The OPC UA AxisInformation type.
15
16 This is the Qt OPC UA representation for the OPC UA AxisInformation type defined in OPC UA 1.05 part 8, 5.6.6.
17 It contains information about an axis which can be used for multiple purposes. A common use case could
18 involve the plotting of display data. The engineering units and the title are used for the text on the plot,
19 range, axisScaleType and axisSteps provide the scaling and the axis ranges of the plot.
20*/
21
22class QOpcUaAxisInformationData : public QSharedData
23{
24public:
25 QOpcUaEUInformation engineeringUnits;
26 QOpcUaRange eURange;
27 QOpcUaLocalizedText title;
28 QOpcUa::AxisScale axisScaleType{QOpcUa::AxisScale::Linear};
29 QList<double> axisSteps;
30};
31
32/*!
33 Default constructs an axis information with no parameters set.
34*/
35QOpcUaAxisInformation::QOpcUaAxisInformation()
36 : data(new QOpcUaAxisInformationData)
37{
38}
39
40/*!
41 Constructs axis information from \a rhs.
42*/
43QOpcUaAxisInformation::QOpcUaAxisInformation(const QOpcUaAxisInformation &rhs)
44 : data(rhs.data)
45{
46}
47
48/*!
49 Sets the values from \a rhs in this axis information.
50*/
51QOpcUaAxisInformation &QOpcUaAxisInformation::operator=(const QOpcUaAxisInformation &rhs)
52{
53 if (this != &rhs)
54 data.operator=(o: rhs.data);
55 return *this;
56}
57
58QOpcUaAxisInformation::~QOpcUaAxisInformation()
59{
60}
61
62/*!
63 Returns the lower and upper values of this axis.
64*/
65QOpcUaRange QOpcUaAxisInformation::eURange() const
66{
67 return data->eURange;
68}
69
70/*!
71 Sets the lower and upper values of this axis to \a eURange.
72*/
73void QOpcUaAxisInformation::setEURange(const QOpcUaRange &eURange)
74{
75 data->eURange = eURange;
76}
77
78/*!
79 Returns the title of this axis.
80*/
81QOpcUaLocalizedText QOpcUaAxisInformation::title() const
82{
83 return data->title;
84}
85
86/*!
87 Sets the title to \a title.
88*/
89void QOpcUaAxisInformation::setTitle(const QOpcUaLocalizedText &title)
90{
91 data->title = title;
92}
93
94/*!
95 Returns the scaling of this axis, defined by \l QOpcUa::AxisScale.
96*/
97QOpcUa::AxisScale QOpcUaAxisInformation::axisScaleType() const
98{
99 return data->axisScaleType;
100}
101
102/*!
103 Sets the axis scale type to \a axisScaleType.
104*/
105void QOpcUaAxisInformation::setAxisScaleType(QOpcUa::AxisScale axisScaleType)
106{
107 data->axisScaleType = axisScaleType;
108}
109
110/*!
111 Returns specific values for each axis step.
112
113 This value is empty if the points are equally distributed and the step size can be
114 calculated from the number of steps and the range.
115 If the steps are different for each point but constant over a longer time, there is an entry for
116 each data point.
117*/
118QList<double> QOpcUaAxisInformation::axisSteps() const
119{
120 return data->axisSteps;
121}
122
123/*!
124 Sets the axis steps to \a axisSteps.
125*/
126void QOpcUaAxisInformation::setAxisSteps(const QList<double> &axisSteps)
127{
128 data->axisSteps = axisSteps;
129}
130
131/*!
132 Returns a reference to the axis steps.
133*/
134QList<double> &QOpcUaAxisInformation::axisStepsRef()
135{
136 return data->axisSteps;
137}
138
139/*!
140 Returns the engineering units of this axis.
141*/
142QOpcUaEUInformation QOpcUaAxisInformation::engineeringUnits() const
143{
144 return data->engineeringUnits;
145}
146
147/*!
148 Sets the engineering units to \a engineeringUnits.
149*/
150void QOpcUaAxisInformation::setEngineeringUnits(const QOpcUaEUInformation &engineeringUnits)
151{
152 data->engineeringUnits = engineeringUnits;
153}
154
155/*!
156 Returns \c true if this axis information has the same value as \a rhs.
157*/
158bool QOpcUaAxisInformation::operator==(const QOpcUaAxisInformation &rhs) const
159{
160 return data->axisScaleType == rhs.axisScaleType() &&
161 data->axisSteps == rhs.axisSteps() &&
162 data->engineeringUnits == rhs.engineeringUnits() &&
163 data->eURange == rhs.eURange() &&
164 data->title == rhs.title();
165}
166
167/*!
168 Converts this axis information to \l QVariant.
169*/
170QOpcUaAxisInformation::operator QVariant() const
171{
172 return QVariant::fromValue(value: *this);
173}
174
175/*!
176 Constructs axis information with engineering units \a engineeringUnits,
177 range \a eURange, title \a title, scaling \a axisScaleType and axis steps \a axisSteps.
178*/
179QOpcUaAxisInformation::QOpcUaAxisInformation(const QOpcUaEUInformation &engineeringUnits, const QOpcUaRange &eURange, const QOpcUaLocalizedText &title,
180 const QOpcUa::AxisScale &axisScaleType, const QList<double> &axisSteps)
181 : data (new QOpcUaAxisInformationData)
182{
183 data->engineeringUnits = engineeringUnits;
184 data->eURange = eURange;
185 data->title = title;
186 data->axisScaleType = axisScaleType;
187 data->axisSteps = axisSteps;
188}
189
190QT_END_NAMESPACE
191

Provided by KDAB

Privacy Policy
Learn Advanced QML with KDAB
Find out more

source code of qtopcua/src/opcua/client/qopcuaaxisinformation.cpp