You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2021/05/07 09:05:53 UTC
[plc4x] branch develop updated: plc4go: fixed bug where parsing was
using the wrong types on content enums
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
The following commit(s) were added to refs/heads/develop by this push:
new 9425728 plc4go: fixed bug where parsing was using the wrong types on content enums
9425728 is described below
commit 942572885c1fdd18459bfded1b4b3ff9c04d4973
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri May 7 11:05:37 2021 +0200
plc4go: fixed bug where parsing was using the wrong types on content enums
+ Added a packet write test to s7Io_test.go (which discovered this bug)
---
.../resources/templates/go/enum-template.go.ftlh | 11 +
.../resources/templates/go/model-template.go.ftlh | 14 +-
.../plc4go/ads/readwrite/model/AdsDataType.go | 20 +
.../plc4go/ads/readwrite/model/CommandId.go | 2 +
.../ads/readwrite/model/ReservedIndexGroups.go | 2 +
.../plc4go/ads/readwrite/model/ReturnCode.go | 2 +
.../bacnetip/readwrite/model/ApplicationTag.go | 2 +
.../bacnetip/readwrite/model/BACnetNetworkType.go | 2 +
.../bacnetip/readwrite/model/BACnetNodeType.go | 2 +
.../bacnetip/readwrite/model/BACnetNotifyType.go | 2 +
.../bacnetip/readwrite/model/BACnetObjectType.go | 2 +
.../plc4go/eip/readwrite/model/CIPDataTypeCode.go | 11 +
.../plc4go/eip/readwrite/model/EiPCommand.go | 2 +
.../plc4go/firmata/readwrite/model/PinMode.go | 2 +
.../plc4go/knxnetip/readwrite/model/AccessLevel.go | 20 +
.../knxnetip/readwrite/model/CEMIPriority.go | 2 +
.../readwrite/model/ComObjectTableAddresses.go | 11 +
.../knxnetip/readwrite/model/ComObjectValueType.go | 11 +
.../knxnetip/readwrite/model/DeviceDescriptor.go | 20 +
.../readwrite/model/DeviceDescriptorMediumType.go | 2 +
.../knxnetip/readwrite/model/FirmwareType.go | 2 +
.../knxnetip/readwrite/model/HostProtocolCode.go | 2 +
.../readwrite/model/KnxDatapointMainType.go | 29 ++
.../knxnetip/readwrite/model/KnxDatapointType.go | 29 ++
.../readwrite/model/KnxInterfaceObjectProperty.go | 38 ++
.../readwrite/model/KnxInterfaceObjectType.go | 20 +
.../plc4go/knxnetip/readwrite/model/KnxLayer.go | 2 +
.../knxnetip/readwrite/model/KnxManufacturer.go | 20 +
.../plc4go/knxnetip/readwrite/model/KnxMedium.go | 2 +
.../readwrite/model/KnxPropertyDataType.go | 29 ++
.../plc4go/knxnetip/readwrite/model/Status.go | 2 +
.../readwrite/model/SupportedPhysicalMedia.go | 20 +
.../modbus/readwrite/model/ModbusDataType.go | 11 +
.../modbus/readwrite/model/ModbusErrorCode.go | 2 +
.../plc4go/s7/readwrite/model/COTPProtocolClass.go | 2 +
.../plc4go/s7/readwrite/model/COTPTpduSize.go | 11 +
.../s7/readwrite/model/DataTransportErrorCode.go | 2 +
.../plc4go/s7/readwrite/model/DataTransportSize.go | 11 +
.../plc4go/s7/readwrite/model/DeviceGroup.go | 2 +
.../plc4go/s7/readwrite/model/MemoryArea.go | 11 +
.../plc4go/s7/readwrite/model/S7AddressAny.go | 8 +-
.../s7/readwrite/model/SzlModuleTypeClass.go | 2 +
.../plc4go/s7/readwrite/model/SzlSublist.go | 2 +
.../plc4go/s7/readwrite/model/TransportSize.go | 101 +++++
plc4go/internal/plc4go/s7/s7Io_test.go | 467 ++++++++++++++++++++-
.../readwrite/model/SimulatedDataTypeSizes.go | 11 +
46 files changed, 976 insertions(+), 4 deletions(-)
diff --git a/build-utils/language-go/src/main/resources/templates/go/enum-template.go.ftlh b/build-utils/language-go/src/main/resources/templates/go/enum-template.go.ftlh
index 11a885a..d8d3907 100644
--- a/build-utils/language-go/src/main/resources/templates/go/enum-template.go.ftlh
+++ b/build-utils/language-go/src/main/resources/templates/go/enum-template.go.ftlh
@@ -50,6 +50,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -75,6 +76,7 @@ const(
var ${type.name}Values []${type.name}
func init() {
+ _ = errors.New
${type.name}Values = []${type.name} {
<#list type.enumValues as enumValue>
${type.name}_${enumValue.name},
@@ -110,6 +112,15 @@ func (e ${type.name}) ${constantName?cap_first}() ${helper.getLanguageTypeNameFo
}
}
}
+
+func ${type.name}FirstEnumForField${constantName?cap_first}(value ${helper.getLanguageTypeNameForTypeReference(type.getConstantType(constantName))}) (${type.name}, error) {
+ for _, sizeValue := range ${type.name}Values {
+ if sizeValue.${constantName?cap_first}() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v describing ${constantName?cap_first} not found", value)
+}
</#list>
</#if>
func ${type.name}ByValue(value <#if type.type?has_content>${helper.getLanguageTypeNameForTypeReference(type.type)}<#else>string</#if>) ${type.name} {
diff --git a/build-utils/language-go/src/main/resources/templates/go/model-template.go.ftlh b/build-utils/language-go/src/main/resources/templates/go/model-template.go.ftlh
index 1f29983..28a1edb 100644
--- a/build-utils/language-go/src/main/resources/templates/go/model-template.go.ftlh
+++ b/build-utils/language-go/src/main/resources/templates/go/model-template.go.ftlh
@@ -633,7 +633,7 @@ func ${type.name}Parse(readBuffer utils.ReadBuffer<#if type.parserArguments?has_
<#assign checksumField = field>
<#assign simpleTypeReference = checksumField.type>
- // Checksum Field (checksum)
+ // Checksum Field (checksum)
{
checksumRef, _checksumRefErr := ${helper.getReadBufferReadMethodCall("checksum", simpleTypeReference)}
if _checksumRefErr != nil {
@@ -682,11 +682,23 @@ func ${type.name}Parse(readBuffer utils.ReadBuffer<#if type.parserArguments?has_
if pullErr := readBuffer.PullContext("${enumField.name}"); pullErr != nil {
return nil, pullErr
}
+ <#if enumField.fieldName?has_content>
+ // Enum field (${enumField.name})
+ ${enumField.name}${enumField.fieldName?cap_first}, _${enumField.name}${enumField.fieldName?cap_first}Err := ${helper.getReadBufferReadMethodCall(enumField.type.name, helper.getEnumFieldSimpleTypeReference(enumField.type, enumField.fieldName))}
+ if _${enumField.name}${enumField.fieldName?cap_first}Err != nil {
+ return nil, errors.Wrap(_${enumField.name}${enumField.fieldName?cap_first}Err, "Error serializing '${enumField.name}' field")<@emitImport import="github.com/pkg/errors" />
+ }
+ ${enumField.name}, _${enumField.name}Err := ${helper.getLanguageTypeNameForField(field)}FirstEnumForField${enumField.fieldName?cap_first}(${enumField.name}${enumField.fieldName?cap_first})
+ if _${enumField.name}Err != nil {
+ return nil, errors.Wrap(_${enumField.name}Err, "Error serializing '${enumField.name}' field")<@emitImport import="github.com/pkg/errors" />
+ }
+ <#else>
// Enum field (${enumField.name})
${enumField.name}, _${enumField.name}Err := ${helper.getLanguageTypeNameForField(field)}Parse(readBuffer)
if _${enumField.name}Err != nil {
return nil, errors.Wrap(_${enumField.name}Err, "Error parsing '${enumField.name}' field")<@emitImport import="github.com/pkg/errors" />
}
+ </#if>
if closeErr := readBuffer.CloseContext("${enumField.name}"); closeErr != nil {
return nil, closeErr
}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsDataType.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsDataType.go
index b7c9e15..470eba1 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsDataType.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsDataType.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -79,6 +80,7 @@ const (
var AdsDataTypeValues []AdsDataType
func init() {
+ _ = errors.New
AdsDataTypeValues = []AdsDataType{
AdsDataType_BOOL,
AdsDataType_BIT,
@@ -292,6 +294,15 @@ func (e AdsDataType) NumBytes() uint16 {
}
}
+func AdsDataTypeFirstEnumForFieldNumBytes(value uint16) (AdsDataType, error) {
+ for _, sizeValue := range AdsDataTypeValues {
+ if sizeValue.NumBytes() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e AdsDataType) DataFormatName() string {
switch e {
case 0x01:
@@ -460,6 +471,15 @@ func (e AdsDataType) DataFormatName() string {
}
}
}
+
+func AdsDataTypeFirstEnumForFieldDataFormatName(value string) (AdsDataType, error) {
+ for _, sizeValue := range AdsDataTypeValues {
+ if sizeValue.DataFormatName() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
func AdsDataTypeByValue(value int8) AdsDataType {
switch value {
case 0x01:
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/CommandId.go b/plc4go/internal/plc4go/ads/readwrite/model/CommandId.go
index b106ae7..8c3a3e7 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/CommandId.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/CommandId.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -47,6 +48,7 @@ const (
var CommandIdValues []CommandId
func init() {
+ _ = errors.New
CommandIdValues = []CommandId{
CommandId_INVALID,
CommandId_ADS_READ_DEVICE_INFO,
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/ReservedIndexGroups.go b/plc4go/internal/plc4go/ads/readwrite/model/ReservedIndexGroups.go
index f4d5765..5c8ec16 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/ReservedIndexGroups.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/ReservedIndexGroups.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -67,6 +68,7 @@ const (
var ReservedIndexGroupsValues []ReservedIndexGroups
func init() {
+ _ = errors.New
ReservedIndexGroupsValues = []ReservedIndexGroups{
ReservedIndexGroups_ADSIGRP_SYMTAB,
ReservedIndexGroups_ADSIGRP_SYMNAME,
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/ReturnCode.go b/plc4go/internal/plc4go/ads/readwrite/model/ReturnCode.go
index 45b97d7..baefeb4 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/ReturnCode.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/ReturnCode.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -159,6 +160,7 @@ const (
var ReturnCodeValues []ReturnCode
func init() {
+ _ = errors.New
ReturnCodeValues = []ReturnCode{
ReturnCode_OK,
ReturnCode_INTERNAL_ERROR,
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go
index 18f805f..998c80b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -50,6 +51,7 @@ const (
var ApplicationTagValues []ApplicationTag
func init() {
+ _ = errors.New
ApplicationTagValues = []ApplicationTag{
ApplicationTag_NULL,
ApplicationTag_BOOLEAN,
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go
index c71a6f9..9e47761 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -48,6 +49,7 @@ const (
var BACnetNetworkTypeValues []BACnetNetworkType
func init() {
+ _ = errors.New
BACnetNetworkTypeValues = []BACnetNetworkType{
BACnetNetworkType_ETHERNET,
BACnetNetworkType_ARCNET,
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go
index 66d36d6..139faa2 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -59,6 +60,7 @@ const (
var BACnetNodeTypeValues []BACnetNodeType
func init() {
+ _ = errors.New
BACnetNodeTypeValues = []BACnetNodeType{
BACnetNodeType_UNKNOWN,
BACnetNodeType_SYSTEM,
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go
index 1b6472c..1ef9b6d 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -40,6 +41,7 @@ const (
var BACnetNotifyTypeValues []BACnetNotifyType
func init() {
+ _ = errors.New
BACnetNotifyTypeValues = []BACnetNotifyType{
BACnetNotifyType_ALARM,
BACnetNotifyType_EVENT,
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go
index 7a8e8df..075accc 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -96,6 +97,7 @@ const (
var BACnetObjectTypeValues []BACnetObjectType
func init() {
+ _ = errors.New
BACnetObjectTypeValues = []BACnetObjectType{
BACnetObjectType_ANALOG_INPUT,
BACnetObjectType_ANALOG_OUTPUT,
diff --git a/plc4go/internal/plc4go/eip/readwrite/model/CIPDataTypeCode.go b/plc4go/internal/plc4go/eip/readwrite/model/CIPDataTypeCode.go
index bc5ca2b..ead8b01 100644
--- a/plc4go/internal/plc4go/eip/readwrite/model/CIPDataTypeCode.go
+++ b/plc4go/internal/plc4go/eip/readwrite/model/CIPDataTypeCode.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -48,6 +49,7 @@ const (
var CIPDataTypeCodeValues []CIPDataTypeCode
func init() {
+ _ = errors.New
CIPDataTypeCodeValues = []CIPDataTypeCode{
CIPDataTypeCode_BOOL,
CIPDataTypeCode_SINT,
@@ -102,6 +104,15 @@ func (e CIPDataTypeCode) Size() uint8 {
}
}
}
+
+func CIPDataTypeCodeFirstEnumForFieldSize(value uint8) (CIPDataTypeCode, error) {
+ for _, sizeValue := range CIPDataTypeCodeValues {
+ if sizeValue.Size() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
func CIPDataTypeCodeByValue(value uint16) CIPDataTypeCode {
switch value {
case 0x00C1:
diff --git a/plc4go/internal/plc4go/eip/readwrite/model/EiPCommand.go b/plc4go/internal/plc4go/eip/readwrite/model/EiPCommand.go
index de76426..f7ac27c 100644
--- a/plc4go/internal/plc4go/eip/readwrite/model/EiPCommand.go
+++ b/plc4go/internal/plc4go/eip/readwrite/model/EiPCommand.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -40,6 +41,7 @@ const (
var EiPCommandValues []EiPCommand
func init() {
+ _ = errors.New
EiPCommandValues = []EiPCommand{
EiPCommand_RegisterSession,
EiPCommand_UnregisterSession,
diff --git a/plc4go/internal/plc4go/firmata/readwrite/model/PinMode.go b/plc4go/internal/plc4go/firmata/readwrite/model/PinMode.go
index ab8a378..8f7b955 100644
--- a/plc4go/internal/plc4go/firmata/readwrite/model/PinMode.go
+++ b/plc4go/internal/plc4go/firmata/readwrite/model/PinMode.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -49,6 +50,7 @@ const (
var PinModeValues []PinMode
func init() {
+ _ = errors.New
PinModeValues = []PinMode{
PinMode_PinModeInput,
PinMode_PinModeOutput,
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/AccessLevel.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/AccessLevel.go
index 7223bac..9e7f0b4 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/AccessLevel.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/AccessLevel.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -44,6 +45,7 @@ const (
var AccessLevelValues []AccessLevel
func init() {
+ _ = errors.New
AccessLevelValues = []AccessLevel{
AccessLevel_Level0,
AccessLevel_Level1,
@@ -82,6 +84,15 @@ func (e AccessLevel) Purpose() string {
}
}
+func AccessLevelFirstEnumForFieldPurpose(value string) (AccessLevel, error) {
+ for _, sizeValue := range AccessLevelValues {
+ if sizeValue.Purpose() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e AccessLevel) NeedsAuthentication() bool {
switch e {
case 0x0:
@@ -110,6 +121,15 @@ func (e AccessLevel) NeedsAuthentication() bool {
}
}
}
+
+func AccessLevelFirstEnumForFieldNeedsAuthentication(value bool) (AccessLevel, error) {
+ for _, sizeValue := range AccessLevelValues {
+ if sizeValue.NeedsAuthentication() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
func AccessLevelByValue(value uint8) AccessLevel {
switch value {
case 0x0:
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go
index de6b9b8..a70fc54 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -41,6 +42,7 @@ const (
var CEMIPriorityValues []CEMIPriority
func init() {
+ _ = errors.New
CEMIPriorityValues = []CEMIPriority{
CEMIPriority_SYSTEM,
CEMIPriority_NORMAL,
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableAddresses.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableAddresses.go
index 407ef26..fd216b2 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableAddresses.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableAddresses.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -1744,6 +1745,7 @@ const (
var ComObjectTableAddressesValues []ComObjectTableAddresses
func init() {
+ _ = errors.New
ComObjectTableAddressesValues = []ComObjectTableAddresses{
ComObjectTableAddresses_DEV0001914201,
ComObjectTableAddresses_DEV0001140C13,
@@ -10286,6 +10288,15 @@ func (e ComObjectTableAddresses) ComObjectTableAddress() uint16 {
}
}
}
+
+func ComObjectTableAddressesFirstEnumForFieldComObjectTableAddress(value uint16) (ComObjectTableAddresses, error) {
+ for _, sizeValue := range ComObjectTableAddressesValues {
+ if sizeValue.ComObjectTableAddress() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
func ComObjectTableAddressesByValue(value uint16) ComObjectTableAddresses {
switch value {
case 1:
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectValueType.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectValueType.go
index 2706e9a..d7da244 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectValueType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectValueType.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -53,6 +54,7 @@ const (
var ComObjectValueTypeValues []ComObjectValueType
func init() {
+ _ = errors.New
ComObjectValueTypeValues = []ComObjectValueType{
ComObjectValueType_BIT1,
ComObjectValueType_BIT2,
@@ -140,6 +142,15 @@ func (e ComObjectValueType) SizeInBytes() uint8 {
}
}
}
+
+func ComObjectValueTypeFirstEnumForFieldSizeInBytes(value uint8) (ComObjectValueType, error) {
+ for _, sizeValue := range ComObjectValueTypeValues {
+ if sizeValue.SizeInBytes() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
func ComObjectValueTypeByValue(value uint8) ComObjectValueType {
switch value {
case 0x00:
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptor.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptor.go
index 6dcf27e..c541dd1 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptor.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptor.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -68,6 +69,7 @@ const (
var DeviceDescriptorValues []DeviceDescriptor
func init() {
+ _ = errors.New
DeviceDescriptorValues = []DeviceDescriptor{
DeviceDescriptor_TP1_BCU_1_SYSTEM_1_0,
DeviceDescriptor_TP1_BCU_1_SYSTEM_1_1,
@@ -226,6 +228,15 @@ func (e DeviceDescriptor) FirmwareType() FirmwareType {
}
}
+func DeviceDescriptorFirstEnumForFieldFirmwareType(value FirmwareType) (DeviceDescriptor, error) {
+ for _, sizeValue := range DeviceDescriptorValues {
+ if sizeValue.FirmwareType() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e DeviceDescriptor) MediumType() DeviceDescriptorMediumType {
switch e {
case 0x0010:
@@ -350,6 +361,15 @@ func (e DeviceDescriptor) MediumType() DeviceDescriptorMediumType {
}
}
}
+
+func DeviceDescriptorFirstEnumForFieldMediumType(value DeviceDescriptorMediumType) (DeviceDescriptor, error) {
+ for _, sizeValue := range DeviceDescriptorValues {
+ if sizeValue.MediumType() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
func DeviceDescriptorByValue(value uint16) DeviceDescriptor {
switch value {
case 0x0010:
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptorMediumType.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptorMediumType.go
index af90921..29784e7 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptorMediumType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptorMediumType.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -43,6 +44,7 @@ const (
var DeviceDescriptorMediumTypeValues []DeviceDescriptorMediumType
func init() {
+ _ = errors.New
DeviceDescriptorMediumTypeValues = []DeviceDescriptorMediumType{
DeviceDescriptorMediumType_TP1,
DeviceDescriptorMediumType_PL110,
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/FirmwareType.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/FirmwareType.go
index 50d0772..06aa7de 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/FirmwareType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/FirmwareType.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -53,6 +54,7 @@ const (
var FirmwareTypeValues []FirmwareType
func init() {
+ _ = errors.New
FirmwareTypeValues = []FirmwareType{
FirmwareType_SYSTEM_1,
FirmwareType_SYSTEM_2,
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go
index d8e54d2..f175702 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -39,6 +40,7 @@ const (
var HostProtocolCodeValues []HostProtocolCode
func init() {
+ _ = errors.New
HostProtocolCodeValues = []HostProtocolCode{
HostProtocolCode_IPV4_UDP,
HostProtocolCode_IPV4_TCP,
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointMainType.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointMainType.go
index 4fad281..c827292 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointMainType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointMainType.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -100,6 +101,7 @@ const (
var KnxDatapointMainTypeValues []KnxDatapointMainType
func init() {
+ _ = errors.New
KnxDatapointMainTypeValues = []KnxDatapointMainType{
KnxDatapointMainType_DPT_UNKNOWN,
KnxDatapointMainType_DPT_64_BIT_SET,
@@ -413,6 +415,15 @@ func (e KnxDatapointMainType) Number() uint16 {
}
}
+func KnxDatapointMainTypeFirstEnumForFieldNumber(value uint16) (KnxDatapointMainType, error) {
+ for _, sizeValue := range KnxDatapointMainTypeValues {
+ if sizeValue.Number() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e KnxDatapointMainType) Name() string {
switch e {
case 0:
@@ -662,6 +673,15 @@ func (e KnxDatapointMainType) Name() string {
}
}
+func KnxDatapointMainTypeFirstEnumForFieldName(value string) (KnxDatapointMainType, error) {
+ for _, sizeValue := range KnxDatapointMainTypeValues {
+ if sizeValue.Name() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e KnxDatapointMainType) SizeInBits() uint8 {
switch e {
case 0:
@@ -910,6 +930,15 @@ func (e KnxDatapointMainType) SizeInBits() uint8 {
}
}
}
+
+func KnxDatapointMainTypeFirstEnumForFieldSizeInBits(value uint8) (KnxDatapointMainType, error) {
+ for _, sizeValue := range KnxDatapointMainTypeValues {
+ if sizeValue.SizeInBits() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
func KnxDatapointMainTypeByValue(value uint16) KnxDatapointMainType {
switch value {
case 0:
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go
index d3448a4..bf2c51f 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -388,6 +389,7 @@ const (
var KnxDatapointTypeValues []KnxDatapointType
func init() {
+ _ = errors.New
KnxDatapointTypeValues = []KnxDatapointType{
KnxDatapointType_DPT_UNKNOWN,
KnxDatapointType_BOOL,
@@ -2141,6 +2143,15 @@ func (e KnxDatapointType) Number() uint16 {
}
}
+func KnxDatapointTypeFirstEnumForFieldNumber(value uint16) (KnxDatapointType, error) {
+ for _, sizeValue := range KnxDatapointTypeValues {
+ if sizeValue.Number() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e KnxDatapointType) Name() string {
switch e {
case 0:
@@ -3542,6 +3553,15 @@ func (e KnxDatapointType) Name() string {
}
}
+func KnxDatapointTypeFirstEnumForFieldName(value string) (KnxDatapointType, error) {
+ for _, sizeValue := range KnxDatapointTypeValues {
+ if sizeValue.Name() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
switch e {
case 0:
@@ -4942,6 +4962,15 @@ func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
}
}
}
+
+func KnxDatapointTypeFirstEnumForFieldDatapointMainType(value KnxDatapointMainType) (KnxDatapointType, error) {
+ for _, sizeValue := range KnxDatapointTypeValues {
+ if sizeValue.DatapointMainType() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
func KnxDatapointTypeByValue(value uint32) KnxDatapointType {
switch value {
case 0:
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectProperty.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectProperty.go
index 476299f..adb8b22 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectProperty.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectProperty.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -257,6 +258,7 @@ const (
var KnxInterfaceObjectPropertyValues []KnxInterfaceObjectProperty
func init() {
+ _ = errors.New
KnxInterfaceObjectPropertyValues = []KnxInterfaceObjectProperty{
KnxInterfaceObjectProperty_PID_UNKNOWN,
KnxInterfaceObjectProperty_PID_GENERAL_OBJECT_TYPE,
@@ -1350,6 +1352,15 @@ func (e KnxInterfaceObjectProperty) PropertyDataType() KnxPropertyDataType {
}
}
+func KnxInterfaceObjectPropertyFirstEnumForFieldPropertyDataType(value KnxPropertyDataType) (KnxInterfaceObjectProperty, error) {
+ for _, sizeValue := range KnxInterfaceObjectPropertyValues {
+ if sizeValue.PropertyDataType() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e KnxInterfaceObjectProperty) Name() string {
switch e {
case 0:
@@ -2223,6 +2234,15 @@ func (e KnxInterfaceObjectProperty) Name() string {
}
}
+func KnxInterfaceObjectPropertyFirstEnumForFieldName(value string) (KnxInterfaceObjectProperty, error) {
+ for _, sizeValue := range KnxInterfaceObjectPropertyValues {
+ if sizeValue.Name() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e KnxInterfaceObjectProperty) PropertyId() uint8 {
switch e {
case 0:
@@ -3096,6 +3116,15 @@ func (e KnxInterfaceObjectProperty) PropertyId() uint8 {
}
}
+func KnxInterfaceObjectPropertyFirstEnumForFieldPropertyId(value uint8) (KnxInterfaceObjectProperty, error) {
+ for _, sizeValue := range KnxInterfaceObjectPropertyValues {
+ if sizeValue.PropertyId() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e KnxInterfaceObjectProperty) ObjectType() KnxInterfaceObjectType {
switch e {
case 0:
@@ -3968,6 +3997,15 @@ func (e KnxInterfaceObjectProperty) ObjectType() KnxInterfaceObjectType {
}
}
}
+
+func KnxInterfaceObjectPropertyFirstEnumForFieldObjectType(value KnxInterfaceObjectType) (KnxInterfaceObjectProperty, error) {
+ for _, sizeValue := range KnxInterfaceObjectPropertyValues {
+ if sizeValue.ObjectType() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
func KnxInterfaceObjectPropertyByValue(value uint32) KnxInterfaceObjectProperty {
switch value {
case 0:
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectType.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectType.go
index 4bf332d..644a846 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectType.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -64,6 +65,7 @@ const (
var KnxInterfaceObjectTypeValues []KnxInterfaceObjectType
func init() {
+ _ = errors.New
KnxInterfaceObjectTypeValues = []KnxInterfaceObjectType{
KnxInterfaceObjectType_OT_UNKNOWN,
KnxInterfaceObjectType_OT_GENERAL,
@@ -202,6 +204,15 @@ func (e KnxInterfaceObjectType) Code() string {
}
}
+func KnxInterfaceObjectTypeFirstEnumForFieldCode(value string) (KnxInterfaceObjectType, error) {
+ for _, sizeValue := range KnxInterfaceObjectTypeValues {
+ if sizeValue.Code() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e KnxInterfaceObjectType) Name() string {
switch e {
case 0:
@@ -310,6 +321,15 @@ func (e KnxInterfaceObjectType) Name() string {
}
}
}
+
+func KnxInterfaceObjectTypeFirstEnumForFieldName(value string) (KnxInterfaceObjectType, error) {
+ for _, sizeValue := range KnxInterfaceObjectTypeValues {
+ if sizeValue.Name() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
func KnxInterfaceObjectTypeByValue(value uint16) KnxInterfaceObjectType {
switch value {
case 0:
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go
index 287e2e7..3d0b3a6 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -40,6 +41,7 @@ const (
var KnxLayerValues []KnxLayer
func init() {
+ _ = errors.New
KnxLayerValues = []KnxLayer{
KnxLayer_TUNNEL_LINK_LAYER,
KnxLayer_TUNNEL_RAW,
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go
index ce8506b..cd59626 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -590,6 +591,7 @@ const (
var KnxManufacturerValues []KnxManufacturer
func init() {
+ _ = errors.New
KnxManufacturerValues = []KnxManufacturer{
KnxManufacturer_M_UNKNOWN,
KnxManufacturer_M_SIEMENS,
@@ -3358,6 +3360,15 @@ func (e KnxManufacturer) Number() uint16 {
}
}
+func KnxManufacturerFirstEnumForFieldNumber(value uint16) (KnxManufacturer, error) {
+ for _, sizeValue := range KnxManufacturerValues {
+ if sizeValue.Number() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e KnxManufacturer) Name() string {
switch e {
case 0:
@@ -5570,6 +5581,15 @@ func (e KnxManufacturer) Name() string {
}
}
}
+
+func KnxManufacturerFirstEnumForFieldName(value string) (KnxManufacturer, error) {
+ for _, sizeValue := range KnxManufacturerValues {
+ if sizeValue.Name() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
func KnxManufacturerByValue(value uint16) KnxManufacturer {
switch value {
case 0:
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxMedium.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxMedium.go
index 2f82c3b..cf5f01a 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxMedium.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxMedium.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -43,6 +44,7 @@ const (
var KnxMediumValues []KnxMedium
func init() {
+ _ = errors.New
KnxMediumValues = []KnxMedium{
KnxMedium_MEDIUM_RESERVED_1,
KnxMedium_MEDIUM_TP1,
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxPropertyDataType.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxPropertyDataType.go
index a6ab223..e33fba0 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxPropertyDataType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxPropertyDataType.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -90,6 +91,7 @@ const (
var KnxPropertyDataTypeValues []KnxPropertyDataType
func init() {
+ _ = errors.New
KnxPropertyDataTypeValues = []KnxPropertyDataType{
KnxPropertyDataType_PDT_UNKNOWN,
KnxPropertyDataType_PDT_CONTROL,
@@ -353,6 +355,15 @@ func (e KnxPropertyDataType) Number() uint8 {
}
}
+func KnxPropertyDataTypeFirstEnumForFieldNumber(value uint8) (KnxPropertyDataType, error) {
+ for _, sizeValue := range KnxPropertyDataTypeValues {
+ if sizeValue.Number() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e KnxPropertyDataType) SizeInBytes() uint8 {
switch e {
case 0:
@@ -562,6 +573,15 @@ func (e KnxPropertyDataType) SizeInBytes() uint8 {
}
}
+func KnxPropertyDataTypeFirstEnumForFieldSizeInBytes(value uint8) (KnxPropertyDataType, error) {
+ for _, sizeValue := range KnxPropertyDataTypeValues {
+ if sizeValue.SizeInBytes() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e KnxPropertyDataType) Name() string {
switch e {
case 0:
@@ -770,6 +790,15 @@ func (e KnxPropertyDataType) Name() string {
}
}
}
+
+func KnxPropertyDataTypeFirstEnumForFieldName(value string) (KnxPropertyDataType, error) {
+ for _, sizeValue := range KnxPropertyDataTypeValues {
+ if sizeValue.Name() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
func KnxPropertyDataTypeByValue(value uint8) KnxPropertyDataType {
switch value {
case 0:
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go
index 67bd073..9f0d227 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -49,6 +50,7 @@ const (
var StatusValues []Status
func init() {
+ _ = errors.New
StatusValues = []Status{
Status_NO_ERROR,
Status_PROTOCOL_TYPE_NOT_SUPPORTED,
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/SupportedPhysicalMedia.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/SupportedPhysicalMedia.go
index 9fbef6f..b8e12ac 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/SupportedPhysicalMedia.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/SupportedPhysicalMedia.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -60,6 +61,7 @@ const (
var SupportedPhysicalMediaValues []SupportedPhysicalMedia
func init() {
+ _ = errors.New
SupportedPhysicalMediaValues = []SupportedPhysicalMedia{
SupportedPhysicalMedia_OTHER,
SupportedPhysicalMedia_OIL_METER,
@@ -178,6 +180,15 @@ func (e SupportedPhysicalMedia) KnxSupport() bool {
}
}
+func SupportedPhysicalMediaFirstEnumForFieldKnxSupport(value bool) (SupportedPhysicalMedia, error) {
+ for _, sizeValue := range SupportedPhysicalMediaValues {
+ if sizeValue.KnxSupport() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e SupportedPhysicalMedia) Description() string {
switch e {
case 0x00:
@@ -270,6 +281,15 @@ func (e SupportedPhysicalMedia) Description() string {
}
}
}
+
+func SupportedPhysicalMediaFirstEnumForFieldDescription(value string) (SupportedPhysicalMedia, error) {
+ for _, sizeValue := range SupportedPhysicalMediaValues {
+ if sizeValue.Description() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
func SupportedPhysicalMediaByValue(value uint8) SupportedPhysicalMedia {
switch value {
case 0x00:
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataType.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataType.go
index 737c0c9..e81b1dd 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataType.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataType.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -65,6 +66,7 @@ const (
var ModbusDataTypeValues []ModbusDataType
func init() {
+ _ = errors.New
ModbusDataTypeValues = []ModbusDataType{
ModbusDataType_BOOL,
ModbusDataType_BYTE,
@@ -212,6 +214,15 @@ func (e ModbusDataType) DataTypeSize() uint8 {
}
}
}
+
+func ModbusDataTypeFirstEnumForFieldDataTypeSize(value uint8) (ModbusDataType, error) {
+ for _, sizeValue := range ModbusDataTypeValues {
+ if sizeValue.DataTypeSize() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
func ModbusDataTypeByValue(value uint8) ModbusDataType {
switch value {
case 1:
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusErrorCode.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusErrorCode.go
index 4137e78..24fa2fd 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusErrorCode.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusErrorCode.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -47,6 +48,7 @@ const (
var ModbusErrorCodeValues []ModbusErrorCode
func init() {
+ _ = errors.New
ModbusErrorCodeValues = []ModbusErrorCode{
ModbusErrorCode_ILLEGAL_FUNCTION,
ModbusErrorCode_ILLEGAL_DATA_ADDRESS,
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPProtocolClass.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPProtocolClass.go
index 36dfeb0..7e5bfa5 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPProtocolClass.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPProtocolClass.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -42,6 +43,7 @@ const (
var COTPProtocolClassValues []COTPProtocolClass
func init() {
+ _ = errors.New
COTPProtocolClassValues = []COTPProtocolClass{
COTPProtocolClass_CLASS_0,
COTPProtocolClass_CLASS_1,
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPTpduSize.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPTpduSize.go
index a01e917..2b9c945 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPTpduSize.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPTpduSize.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -45,6 +46,7 @@ const (
var COTPTpduSizeValues []COTPTpduSize
func init() {
+ _ = errors.New
COTPTpduSizeValues = []COTPTpduSize{
COTPTpduSize_SIZE_128,
COTPTpduSize_SIZE_256,
@@ -92,6 +94,15 @@ func (e COTPTpduSize) SizeInBytes() uint16 {
}
}
}
+
+func COTPTpduSizeFirstEnumForFieldSizeInBytes(value uint16) (COTPTpduSize, error) {
+ for _, sizeValue := range COTPTpduSizeValues {
+ if sizeValue.SizeInBytes() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
func COTPTpduSizeByValue(value int8) COTPTpduSize {
switch value {
case 0x07:
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/DataTransportErrorCode.go b/plc4go/internal/plc4go/s7/readwrite/model/DataTransportErrorCode.go
index 0e9172e..22e0ca9 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/DataTransportErrorCode.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/DataTransportErrorCode.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -43,6 +44,7 @@ const (
var DataTransportErrorCodeValues []DataTransportErrorCode
func init() {
+ _ = errors.New
DataTransportErrorCodeValues = []DataTransportErrorCode{
DataTransportErrorCode_RESERVED,
DataTransportErrorCode_OK,
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/DataTransportSize.go b/plc4go/internal/plc4go/s7/readwrite/model/DataTransportSize.go
index adb2578..5cae722 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/DataTransportSize.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/DataTransportSize.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -45,6 +46,7 @@ const (
var DataTransportSizeValues []DataTransportSize
func init() {
+ _ = errors.New
DataTransportSizeValues = []DataTransportSize{
DataTransportSize_NULL,
DataTransportSize_BIT,
@@ -92,6 +94,15 @@ func (e DataTransportSize) SizeInBits() bool {
}
}
}
+
+func DataTransportSizeFirstEnumForFieldSizeInBits(value bool) (DataTransportSize, error) {
+ for _, sizeValue := range DataTransportSizeValues {
+ if sizeValue.SizeInBits() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
func DataTransportSizeByValue(value uint8) DataTransportSize {
switch value {
case 0x00:
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/DeviceGroup.go b/plc4go/internal/plc4go/s7/readwrite/model/DeviceGroup.go
index fec80f3..5101f9b 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/DeviceGroup.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/DeviceGroup.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -40,6 +41,7 @@ const (
var DeviceGroupValues []DeviceGroup
func init() {
+ _ = errors.New
DeviceGroupValues = []DeviceGroup{
DeviceGroup_PG_OR_PC,
DeviceGroup_OS,
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/MemoryArea.go b/plc4go/internal/plc4go/s7/readwrite/model/MemoryArea.go
index c7804ac..a2e2ea8 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/MemoryArea.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/MemoryArea.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -47,6 +48,7 @@ const (
var MemoryAreaValues []MemoryArea
func init() {
+ _ = errors.New
MemoryAreaValues = []MemoryArea{
MemoryArea_COUNTERS,
MemoryArea_TIMERS,
@@ -104,6 +106,15 @@ func (e MemoryArea) ShortName() string {
}
}
}
+
+func MemoryAreaFirstEnumForFieldShortName(value string) (MemoryArea, error) {
+ for _, sizeValue := range MemoryAreaValues {
+ if sizeValue.ShortName() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
func MemoryAreaByValue(value uint8) MemoryArea {
switch value {
case 0x1C:
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7AddressAny.go b/plc4go/internal/plc4go/s7/readwrite/model/S7AddressAny.go
index bee965c..97abd9b 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7AddressAny.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7AddressAny.go
@@ -136,9 +136,13 @@ func S7AddressAnyParse(readBuffer utils.ReadBuffer) (*S7Address, error) {
return nil, pullErr
}
// Enum field (transportSize)
- transportSize, _transportSizeErr := TransportSizeParse(readBuffer)
+ transportSizeCode, _transportSizeCodeErr := readBuffer.ReadUint8("TransportSize", 8)
+ if _transportSizeCodeErr != nil {
+ return nil, errors.Wrap(_transportSizeCodeErr, "Error serializing 'transportSize' field")
+ }
+ transportSize, _transportSizeErr := TransportSizeFirstEnumForFieldCode(transportSizeCode)
if _transportSizeErr != nil {
- return nil, errors.Wrap(_transportSizeErr, "Error parsing 'transportSize' field")
+ return nil, errors.Wrap(_transportSizeErr, "Error serializing 'transportSize' field")
}
if closeErr := readBuffer.CloseContext("transportSize"); closeErr != nil {
return nil, closeErr
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/SzlModuleTypeClass.go b/plc4go/internal/plc4go/s7/readwrite/model/SzlModuleTypeClass.go
index 1814b7d..375f88a 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/SzlModuleTypeClass.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/SzlModuleTypeClass.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -41,6 +42,7 @@ const (
var SzlModuleTypeClassValues []SzlModuleTypeClass
func init() {
+ _ = errors.New
SzlModuleTypeClassValues = []SzlModuleTypeClass{
SzlModuleTypeClass_CPU,
SzlModuleTypeClass_IM,
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/SzlSublist.go b/plc4go/internal/plc4go/s7/readwrite/model/SzlSublist.go
index e47c4cd..4929987 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/SzlSublist.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/SzlSublist.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -56,6 +57,7 @@ const (
var SzlSublistValues []SzlSublist
func init() {
+ _ = errors.New
SzlSublistValues = []SzlSublist{
SzlSublist_MODULE_IDENTIFICATION,
SzlSublist_CPU_FEATURES,
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go b/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
index e04877f..f5ecaaa 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -74,6 +75,7 @@ const (
var TransportSizeValues []TransportSize
func init() {
+ _ = errors.New
TransportSizeValues = []TransportSize{
TransportSize_BOOL,
TransportSize_BYTE,
@@ -217,6 +219,15 @@ func (e TransportSize) Supported_S7_300() bool {
}
}
+func TransportSizeFirstEnumForFieldSupported_S7_300(value bool) (TransportSize, error) {
+ for _, sizeValue := range TransportSizeValues {
+ if sizeValue.Supported_S7_300() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e TransportSize) Supported_LOGO() bool {
switch e {
case 0x01:
@@ -330,6 +341,15 @@ func (e TransportSize) Supported_LOGO() bool {
}
}
+func TransportSizeFirstEnumForFieldSupported_LOGO(value bool) (TransportSize, error) {
+ for _, sizeValue := range TransportSizeValues {
+ if sizeValue.Supported_LOGO() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e TransportSize) Code() uint8 {
switch e {
case 0x01:
@@ -443,6 +463,15 @@ func (e TransportSize) Code() uint8 {
}
}
+func TransportSizeFirstEnumForFieldCode(value uint8) (TransportSize, error) {
+ for _, sizeValue := range TransportSizeValues {
+ if sizeValue.Code() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e TransportSize) SizeInBytes() uint8 {
switch e {
case 0x01:
@@ -556,6 +585,15 @@ func (e TransportSize) SizeInBytes() uint8 {
}
}
+func TransportSizeFirstEnumForFieldSizeInBytes(value uint8) (TransportSize, error) {
+ for _, sizeValue := range TransportSizeValues {
+ if sizeValue.SizeInBytes() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e TransportSize) Supported_S7_400() bool {
switch e {
case 0x01:
@@ -669,6 +707,15 @@ func (e TransportSize) Supported_S7_400() bool {
}
}
+func TransportSizeFirstEnumForFieldSupported_S7_400(value bool) (TransportSize, error) {
+ for _, sizeValue := range TransportSizeValues {
+ if sizeValue.Supported_S7_400() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e TransportSize) Supported_S7_1200() bool {
switch e {
case 0x01:
@@ -782,6 +829,15 @@ func (e TransportSize) Supported_S7_1200() bool {
}
}
+func TransportSizeFirstEnumForFieldSupported_S7_1200(value bool) (TransportSize, error) {
+ for _, sizeValue := range TransportSizeValues {
+ if sizeValue.Supported_S7_1200() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e TransportSize) ShortName() uint8 {
switch e {
case 0x01:
@@ -895,6 +951,15 @@ func (e TransportSize) ShortName() uint8 {
}
}
+func TransportSizeFirstEnumForFieldShortName(value uint8) (TransportSize, error) {
+ for _, sizeValue := range TransportSizeValues {
+ if sizeValue.ShortName() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e TransportSize) Supported_S7_1500() bool {
switch e {
case 0x01:
@@ -1008,6 +1073,15 @@ func (e TransportSize) Supported_S7_1500() bool {
}
}
+func TransportSizeFirstEnumForFieldSupported_S7_1500(value bool) (TransportSize, error) {
+ for _, sizeValue := range TransportSizeValues {
+ if sizeValue.Supported_S7_1500() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e TransportSize) DataTransportSize() DataTransportSize {
switch e {
case 0x01:
@@ -1121,6 +1195,15 @@ func (e TransportSize) DataTransportSize() DataTransportSize {
}
}
+func TransportSizeFirstEnumForFieldDataTransportSize(value DataTransportSize) (TransportSize, error) {
+ for _, sizeValue := range TransportSizeValues {
+ if sizeValue.DataTransportSize() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e TransportSize) BaseType() TransportSize {
switch e {
case 0x01:
@@ -1234,6 +1317,15 @@ func (e TransportSize) BaseType() TransportSize {
}
}
+func TransportSizeFirstEnumForFieldBaseType(value TransportSize) (TransportSize, error) {
+ for _, sizeValue := range TransportSizeValues {
+ if sizeValue.BaseType() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
+
func (e TransportSize) DataProtocolId() string {
switch e {
case 0x01:
@@ -1346,6 +1438,15 @@ func (e TransportSize) DataProtocolId() string {
}
}
}
+
+func TransportSizeFirstEnumForFieldDataProtocolId(value string) (TransportSize, error) {
+ for _, sizeValue := range TransportSizeValues {
+ if sizeValue.DataProtocolId() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
func TransportSizeByValue(value int8) TransportSize {
switch value {
case 0x01:
diff --git a/plc4go/internal/plc4go/s7/s7Io_test.go b/plc4go/internal/plc4go/s7/s7Io_test.go
index 2983573..77efbb2 100644
--- a/plc4go/internal/plc4go/s7/s7Io_test.go
+++ b/plc4go/internal/plc4go/s7/s7Io_test.go
@@ -383,6 +383,471 @@ func TestS7MessageBytes(t *testing.T) {
20|00 00 04 01 ff 03 00 01 01 '......... '
`,
},
+ {
+ name: "TPKT Packet with write var request data",
+ args: args{
+ debuggable: model.NewTPKTPacket(
+ model.NewCOTPPacketData(
+ false,
+ 13,
+ []*model.COTPParameter{model.NewCOTPParameterTpduSize(model.COTPTpduSize_SIZE_4096)},
+ model.NewS7MessageRequest(
+ 13,
+ model.NewS7ParameterWriteVarRequest([]*model.S7VarRequestParameterItem{
+ model.NewS7VarRequestParameterItemAddress(model.NewS7AddressAny(
+ model.TransportSize_BYTE,
+ 64,
+ 13,
+ model.MemoryArea_INPUTS,
+ 0,
+ 0,
+ )),
+ }),
+ model.NewS7PayloadWriteVarRequest([]*model.S7VarPayloadDataItem{
+ model.NewS7VarPayloadDataItem(
+ model.DataTransportErrorCode_OK,
+ model.DataTransportSize_BYTE_WORD_DWORD,
+ []byte{
+ 0xAF, 0xFE, 0xAF, 0xFE, 0xAF, 0xFE, 0xAF, 0xFE,
+ 0xAF, 0xFE, 0xAF, 0xFE, 0xAF, 0xFE, 0xAF, 0xFE,
+ 0xAF, 0xFE, 0xAF, 0xFE, 0xAF, 0xFE, 0xAF, 0xFE,
+ 0xAF, 0xFE, 0xAF, 0xFE, 0xAF, 0xFE, 0xAF, 0xFE,
+ 0xAF, 0xFE, 0xAF, 0xFE, 0xAF, 0xFE, 0xAF, 0xFE,
+ 0xAF, 0xFE, 0xAF, 0xFE, 0xAF, 0xFE, 0xAF, 0xFE,
+ 0xAF, 0xFE, 0xAF, 0xFE, 0xAF, 0xFE, 0xAF, 0xFE,
+ 0xAF, 0xFE, 0xAF, 0xFE, 0xAF, 0xFE, 0xAF, 0xFE,
+ },
+ ),
+ }),
+ ),
+ ),
+ ),
+ },
+ wantString: `
+TBD
+`,
+ wantStringSerialized: `
+╔═TPKTPacket═══════════════════════════════════════════════════════════════════════════════════════════════════════╗
+║╔═protocolId╗╔═reserved╗╔═len══════╗ ║
+║║ 0x03 3 ║║ 0x00 0 ║║0x0066 102║ ║
+║╚═══════════╝╚═════════╝╚══════════╝ ║
+║╔═payload════════════════════════════════════════════════════════════════════════════════════════════════════════╗║
+║║╔═COTPPacket═══════════════════════════════════════════════════════════════════════════════════════════════════╗║║
+║║║╔═headerLength╗╔═tpduCode╗╔═COTPPacketData═════╗╔═parameters═════════════════════════════════════════════════╗║║║
+║║║║ 0x05 5 ║║0xf0 240 ║║╔═eot════╗╔═tpduRef╗║║╔═COTPParameter════════════════════════════════════════════╗║║║║
+║║║╚═════════════╝╚═════════╝║║b0 false║║ 0xd 13 ║║║║╔═parameterType╗╔═parameterLength╗╔═COTPParameterTpduSize╗║║║║║
+║║║ ║╚════════╝╚════════╝║║║║ 0xc0 192 ║║ 0x01 1 ║║╔═tpduSize══════════╗ ║║║║║║
+║║║ ╚════════════════════╝║║╚══════════════╝╚════════════════╝║║╔═COTPTpduSize════╗║ ║║║║║║
+║║║ ║║ ║║║0x0c 12 SIZE_4096║║ ║║║║║║
+║║║ ║║ ║║╚═════════════════╝║ ║║║║║║
+║║║ ║║ ║╚═══════════════════╝ ║║║║║║
+║║║ ║║ ╚══════════════════════╝║║║║║
+║║║ ║╚══════════════════════════════════════════════════════════╝║║║║
+║║║ ╚════════════════════════════════════════════════════════════╝║║║
+║║║╔═S7Message══════════════════════════════════════════════════════════════════════════════════════════════════╗║║║
+║║║║╔═protocolId╗╔═messageType╗╔═reserved╗╔═tpduReference╗╔═parameterLength╗╔═payloadLength╗╔═S7MessageRequest╗ ║║║║
+║║║║║ 0x32 50 ║║ 0x01 1 ║║0x0000 0 ║║ 0x000d 13 ║║ 0x000e 14 ║║ 0x0044 68 ║║ ║ ║║║║
+║║║║╚═══════════╝╚════════════╝╚═════════╝╚══════════════╝╚════════════════╝╚══════════════╝╚═════════════════╝ ║║║║
+║║║║╔═S7Parameter══════════════════════════════════════════════════════════════════════════════════════════════╗║║║║
+║║║║║╔═parameterType╗ ║║║║║
+║║║║║║ 0x05 5 ║ ║║║║║
+║║║║║╚══════════════╝ ║║║║║
+║║║║║╔═S7ParameterWriteVarRequest═════════════════════════════════════════════════════════════════════════════╗║║║║║
+║║║║║║╔═numItems╗ ║║║║║║
+║║║║║║║ 0x01 1 ║ ║║║║║║
+║║║║║║╚═════════╝ ║║║║║║
+║║║║║║╔═items════════════════════════════════════════════════════════════════════════════════════════════════╗║║║║║║
+║║║║║║║╔═S7VarRequestParameterItem══════════════════════════════════════════════════════════════════════════╗║║║║║║║
+║║║║║║║║╔═itemType╗ ║║║║║║║║
+║║║║║║║║║ 0x12 18 ║ ║║║║║║║║
+║║║║║║║║╚═════════╝ ║║║║║║║║
+║║║║║║║║╔═S7VarRequestParameterItemAddress═════════════════════════════════════════════════════════════════╗║║║║║║║║
+║║║║║║║║║╔═itemLength╗ ║║║║║║║║║
+║║║║║║║║║║ 0x0a 10 ║ ║║║║║║║║║
+║║║║║║║║║╚═══════════╝ ║║║║║║║║║
+║║║║║║║║║╔═address════════════════════════════════════════════════════════════════════════════════════════╗║║║║║║║║║
+║║║║║║║║║║╔═S7Address════════════════════════════════════════════════════════════════════════════════════╗║║║║║║║║║║
+║║║║║║║║║║║╔═addressType╗ ║║║║║║║║║║║
+║║║║║║║║║║║║ 0x10 16 ║ ║║║║║║║║║║║
+║║║║║║║║║║║╚════════════╝ ║║║║║║║║║║║
+║║║║║║║║║║║╔═S7AddressAny═══════════════════════════════════════════════════════════════════════════════╗║║║║║║║║║║║
+║║║║║║║║║║║║╔═transportSize══╗╔═numberOfElements╗╔═dbNumber╗╔═area════════════╗╔═reserved╗╔═byteAddress╗║║║║║║║║║║║║
+║║║║║║║║║║║║║╔═TransportSize╗║║ 0x0040 64 ║║0x000d 13║║╔═MemoryArea════╗║║ 0x0 0 ║║ 0x0000 0 ║║║║║║║║║║║║║
+║║║║║║║║║║║║║║ 0x02 2 BYTE ║║╚═════════════════╝╚═════════╝║║0x81 129 INPUTS║║╚═════════╝╚════════════╝║║║║║║║║║║║║
+║║║║║║║║║║║║║╚══════════════╝║ ║╚═══════════════╝║ ║║║║║║║║║║║║
+║║║║║║║║║║║║╚════════════════╝ ╚═════════════════╝ ║║║║║║║║║║║║
+║║║║║║║║║║║║╔═bitAddress╗ ║║║║║║║║║║║║
+║║║║║║║║║║║║║ 0x0 0 ║ ║║║║║║║║║║║║
+║║║║║║║║║║║║╚═══════════╝ ║║║║║║║║║║║║
+║║║║║║║║║║║╚════════════════════════════════════════════════════════════════════════════════════════════╝║║║║║║║║║║║
+║║║║║║║║║║╚══════════════════════════════════════════════════════════════════════════════════════════════╝║║║║║║║║║║
+║║║║║║║║║╚════════════════════════════════════════════════════════════════════════════════════════════════╝║║║║║║║║║
+║║║║║║║║╚══════════════════════════════════════════════════════════════════════════════════════════════════╝║║║║║║║║
+║║║║║║║╚════════════════════════════════════════════════════════════════════════════════════════════════════╝║║║║║║║
+║║║║║║╚══════════════════════════════════════════════════════════════════════════════════════════════════════╝║║║║║║
+║║║║║╚════════════════════════════════════════════════════════════════════════════════════════════════════════╝║║║║║
+║║║║╚══════════════════════════════════════════════════════════════════════════════════════════════════════════╝║║║║
+║║║║╔═S7Payload══════════════════════════════════════════════════════════════╗ ║║║║
+║║║║║╔═S7PayloadWriteVarRequest═════════════════════════════════════════════╗║ ║║║║
+║║║║║║╔═items══════════════════════════════════════════════════════════════╗║║ ║║║║
+║║║║║║║╔═S7VarPayloadDataItem═════════════════════════════════════════════╗║║║ ║║║║
+║║║║║║║║╔═returnCode══════════════╗╔═transportSize══════════╗╔═dataLength╗║║║║ ║║║║
+║║║║║║║║║╔═DataTransportErrorCode╗║║╔═DataTransportSize════╗║║0x0200 512 ║║║║║ ║║║║
+║║║║║║║║║║ 0xff 255 OK ║║║║0x04 4 BYTE_WORD_DWORD║║╚═══════════╝║║║║ ║║║║
+║║║║║║║║║╚═══════════════════════╝║║╚══════════════════════╝║ ║║║║ ║║║║
+║║║║║║║║╚═════════════════════════╝╚════════════════════════╝ ║║║║ ║║║║
+║║║║║║║║╔═data════════════════════════════════════════╗╔═padding╗ ║║║║ ║║║║
+║║║║║║║║║00|af fe af fe af fe af fe af fe '..........'║║ ║ ║║║║ ║║║║
+║║║║║║║║║10|af fe af fe af fe af fe af fe '..........'║╚════════╝ ║║║║ ║║║║
+║║║║║║║║║20|af fe af fe af fe af fe af fe '..........'║ ║║║║ ║║║║
+║║║║║║║║║30|af fe af fe af fe af fe af fe '..........'║ ║║║║ ║║║║
+║║║║║║║║║40|af fe af fe af fe af fe af fe '..........'║ ║║║║ ║║║║
+║║║║║║║║║50|af fe af fe af fe af fe af fe '..........'║ ║║║║ ║║║║
+║║║║║║║║║60|af fe af fe '.... '║ ║║║║ ║║║║
+║║║║║║║║╚═════════════════════════════════════════════╝ ║║║║ ║║║║
+║║║║║║║╚══════════════════════════════════════════════════════════════════╝║║║ ║║║║
+║║║║║║╚════════════════════════════════════════════════════════════════════╝║║ ║║║║
+║║║║║╚══════════════════════════════════════════════════════════════════════╝║ ║║║║
+║║║║╚════════════════════════════════════════════════════════════════════════╝ ║║║║
+║║║╚════════════════════════════════════════════════════════════════════════════════════════════════════════════╝║║║
+║║╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════╝║║
+║╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝║
+╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
+`,
+ wantStringSerializedCompact: `
+╔═TPKTPacket═════════════════════════════════════════════════════════════════════════════════════════════════╗
+║╔═protocolId╗╔═reserved╗╔═len══════╗ ║
+║║ 0x03 3 ║║ 0x00 0 ║║0x0066 102║ ║
+║╚═══════════╝╚═════════╝╚══════════╝ ║
+║╔═payload/COTPPacket═══════════════════════════════════════════════════════════════════════════════════════╗║
+║║╔═headerLength╗╔═tpduCode╗╔═COTPPacketData═════╗ ║║
+║║║ 0x05 5 ║║0xf0 240 ║║╔═eot════╗╔═tpduRef╗║ ║║
+║║╚═════════════╝╚═════════╝║║b0 false║║ 0xd 13 ║║ ║║
+║║ ║╚════════╝╚════════╝║ ║║
+║║ ╚════════════════════╝ ║║
+║║╔═parameters/COTPParameter════════════════════════════════════════════════════════════╗ ║║
+║║║╔═parameterType╗╔═parameterLength╗╔═COTPParameterTpduSize/tpduSize/COTPTpduSize═════╗║ ║║
+║║║║ 0xc0 192 ║║ 0x01 1 ║║ 0x0c 12 SIZE_4096 ║║ ║║
+║║║╚══════════════╝╚════════════════╝╚═════════════════════════════════════════════════╝║ ║║
+║║╚═════════════════════════════════════════════════════════════════════════════════════╝ ║║
+║║╔═S7Message══════════════════════════════════════════════════════════════════════════════════════════════╗║║
+║║║╔═protocolId╗╔═messageType╗╔═reserved╗╔═tpduReference╗╔═parameterLength╗╔═payloadLength╗ ║║║
+║║║║ 0x32 50 ║║ 0x01 1 ║║0x0000 0 ║║ 0x000d 13 ║║ 0x000e 14 ║║ 0x0044 68 ║ ║║║
+║║║╚═══════════╝╚════════════╝╚═════════╝╚══════════════╝╚════════════════╝╚══════════════╝ ║║║
+║║║╔═S7Parameter══════════════════════════════════════════════════════════════════════════════════════════╗║║║
+║║║║╔═parameterType╗ ║║║║
+║║║║║ 0x05 5 ║ ║║║║
+║║║║╚══════════════╝ ║║║║
+║║║║╔═S7ParameterWriteVarRequest═════════════════════════════════════════════════════════════════════════╗║║║║
+║║║║║╔═numItems╗ ║║║║║
+║║║║║║ 0x01 1 ║ ║║║║║
+║║║║║╚═════════╝ ║║║║║
+║║║║║╔═items/S7VarRequestParameterItem══════════════════════════════════════════════════════════════════╗║║║║║
+║║║║║║╔═itemType╗ ║║║║║║
+║║║║║║║ 0x12 18 ║ ║║║║║║
+║║║║║║╚═════════╝ ║║║║║║
+║║║║║║╔═S7VarRequestParameterItemAddress═══════════════════════════════════════════════════════════════╗║║║║║║
+║║║║║║║╔═itemLength╗ ║║║║║║║
+║║║║║║║║ 0x0a 10 ║ ║║║║║║║
+║║║║║║║╚═══════════╝ ║║║║║║║
+║║║║║║║╔═address/S7Address════════════════════════════════════════════════════════════════════════════╗║║║║║║║
+║║║║║║║║╔═addressType╗ ║║║║║║║║
+║║║║║║║║║ 0x10 16 ║ ║║║║║║║║
+║║║║║║║║╚════════════╝ ║║║║║║║║
+║║║║║║║║╔═S7AddressAny═══════════════════════════════════════════════════════════════════════════════╗║║║║║║║║
+║║║║║║║║║╔═transportSize/TransportSize═══╗╔═numberOfElements╗╔═dbNumber╗╔═area/MemoryArea╗╔═reserved╗║║║║║║║║║
+║║║║║║║║║║ 0x02 2 BYTE ║║ 0x0040 64 ║║0x000d 13║║0x81 129 INPUTS ║║ 0x0 0 ║║║║║║║║║║
+║║║║║║║║║╚═══════════════════════════════╝╚═════════════════╝╚═════════╝╚════════════════╝╚═════════╝║║║║║║║║║
+║║║║║║║║║╔═byteAddress╗╔═bitAddress╗ ║║║║║║║║║
+║║║║║║║║║║ 0x0000 0 ║║ 0x0 0 ║ ║║║║║║║║║
+║║║║║║║║║╚════════════╝╚═══════════╝ ║║║║║║║║║
+║║║║║║║║╚════════════════════════════════════════════════════════════════════════════════════════════╝║║║║║║║║
+║║║║║║║╚══════════════════════════════════════════════════════════════════════════════════════════════╝║║║║║║║
+║║║║║║╚════════════════════════════════════════════════════════════════════════════════════════════════╝║║║║║║
+║║║║║╚══════════════════════════════════════════════════════════════════════════════════════════════════╝║║║║║
+║║║║╚════════════════════════════════════════════════════════════════════════════════════════════════════╝║║║║
+║║║╚══════════════════════════════════════════════════════════════════════════════════════════════════════╝║║║
+║║║╔═S7Payload/S7PayloadWriteVarRequest/items/S7VarPayloadDataItem═════════════════════════════════╗ ║║║
+║║║║╔═returnCode/DataTransportErrorCode════════════╗╔═transportSize/DataTransportSize╗╔═dataLength╗║ ║║║
+║║║║║ 0xff 255 OK ║║ 0x04 4 BYTE_WORD_DWORD ║║0x0200 512 ║║ ║║║
+║║║║╚══════════════════════════════════════════════╝╚════════════════════════════════╝╚═══════════╝║ ║║║
+║║║║╔═data════════════════════════════════════════╗ ║ ║║║
+║║║║║00|af fe af fe af fe af fe af fe '..........'║ ║ ║║║
+║║║║║10|af fe af fe af fe af fe af fe '..........'║ ║ ║║║
+║║║║║20|af fe af fe af fe af fe af fe '..........'║ ║ ║║║
+║║║║║30|af fe af fe af fe af fe af fe '..........'║ ║ ║║║
+║║║║║40|af fe af fe af fe af fe af fe '..........'║ ║ ║║║
+║║║║║50|af fe af fe af fe af fe af fe '..........'║ ║ ║║║
+║║║║║60|af fe af fe '.... '║ ║ ║║║
+║║║║╚═════════════════════════════════════════════╝ ║ ║║║
+║║║╚═══════════════════════════════════════════════════════════════════════════════════════════════╝ ║║║
+║║╚════════════════════════════════════════════════════════════════════════════════════════════════════════╝║║
+║╚══════════════════════════════════════════════════════════════════════════════════════════════════════════╝║
+╚════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
+`,
+ wantStringXml: `
+<TPKTPacket>
+ <protocolId dataType="uint" bitLength="8">3</protocolId>
+ <reserved dataType="uint" bitLength="8">0</reserved>
+ <len dataType="uint" bitLength="16">102</len>
+ <payload>
+ <COTPPacket>
+ <headerLength dataType="uint" bitLength="8">5</headerLength>
+ <tpduCode dataType="uint" bitLength="8">240</tpduCode>
+ <COTPPacketData>
+ <eot dataType="bit" bitLength="1">false</eot>
+ <tpduRef dataType="uint" bitLength="7">13</tpduRef>
+ </COTPPacketData>
+ <parameters isList="true">
+ <COTPParameter>
+ <parameterType dataType="uint" bitLength="8">192</parameterType>
+ <parameterLength dataType="uint" bitLength="8">1</parameterLength>
+ <COTPParameterTpduSize>
+ <tpduSize>
+ <COTPTpduSize dataType="int" bitLength="8" stringRepresentation="SIZE_4096">12</COTPTpduSize>
+ </tpduSize>
+ </COTPParameterTpduSize>
+ </COTPParameter>
+ </parameters>
+ <S7Message>
+ <protocolId dataType="uint" bitLength="8">50</protocolId>
+ <messageType dataType="uint" bitLength="8">1</messageType>
+ <reserved dataType="uint" bitLength="16">0</reserved>
+ <tpduReference dataType="uint" bitLength="16">13</tpduReference>
+ <parameterLength dataType="uint" bitLength="16">14</parameterLength>
+ <payloadLength dataType="uint" bitLength="16">68</payloadLength>
+ <S7MessageRequest></S7MessageRequest>
+ <S7Parameter>
+ <parameterType dataType="uint" bitLength="8">5</parameterType>
+ <S7ParameterWriteVarRequest>
+ <numItems dataType="uint" bitLength="8">1</numItems>
+ <items isList="true">
+ <S7VarRequestParameterItem>
+ <itemType dataType="uint" bitLength="8">18</itemType>
+ <S7VarRequestParameterItemAddress>
+ <itemLength dataType="uint" bitLength="8">10</itemLength>
+ <address>
+ <S7Address>
+ <addressType dataType="uint" bitLength="8">16</addressType>
+ <S7AddressAny>
+ <transportSize>
+ <TransportSize dataType="uint" bitLength="8" stringRepresentation="BYTE">2</TransportSize>
+ </transportSize>
+ <numberOfElements dataType="uint" bitLength="16">64</numberOfElements>
+ <dbNumber dataType="uint" bitLength="16">13</dbNumber>
+ <area>
+ <MemoryArea dataType="uint" bitLength="8" stringRepresentation="INPUTS">129</MemoryArea>
+ </area>
+ <reserved dataType="uint" bitLength="5">0</reserved>
+ <byteAddress dataType="uint" bitLength="16">0</byteAddress>
+ <bitAddress dataType="uint" bitLength="3">0</bitAddress>
+ </S7AddressAny>
+ </S7Address>
+ </address>
+ </S7VarRequestParameterItemAddress>
+ </S7VarRequestParameterItem>
+ </items>
+ </S7ParameterWriteVarRequest>
+ </S7Parameter>
+ <S7Payload>
+ <S7PayloadWriteVarRequest>
+ <items isList="true">
+ <S7VarPayloadDataItem>
+ <returnCode>
+ <DataTransportErrorCode dataType="uint" bitLength="8" stringRepresentation="OK">255</DataTransportErrorCode>
+ </returnCode>
+ <transportSize>
+ <DataTransportSize dataType="uint" bitLength="8" stringRepresentation="BYTE_WORD_DWORD">4</DataTransportSize>
+ </transportSize>
+ <dataLength dataType="uint" bitLength="16">512</dataLength>
+ <data dataType="byte" bitLength="512">0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe</data>
+ <padding isList="true"></padding>
+ </S7VarPayloadDataItem>
+ </items>
+ </S7PayloadWriteVarRequest>
+ </S7Payload>
+ </S7Message>
+ </COTPPacket>
+ </payload>
+</TPKTPacket>
+`,
+ wantStringJson: `
+{
+ "TPKTPacket": {
+ "len": 102,
+ "len__plc4x_bitLength": 16,
+ "len__plc4x_dataType": "uint",
+ "payload": {
+ "COTPPacket": {
+ "COTPPacketData": {
+ "eot": false,
+ "eot__plc4x_bitLength": 1,
+ "eot__plc4x_dataType": "bit",
+ "tpduRef": 13,
+ "tpduRef__plc4x_bitLength": 7,
+ "tpduRef__plc4x_dataType": "uint"
+ },
+ "S7Message": {
+ "S7MessageRequest": {},
+ "S7Parameter": {
+ "S7ParameterWriteVarRequest": {
+ "items": [
+ {
+ "S7VarRequestParameterItem": {
+ "S7VarRequestParameterItemAddress": {
+ "address": {
+ "S7Address": {
+ "S7AddressAny": {
+ "area": {
+ "MemoryArea": 129,
+ "MemoryArea__plc4x_bitLength": 8,
+ "MemoryArea__plc4x_dataType": "uint",
+ "MemoryArea__plc4x_stringRepresentation": "INPUTS"
+ },
+ "bitAddress": 0,
+ "bitAddress__plc4x_bitLength": 3,
+ "bitAddress__plc4x_dataType": "uint",
+ "byteAddress": 0,
+ "byteAddress__plc4x_bitLength": 16,
+ "byteAddress__plc4x_dataType": "uint",
+ "dbNumber": 13,
+ "dbNumber__plc4x_bitLength": 16,
+ "dbNumber__plc4x_dataType": "uint",
+ "numberOfElements": 64,
+ "numberOfElements__plc4x_bitLength": 16,
+ "numberOfElements__plc4x_dataType": "uint",
+ "reserved": 0,
+ "reserved__plc4x_bitLength": 5,
+ "reserved__plc4x_dataType": "uint",
+ "transportSize": {
+ "TransportSize": 2,
+ "TransportSize__plc4x_bitLength": 8,
+ "TransportSize__plc4x_dataType": "uint",
+ "TransportSize__plc4x_stringRepresentation": "BYTE"
+ }
+ },
+ "addressType": 16,
+ "addressType__plc4x_bitLength": 8,
+ "addressType__plc4x_dataType": "uint"
+ }
+ },
+ "itemLength": 10,
+ "itemLength__plc4x_bitLength": 8,
+ "itemLength__plc4x_dataType": "uint"
+ },
+ "itemType": 18,
+ "itemType__plc4x_bitLength": 8,
+ "itemType__plc4x_dataType": "uint"
+ }
+ }
+ ],
+ "numItems": 1,
+ "numItems__plc4x_bitLength": 8,
+ "numItems__plc4x_dataType": "uint"
+ },
+ "parameterType": 5,
+ "parameterType__plc4x_bitLength": 8,
+ "parameterType__plc4x_dataType": "uint"
+ },
+ "S7Payload": {
+ "S7PayloadWriteVarRequest": {
+ "items": [
+ {
+ "S7VarPayloadDataItem": {
+ "data": "0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe",
+ "dataLength": 512,
+ "dataLength__plc4x_bitLength": 16,
+ "dataLength__plc4x_dataType": "uint",
+ "data__plc4x_bitLength": 512,
+ "data__plc4x_dataType": "byte",
+ "padding": [],
+ "returnCode": {
+ "DataTransportErrorCode": 255,
+ "DataTransportErrorCode__plc4x_bitLength": 8,
+ "DataTransportErrorCode__plc4x_dataType": "uint",
+ "DataTransportErrorCode__plc4x_stringRepresentation": "OK"
+ },
+ "transportSize": {
+ "DataTransportSize": 4,
+ "DataTransportSize__plc4x_bitLength": 8,
+ "DataTransportSize__plc4x_dataType": "uint",
+ "DataTransportSize__plc4x_stringRepresentation": "BYTE_WORD_DWORD"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "messageType": 1,
+ "messageType__plc4x_bitLength": 8,
+ "messageType__plc4x_dataType": "uint",
+ "parameterLength": 14,
+ "parameterLength__plc4x_bitLength": 16,
+ "parameterLength__plc4x_dataType": "uint",
+ "payloadLength": 68,
+ "payloadLength__plc4x_bitLength": 16,
+ "payloadLength__plc4x_dataType": "uint",
+ "protocolId": 50,
+ "protocolId__plc4x_bitLength": 8,
+ "protocolId__plc4x_dataType": "uint",
+ "reserved": 0,
+ "reserved__plc4x_bitLength": 16,
+ "reserved__plc4x_dataType": "uint",
+ "tpduReference": 13,
+ "tpduReference__plc4x_bitLength": 16,
+ "tpduReference__plc4x_dataType": "uint"
+ },
+ "headerLength": 5,
+ "headerLength__plc4x_bitLength": 8,
+ "headerLength__plc4x_dataType": "uint",
+ "parameters": [
+ {
+ "COTPParameter": {
+ "COTPParameterTpduSize": {
+ "tpduSize": {
+ "COTPTpduSize": 12,
+ "COTPTpduSize__plc4x_bitLength": 8,
+ "COTPTpduSize__plc4x_dataType": "int",
+ "COTPTpduSize__plc4x_stringRepresentation": "SIZE_4096"
+ }
+ },
+ "parameterLength": 1,
+ "parameterLength__plc4x_bitLength": 8,
+ "parameterLength__plc4x_dataType": "uint",
+ "parameterType": 192,
+ "parameterType__plc4x_bitLength": 8,
+ "parameterType__plc4x_dataType": "uint"
+ }
+ }
+ ],
+ "tpduCode": 240,
+ "tpduCode__plc4x_bitLength": 8,
+ "tpduCode__plc4x_dataType": "uint"
+ }
+ },
+ "protocolId": 3,
+ "protocolId__plc4x_bitLength": 8,
+ "protocolId__plc4x_dataType": "uint",
+ "reserved": 0,
+ "reserved__plc4x_bitLength": 8,
+ "reserved__plc4x_dataType": "uint"
+ }
+}
+`,
+ wantDump: `
+000|03 00 00 66 05 f0 0d c0 01 0c '...f......'
+010|32 01 00 00 00 0d 00 0e 00 44 '2........D'
+020|05 01 12 0a 10 02 00 40 00 0d '.......@..'
+030|81 00 00 00 ff 04 02 00 af fe '..........'
+040|af fe af fe af fe af fe af fe '..........'
+050|af fe af fe af fe af fe af fe '..........'
+060|af fe af fe af fe af fe af fe '..........'
+070|af fe af fe af fe af fe af fe '..........'
+080|af fe af fe af fe af fe af fe '..........'
+090|af fe af fe af fe af fe af fe '..........'
+100|af fe '.. '
+`,
+ },
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
@@ -465,7 +930,7 @@ func TestS7MessageBytes(t *testing.T) {
if err != nil {
t.Error(err)
} else {
- t.Errorf("Roundtrip(json) = '\n%v\n', want '\n%v\n'", got, tt.wantDump)
+ t.Errorf("Roundtrip(json) = '\n%v\n', want '\n%v\n'", got, tt.args.debuggable)
}
}
})
diff --git a/plc4go/internal/plc4go/simulated/readwrite/model/SimulatedDataTypeSizes.go b/plc4go/internal/plc4go/simulated/readwrite/model/SimulatedDataTypeSizes.go
index e4cf955..b5a7171 100644
--- a/plc4go/internal/plc4go/simulated/readwrite/model/SimulatedDataTypeSizes.go
+++ b/plc4go/internal/plc4go/simulated/readwrite/model/SimulatedDataTypeSizes.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
@@ -65,6 +66,7 @@ const (
var SimulatedDataTypeSizesValues []SimulatedDataTypeSizes
func init() {
+ _ = errors.New
SimulatedDataTypeSizesValues = []SimulatedDataTypeSizes{
SimulatedDataTypeSizes_BOOL,
SimulatedDataTypeSizes_BYTE,
@@ -212,6 +214,15 @@ func (e SimulatedDataTypeSizes) DataTypeSize() uint8 {
}
}
}
+
+func SimulatedDataTypeSizesFirstEnumForFieldDataTypeSize(value uint8) (SimulatedDataTypeSizes, error) {
+ for _, sizeValue := range SimulatedDataTypeSizesValues {
+ if sizeValue.DataTypeSize() == value {
+ return sizeValue, nil
+ }
+ }
+ return 0, errors.Errorf("enum for %v not found", value)
+}
func SimulatedDataTypeSizesByValue(value uint8) SimulatedDataTypeSizes {
switch value {
case 1: