BAOS SDK v2  1.2.1
An SDK providing access to IP-BAOS devices through BAOS binary protocol version 2.x
Loading...
Searching...
No Matches
BaosDeviceDataTypes.h
Go to the documentation of this file.
1//
2// Copyright (c) 2002-2026 WEINZIERL ENGINEERING GmbH
3// All rights reserved.
4//
5// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
6// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
8// SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY,
9// WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
10// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
11//
12
13#ifndef __BAOSLIB_INTERFACE_DATA_TYPES_H__
14#define __BAOSLIB_INTERFACE_DATA_TYPES_H__
15
16#include "baos/config.h"
17
21
22#include "BlockReader.h"
23
24#include "wzcpp/features/algorithm/append.h"
25#include "wzcpp/features/utils/ByteArray.h"
26#include "wzcpp/features/utils/Memory.h"
27
29#include <memory>
30#include <optional>
31#include <utility>
33
39namespace wz::baos
40{
41
48struct BAOSLIB_EXPORT DeviceStaticInfo
49{
50 wzcpp::SixByteArray hardwareType{0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
51 std::uint8_t hardwareVersion{0};
52 std::uint8_t firmwareVersion{0};
53 std::uint16_t manufactureCodeDevice{0};
54 wzcpp::SixByteArray serialNumber{0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
55 std::uint16_t maxBufferSize{0};
56 std::uint8_t binaryProtocolVersion{0};
57 std::uint8_t webServicesProtocolVersion{0};
58 std::uint8_t restServiceProtocolVersion{0};
59 wzcpp::SixByteArray macAddress{0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
60 std::uint8_t maxManagementClients{0};
61 std::uint8_t maxTunnellingClients{0};
62 std::uint8_t maxBaosUdpClients{0};
63 std::uint8_t maxBaosTcpClients{0};
64 std::uint16_t maxDatapoints{0};
65 std::uint16_t maxParameterBytes{0};
66
67 static constexpr std::array ids{
68 protocol::ServerItemId::HardwareType,
69 protocol::ServerItemId::HardwareVersion,
70 protocol::ServerItemId::ManufactureCodeDevice,
71 protocol::ServerItemId::SerialNumber,
72 protocol::ServerItemId::MaxBufferSize,
73 protocol::ServerItemId::BinaryProtocolVersion,
74 protocol::ServerItemId::WebServicesProtocolVersion,
75 protocol::ServerItemId::RestServiceProtocolVersion,
76 protocol::ServerItemId::MacAddress,
77 protocol::ServerItemId::MaxManagementClients,
78 protocol::ServerItemId::MaxTunnellingClients,
79 protocol::ServerItemId::MaxBaosUdpClients,
80 protocol::ServerItemId::MaxBaosTcpClients,
81 protocol::ServerItemId::MaxDatapoints,
82 protocol::ServerItemId::MaxParameterBytes};
83};
84
85
93struct BAOSLIB_EXPORT DeviceConfigInfo
94{
95 std::uint16_t manufactureCodeApp{0};
96 std::uint16_t applicationId{0};
98 std::uint8_t applicationVersion{0};
100 std::uint16_t lengthOfDescriptionString{0};
101 std::uint8_t baudrateItem{0};
102 std::uint16_t currentBufferSize{0};
103 bool indicationSetting{
104 false};
105 std::uint16_t individualAddress{0};
106 bool tunnellingEnabled{false};
107 bool baosBinaryEnabled{false};
108 bool baosWebEnabled{false};
109 bool baosRestEnabled{false};
110 bool httpFileEnabled{false};
111 bool searchRequestEnabled{false};
112 bool isStructured{false};
114 std::uint16_t configuredDatapoints{0};
115 std::string deviceFriendlyName;
116 std::uint16_t downloadCounter{0};
118 protocol::IpAssigmentMethod::dhcp};
120 std::array<std::uint8_t, 4> iPAddress;
122 std::array<std::uint8_t, 4> subnetMask;
123 std::array<std::uint8_t, 4>
126 std::int8_t SystemTimezoneOffset{0};
127 bool menuEnabled{false};
129 bool suspendEnabled{
130 false};
131 wzcpp::SixByteArray rfDomainAddress{
132 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
133 protocol::StatusFlagsSupported statusFlagsSupported{
134 0x0000};
135 static constexpr std::array ids{
136 protocol::ServerItemId::ManufactureCodeApp,
137 protocol::ServerItemId::ApplicationId,
138 protocol::ServerItemId::ApplicationVersion,
139 protocol::ServerItemId::LengthOfDescriptionString,
140 protocol::ServerItemId::BaudrateItem,
141 protocol::ServerItemId::CurrentBufferSize,
142 protocol::ServerItemId::IndicationSetting,
143 protocol::ServerItemId::IndividualAddress,
144 protocol::ServerItemId::TunnellingEnabled,
145 protocol::ServerItemId::BaosBinaryEnabled,
146 protocol::ServerItemId::BaosWebEnabled,
147 protocol::ServerItemId::BaosRestEnabled,
148 protocol::ServerItemId::HttpFileEnabled,
149 protocol::ServerItemId::SearchRequestEnabled,
150 protocol::ServerItemId::IsStructured,
151 protocol::ServerItemId::DeviceFriendlyName,
152 protocol::ServerItemId::ConfiguredDatapoints,
153 protocol::ServerItemId::DownloadCounter,
154 protocol::ServerItemId::IPAssignment,
155 protocol::ServerItemId::IPAddress,
156 protocol::ServerItemId::SubnetMask,
157 protocol::ServerItemId::DefaultGateway,
158 protocol::ServerItemId::TimeSinceResetUnit,
159 protocol::ServerItemId::SystemTimezoneOffset,
160 protocol::ServerItemId::MenuEnabled,
161 protocol::ServerItemId::SuspendEnabled,
162 protocol::ServerItemId::RFDomainAddress,
163 protocol::ServerItemId::StatusFlagsSupported};
164};
165
166
173struct BAOSLIB_EXPORT DeviceRuntimeInfo
174{
175 std::uint32_t timeSinceReset{0};
176 bool busConnected{false};
177 bool programmingMode{false};
178 std::uint8_t connectedManagementClients{0};
179 std::uint8_t connectedTunnellingClients{0};
180 std::uint8_t connectedBaosUdpClients{0};
181 std::uint8_t connectedBaosTcpClients{0};
184 0x0000};
185 static constexpr std::array ids{
186 protocol::ServerItemId::TimeSinceReset,
187 protocol::ServerItemId::BusConnected,
188 protocol::ServerItemId::ProgrammingMode,
189 protocol::ServerItemId::ConnectedManagementClients,
190 protocol::ServerItemId::ConnectedTunnellingClients,
191 protocol::ServerItemId::ConnectedBaosUdpClients,
192 protocol::ServerItemId::ConnectedBaosTcpClients,
193 protocol::ServerItemId::SystemTime,
194 protocol::ServerItemId::StatusFlags};
195};
196
207
208std::string BAOSLIB_EXPORT toString(const DatapointConfig& config);
209
210
211using DatapointConfigurations = std::map<std::uint16_t, DatapointConfig>;
213
215enum class ServerItemReadStrategy : std::uint8_t
216{
221 ALLATONCE
222};
223
231
232} // namespace wz::baos
233
234#endif // __BAOSLIB_INTERFACE_DATA_TYPES_H__
Code regarding a connection to a physical BAOS device.
Provides the structures for additional meta information regarding the various devices.
Global BAOS protocol defines and types.
Represents which status flags are supported by the device, serveritem 52.
Definition Defines.h:333
This structure represents the status flags provided by some BAOS devices server item ServerItemId::St...
Definition Defines.h:262
Global types and configuration for the whole SDK.
IpAssigmentMethod
An Ip device may have different methods for ip assigment.
Definition Defines.h:651
DPT
Enumeration value for the supported datapoint types( DPTs )
Definition Defines.h:173
TimeSinceResetUnit
The ServerItemId::TimeSinceResetUnit current unit for TimeSinceReset. This type gives those units a n...
Definition Defines.h:639
DatapointSize
Enum class representing the different datapoint lengths.
Definition Defines.h:148
Global BAOS sdk namespace.
Definition config.h:69
std::vector< std::uint8_t > Buffer
An alias type for a byte buffer.
Definition config.h:71
std::map< std::uint16_t, DatapointConfig > DatapointConfigurations
Definition BaosDeviceDataTypes.h:212
ServerItemReadStrategy
Strategy type on how to handle reading the serveritems.
Definition BaosDeviceDataTypes.h:216
@ ALLATONCE
Read from first to std::uint16_t Max serveritems.
Information about a datapoint object.
Definition BaosDeviceDataTypes.h:201
std::string desc
Definition BaosDeviceDataTypes.h:205
protocol::DatapointConfigFlags flags
Definition BaosDeviceDataTypes.h:203
protocol::DPT dpt
Definition BaosDeviceDataTypes.h:204
protocol::DatapointSize size
Definition BaosDeviceDataTypes.h:202
Configuration options for the cpp device class behaviour.
Definition BaosDeviceDataTypes.h:226
ServerItemReadStrategy siReadStrategy
How server items should be read.
Definition BaosDeviceDataTypes.h:229
bool blockReadEnabled
Read in blocks if the request is to larger to handle in one telegram.
Definition BaosDeviceDataTypes.h:228
bool cacheEnabled
Enable the caching of datapoint values and parameter bytes.
Definition BaosDeviceDataTypes.h:227
A collection of fields representing those serveritems which may change if the configuration of the de...
Definition BaosDeviceDataTypes.h:94
std::array< std::uint8_t, 4 > defaultGateway
If manual IP assigment is selected, this is the default gateway to be set in the device.
Definition BaosDeviceDataTypes.h:124
std::array< std::uint8_t, 4 > iPAddress
Definition BaosDeviceDataTypes.h:120
std::array< std::uint8_t, 4 > subnetMask
If manual IP assignment is selected, this is the subnet mask to set.
Definition BaosDeviceDataTypes.h:122
protocol::TimeSinceResetUnit timeSinceResetUnit
The unit in which timesincereset is represented.
Definition BaosDeviceDataTypes.h:125
std::string deviceFriendlyName
For IP devices the same as KNXnet/IP device friendly name.
Definition BaosDeviceDataTypes.h:115
A collection of fields representing those serveritems which may change during "normal" operation of t...
Definition BaosDeviceDataTypes.h:174
Buffer SystemTime
The system time of the device in seconds since 1.1.1970 0:00.
Definition BaosDeviceDataTypes.h:182
A collection of fields representing those serveritems which won't ever change in a device.
Definition BaosDeviceDataTypes.h:49
Struct for the communication flags of a datapoint. See KNX spec for more details.
Definition Defines.h:444