This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch feature/ads-symbol-discovery
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 513fa67186b32273be4a5981c0107b313475b310
Author: Christofer Dutz <[email protected]>
AuthorDate: Wed Aug 24 18:11:17 2022 +0200

    chore(plc4go/ads): Updated go code for ADS
---
 plc4go/protocols/ads/readwrite/ParserHelper.go     |   7 +-
 plc4go/protocols/ads/readwrite/XmlParserHelper.go  |   5 +-
 .../protocols/ads/readwrite/model/AdsDataType.go   |  92 +++---
 plc4go/protocols/ads/readwrite/model/DataItem.go   | 104 +++---
 .../protocols/ads/readwrite/model/PlcValueType.go  | 361 +++++++++++++++++++++
 .../ads/readwrite/model/ReservedIndexGroups.go     |  88 +++--
 6 files changed, 519 insertions(+), 138 deletions(-)

diff --git a/plc4go/protocols/ads/readwrite/ParserHelper.go 
b/plc4go/protocols/ads/readwrite/ParserHelper.go
index 886924168..1e0a3a4f1 100644
--- a/plc4go/protocols/ads/readwrite/ParserHelper.go
+++ b/plc4go/protocols/ads/readwrite/ParserHelper.go
@@ -35,15 +35,12 @@ func (m AdsParserHelper) Parse(typeName string, arguments 
[]string, io utils.Rea
        case "AmsSerialFrame":
                return model.AmsSerialFrameParse(io)
        case "DataItem":
-               dataFormatName, err := utils.StrToString(arguments[0])
-               if err != nil {
-                       return nil, errors.Wrap(err, "Error parsing")
-               }
+               plcValueType, _ := model.PlcValueTypeByName(arguments[0])
                stringLength, err := utils.StrToInt32(arguments[1])
                if err != nil {
                        return nil, errors.Wrap(err, "Error parsing")
                }
-               return model.DataItemParse(io, dataFormatName, stringLength)
+               return model.DataItemParse(io, plcValueType, stringLength)
        case "AdsTableSizes":
                return model.AdsTableSizesParse(io)
        case "AdsMultiRequestItem":
diff --git a/plc4go/protocols/ads/readwrite/XmlParserHelper.go 
b/plc4go/protocols/ads/readwrite/XmlParserHelper.go
index 39125b2e7..06b1eb683 100644
--- a/plc4go/protocols/ads/readwrite/XmlParserHelper.go
+++ b/plc4go/protocols/ads/readwrite/XmlParserHelper.go
@@ -45,14 +45,13 @@ func (m AdsXmlParserHelper) Parse(typeName string, 
xmlString string, parserArgum
        case "AmsSerialFrame":
                return 
model.AmsSerialFrameParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
        case "DataItem":
-               // TODO: find a way to parse the sub types
-               var dataFormatName string
+               plcValueType, _ := model.PlcValueTypeByName(parserArguments[0])
                parsedInt1, err := strconv.ParseInt(parserArguments[1], 10, 32)
                if err != nil {
                        return nil, err
                }
                stringLength := int32(parsedInt1)
-               return 
model.DataItemParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), 
dataFormatName, stringLength)
+               return 
model.DataItemParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), 
plcValueType, stringLength)
        case "AdsTableSizes":
                return 
model.AdsTableSizesParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
        case "AdsMultiRequestItem":
diff --git a/plc4go/protocols/ads/readwrite/model/AdsDataType.go 
b/plc4go/protocols/ads/readwrite/model/AdsDataType.go
index 99d9680ee..6918b275c 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsDataType.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsDataType.go
@@ -32,7 +32,7 @@ type AdsDataType int8
 
 type IAdsDataType interface {
        NumBytes() uint16
-       DataFormatName() string
+       PlcValueType() PlcValueType
        Serialize(writeBuffer utils.WriteBuffer) error
 }
 
@@ -305,182 +305,182 @@ func AdsDataTypeFirstEnumForFieldNumBytes(value uint16) 
(AdsDataType, error) {
        return 0, errors.Errorf("enum for %v describing NumBytes not found", 
value)
 }
 
-func (e AdsDataType) DataFormatName() string {
+func (e AdsDataType) PlcValueType() PlcValueType {
        switch e {
        case 0x01:
                { /* '0x01' */
-                       return "IEC61131_BOOL"
+                       return PlcValueType_BOOL
                }
        case 0x02:
                { /* '0x02' */
-                       return "IEC61131_BOOL"
+                       return PlcValueType_BOOL
                }
        case 0x03:
                { /* '0x03' */
-                       return "IEC61131_BYTE"
+                       return PlcValueType_BYTE
                }
        case 0x04:
                { /* '0x04' */
-                       return "IEC61131_BYTE"
+                       return PlcValueType_BYTE
                }
        case 0x05:
                { /* '0x05' */
-                       return "IEC61131_BYTE"
+                       return PlcValueType_BYTE
                }
        case 0x06:
                { /* '0x06' */
-                       return "IEC61131_WORD"
+                       return PlcValueType_WORD
                }
        case 0x07:
                { /* '0x07' */
-                       return "IEC61131_WORD"
+                       return PlcValueType_WORD
                }
        case 0x08:
                { /* '0x08' */
-                       return "IEC61131_DWORD"
+                       return PlcValueType_DWORD
                }
        case 0x09:
                { /* '0x09' */
-                       return "IEC61131_DWORD"
+                       return PlcValueType_DWORD
                }
        case 0x0A:
                { /* '0x0A' */
-                       return "IEC61131_SINT"
+                       return PlcValueType_SINT
                }
        case 0x0B:
                { /* '0x0B' */
-                       return "IEC61131_SINT"
+                       return PlcValueType_SINT
                }
        case 0x0C:
                { /* '0x0C' */
-                       return "IEC61131_USINT"
+                       return PlcValueType_USINT
                }
        case 0x0D:
                { /* '0x0D' */
-                       return "IEC61131_USINT"
+                       return PlcValueType_USINT
                }
        case 0x0E:
                { /* '0x0E' */
-                       return "IEC61131_INT"
+                       return PlcValueType_INT
                }
        case 0x0F:
                { /* '0x0F' */
-                       return "IEC61131_INT"
+                       return PlcValueType_INT
                }
        case 0x10:
                { /* '0x10' */
-                       return "IEC61131_UINT"
+                       return PlcValueType_UINT
                }
        case 0x11:
                { /* '0x11' */
-                       return "IEC61131_UINT"
+                       return PlcValueType_UINT
                }
        case 0x12:
                { /* '0x12' */
-                       return "IEC61131_DINT"
+                       return PlcValueType_DINT
                }
        case 0x13:
                { /* '0x13' */
-                       return "IEC61131_DINT"
+                       return PlcValueType_DINT
                }
        case 0x14:
                { /* '0x14' */
-                       return "IEC61131_UDINT"
+                       return PlcValueType_UDINT
                }
        case 0x15:
                { /* '0x15' */
-                       return "IEC61131_UDINT"
+                       return PlcValueType_UDINT
                }
        case 0x16:
                { /* '0x16' */
-                       return "IEC61131_LINT"
+                       return PlcValueType_LINT
                }
        case 0x17:
                { /* '0x17' */
-                       return "IEC61131_LINT"
+                       return PlcValueType_LINT
                }
        case 0x18:
                { /* '0x18' */
-                       return "IEC61131_ULINT"
+                       return PlcValueType_ULINT
                }
        case 0x19:
                { /* '0x19' */
-                       return "IEC61131_ULINT"
+                       return PlcValueType_ULINT
                }
        case 0x1A:
                { /* '0x1A' */
-                       return "IEC61131_REAL"
+                       return PlcValueType_REAL
                }
        case 0x1B:
                { /* '0x1B' */
-                       return "IEC61131_REAL"
+                       return PlcValueType_REAL
                }
        case 0x1C:
                { /* '0x1C' */
-                       return "IEC61131_LREAL"
+                       return PlcValueType_LREAL
                }
        case 0x1D:
                { /* '0x1D' */
-                       return "IEC61131_LREAL"
+                       return PlcValueType_LREAL
                }
        case 0x1E:
                { /* '0x1E' */
-                       return "IEC61131_CHAR"
+                       return PlcValueType_CHAR
                }
        case 0x1F:
                { /* '0x1F' */
-                       return "IEC61131_WCHAR"
+                       return PlcValueType_WCHAR
                }
        case 0x20:
                { /* '0x20' */
-                       return "IEC61131_STRING"
+                       return PlcValueType_STRING
                }
        case 0x21:
                { /* '0x21' */
-                       return "IEC61131_WSTRING"
+                       return PlcValueType_WSTRING
                }
        case 0x22:
                { /* '0x22' */
-                       return "IEC61131_TIME"
+                       return PlcValueType_TIME
                }
        case 0x23:
                { /* '0x23' */
-                       return "IEC61131_LTIME"
+                       return PlcValueType_LTIME
                }
        case 0x24:
                { /* '0x24' */
-                       return "IEC61131_DATE"
+                       return PlcValueType_DATE
                }
        case 0x25:
                { /* '0x25' */
-                       return "IEC61131_TIME_OF_DAY"
+                       return PlcValueType_TIME_OF_DAY
                }
        case 0x26:
                { /* '0x26' */
-                       return "IEC61131_TIME_OF_DAY"
+                       return PlcValueType_TIME_OF_DAY
                }
        case 0x27:
                { /* '0x27' */
-                       return "IEC61131_DATE_AND_TIME"
+                       return PlcValueType_DATE_AND_TIME
                }
        case 0x28:
                { /* '0x28' */
-                       return "IEC61131_DATE_AND_TIME"
+                       return PlcValueType_DATE_AND_TIME
                }
        default:
                {
-                       return ""
+                       return 0
                }
        }
 }
 
-func AdsDataTypeFirstEnumForFieldDataFormatName(value string) (AdsDataType, 
error) {
+func AdsDataTypeFirstEnumForFieldPlcValueType(value PlcValueType) 
(AdsDataType, error) {
        for _, sizeValue := range AdsDataTypeValues {
-               if sizeValue.DataFormatName() == value {
+               if sizeValue.PlcValueType() == value {
                        return sizeValue, nil
                }
        }
-       return 0, errors.Errorf("enum for %v describing DataFormatName not 
found", value)
+       return 0, errors.Errorf("enum for %v describing PlcValueType not 
found", value)
 }
 func AdsDataTypeByValue(value int8) (enum AdsDataType, ok bool) {
        switch value {
diff --git a/plc4go/protocols/ads/readwrite/model/DataItem.go 
b/plc4go/protocols/ads/readwrite/model/DataItem.go
index 5d2215378..ad0f76c64 100644
--- a/plc4go/protocols/ads/readwrite/model/DataItem.go
+++ b/plc4go/protocols/ads/readwrite/model/DataItem.go
@@ -29,10 +29,10 @@ import (
 
 // Code generated by code-generation. DO NOT EDIT.
 
-func DataItemParse(readBuffer utils.ReadBuffer, dataFormatName string, 
stringLength int32) (api.PlcValue, error) {
+func DataItemParse(readBuffer utils.ReadBuffer, plcValueType PlcValueType, 
stringLength int32) (api.PlcValue, error) {
        readBuffer.PullContext("DataItem")
        switch {
-       case dataFormatName == "IEC61131_BOOL": // BOOL
+       case plcValueType == PlcValueType_BOOL: // BOOL
                // Reserved Field (Just skip the bytes)
                if _, _err := readBuffer.ReadUint8("reserved", 7); _err != nil {
                        return nil, errors.Wrap(_err, "Error parsing reserved 
field")
@@ -45,7 +45,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcBOOL(value), nil
-       case dataFormatName == "IEC61131_BYTE": // BitString
+       case plcValueType == PlcValueType_BYTE: // BitString
                // Simple Field (value)
                value, _valueErr := readBuffer.ReadUint8("value", 8)
                if _valueErr != nil {
@@ -53,7 +53,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcBitString(value), nil
-       case dataFormatName == "IEC61131_WORD": // BitString
+       case plcValueType == PlcValueType_WORD: // BitString
                // Simple Field (value)
                value, _valueErr := readBuffer.ReadUint16("value", 16)
                if _valueErr != nil {
@@ -61,7 +61,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcBitString(value), nil
-       case dataFormatName == "IEC61131_DWORD": // BitString
+       case plcValueType == PlcValueType_DWORD: // BitString
                // Simple Field (value)
                value, _valueErr := readBuffer.ReadUint32("value", 32)
                if _valueErr != nil {
@@ -69,7 +69,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcBitString(value), nil
-       case dataFormatName == "IEC61131_SINT": // SINT
+       case plcValueType == PlcValueType_SINT: // SINT
                // Simple Field (value)
                value, _valueErr := readBuffer.ReadInt8("value", 8)
                if _valueErr != nil {
@@ -77,7 +77,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcSINT(value), nil
-       case dataFormatName == "IEC61131_USINT": // USINT
+       case plcValueType == PlcValueType_USINT: // USINT
                // Simple Field (value)
                value, _valueErr := readBuffer.ReadUint8("value", 8)
                if _valueErr != nil {
@@ -85,7 +85,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcUSINT(value), nil
-       case dataFormatName == "IEC61131_INT": // INT
+       case plcValueType == PlcValueType_INT: // INT
                // Simple Field (value)
                value, _valueErr := readBuffer.ReadInt16("value", 16)
                if _valueErr != nil {
@@ -93,7 +93,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcINT(value), nil
-       case dataFormatName == "IEC61131_UINT": // UINT
+       case plcValueType == PlcValueType_UINT: // UINT
                // Simple Field (value)
                value, _valueErr := readBuffer.ReadUint16("value", 16)
                if _valueErr != nil {
@@ -101,7 +101,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcUINT(value), nil
-       case dataFormatName == "IEC61131_DINT": // DINT
+       case plcValueType == PlcValueType_DINT: // DINT
                // Simple Field (value)
                value, _valueErr := readBuffer.ReadInt32("value", 32)
                if _valueErr != nil {
@@ -109,7 +109,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcDINT(value), nil
-       case dataFormatName == "IEC61131_UDINT": // UDINT
+       case plcValueType == PlcValueType_UDINT: // UDINT
                // Simple Field (value)
                value, _valueErr := readBuffer.ReadUint32("value", 32)
                if _valueErr != nil {
@@ -117,7 +117,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcUDINT(value), nil
-       case dataFormatName == "IEC61131_LINT": // LINT
+       case plcValueType == PlcValueType_LINT: // LINT
                // Simple Field (value)
                value, _valueErr := readBuffer.ReadInt64("value", 64)
                if _valueErr != nil {
@@ -125,7 +125,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcLINT(value), nil
-       case dataFormatName == "IEC61131_ULINT": // ULINT
+       case plcValueType == PlcValueType_ULINT: // ULINT
                // Simple Field (value)
                value, _valueErr := readBuffer.ReadUint64("value", 64)
                if _valueErr != nil {
@@ -133,7 +133,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcULINT(value), nil
-       case dataFormatName == "IEC61131_REAL": // REAL
+       case plcValueType == PlcValueType_REAL: // REAL
                // Simple Field (value)
                value, _valueErr := readBuffer.ReadFloat32("value", 32)
                if _valueErr != nil {
@@ -141,7 +141,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcREAL(value), nil
-       case dataFormatName == "IEC61131_LREAL": // LREAL
+       case plcValueType == PlcValueType_LREAL: // LREAL
                // Simple Field (value)
                value, _valueErr := readBuffer.ReadFloat64("value", 64)
                if _valueErr != nil {
@@ -149,7 +149,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcLREAL(value), nil
-       case dataFormatName == "IEC61131_CHAR": // STRING
+       case plcValueType == PlcValueType_CHAR: // STRING
                // Simple Field (value)
                value, _valueErr := readBuffer.ReadString("value", uint32(8))
                if _valueErr != nil {
@@ -157,7 +157,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcSTRING(value), nil
-       case dataFormatName == "IEC61131_WCHAR": // STRING
+       case plcValueType == PlcValueType_WCHAR: // STRING
                // Simple Field (value)
                value, _valueErr := readBuffer.ReadString("value", uint32(16))
                if _valueErr != nil {
@@ -165,7 +165,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcSTRING(value), nil
-       case dataFormatName == "IEC61131_STRING": // STRING
+       case plcValueType == PlcValueType_STRING: // STRING
                // Manual Field (value)
                value, _valueErr := ParseAmsString(readBuffer, stringLength, 
"UTF-8")
                if _valueErr != nil {
@@ -173,7 +173,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcSTRING(value), nil
-       case dataFormatName == "IEC61131_WSTRING": // STRING
+       case plcValueType == PlcValueType_WSTRING: // STRING
                // Manual Field (value)
                value, _valueErr := ParseAmsString(readBuffer, stringLength, 
"UTF-16")
                if _valueErr != nil {
@@ -181,7 +181,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcSTRING(value), nil
-       case dataFormatName == "IEC61131_TIME": // TIME
+       case plcValueType == PlcValueType_TIME: // TIME
                // Simple Field (value)
                value, _valueErr := readBuffer.ReadUint32("value", 32)
                if _valueErr != nil {
@@ -189,7 +189,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcTIME(value), nil
-       case dataFormatName == "IEC61131_LTIME": // LTIME
+       case plcValueType == PlcValueType_LTIME: // LTIME
                // Simple Field (value)
                value, _valueErr := readBuffer.ReadUint64("value", 64)
                if _valueErr != nil {
@@ -197,7 +197,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcLTIME(value), nil
-       case dataFormatName == "IEC61131_DATE": // DATE
+       case plcValueType == PlcValueType_DATE: // DATE
                // Simple Field (value)
                value, _valueErr := readBuffer.ReadUint32("value", 32)
                if _valueErr != nil {
@@ -205,7 +205,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcDATE(value), nil
-       case dataFormatName == "IEC61131_TIME_OF_DAY": // TIME_OF_DAY
+       case plcValueType == PlcValueType_TIME_OF_DAY: // TIME_OF_DAY
                // Simple Field (value)
                value, _valueErr := readBuffer.ReadUint32("value", 32)
                if _valueErr != nil {
@@ -213,7 +213,7 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
                }
                readBuffer.CloseContext("DataItem")
                return values.NewPlcTIME_OF_DAY(value), nil
-       case dataFormatName == "IEC61131_DATE_AND_TIME": // DATE_AND_TIME
+       case plcValueType == PlcValueType_DATE_AND_TIME: // DATE_AND_TIME
                // Simple Field (secondsSinceEpoch)
                secondsSinceEpoch, _secondsSinceEpochErr := 
readBuffer.ReadUint32("secondsSinceEpoch", 32)
                if _secondsSinceEpochErr != nil {
@@ -227,18 +227,18 @@ func DataItemParse(readBuffer utils.ReadBuffer, 
dataFormatName string, stringLen
        return nil, errors.New("unsupported type")
 }
 
-func DataItemSerialize(writeBuffer utils.WriteBuffer, value api.PlcValue, 
dataFormatName string, stringLength int32) error {
+func DataItemSerialize(writeBuffer utils.WriteBuffer, value api.PlcValue, 
plcValueType PlcValueType, stringLength int32) error {
        m := struct {
-               DataFormatName string
-               StringLength   int32
+               PlcValueType PlcValueType
+               StringLength int32
        }{
-               DataFormatName: dataFormatName,
-               StringLength:   stringLength,
+               PlcValueType: plcValueType,
+               StringLength: stringLength,
        }
        _ = m
        writeBuffer.PushContext("DataItem")
        switch {
-       case dataFormatName == "IEC61131_BOOL": // BOOL
+       case plcValueType == PlcValueType_BOOL: // BOOL
                // Reserved Field (Just skip the bytes)
                if _err := writeBuffer.WriteUint8("reserved", 7, uint8(0x00)); 
_err != nil {
                        return errors.Wrap(_err, "Error serializing reserved 
field")
@@ -248,114 +248,114 @@ func DataItemSerialize(writeBuffer utils.WriteBuffer, 
value api.PlcValue, dataFo
                if _err := writeBuffer.WriteBit("value", value.GetBool()); _err 
!= nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_BYTE": // BitString
+       case plcValueType == PlcValueType_BYTE: // BitString
                // Simple Field (value)
                if _err := writeBuffer.WriteUint8("value", 8, 
value.GetUint8()); _err != nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_WORD": // BitString
+       case plcValueType == PlcValueType_WORD: // BitString
                // Simple Field (value)
                if _err := writeBuffer.WriteUint16("value", 16, 
value.GetUint16()); _err != nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_DWORD": // BitString
+       case plcValueType == PlcValueType_DWORD: // BitString
                // Simple Field (value)
                if _err := writeBuffer.WriteUint32("value", 32, 
value.GetUint32()); _err != nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_SINT": // SINT
+       case plcValueType == PlcValueType_SINT: // SINT
                // Simple Field (value)
                if _err := writeBuffer.WriteInt8("value", 8, value.GetInt8()); 
_err != nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_USINT": // USINT
+       case plcValueType == PlcValueType_USINT: // USINT
                // Simple Field (value)
                if _err := writeBuffer.WriteUint8("value", 8, 
value.GetUint8()); _err != nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_INT": // INT
+       case plcValueType == PlcValueType_INT: // INT
                // Simple Field (value)
                if _err := writeBuffer.WriteInt16("value", 16, 
value.GetInt16()); _err != nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_UINT": // UINT
+       case plcValueType == PlcValueType_UINT: // UINT
                // Simple Field (value)
                if _err := writeBuffer.WriteUint16("value", 16, 
value.GetUint16()); _err != nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_DINT": // DINT
+       case plcValueType == PlcValueType_DINT: // DINT
                // Simple Field (value)
                if _err := writeBuffer.WriteInt32("value", 32, 
value.GetInt32()); _err != nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_UDINT": // UDINT
+       case plcValueType == PlcValueType_UDINT: // UDINT
                // Simple Field (value)
                if _err := writeBuffer.WriteUint32("value", 32, 
value.GetUint32()); _err != nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_LINT": // LINT
+       case plcValueType == PlcValueType_LINT: // LINT
                // Simple Field (value)
                if _err := writeBuffer.WriteInt64("value", 64, 
value.GetInt64()); _err != nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_ULINT": // ULINT
+       case plcValueType == PlcValueType_ULINT: // ULINT
                // Simple Field (value)
                if _err := writeBuffer.WriteUint64("value", 64, 
value.GetUint64()); _err != nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_REAL": // REAL
+       case plcValueType == PlcValueType_REAL: // REAL
                // Simple Field (value)
                if _err := writeBuffer.WriteFloat32("value", 32, 
value.GetFloat32()); _err != nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_LREAL": // LREAL
+       case plcValueType == PlcValueType_LREAL: // LREAL
                // Simple Field (value)
                if _err := writeBuffer.WriteFloat64("value", 64, 
value.GetFloat64()); _err != nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_CHAR": // STRING
+       case plcValueType == PlcValueType_CHAR: // STRING
                // Simple Field (value)
                if _err := writeBuffer.WriteString("value", uint32(8), "UTF-8", 
value.GetString()); _err != nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_WCHAR": // STRING
+       case plcValueType == PlcValueType_WCHAR: // STRING
                // Simple Field (value)
                if _err := writeBuffer.WriteString("value", uint32(16), 
"UTF-16", value.GetString()); _err != nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_STRING": // STRING
+       case plcValueType == PlcValueType_STRING: // STRING
                // Manual Field (value)
                _valueErr := SerializeAmsString(writeBuffer, value, 
m.StringLength, "UTF-8")
                if _valueErr != nil {
                        return errors.Wrap(_valueErr, "Error serializing 
'value' field")
                }
-       case dataFormatName == "IEC61131_WSTRING": // STRING
+       case plcValueType == PlcValueType_WSTRING: // STRING
                // Manual Field (value)
                _valueErr := SerializeAmsString(writeBuffer, value, 
m.StringLength, "UTF-16")
                if _valueErr != nil {
                        return errors.Wrap(_valueErr, "Error serializing 
'value' field")
                }
-       case dataFormatName == "IEC61131_TIME": // TIME
+       case plcValueType == PlcValueType_TIME: // TIME
                // Simple Field (value)
                if _err := writeBuffer.WriteUint32("value", 32, 
value.GetUint32()); _err != nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_LTIME": // LTIME
+       case plcValueType == PlcValueType_LTIME: // LTIME
                // Simple Field (value)
                if _err := writeBuffer.WriteUint64("value", 64, 
value.GetUint64()); _err != nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_DATE": // DATE
+       case plcValueType == PlcValueType_DATE: // DATE
                // Simple Field (value)
                if _err := writeBuffer.WriteUint32("value", 32, 
value.GetUint32()); _err != nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_TIME_OF_DAY": // TIME_OF_DAY
+       case plcValueType == PlcValueType_TIME_OF_DAY: // TIME_OF_DAY
                // Simple Field (value)
                if _err := writeBuffer.WriteUint32("value", 32, 
value.GetUint32()); _err != nil {
                        return errors.Wrap(_err, "Error serializing 'value' 
field")
                }
-       case dataFormatName == "IEC61131_DATE_AND_TIME": // DATE_AND_TIME
+       case plcValueType == PlcValueType_DATE_AND_TIME: // DATE_AND_TIME
                // Simple Field (secondsSinceEpoch)
                if _err := writeBuffer.WriteUint32("secondsSinceEpoch", 32, 
value.GetUint32()); _err != nil {
                        return errors.Wrap(_err, "Error serializing 
'secondsSinceEpoch' field")
diff --git a/plc4go/protocols/ads/readwrite/model/PlcValueType.go 
b/plc4go/protocols/ads/readwrite/model/PlcValueType.go
new file mode 100644
index 000000000..2817a8ba0
--- /dev/null
+++ b/plc4go/protocols/ads/readwrite/model/PlcValueType.go
@@ -0,0 +1,361 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+       "github.com/apache/plc4x/plc4go/spi/utils"
+       "github.com/pkg/errors"
+       "github.com/rs/zerolog/log"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// PlcValueType is an enum
+type PlcValueType uint8
+
+type IPlcValueType interface {
+       Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+const (
+       PlcValueType_NULL           PlcValueType = 0x00
+       PlcValueType_BOOL           PlcValueType = 0x01
+       PlcValueType_BYTE           PlcValueType = 0x02
+       PlcValueType_WORD           PlcValueType = 0x03
+       PlcValueType_DWORD          PlcValueType = 0x04
+       PlcValueType_LWORD          PlcValueType = 0x05
+       PlcValueType_USINT          PlcValueType = 0x11
+       PlcValueType_UINT           PlcValueType = 0x12
+       PlcValueType_UDINT          PlcValueType = 0x13
+       PlcValueType_ULINT          PlcValueType = 0x14
+       PlcValueType_SINT           PlcValueType = 0x21
+       PlcValueType_INT            PlcValueType = 0x22
+       PlcValueType_DINT           PlcValueType = 0x23
+       PlcValueType_LINT           PlcValueType = 0x24
+       PlcValueType_REAL           PlcValueType = 0x31
+       PlcValueType_LREAL          PlcValueType = 0x32
+       PlcValueType_CHAR           PlcValueType = 0x41
+       PlcValueType_WCHAR          PlcValueType = 0x42
+       PlcValueType_STRING         PlcValueType = 0x43
+       PlcValueType_WSTRING        PlcValueType = 0x44
+       PlcValueType_TIME           PlcValueType = 0x51
+       PlcValueType_LTIME          PlcValueType = 0x52
+       PlcValueType_DATE           PlcValueType = 0x53
+       PlcValueType_LDATE          PlcValueType = 0x54
+       PlcValueType_TIME_OF_DAY    PlcValueType = 0x55
+       PlcValueType_LTIME_OF_DAY   PlcValueType = 0x56
+       PlcValueType_DATE_AND_TIME  PlcValueType = 0x57
+       PlcValueType_LDATE_AND_TIME PlcValueType = 0x58
+       PlcValueType_Struct         PlcValueType = 0x61
+       PlcValueType_List           PlcValueType = 0x62
+       PlcValueType_RAW_BYTE_ARRAY PlcValueType = 0x71
+)
+
+var PlcValueTypeValues []PlcValueType
+
+func init() {
+       _ = errors.New
+       PlcValueTypeValues = []PlcValueType{
+               PlcValueType_NULL,
+               PlcValueType_BOOL,
+               PlcValueType_BYTE,
+               PlcValueType_WORD,
+               PlcValueType_DWORD,
+               PlcValueType_LWORD,
+               PlcValueType_USINT,
+               PlcValueType_UINT,
+               PlcValueType_UDINT,
+               PlcValueType_ULINT,
+               PlcValueType_SINT,
+               PlcValueType_INT,
+               PlcValueType_DINT,
+               PlcValueType_LINT,
+               PlcValueType_REAL,
+               PlcValueType_LREAL,
+               PlcValueType_CHAR,
+               PlcValueType_WCHAR,
+               PlcValueType_STRING,
+               PlcValueType_WSTRING,
+               PlcValueType_TIME,
+               PlcValueType_LTIME,
+               PlcValueType_DATE,
+               PlcValueType_LDATE,
+               PlcValueType_TIME_OF_DAY,
+               PlcValueType_LTIME_OF_DAY,
+               PlcValueType_DATE_AND_TIME,
+               PlcValueType_LDATE_AND_TIME,
+               PlcValueType_Struct,
+               PlcValueType_List,
+               PlcValueType_RAW_BYTE_ARRAY,
+       }
+}
+
+func PlcValueTypeByValue(value uint8) (enum PlcValueType, ok bool) {
+       switch value {
+       case 0x00:
+               return PlcValueType_NULL, true
+       case 0x01:
+               return PlcValueType_BOOL, true
+       case 0x02:
+               return PlcValueType_BYTE, true
+       case 0x03:
+               return PlcValueType_WORD, true
+       case 0x04:
+               return PlcValueType_DWORD, true
+       case 0x05:
+               return PlcValueType_LWORD, true
+       case 0x11:
+               return PlcValueType_USINT, true
+       case 0x12:
+               return PlcValueType_UINT, true
+       case 0x13:
+               return PlcValueType_UDINT, true
+       case 0x14:
+               return PlcValueType_ULINT, true
+       case 0x21:
+               return PlcValueType_SINT, true
+       case 0x22:
+               return PlcValueType_INT, true
+       case 0x23:
+               return PlcValueType_DINT, true
+       case 0x24:
+               return PlcValueType_LINT, true
+       case 0x31:
+               return PlcValueType_REAL, true
+       case 0x32:
+               return PlcValueType_LREAL, true
+       case 0x41:
+               return PlcValueType_CHAR, true
+       case 0x42:
+               return PlcValueType_WCHAR, true
+       case 0x43:
+               return PlcValueType_STRING, true
+       case 0x44:
+               return PlcValueType_WSTRING, true
+       case 0x51:
+               return PlcValueType_TIME, true
+       case 0x52:
+               return PlcValueType_LTIME, true
+       case 0x53:
+               return PlcValueType_DATE, true
+       case 0x54:
+               return PlcValueType_LDATE, true
+       case 0x55:
+               return PlcValueType_TIME_OF_DAY, true
+       case 0x56:
+               return PlcValueType_LTIME_OF_DAY, true
+       case 0x57:
+               return PlcValueType_DATE_AND_TIME, true
+       case 0x58:
+               return PlcValueType_LDATE_AND_TIME, true
+       case 0x61:
+               return PlcValueType_Struct, true
+       case 0x62:
+               return PlcValueType_List, true
+       case 0x71:
+               return PlcValueType_RAW_BYTE_ARRAY, true
+       }
+       return 0, false
+}
+
+func PlcValueTypeByName(value string) (enum PlcValueType, ok bool) {
+       switch value {
+       case "NULL":
+               return PlcValueType_NULL, true
+       case "BOOL":
+               return PlcValueType_BOOL, true
+       case "BYTE":
+               return PlcValueType_BYTE, true
+       case "WORD":
+               return PlcValueType_WORD, true
+       case "DWORD":
+               return PlcValueType_DWORD, true
+       case "LWORD":
+               return PlcValueType_LWORD, true
+       case "USINT":
+               return PlcValueType_USINT, true
+       case "UINT":
+               return PlcValueType_UINT, true
+       case "UDINT":
+               return PlcValueType_UDINT, true
+       case "ULINT":
+               return PlcValueType_ULINT, true
+       case "SINT":
+               return PlcValueType_SINT, true
+       case "INT":
+               return PlcValueType_INT, true
+       case "DINT":
+               return PlcValueType_DINT, true
+       case "LINT":
+               return PlcValueType_LINT, true
+       case "REAL":
+               return PlcValueType_REAL, true
+       case "LREAL":
+               return PlcValueType_LREAL, true
+       case "CHAR":
+               return PlcValueType_CHAR, true
+       case "WCHAR":
+               return PlcValueType_WCHAR, true
+       case "STRING":
+               return PlcValueType_STRING, true
+       case "WSTRING":
+               return PlcValueType_WSTRING, true
+       case "TIME":
+               return PlcValueType_TIME, true
+       case "LTIME":
+               return PlcValueType_LTIME, true
+       case "DATE":
+               return PlcValueType_DATE, true
+       case "LDATE":
+               return PlcValueType_LDATE, true
+       case "TIME_OF_DAY":
+               return PlcValueType_TIME_OF_DAY, true
+       case "LTIME_OF_DAY":
+               return PlcValueType_LTIME_OF_DAY, true
+       case "DATE_AND_TIME":
+               return PlcValueType_DATE_AND_TIME, true
+       case "LDATE_AND_TIME":
+               return PlcValueType_LDATE_AND_TIME, true
+       case "Struct":
+               return PlcValueType_Struct, true
+       case "List":
+               return PlcValueType_List, true
+       case "RAW_BYTE_ARRAY":
+               return PlcValueType_RAW_BYTE_ARRAY, true
+       }
+       return 0, false
+}
+
+func PlcValueTypeKnows(value uint8) bool {
+       for _, typeValue := range PlcValueTypeValues {
+               if uint8(typeValue) == value {
+                       return true
+               }
+       }
+       return false
+}
+
+func CastPlcValueType(structType interface{}) PlcValueType {
+       castFunc := func(typ interface{}) PlcValueType {
+               if sPlcValueType, ok := typ.(PlcValueType); ok {
+                       return sPlcValueType
+               }
+               return 0
+       }
+       return castFunc(structType)
+}
+
+func (m PlcValueType) GetLengthInBits() uint16 {
+       return 8
+}
+
+func (m PlcValueType) GetLengthInBytes() uint16 {
+       return m.GetLengthInBits() / 8
+}
+
+func PlcValueTypeParse(readBuffer utils.ReadBuffer) (PlcValueType, error) {
+       val, err := readBuffer.ReadUint8("PlcValueType", 8)
+       if err != nil {
+               return 0, errors.Wrap(err, "error reading PlcValueType")
+       }
+       if enum, ok := PlcValueTypeByValue(val); !ok {
+               log.Debug().Msgf("no value %x found for RequestType", val)
+               return PlcValueType(val), nil
+       } else {
+               return enum, nil
+       }
+}
+
+func (e PlcValueType) Serialize(writeBuffer utils.WriteBuffer) error {
+       return writeBuffer.WriteUint8("PlcValueType", 8, uint8(e), 
utils.WithAdditionalStringRepresentation(e.PLC4XEnumName()))
+}
+
+// PLC4XEnumName returns the name that is used in code to identify this enum
+func (e PlcValueType) PLC4XEnumName() string {
+       switch e {
+       case PlcValueType_NULL:
+               return "NULL"
+       case PlcValueType_BOOL:
+               return "BOOL"
+       case PlcValueType_BYTE:
+               return "BYTE"
+       case PlcValueType_WORD:
+               return "WORD"
+       case PlcValueType_DWORD:
+               return "DWORD"
+       case PlcValueType_LWORD:
+               return "LWORD"
+       case PlcValueType_USINT:
+               return "USINT"
+       case PlcValueType_UINT:
+               return "UINT"
+       case PlcValueType_UDINT:
+               return "UDINT"
+       case PlcValueType_ULINT:
+               return "ULINT"
+       case PlcValueType_SINT:
+               return "SINT"
+       case PlcValueType_INT:
+               return "INT"
+       case PlcValueType_DINT:
+               return "DINT"
+       case PlcValueType_LINT:
+               return "LINT"
+       case PlcValueType_REAL:
+               return "REAL"
+       case PlcValueType_LREAL:
+               return "LREAL"
+       case PlcValueType_CHAR:
+               return "CHAR"
+       case PlcValueType_WCHAR:
+               return "WCHAR"
+       case PlcValueType_STRING:
+               return "STRING"
+       case PlcValueType_WSTRING:
+               return "WSTRING"
+       case PlcValueType_TIME:
+               return "TIME"
+       case PlcValueType_LTIME:
+               return "LTIME"
+       case PlcValueType_DATE:
+               return "DATE"
+       case PlcValueType_LDATE:
+               return "LDATE"
+       case PlcValueType_TIME_OF_DAY:
+               return "TIME_OF_DAY"
+       case PlcValueType_LTIME_OF_DAY:
+               return "LTIME_OF_DAY"
+       case PlcValueType_DATE_AND_TIME:
+               return "DATE_AND_TIME"
+       case PlcValueType_LDATE_AND_TIME:
+               return "LDATE_AND_TIME"
+       case PlcValueType_Struct:
+               return "Struct"
+       case PlcValueType_List:
+               return "List"
+       case PlcValueType_RAW_BYTE_ARRAY:
+               return "RAW_BYTE_ARRAY"
+       }
+       return ""
+}
+
+func (e PlcValueType) String() string {
+       return e.PLC4XEnumName()
+}
diff --git a/plc4go/protocols/ads/readwrite/model/ReservedIndexGroups.go 
b/plc4go/protocols/ads/readwrite/model/ReservedIndexGroups.go
index aa594c7aa..257a4568b 100644
--- a/plc4go/protocols/ads/readwrite/model/ReservedIndexGroups.go
+++ b/plc4go/protocols/ads/readwrite/model/ReservedIndexGroups.go
@@ -35,38 +35,41 @@ type IReservedIndexGroups interface {
 }
 
 const (
-       ReservedIndexGroups_ADSIGRP_SYMTAB                     
ReservedIndexGroups = 0x0000F000
-       ReservedIndexGroups_ADSIGRP_SYMNAME                    
ReservedIndexGroups = 0x0000F001
-       ReservedIndexGroups_ADSIGRP_SYMVAL                     
ReservedIndexGroups = 0x0000F002
-       ReservedIndexGroups_ADSIGRP_SYM_HNDBYNAME              
ReservedIndexGroups = 0x0000F003
-       ReservedIndexGroups_ADSIGRP_SYM_VALBYNAME              
ReservedIndexGroups = 0x0000F004
-       ReservedIndexGroups_ADSIGRP_SYM_VALBYHND               
ReservedIndexGroups = 0x0000F005
-       ReservedIndexGroups_ADSIGRP_SYM_RELEASEHND             
ReservedIndexGroups = 0x0000F006
-       ReservedIndexGroups_ADSIGRP_SYM_INFOBYNAME             
ReservedIndexGroups = 0x0000F007
-       ReservedIndexGroups_ADSIGRP_SYM_VERSION                
ReservedIndexGroups = 0x0000F008
-       ReservedIndexGroups_ADSIGRP_SYM_INFOBYNAMEEX           
ReservedIndexGroups = 0x0000F009
-       ReservedIndexGroups_ADSIGRP_SYM_DOWNLOAD               
ReservedIndexGroups = 0x0000F00A
-       ReservedIndexGroups_ADSIGRP_SYM_UPLOAD                 
ReservedIndexGroups = 0x0000F00B
-       ReservedIndexGroups_ADSIGRP_SYM_UPLOADINFO             
ReservedIndexGroups = 0x0000F00C
-       ReservedIndexGroups_ADSIGRP_DATA_TYPE_TABLE_UPLOAD     
ReservedIndexGroups = 0x0000F00E
-       ReservedIndexGroups_ADSIGRP_SYMBOL_AND_DATA_TYPE_SIZES 
ReservedIndexGroups = 0x0000F00F
-       ReservedIndexGroups_ADSIGRP_SYMNOTE                    
ReservedIndexGroups = 0x0000F010
-       ReservedIndexGroups_ADSIGRP_IOIMAGE_RWIB               
ReservedIndexGroups = 0x0000F020
-       ReservedIndexGroups_ADSIGRP_IOIMAGE_RWIX               
ReservedIndexGroups = 0x0000F021
-       ReservedIndexGroups_ADSIGRP_IOIMAGE_RISIZE             
ReservedIndexGroups = 0x0000F025
-       ReservedIndexGroups_ADSIGRP_IOIMAGE_RWOB               
ReservedIndexGroups = 0x0000F030
-       ReservedIndexGroups_ADSIGRP_IOIMAGE_RWOX               
ReservedIndexGroups = 0x0000F031
-       ReservedIndexGroups_ADSIGRP_IOIMAGE_RWOSIZE            
ReservedIndexGroups = 0x0000F035
-       ReservedIndexGroups_ADSIGRP_IOIMAGE_CLEARI             
ReservedIndexGroups = 0x0000F040
-       ReservedIndexGroups_ADSIGRP_IOIMAGE_CLEARO             
ReservedIndexGroups = 0x0000F050
-       ReservedIndexGroups_ADSIGRP_IOIMAGE_RWIOB              
ReservedIndexGroups = 0x0000F060
-       ReservedIndexGroups_ADSIGRP_MULTIPLE_READ              
ReservedIndexGroups = 0x0000F080
-       ReservedIndexGroups_ADSIGRP_MULTIPLE_WRITE             
ReservedIndexGroups = 0x0000F081
-       ReservedIndexGroups_ADSIGRP_MULTIPLE_READ_WRITE        
ReservedIndexGroups = 0x0000F082
-       ReservedIndexGroups_ADSIGRP_MULTIPLE_RELEASE_HANDLE    
ReservedIndexGroups = 0x0000F083
-       ReservedIndexGroups_ADSIGRP_DEVICE_DATA                
ReservedIndexGroups = 0x0000F100
-       ReservedIndexGroups_ADSIOFFS_DEVDATA_ADSSTATE          
ReservedIndexGroups = 0x00000000
-       ReservedIndexGroups_ADSIOFFS_DEVDATA_DEVSTATE          
ReservedIndexGroups = 0x00000002
+       ReservedIndexGroups_ADSIGRP_SYMTAB                               
ReservedIndexGroups = 0x0000F000
+       ReservedIndexGroups_ADSIGRP_SYMNAME                              
ReservedIndexGroups = 0x0000F001
+       ReservedIndexGroups_ADSIGRP_SYMVAL                               
ReservedIndexGroups = 0x0000F002
+       ReservedIndexGroups_ADSIGRP_SYM_HNDBYNAME                        
ReservedIndexGroups = 0x0000F003
+       ReservedIndexGroups_ADSIGRP_SYM_VALBYNAME                        
ReservedIndexGroups = 0x0000F004
+       ReservedIndexGroups_ADSIGRP_SYM_VALBYHND                         
ReservedIndexGroups = 0x0000F005
+       ReservedIndexGroups_ADSIGRP_SYM_RELEASEHND                       
ReservedIndexGroups = 0x0000F006
+       ReservedIndexGroups_ADSIGRP_SYM_INFOBYNAME                       
ReservedIndexGroups = 0x0000F007
+       ReservedIndexGroups_ADSIGRP_SYM_VERSION                          
ReservedIndexGroups = 0x0000F008
+       ReservedIndexGroups_ADSIGRP_SYM_INFOBYNAMEEX                     
ReservedIndexGroups = 0x0000F009
+       ReservedIndexGroups_ADSIGRP_SYM_DOWNLOAD                         
ReservedIndexGroups = 0x0000F00A
+       ReservedIndexGroups_ADSIGRP_SYM_UPLOAD                           
ReservedIndexGroups = 0x0000F00B
+       ReservedIndexGroups_ADSIGRP_SYM_UPLOADINFO                       
ReservedIndexGroups = 0x0000F00C
+       ReservedIndexGroups_ADSIGRP_DATA_TYPE_TABLE_UPLOAD               
ReservedIndexGroups = 0x0000F00E
+       ReservedIndexGroups_ADSIGRP_SYMBOL_AND_DATA_TYPE_SIZES           
ReservedIndexGroups = 0x0000F00F
+       ReservedIndexGroups_ADSIGRP_SYMNOTE                              
ReservedIndexGroups = 0x0000F010
+       ReservedIndexGroups_ADSIGRP_IOIMAGE_RWIB                         
ReservedIndexGroups = 0x0000F020
+       ReservedIndexGroups_ADSIGRP_IOIMAGE_RWIX                         
ReservedIndexGroups = 0x0000F021
+       ReservedIndexGroups_ADSIGRP_IOIMAGE_RISIZE                       
ReservedIndexGroups = 0x0000F025
+       ReservedIndexGroups_ADSIGRP_IOIMAGE_RWOB                         
ReservedIndexGroups = 0x0000F030
+       ReservedIndexGroups_ADSIGRP_IOIMAGE_RWOX                         
ReservedIndexGroups = 0x0000F031
+       ReservedIndexGroups_ADSIGRP_IOIMAGE_RWOSIZE                      
ReservedIndexGroups = 0x0000F035
+       ReservedIndexGroups_ADSIGRP_IOIMAGE_CLEARI                       
ReservedIndexGroups = 0x0000F040
+       ReservedIndexGroups_ADSIGRP_IOIMAGE_CLEARO                       
ReservedIndexGroups = 0x0000F050
+       ReservedIndexGroups_ADSIGRP_IOIMAGE_RWIOB                        
ReservedIndexGroups = 0x0000F060
+       ReservedIndexGroups_ADSIGRP_MULTIPLE_READ                        
ReservedIndexGroups = 0x0000F080
+       ReservedIndexGroups_ADSIGRP_MULTIPLE_WRITE                       
ReservedIndexGroups = 0x0000F081
+       ReservedIndexGroups_ADSIGRP_MULTIPLE_READ_WRITE                  
ReservedIndexGroups = 0x0000F082
+       ReservedIndexGroups_ADSIGRP_MULTIPLE_RELEASE_HANDLE              
ReservedIndexGroups = 0x0000F083
+       ReservedIndexGroups_ADSIGRP_SUMUP_READEX2                        
ReservedIndexGroups = 0x0000F084
+       ReservedIndexGroups_ADSIGRP_MULTIPLE_ADD_DEVICE_NOTIFICATIONS    
ReservedIndexGroups = 0x0000F085
+       ReservedIndexGroups_ADSIGRP_MULTIPLE_DELETE_DEVICE_NOTIFICATIONS 
ReservedIndexGroups = 0x0000F086
+       ReservedIndexGroups_ADSIGRP_DEVICE_DATA                          
ReservedIndexGroups = 0x0000F100
+       ReservedIndexGroups_ADSIOFFS_DEVDATA_ADSSTATE                    
ReservedIndexGroups = 0x00000000
+       ReservedIndexGroups_ADSIOFFS_DEVDATA_DEVSTATE                    
ReservedIndexGroups = 0x00000002
 )
 
 var ReservedIndexGroupsValues []ReservedIndexGroups
@@ -103,6 +106,9 @@ func init() {
                ReservedIndexGroups_ADSIGRP_MULTIPLE_WRITE,
                ReservedIndexGroups_ADSIGRP_MULTIPLE_READ_WRITE,
                ReservedIndexGroups_ADSIGRP_MULTIPLE_RELEASE_HANDLE,
+               ReservedIndexGroups_ADSIGRP_SUMUP_READEX2,
+               ReservedIndexGroups_ADSIGRP_MULTIPLE_ADD_DEVICE_NOTIFICATIONS,
+               
ReservedIndexGroups_ADSIGRP_MULTIPLE_DELETE_DEVICE_NOTIFICATIONS,
                ReservedIndexGroups_ADSIGRP_DEVICE_DATA,
                ReservedIndexGroups_ADSIOFFS_DEVDATA_ADSSTATE,
                ReservedIndexGroups_ADSIOFFS_DEVDATA_DEVSTATE,
@@ -173,6 +179,12 @@ func ReservedIndexGroupsByValue(value uint32) (enum 
ReservedIndexGroups, ok bool
                return ReservedIndexGroups_ADSIGRP_MULTIPLE_READ_WRITE, true
        case 0x0000F083:
                return ReservedIndexGroups_ADSIGRP_MULTIPLE_RELEASE_HANDLE, true
+       case 0x0000F084:
+               return ReservedIndexGroups_ADSIGRP_SUMUP_READEX2, true
+       case 0x0000F085:
+               return 
ReservedIndexGroups_ADSIGRP_MULTIPLE_ADD_DEVICE_NOTIFICATIONS, true
+       case 0x0000F086:
+               return 
ReservedIndexGroups_ADSIGRP_MULTIPLE_DELETE_DEVICE_NOTIFICATIONS, true
        case 0x0000F100:
                return ReservedIndexGroups_ADSIGRP_DEVICE_DATA, true
        }
@@ -243,6 +255,12 @@ func ReservedIndexGroupsByName(value string) (enum 
ReservedIndexGroups, ok bool)
                return ReservedIndexGroups_ADSIGRP_MULTIPLE_READ_WRITE, true
        case "ADSIGRP_MULTIPLE_RELEASE_HANDLE":
                return ReservedIndexGroups_ADSIGRP_MULTIPLE_RELEASE_HANDLE, true
+       case "ADSIGRP_SUMUP_READEX2":
+               return ReservedIndexGroups_ADSIGRP_SUMUP_READEX2, true
+       case "ADSIGRP_MULTIPLE_ADD_DEVICE_NOTIFICATIONS":
+               return 
ReservedIndexGroups_ADSIGRP_MULTIPLE_ADD_DEVICE_NOTIFICATIONS, true
+       case "ADSIGRP_MULTIPLE_DELETE_DEVICE_NOTIFICATIONS":
+               return 
ReservedIndexGroups_ADSIGRP_MULTIPLE_DELETE_DEVICE_NOTIFICATIONS, true
        case "ADSIGRP_DEVICE_DATA":
                return ReservedIndexGroups_ADSIGRP_DEVICE_DATA, true
        }
@@ -358,6 +376,12 @@ func (e ReservedIndexGroups) PLC4XEnumName() string {
                return "ADSIGRP_MULTIPLE_READ_WRITE"
        case ReservedIndexGroups_ADSIGRP_MULTIPLE_RELEASE_HANDLE:
                return "ADSIGRP_MULTIPLE_RELEASE_HANDLE"
+       case ReservedIndexGroups_ADSIGRP_SUMUP_READEX2:
+               return "ADSIGRP_SUMUP_READEX2"
+       case ReservedIndexGroups_ADSIGRP_MULTIPLE_ADD_DEVICE_NOTIFICATIONS:
+               return "ADSIGRP_MULTIPLE_ADD_DEVICE_NOTIFICATIONS"
+       case ReservedIndexGroups_ADSIGRP_MULTIPLE_DELETE_DEVICE_NOTIFICATIONS:
+               return "ADSIGRP_MULTIPLE_DELETE_DEVICE_NOTIFICATIONS"
        case ReservedIndexGroups_ADSIGRP_DEVICE_DATA:
                return "ADSIGRP_DEVICE_DATA"
        }

Reply via email to