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

commit cae55bd06f0b3a0061257d105d02c081fce62a30
Author: Sebastian Rühl <[email protected]>
AuthorDate: Sun Apr 18 13:17:35 2021 +0200

    plc4go: box rendering now prints hex values for every element
    
    + bit fields now get rendered with b0 or b1
    + added discriminator fields to rendering
    + enum now render itself with correct size
---
 .../resources/templates/go/enum-template.go.ftlh   |  8 ++-
 .../resources/templates/go/model-template.go.ftlh  | 10 ++--
 go.mod                                             |  2 +-
 go.sum                                             |  2 +
 .../plc4go/ads/readwrite/model/AdsDataType.go      |  2 +-
 .../plc4go/ads/readwrite/model/CommandId.go        |  2 +-
 .../ads/readwrite/model/ReservedIndexGroups.go     |  2 +-
 .../plc4go/ads/readwrite/model/ReturnCode.go       |  2 +-
 .../plc4go/bacnetip/readwrite/model/APDU.go        |  4 +-
 .../bacnetip/readwrite/model/ApplicationTag.go     |  2 +-
 .../readwrite/model/BACnetConfirmedServiceACK.go   |  4 +-
 .../model/BACnetConfirmedServiceRequest.go         |  4 +-
 ...firmedServiceRequestConfirmedCOVNotification.go | 12 ++--
 .../BACnetConfirmedServiceRequestReadProperty.go   |  4 +-
 .../BACnetConfirmedServiceRequestSubscribeCOV.go   | 10 ++--
 .../BACnetConfirmedServiceRequestWriteProperty.go  |  8 +--
 .../plc4go/bacnetip/readwrite/model/BACnetError.go |  4 +-
 .../readwrite/model/BACnetErrorReadProperty.go     |  4 +-
 .../bacnetip/readwrite/model/BACnetNetworkType.go  |  2 +-
 .../bacnetip/readwrite/model/BACnetNodeType.go     |  2 +-
 .../bacnetip/readwrite/model/BACnetNotifyType.go   |  2 +-
 .../bacnetip/readwrite/model/BACnetObjectType.go   |  2 +-
 .../bacnetip/readwrite/model/BACnetServiceAck.go   |  4 +-
 .../model/BACnetServiceAckReadProperty.go          |  8 +--
 .../plc4go/bacnetip/readwrite/model/BACnetTag.go   |  4 +-
 .../readwrite/model/BACnetTagWithContent.go        |  4 +-
 .../model/BACnetUnconfirmedServiceRequest.go       |  4 +-
 .../model/BACnetUnconfirmedServiceRequestIAm.go    |  8 +--
 ...rmedServiceRequestUnconfirmedPrivateTransfer.go |  8 +--
 .../model/BACnetUnconfirmedServiceRequestWhoHas.go |  6 +-
 .../model/BACnetUnconfirmedServiceRequestWhoIs.go  |  4 +-
 .../plc4go/bacnetip/readwrite/model/BVLC.go        |  6 +-
 .../plc4go/bacnetip/readwrite/model/NLM.go         |  4 +-
 .../plc4go/knxnetip/readwrite/model/AccessLevel.go |  2 +-
 .../plc4go/knxnetip/readwrite/model/Apdu.go        |  4 +-
 .../plc4go/knxnetip/readwrite/model/ApduControl.go |  4 +-
 .../plc4go/knxnetip/readwrite/model/ApduData.go    |  4 +-
 .../plc4go/knxnetip/readwrite/model/ApduDataExt.go |  4 +-
 .../plc4go/knxnetip/readwrite/model/CEMI.go        |  4 +-
 .../readwrite/model/CEMIAdditionalInformation.go   |  4 +-
 .../CEMIAdditionalInformationBusmonitorInfo.go     |  2 +-
 .../CEMIAdditionalInformationRelativeTimestamp.go  |  2 +-
 .../knxnetip/readwrite/model/CEMIPriority.go       |  2 +-
 .../readwrite/model/ComObjectTableAddresses.go     |  2 +-
 .../knxnetip/readwrite/model/ComObjectValueType.go |  2 +-
 .../model/ConnectionRequestInformation.go          |  4 +-
 .../readwrite/model/ConnectionResponseDataBlock.go |  4 +-
 .../knxnetip/readwrite/model/DeviceDescriptor.go   |  2 +-
 .../readwrite/model/DeviceDescriptorMediumType.go  |  2 +-
 .../knxnetip/readwrite/model/FirmwareType.go       |  2 +-
 .../knxnetip/readwrite/model/HostProtocolCode.go   |  2 +-
 .../readwrite/model/KnxDatapointMainType.go        |  2 +-
 .../knxnetip/readwrite/model/KnxDatapointType.go   |  2 +-
 .../readwrite/model/KnxInterfaceObjectProperty.go  |  2 +-
 .../readwrite/model/KnxInterfaceObjectType.go      |  2 +-
 .../plc4go/knxnetip/readwrite/model/KnxLayer.go    |  2 +-
 .../knxnetip/readwrite/model/KnxManufacturer.go    |  2 +-
 .../plc4go/knxnetip/readwrite/model/KnxMedium.go   |  2 +-
 .../knxnetip/readwrite/model/KnxNetIpMessage.go    |  6 +-
 .../readwrite/model/KnxPropertyDataType.go         |  2 +-
 .../plc4go/knxnetip/readwrite/model/LDataFrame.go  |  8 +--
 .../plc4go/knxnetip/readwrite/model/ServiceId.go   |  4 +-
 .../plc4go/knxnetip/readwrite/model/Status.go      |  2 +-
 .../readwrite/model/SupportedPhysicalMedia.go      |  2 +-
 .../modbus/readwrite/model/ModbusConstants.go      |  2 +-
 .../modbus/readwrite/model/ModbusDataType.go       |  2 +-
 .../modbus/readwrite/model/ModbusErrorCode.go      |  2 +-
 .../plc4go/modbus/readwrite/model/ModbusPDU.go     |  8 +--
 .../plc4go/modbus/readwrite/model/ModbusTcpADU.go  |  2 +-
 .../plc4go/s7/readwrite/model/COTPPacket.go        |  4 +-
 .../plc4go/s7/readwrite/model/COTPParameter.go     |  4 +-
 .../plc4go/s7/readwrite/model/COTPProtocolClass.go |  2 +-
 .../plc4go/s7/readwrite/model/COTPTpduSize.go      |  2 +-
 .../s7/readwrite/model/DataTransportErrorCode.go   |  2 +-
 .../plc4go/s7/readwrite/model/DataTransportSize.go |  2 +-
 .../plc4go/s7/readwrite/model/DeviceGroup.go       |  2 +-
 .../plc4go/s7/readwrite/model/MemoryArea.go        |  2 +-
 .../plc4go/s7/readwrite/model/S7Address.go         |  4 +-
 .../plc4go/s7/readwrite/model/S7Message.go         |  6 +-
 .../plc4go/s7/readwrite/model/S7Parameter.go       |  4 +-
 .../s7/readwrite/model/S7ParameterUserDataItem.go  |  4 +-
 ...ayloadUserDataItemCpuFunctionReadSzlResponse.go |  2 +-
 .../readwrite/model/S7VarRequestParameterItem.go   |  4 +-
 .../s7/readwrite/model/SzlModuleTypeClass.go       |  2 +-
 .../plc4go/s7/readwrite/model/SzlSublist.go        |  2 +-
 .../plc4go/s7/readwrite/model/TPKTPacket.go        |  2 +-
 .../plc4go/s7/readwrite/model/TransportSize.go     |  2 +-
 plc4go/internal/plc4go/s7/s7Io_test.go             | 70 +++++++++++-----------
 plc4go/internal/plc4go/spi/utils/dumpUtils.go      | 15 +++--
 plc4go/internal/plc4go/spi/utils/dumpUtils_test.go | 14 ++---
 90 files changed, 211 insertions(+), 200 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 4d9da22..4f5b94d 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
@@ -219,6 +219,12 @@ func (m ${type.name}) Box(s string, i int) utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", ${baseType}(m), 
m.name()), -1)
+       <#if helper.isSimpleTypeReference(type.type) && 
!helper.isStringTypeReference(type.type)>
+               <#assign simpleTypeReference=type.type>
+               <#assign 
hexDigits=(simpleTypeReference.getSizeInBits()/4)?ceiling>
+       <#else>
+               <#assign hexDigits=2>
+       </#if>
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", ${hexDigits}, 
${baseType}(m), m.name()), -1)
 }
 </#outputformat>
\ No newline at end of file
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 9ec43dc..99c1403 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
@@ -1426,20 +1426,20 @@ func (m ${type.name}) Box(name string, width int) 
utils.AsciiBox {
                                <#case "const">
                                        <#assign constField = field>
                                        <#assign simpleTypeReference = 
constField.type>
+                                       <#assign baseType = 
helper.getLanguageTypeNameForTypeReference(simpleTypeReference)>
        // Const Field (${constField.name})
-       boxes = append(boxes, utils.BoxAnything("${constField.name?cap_first}", 
${constField.referenceValue}, -1))
+       boxes = append(boxes, utils.BoxAnything("${constField.name?cap_first}", 
${baseType}(${constField.referenceValue}), -1))
                                        <#break>
                                <#case "discriminator">
                                        <#assign discriminatorField = field>
                                        <#assign simpleTypeReference = 
discriminatorField.type>
        // Discriminator Field (${discriminatorField.name}) (Used as input to a 
switch field)
-       // ${discriminatorField.name} := 
${helper.getLanguageTypeNameForField(field)}(child.${discriminatorField.name?cap_first}())
+       ${discriminatorField.name} := 
${helper.getLanguageTypeNameForField(field)}(m.Child.${discriminatorField.name?cap_first}())
+       // ${helper.getLanguageTypeNameForField(field)} can be boxed as 
anything with the least amount of space
+       boxes = append(boxes, utils.BoxAnything("${field.name?cap_first}", 
${discriminatorField.name}, -1))
                                        <#if helper.isEnumField(field)>
        // TODO: implement boxing on enum
        //_${discriminatorField.name}Err := 
${discriminatorField.name}.Box(discriminatorField.name, -1)
-                                       <#else>
-       // ${helper.getLanguageTypeNameForField(field)} can be boxed as 
anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("${field.name?cap_first}", 
${discriminatorField.name}, -1))
                                        </#if>
                                        <#break>
                                <#case "enum">
diff --git a/go.mod b/go.mod
index 26eee1f..6b93370 100644
--- a/go.mod
+++ b/go.mod
@@ -21,6 +21,6 @@ module github.com/apache/plc4x
 go 1.15
 
 require (
-       github.com/apache/plc4x/plc4go v0.0.0-20210418001949-8353c6ca0d6e // 
indirect
+       github.com/apache/plc4x/plc4go v0.0.0-20210418081731-8c31e221e19b // 
indirect
        github.com/sirupsen/logrus v1.7.0 // indirect
 )
diff --git a/go.sum b/go.sum
index b150d04..b286216 100644
--- a/go.sum
+++ b/go.sum
@@ -78,6 +78,8 @@ github.com/apache/plc4x/plc4go 
v0.0.0-20210417204159-aa6f51489015 h1:12twvBpJiyb
 github.com/apache/plc4x/plc4go v0.0.0-20210417204159-aa6f51489015/go.mod 
h1:NfO8uGKPGwDxn1GqOb4oNhAtPF7St1A9LRk1J/qSlWU=
 github.com/apache/plc4x/plc4go v0.0.0-20210418001949-8353c6ca0d6e 
h1:4rHtG/2mdCFK7J50PoZtnhg3jP6hplFQYsUn/kStjnM=
 github.com/apache/plc4x/plc4go v0.0.0-20210418001949-8353c6ca0d6e/go.mod 
h1:NfO8uGKPGwDxn1GqOb4oNhAtPF7St1A9LRk1J/qSlWU=
+github.com/apache/plc4x/plc4go v0.0.0-20210418081731-8c31e221e19b 
h1:e9gmhDvJ4xmqTVmErDOn+C6epcQXZjhlw50sCgu2Oms=
+github.com/apache/plc4x/plc4go v0.0.0-20210418081731-8c31e221e19b/go.mod 
h1:NfO8uGKPGwDxn1GqOb4oNhAtPF7St1A9LRk1J/qSlWU=
 github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod 
h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
 github.com/davecgh/go-spew v1.1.1/go.mod 
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/dnephin/pflag v1.0.7/go.mod 
h1:uxE91IoWURlOiTUIA8Mq5ZZkAv3dPUfZNaT80Zm7OQE=
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsDataType.go 
b/plc4go/internal/plc4go/ads/readwrite/model/AdsDataType.go
index 12a8dbf..264fe51 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsDataType.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsDataType.go
@@ -789,5 +789,5 @@ func (m AdsDataType) Box(s string, i int) utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", int8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 2, int8(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/CommandId.go 
b/plc4go/internal/plc4go/ads/readwrite/model/CommandId.go
index 7b94d47..40e324b 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/CommandId.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/CommandId.go
@@ -210,5 +210,5 @@ func (m CommandId) Box(s string, i int) utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint16(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 4, uint16(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/ReservedIndexGroups.go 
b/plc4go/internal/plc4go/ads/readwrite/model/ReservedIndexGroups.go
index 27007da..dff231a 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/ReservedIndexGroups.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/ReservedIndexGroups.go
@@ -370,5 +370,5 @@ func (m ReservedIndexGroups) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint32(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 8, uint32(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/ReturnCode.go 
b/plc4go/internal/plc4go/ads/readwrite/model/ReturnCode.go
index 592587e..4ffbccb 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/ReturnCode.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/ReturnCode.go
@@ -1106,5 +1106,5 @@ func (m ReturnCode) Box(s string, i int) utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint32(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 8, uint32(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
index 40b083a..0e9d0e3 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
@@ -332,9 +332,9 @@ func (m *APDU) BoxParent(name string, width int, childBoxer 
func() []utils.Ascii
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (apduType) (Used as input to a switch field)
-       // apduType := uint8(child.ApduType())
+       apduType := uint8(m.Child.ApduType())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("ApduType", apduType, -1))
+       boxes = append(boxes, utils.BoxAnything("ApduType", apduType, -1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go
index fd49ce5..f48bd7c 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go
@@ -234,5 +234,5 @@ func (m ApplicationTag) Box(s string, i int) utils.AsciiBox 
{
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", int8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 1, int8(m), 
m.name()), -1)
 }
diff --git 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
index ff7e56c..8aaa34e 100644
--- 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
+++ 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
@@ -514,9 +514,9 @@ func (m *BACnetConfirmedServiceACK) BoxParent(name string, 
width int, childBoxer
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (serviceChoice) (Used as input to a switch field)
-       // serviceChoice := uint8(child.ServiceChoice())
+       serviceChoice := uint8(m.Child.ServiceChoice())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("ServiceChoice", 
serviceChoice, -1))
+       boxes = append(boxes, utils.BoxAnything("ServiceChoice", serviceChoice, 
-1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
diff --git 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
index a4dff38..a5a0210 100644
--- 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
+++ 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
@@ -843,9 +843,9 @@ func (m *BACnetConfirmedServiceRequest) BoxParent(name 
string, width int, childB
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (serviceChoice) (Used as input to a switch field)
-       // serviceChoice := uint8(child.ServiceChoice())
+       serviceChoice := uint8(m.Child.ServiceChoice())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("ServiceChoice", 
serviceChoice, -1))
+       boxes = append(boxes, utils.BoxAnything("ServiceChoice", serviceChoice, 
-1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
diff --git 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
index 5ddd183..8dd1f61 100644
--- 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
+++ 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
@@ -536,12 +536,12 @@ func (m 
BACnetConfirmedServiceRequestConfirmedCOVNotification) Box(name string,
        childBoxer := func() []utils.AsciiBox {
                boxes := make([]utils.AsciiBox, 0)
                // Const Field (subscriberProcessIdentifierHeader)
-               boxes = append(boxes, 
utils.BoxAnything("SubscriberProcessIdentifierHeader", 0x09, -1))
+               boxes = append(boxes, 
utils.BoxAnything("SubscriberProcessIdentifierHeader", uint8(0x09), -1))
                // Simple field (case simple)
                // uint8 can be boxed as anything with the least amount of space
                boxes = append(boxes, 
utils.BoxAnything("SubscriberProcessIdentifier", m.SubscriberProcessIdentifier, 
-1))
                // Const Field (monitoredObjectIdentifierHeader)
-               boxes = append(boxes, 
utils.BoxAnything("MonitoredObjectIdentifierHeader", 0x1C, -1))
+               boxes = append(boxes, 
utils.BoxAnything("MonitoredObjectIdentifierHeader", uint8(0x1C), -1))
                // Simple field (case simple)
                // uint16 can be boxed as anything with the least amount of 
space
                boxes = append(boxes, utils.BoxAnything("MonitoredObjectType", 
m.MonitoredObjectType, -1))
@@ -549,7 +549,7 @@ func (m 
BACnetConfirmedServiceRequestConfirmedCOVNotification) Box(name string,
                // uint32 can be boxed as anything with the least amount of 
space
                boxes = append(boxes, 
utils.BoxAnything("MonitoredObjectInstanceNumber", 
m.MonitoredObjectInstanceNumber, -1))
                // Const Field (issueConfirmedNotificationsHeader)
-               boxes = append(boxes, 
utils.BoxAnything("IssueConfirmedNotificationsHeader", 0x2C, -1))
+               boxes = append(boxes, 
utils.BoxAnything("IssueConfirmedNotificationsHeader", uint8(0x2C), -1))
                // Simple field (case simple)
                // uint16 can be boxed as anything with the least amount of 
space
                boxes = append(boxes, 
utils.BoxAnything("IssueConfirmedNotificationsType", 
m.IssueConfirmedNotificationsType, -1))
@@ -557,7 +557,7 @@ func (m 
BACnetConfirmedServiceRequestConfirmedCOVNotification) Box(name string,
                // uint32 can be boxed as anything with the least amount of 
space
                boxes = append(boxes, 
utils.BoxAnything("IssueConfirmedNotificationsInstanceNumber", 
m.IssueConfirmedNotificationsInstanceNumber, -1))
                // Const Field (lifetimeHeader)
-               boxes = append(boxes, utils.BoxAnything("LifetimeHeader", 0x07, 
-1))
+               boxes = append(boxes, utils.BoxAnything("LifetimeHeader", 
uint8(0x07), -1))
                // Simple field (case simple)
                // uint8 can be boxed as anything with the least amount of space
                boxes = append(boxes, utils.BoxAnything("LifetimeLength", 
m.LifetimeLength, -1))
@@ -571,7 +571,7 @@ func (m 
BACnetConfirmedServiceRequestConfirmedCOVNotification) Box(name string,
                        boxes = append(boxes, utils.BoxBox("LifetimeSeconds", 
utils.AlignBoxes(arrayBoxes, width-4), 0))
                }
                // Const Field (listOfValuesOpeningTag)
-               boxes = append(boxes, 
utils.BoxAnything("ListOfValuesOpeningTag", 0x4E, -1))
+               boxes = append(boxes, 
utils.BoxAnything("ListOfValuesOpeningTag", uint8(0x4E), -1))
                // Array Field (notifications)
                if m.Notifications != nil {
                        // Complex array base type
@@ -582,7 +582,7 @@ func (m 
BACnetConfirmedServiceRequestConfirmedCOVNotification) Box(name string,
                        boxes = append(boxes, utils.BoxBox("Notifications", 
utils.AlignBoxes(arrayBoxes, width-4), 0))
                }
                // Const Field (listOfValuesClosingTag)
-               boxes = append(boxes, 
utils.BoxAnything("ListOfValuesClosingTag", 0x4F, -1))
+               boxes = append(boxes, 
utils.BoxAnything("ListOfValuesClosingTag", uint8(0x4F), -1))
                return boxes
        }
        return m.Parent.BoxParent(boxName, width, childBoxer)
diff --git 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
index ca8bf9d..9c89238 100644
--- 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
+++ 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
@@ -326,7 +326,7 @@ func (m BACnetConfirmedServiceRequestReadProperty) Box(name 
string, width int) u
        childBoxer := func() []utils.AsciiBox {
                boxes := make([]utils.AsciiBox, 0)
                // Const Field (objectIdentifierHeader)
-               boxes = append(boxes, 
utils.BoxAnything("ObjectIdentifierHeader", 0x0C, -1))
+               boxes = append(boxes, 
utils.BoxAnything("ObjectIdentifierHeader", uint8(0x0C), -1))
                // Simple field (case simple)
                // uint16 can be boxed as anything with the least amount of 
space
                boxes = append(boxes, utils.BoxAnything("ObjectType", 
m.ObjectType, -1))
@@ -334,7 +334,7 @@ func (m BACnetConfirmedServiceRequestReadProperty) Box(name 
string, width int) u
                // uint32 can be boxed as anything with the least amount of 
space
                boxes = append(boxes, utils.BoxAnything("ObjectInstanceNumber", 
m.ObjectInstanceNumber, -1))
                // Const Field (propertyIdentifierHeader)
-               boxes = append(boxes, 
utils.BoxAnything("PropertyIdentifierHeader", 0x03, -1))
+               boxes = append(boxes, 
utils.BoxAnything("PropertyIdentifierHeader", uint8(0x03), -1))
                // Simple field (case simple)
                // uint8 can be boxed as anything with the least amount of space
                boxes = append(boxes, 
utils.BoxAnything("PropertyIdentifierLength", m.PropertyIdentifierLength, -1))
diff --git 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
index 0a8cfb5..27c2737 100644
--- 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
+++ 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
@@ -439,12 +439,12 @@ func (m BACnetConfirmedServiceRequestSubscribeCOV) 
Box(name string, width int) u
        childBoxer := func() []utils.AsciiBox {
                boxes := make([]utils.AsciiBox, 0)
                // Const Field (subscriberProcessIdentifierHeader)
-               boxes = append(boxes, 
utils.BoxAnything("SubscriberProcessIdentifierHeader", 0x09, -1))
+               boxes = append(boxes, 
utils.BoxAnything("SubscriberProcessIdentifierHeader", uint8(0x09), -1))
                // Simple field (case simple)
                // uint8 can be boxed as anything with the least amount of space
                boxes = append(boxes, 
utils.BoxAnything("SubscriberProcessIdentifier", m.SubscriberProcessIdentifier, 
-1))
                // Const Field (monitoredObjectIdentifierHeader)
-               boxes = append(boxes, 
utils.BoxAnything("MonitoredObjectIdentifierHeader", 0x1C, -1))
+               boxes = append(boxes, 
utils.BoxAnything("MonitoredObjectIdentifierHeader", uint8(0x1C), -1))
                // Simple field (case simple)
                // uint16 can be boxed as anything with the least amount of 
space
                boxes = append(boxes, utils.BoxAnything("MonitoredObjectType", 
m.MonitoredObjectType, -1))
@@ -452,14 +452,14 @@ func (m BACnetConfirmedServiceRequestSubscribeCOV) 
Box(name string, width int) u
                // uint32 can be boxed as anything with the least amount of 
space
                boxes = append(boxes, 
utils.BoxAnything("MonitoredObjectInstanceNumber", 
m.MonitoredObjectInstanceNumber, -1))
                // Const Field (issueConfirmedNotificationsHeader)
-               boxes = append(boxes, 
utils.BoxAnything("IssueConfirmedNotificationsHeader", 0x29, -1))
+               boxes = append(boxes, 
utils.BoxAnything("IssueConfirmedNotificationsHeader", uint8(0x29), -1))
                // Const Field (issueConfirmedNotificationsSkipBits)
-               boxes = append(boxes, 
utils.BoxAnything("IssueConfirmedNotificationsSkipBits", 0x00, -1))
+               boxes = append(boxes, 
utils.BoxAnything("IssueConfirmedNotificationsSkipBits", uint8(0x00), -1))
                // Simple field (case simple)
                // bool can be boxed as anything with the least amount of space
                boxes = append(boxes, 
utils.BoxAnything("IssueConfirmedNotifications", m.IssueConfirmedNotifications, 
-1))
                // Const Field (lifetimeHeader)
-               boxes = append(boxes, utils.BoxAnything("LifetimeHeader", 0x07, 
-1))
+               boxes = append(boxes, utils.BoxAnything("LifetimeHeader", 
uint8(0x07), -1))
                // Simple field (case simple)
                // uint8 can be boxed as anything with the least amount of space
                boxes = append(boxes, utils.BoxAnything("LifetimeLength", 
m.LifetimeLength, -1))
diff --git 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go
 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go
index 6cabd7a..d650935 100644
--- 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go
+++ 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go
@@ -437,7 +437,7 @@ func (m BACnetConfirmedServiceRequestWriteProperty) 
Box(name string, width int)
        childBoxer := func() []utils.AsciiBox {
                boxes := make([]utils.AsciiBox, 0)
                // Const Field (objectIdentifierHeader)
-               boxes = append(boxes, 
utils.BoxAnything("ObjectIdentifierHeader", 0x0C, -1))
+               boxes = append(boxes, 
utils.BoxAnything("ObjectIdentifierHeader", uint8(0x0C), -1))
                // Simple field (case simple)
                // uint16 can be boxed as anything with the least amount of 
space
                boxes = append(boxes, utils.BoxAnything("ObjectType", 
m.ObjectType, -1))
@@ -445,7 +445,7 @@ func (m BACnetConfirmedServiceRequestWriteProperty) 
Box(name string, width int)
                // uint32 can be boxed as anything with the least amount of 
space
                boxes = append(boxes, utils.BoxAnything("ObjectInstanceNumber", 
m.ObjectInstanceNumber, -1))
                // Const Field (propertyIdentifierHeader)
-               boxes = append(boxes, 
utils.BoxAnything("PropertyIdentifierHeader", 0x03, -1))
+               boxes = append(boxes, 
utils.BoxAnything("PropertyIdentifierHeader", uint8(0x03), -1))
                // Simple field (case simple)
                // uint8 can be boxed as anything with the least amount of space
                boxes = append(boxes, 
utils.BoxAnything("PropertyIdentifierLength", m.PropertyIdentifierLength, -1))
@@ -459,11 +459,11 @@ func (m BACnetConfirmedServiceRequestWriteProperty) 
Box(name string, width int)
                        boxes = append(boxes, 
utils.BoxBox("PropertyIdentifier", utils.AlignBoxes(arrayBoxes, width-4), 0))
                }
                // Const Field (openingTag)
-               boxes = append(boxes, utils.BoxAnything("OpeningTag", 0x3E, -1))
+               boxes = append(boxes, utils.BoxAnything("OpeningTag", 
uint8(0x3E), -1))
                // Complex field (case complex)
                boxes = append(boxes, m.Value.Box("value", width-2))
                // Const Field (closingTag)
-               boxes = append(boxes, utils.BoxAnything("ClosingTag", 0x3F, -1))
+               boxes = append(boxes, utils.BoxAnything("ClosingTag", 
uint8(0x3F), -1))
                // Optional Field (priority) (Can be skipped, if the value is 
null)
                var priority *BACnetTag = nil
                if m.Priority != nil {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go
index b1d3203..38fa34b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go
@@ -507,9 +507,9 @@ func (m *BACnetError) BoxParent(name string, width int, 
childBoxer func() []util
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (serviceChoice) (Used as input to a switch field)
-       // serviceChoice := uint8(child.ServiceChoice())
+       serviceChoice := uint8(m.Child.ServiceChoice())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("ServiceChoice", 
serviceChoice, -1))
+       boxes = append(boxes, utils.BoxAnything("ServiceChoice", serviceChoice, 
-1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
diff --git 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go
index 3181356..048b38d 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go
@@ -343,7 +343,7 @@ func (m BACnetErrorReadProperty) Box(name string, width 
int) utils.AsciiBox {
        childBoxer := func() []utils.AsciiBox {
                boxes := make([]utils.AsciiBox, 0)
                // Const Field (errorClassHeader)
-               boxes = append(boxes, utils.BoxAnything("ErrorClassHeader", 
0x12, -1))
+               boxes = append(boxes, utils.BoxAnything("ErrorClassHeader", 
uint8(0x12), -1))
                // Simple field (case simple)
                // uint8 can be boxed as anything with the least amount of space
                boxes = append(boxes, utils.BoxAnything("ErrorClassLength", 
m.ErrorClassLength, -1))
@@ -357,7 +357,7 @@ func (m BACnetErrorReadProperty) Box(name string, width 
int) utils.AsciiBox {
                        boxes = append(boxes, utils.BoxBox("ErrorClass", 
utils.AlignBoxes(arrayBoxes, width-4), 0))
                }
                // Const Field (errorCodeHeader)
-               boxes = append(boxes, utils.BoxAnything("ErrorCodeHeader", 
0x12, -1))
+               boxes = append(boxes, utils.BoxAnything("ErrorCodeHeader", 
uint8(0x12), -1))
                // Simple field (case simple)
                // uint8 can be boxed as anything with the least amount of space
                boxes = append(boxes, utils.BoxAnything("ErrorCodeLength", 
m.ErrorCodeLength, -1))
diff --git 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go
index 5b7085e..da6ef0b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go
@@ -218,5 +218,5 @@ func (m BACnetNetworkType) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 1, uint8(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go
index f43042c..e0e0033 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go
@@ -306,5 +306,5 @@ func (m BACnetNodeType) Box(s string, i int) utils.AsciiBox 
{
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 2, uint8(m), 
m.name()), -1)
 }
diff --git 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go
index fbb3b4c..77ae610 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go
@@ -154,5 +154,5 @@ func (m BACnetNotifyType) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 1, uint8(m), 
m.name()), -1)
 }
diff --git 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go
index 3c29f92..0815f06 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go
@@ -602,5 +602,5 @@ func (m BACnetObjectType) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint16(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 3, uint16(m), 
m.name()), -1)
 }
diff --git 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go
index 99d8eb3..221df5e 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go
@@ -507,9 +507,9 @@ func (m *BACnetServiceAck) BoxParent(name string, width 
int, childBoxer func() [
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (serviceChoice) (Used as input to a switch field)
-       // serviceChoice := uint8(child.ServiceChoice())
+       serviceChoice := uint8(m.Child.ServiceChoice())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("ServiceChoice", 
serviceChoice, -1))
+       boxes = append(boxes, utils.BoxAnything("ServiceChoice", serviceChoice, 
-1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
diff --git 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
index f0c901c..9f5158e 100644
--- 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
+++ 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
@@ -394,7 +394,7 @@ func (m BACnetServiceAckReadProperty) Box(name string, 
width int) utils.AsciiBox
        childBoxer := func() []utils.AsciiBox {
                boxes := make([]utils.AsciiBox, 0)
                // Const Field (objectIdentifierHeader)
-               boxes = append(boxes, 
utils.BoxAnything("ObjectIdentifierHeader", 0x0C, -1))
+               boxes = append(boxes, 
utils.BoxAnything("ObjectIdentifierHeader", uint8(0x0C), -1))
                // Simple field (case simple)
                // uint16 can be boxed as anything with the least amount of 
space
                boxes = append(boxes, utils.BoxAnything("ObjectType", 
m.ObjectType, -1))
@@ -402,7 +402,7 @@ func (m BACnetServiceAckReadProperty) Box(name string, 
width int) utils.AsciiBox
                // uint32 can be boxed as anything with the least amount of 
space
                boxes = append(boxes, utils.BoxAnything("ObjectInstanceNumber", 
m.ObjectInstanceNumber, -1))
                // Const Field (propertyIdentifierHeader)
-               boxes = append(boxes, 
utils.BoxAnything("PropertyIdentifierHeader", 0x03, -1))
+               boxes = append(boxes, 
utils.BoxAnything("PropertyIdentifierHeader", uint8(0x03), -1))
                // Simple field (case simple)
                // uint8 can be boxed as anything with the least amount of space
                boxes = append(boxes, 
utils.BoxAnything("PropertyIdentifierLength", m.PropertyIdentifierLength, -1))
@@ -416,11 +416,11 @@ func (m BACnetServiceAckReadProperty) Box(name string, 
width int) utils.AsciiBox
                        boxes = append(boxes, 
utils.BoxBox("PropertyIdentifier", utils.AlignBoxes(arrayBoxes, width-4), 0))
                }
                // Const Field (openingTag)
-               boxes = append(boxes, utils.BoxAnything("OpeningTag", 0x3E, -1))
+               boxes = append(boxes, utils.BoxAnything("OpeningTag", 
uint8(0x3E), -1))
                // Complex field (case complex)
                boxes = append(boxes, m.Value.Box("value", width-2))
                // Const Field (closingTag)
-               boxes = append(boxes, utils.BoxAnything("ClosingTag", 0x3F, -1))
+               boxes = append(boxes, utils.BoxAnything("ClosingTag", 
uint8(0x3F), -1))
                return boxes
        }
        return m.Parent.BoxParent(boxName, width, childBoxer)
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
index a2fbc2e..10dc676 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
@@ -607,9 +607,9 @@ func (m *BACnetTag) BoxParent(name string, width int, 
childBoxer func() []utils.
        // uint8 can be boxed as anything with the least amount of space
        boxes = append(boxes, utils.BoxAnything("TypeOrTagNumber", 
m.TypeOrTagNumber, -1))
        // Discriminator Field (contextSpecificTag) (Used as input to a switch 
field)
-       // contextSpecificTag := uint8(child.ContextSpecificTag())
+       contextSpecificTag := uint8(m.Child.ContextSpecificTag())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("ContextSpecificTag", 
contextSpecificTag, -1))
+       boxes = append(boxes, utils.BoxAnything("ContextSpecificTag", 
contextSpecificTag, -1))
        // Simple field (case simple)
        // uint8 can be boxed as anything with the least amount of space
        boxes = append(boxes, utils.BoxAnything("LengthValueType", 
m.LengthValueType, -1))
diff --git 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go
index e0bf10f..892f1c5 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go
@@ -439,10 +439,10 @@ func (m BACnetTagWithContent) Box(name string, width int) 
utils.AsciiBox {
                boxes = append(boxes, utils.BoxBox("PropertyIdentifier", 
utils.AlignBoxes(arrayBoxes, width-4), 0))
        }
        // Const Field (openTag)
-       boxes = append(boxes, utils.BoxAnything("OpenTag", 0x2e, -1))
+       boxes = append(boxes, utils.BoxAnything("OpenTag", uint8(0x2e), -1))
        // Complex field (case complex)
        boxes = append(boxes, m.Value.Box("value", width-2))
        // Const Field (closingTag)
-       boxes = append(boxes, utils.BoxAnything("ClosingTag", 0x2f, -1))
+       boxes = append(boxes, utils.BoxAnything("ClosingTag", uint8(0x2f), -1))
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
 }
diff --git 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
index d60b845..fc84161 100644
--- 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
+++ 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
@@ -444,9 +444,9 @@ func (m *BACnetUnconfirmedServiceRequest) BoxParent(name 
string, width int, chil
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (serviceChoice) (Used as input to a switch field)
-       // serviceChoice := uint8(child.ServiceChoice())
+       serviceChoice := uint8(m.Child.ServiceChoice())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("ServiceChoice", 
serviceChoice, -1))
+       boxes = append(boxes, utils.BoxAnything("ServiceChoice", serviceChoice, 
-1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
diff --git 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go
 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go
index 1927dd2..158a982 100644
--- 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go
+++ 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go
@@ -420,7 +420,7 @@ func (m BACnetUnconfirmedServiceRequestIAm) Box(name 
string, width int) utils.As
        childBoxer := func() []utils.AsciiBox {
                boxes := make([]utils.AsciiBox, 0)
                // Const Field (objectIdentifierHeader)
-               boxes = append(boxes, 
utils.BoxAnything("ObjectIdentifierHeader", 0xC4, -1))
+               boxes = append(boxes, 
utils.BoxAnything("ObjectIdentifierHeader", uint8(0xC4), -1))
                // Simple field (case simple)
                // uint16 can be boxed as anything with the least amount of 
space
                boxes = append(boxes, utils.BoxAnything("ObjectType", 
m.ObjectType, -1))
@@ -428,7 +428,7 @@ func (m BACnetUnconfirmedServiceRequestIAm) Box(name 
string, width int) utils.As
                // uint32 can be boxed as anything with the least amount of 
space
                boxes = append(boxes, utils.BoxAnything("ObjectInstanceNumber", 
m.ObjectInstanceNumber, -1))
                // Const Field (maximumApduLengthAcceptedHeader)
-               boxes = append(boxes, 
utils.BoxAnything("MaximumApduLengthAcceptedHeader", 0x04, -1))
+               boxes = append(boxes, 
utils.BoxAnything("MaximumApduLengthAcceptedHeader", uint8(0x04), -1))
                // Simple field (case simple)
                // uint8 can be boxed as anything with the least amount of space
                boxes = append(boxes, 
utils.BoxAnything("MaximumApduLengthAcceptedLength", 
m.MaximumApduLengthAcceptedLength, -1))
@@ -442,12 +442,12 @@ func (m BACnetUnconfirmedServiceRequestIAm) Box(name 
string, width int) utils.As
                        boxes = append(boxes, 
utils.BoxBox("MaximumApduLengthAccepted", utils.AlignBoxes(arrayBoxes, 
width-4), 0))
                }
                // Const Field (segmentationSupportedHeader)
-               boxes = append(boxes, 
utils.BoxAnything("SegmentationSupportedHeader", 0x91, -1))
+               boxes = append(boxes, 
utils.BoxAnything("SegmentationSupportedHeader", uint8(0x91), -1))
                // Simple field (case simple)
                // uint8 can be boxed as anything with the least amount of space
                boxes = append(boxes, 
utils.BoxAnything("SegmentationSupported", m.SegmentationSupported, -1))
                // Const Field (vendorIdHeader)
-               boxes = append(boxes, utils.BoxAnything("VendorIdHeader", 0x21, 
-1))
+               boxes = append(boxes, utils.BoxAnything("VendorIdHeader", 
uint8(0x21), -1))
                // Simple field (case simple)
                // uint8 can be boxed as anything with the least amount of space
                boxes = append(boxes, utils.BoxAnything("VendorId", m.VendorId, 
-1))
diff --git 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go
 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go
index 669e69e..01607ff 100644
--- 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go
+++ 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go
@@ -338,17 +338,17 @@ func (m 
BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer) Box(name stri
        childBoxer := func() []utils.AsciiBox {
                boxes := make([]utils.AsciiBox, 0)
                // Const Field (vendorIdHeader)
-               boxes = append(boxes, utils.BoxAnything("VendorIdHeader", 0x09, 
-1))
+               boxes = append(boxes, utils.BoxAnything("VendorIdHeader", 
uint8(0x09), -1))
                // Simple field (case simple)
                // uint8 can be boxed as anything with the least amount of space
                boxes = append(boxes, utils.BoxAnything("VendorId", m.VendorId, 
-1))
                // Const Field (serviceNumberHeader)
-               boxes = append(boxes, utils.BoxAnything("ServiceNumberHeader", 
0x1A, -1))
+               boxes = append(boxes, utils.BoxAnything("ServiceNumberHeader", 
uint8(0x1A), -1))
                // Simple field (case simple)
                // uint16 can be boxed as anything with the least amount of 
space
                boxes = append(boxes, utils.BoxAnything("ServiceNumber", 
m.ServiceNumber, -1))
                // Const Field (listOfValuesOpeningTag)
-               boxes = append(boxes, 
utils.BoxAnything("ListOfValuesOpeningTag", 0x2E, -1))
+               boxes = append(boxes, 
utils.BoxAnything("ListOfValuesOpeningTag", uint8(0x2E), -1))
                // Array Field (values)
                if m.Values != nil {
                        // Simple array base type int8 will be rendered one by 
one
@@ -359,7 +359,7 @@ func (m 
BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer) Box(name stri
                        boxes = append(boxes, utils.BoxBox("Values", 
utils.AlignBoxes(arrayBoxes, width-4), 0))
                }
                // Const Field (listOfValuesClosingTag)
-               boxes = append(boxes, 
utils.BoxAnything("ListOfValuesClosingTag", 0x2F, -1))
+               boxes = append(boxes, 
utils.BoxAnything("ListOfValuesClosingTag", uint8(0x2F), -1))
                return boxes
        }
        return m.Parent.BoxParent(boxName, width, childBoxer)
diff --git 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go
 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go
index bde7828..4eac960 100644
--- 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go
+++ 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go
@@ -364,17 +364,17 @@ func (m BACnetUnconfirmedServiceRequestWhoHas) Box(name 
string, width int) utils
        childBoxer := func() []utils.AsciiBox {
                boxes := make([]utils.AsciiBox, 0)
                // Const Field (deviceInstanceLowLimitHeader)
-               boxes = append(boxes, 
utils.BoxAnything("DeviceInstanceLowLimitHeader", 0x0B, -1))
+               boxes = append(boxes, 
utils.BoxAnything("DeviceInstanceLowLimitHeader", uint8(0x0B), -1))
                // Simple field (case simple)
                // uint32 can be boxed as anything with the least amount of 
space
                boxes = append(boxes, 
utils.BoxAnything("DeviceInstanceLowLimit", m.DeviceInstanceLowLimit, -1))
                // Const Field (deviceInstanceHighLimitHeader)
-               boxes = append(boxes, 
utils.BoxAnything("DeviceInstanceHighLimitHeader", 0x1B, -1))
+               boxes = append(boxes, 
utils.BoxAnything("DeviceInstanceHighLimitHeader", uint8(0x1B), -1))
                // Simple field (case simple)
                // uint32 can be boxed as anything with the least amount of 
space
                boxes = append(boxes, 
utils.BoxAnything("DeviceInstanceHighLimit", m.DeviceInstanceHighLimit, -1))
                // Const Field (objectNameHeader)
-               boxes = append(boxes, utils.BoxAnything("ObjectNameHeader", 
0x3D, -1))
+               boxes = append(boxes, utils.BoxAnything("ObjectNameHeader", 
uint8(0x3D), -1))
                // Implicit Field (objectNameLength)
                objectNameLength := uint8(uint8(uint8(len(m.ObjectName))) + 
uint8(uint8(1)))
                // uint8 can be boxed as anything with the least amount of space
diff --git 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go
 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go
index 1ae90b7..b62da93 100644
--- 
a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go
+++ 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go
@@ -343,7 +343,7 @@ func (m BACnetUnconfirmedServiceRequestWhoIs) Box(name 
string, width int) utils.
        childBoxer := func() []utils.AsciiBox {
                boxes := make([]utils.AsciiBox, 0)
                // Const Field (deviceInstanceRangeLowLimitHeader)
-               boxes = append(boxes, 
utils.BoxAnything("DeviceInstanceRangeLowLimitHeader", 0x01, -1))
+               boxes = append(boxes, 
utils.BoxAnything("DeviceInstanceRangeLowLimitHeader", uint8(0x01), -1))
                // Simple field (case simple)
                // uint8 can be boxed as anything with the least amount of space
                boxes = append(boxes, 
utils.BoxAnything("DeviceInstanceRangeLowLimitLength", 
m.DeviceInstanceRangeLowLimitLength, -1))
@@ -357,7 +357,7 @@ func (m BACnetUnconfirmedServiceRequestWhoIs) Box(name 
string, width int) utils.
                        boxes = append(boxes, 
utils.BoxBox("DeviceInstanceRangeLowLimit", utils.AlignBoxes(arrayBoxes, 
width-4), 0))
                }
                // Const Field (deviceInstanceRangeHighLimitHeader)
-               boxes = append(boxes, 
utils.BoxAnything("DeviceInstanceRangeHighLimitHeader", 0x03, -1))
+               boxes = append(boxes, 
utils.BoxAnything("DeviceInstanceRangeHighLimitHeader", uint8(0x03), -1))
                // Simple field (case simple)
                // uint8 can be boxed as anything with the least amount of space
                boxes = append(boxes, 
utils.BoxAnything("DeviceInstanceRangeHighLimitLength", 
m.DeviceInstanceRangeHighLimitLength, -1))
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
index e606b8f..2a8f1fb 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
@@ -511,11 +511,11 @@ func (m *BVLC) BoxParent(name string, width int, 
childBoxer func() []utils.Ascii
        }
        boxes := make([]utils.AsciiBox, 0)
        // Const Field (bacnetType)
-       boxes = append(boxes, utils.BoxAnything("BacnetType", 0x81, -1))
+       boxes = append(boxes, utils.BoxAnything("BacnetType", uint8(0x81), -1))
        // Discriminator Field (bvlcFunction) (Used as input to a switch field)
-       // bvlcFunction := uint8(child.BvlcFunction())
+       bvlcFunction := uint8(m.Child.BvlcFunction())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("BvlcFunction", 
bvlcFunction, -1))
+       boxes = append(boxes, utils.BoxAnything("BvlcFunction", bvlcFunction, 
-1))
        // Implicit Field (bvlcLength)
        bvlcLength := uint16(uint16(m.LengthInBytes()))
        // uint16 can be boxed as anything with the least amount of space
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go 
b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go
index 5051e6e..ad00f4e 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go
@@ -292,9 +292,9 @@ func (m *NLM) BoxParent(name string, width int, childBoxer 
func() []utils.AsciiB
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (messageType) (Used as input to a switch field)
-       // messageType := uint8(child.MessageType())
+       messageType := uint8(m.Child.MessageType())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("MessageType", messageType, 
-1))
+       boxes = append(boxes, utils.BoxAnything("MessageType", messageType, -1))
        // Optional Field (vendorId) (Can be skipped, if the value is null)
        var vendorId *uint16 = nil
        if m.VendorId != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/AccessLevel.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/AccessLevel.go
index 1d634b0..39e612b 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/AccessLevel.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/AccessLevel.go
@@ -229,5 +229,5 @@ func (m AccessLevel) Box(s string, i int) utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 1, uint8(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/Apdu.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/Apdu.go
index 9bee538..e6db2e3 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/Apdu.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/Apdu.go
@@ -300,9 +300,9 @@ func (m *Apdu) BoxParent(name string, width int, childBoxer 
func() []utils.Ascii
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (control) (Used as input to a switch field)
-       // control := uint8(child.Control())
+       control := uint8(m.Child.Control())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("Control", control, -1))
+       boxes = append(boxes, utils.BoxAnything("Control", control, -1))
        // Simple field (case simple)
        // bool can be boxed as anything with the least amount of space
        boxes = append(boxes, utils.BoxAnything("Numbered", m.Numbered, -1))
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControl.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControl.go
index 8e8c570..20ac61b 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControl.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControl.go
@@ -304,9 +304,9 @@ func (m *ApduControl) BoxParent(name string, width int, 
childBoxer func() []util
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (controlType) (Used as input to a switch field)
-       // controlType := uint8(child.ControlType())
+       controlType := uint8(m.Child.ControlType())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("ControlType", controlType, 
-1))
+       boxes = append(boxes, utils.BoxAnything("ControlType", controlType, -1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduData.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduData.go
index e68439b..9cab522 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduData.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduData.go
@@ -500,9 +500,9 @@ func (m *ApduData) BoxParent(name string, width int, 
childBoxer func() []utils.A
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (apciType) (Used as input to a switch field)
-       // apciType := uint8(child.ApciType())
+       apciType := uint8(m.Child.ApciType())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("ApciType", apciType, -1))
+       boxes = append(boxes, utils.BoxAnything("ApciType", apciType, -1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExt.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExt.go
index beec63f..5ac2c25 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExt.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExt.go
@@ -1032,9 +1032,9 @@ func (m *ApduDataExt) BoxParent(name string, width int, 
childBoxer func() []util
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (extApciType) (Used as input to a switch field)
-       // extApciType := uint8(child.ExtApciType())
+       extApciType := uint8(m.Child.ExtApciType())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("ExtApciType", extApciType, 
-1))
+       boxes = append(boxes, utils.BoxAnything("ExtApciType", extApciType, -1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go
index 8445e70..2ecd2e6 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go
@@ -661,9 +661,9 @@ func (m *CEMI) BoxParent(name string, width int, childBoxer 
func() []utils.Ascii
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (messageCode) (Used as input to a switch field)
-       // messageCode := uint8(child.MessageCode())
+       messageCode := uint8(m.Child.MessageCode())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("MessageCode", messageCode, 
-1))
+       boxes = append(boxes, utils.BoxAnything("MessageCode", messageCode, -1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
diff --git 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go
index 8167139..de79af6 100644
--- 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go
+++ 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go
@@ -248,9 +248,9 @@ func (m *CEMIAdditionalInformation) BoxParent(name string, 
width int, childBoxer
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (additionalInformationType) (Used as input to a 
switch field)
-       // additionalInformationType := uint8(child.AdditionalInformationType())
+       additionalInformationType := uint8(m.Child.AdditionalInformationType())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("AdditionalInformationType", 
additionalInformationType, -1))
+       boxes = append(boxes, utils.BoxAnything("AdditionalInformationType", 
additionalInformationType, -1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
diff --git 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
index 7d723d5..57f480d 100644
--- 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
+++ 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
@@ -344,7 +344,7 @@ func (m CEMIAdditionalInformationBusmonitorInfo) Box(name 
string, width int) uti
        childBoxer := func() []utils.AsciiBox {
                boxes := make([]utils.AsciiBox, 0)
                // Const Field (len)
-               boxes = append(boxes, utils.BoxAnything("Len", 1, -1))
+               boxes = append(boxes, utils.BoxAnything("Len", uint8(1), -1))
                // Simple field (case simple)
                // bool can be boxed as anything with the least amount of space
                boxes = append(boxes, utils.BoxAnything("FrameErrorFlag", 
m.FrameErrorFlag, -1))
diff --git 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go
 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go
index ac08a98..6114ffe 100644
--- 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go
+++ 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go
@@ -203,7 +203,7 @@ func (m CEMIAdditionalInformationRelativeTimestamp) 
Box(name string, width int)
        childBoxer := func() []utils.AsciiBox {
                boxes := make([]utils.AsciiBox, 0)
                // Const Field (len)
-               boxes = append(boxes, utils.BoxAnything("Len", 2, -1))
+               boxes = append(boxes, utils.BoxAnything("Len", uint8(2), -1))
                // Complex field (case complex)
                boxes = append(boxes, 
m.RelativeTimestamp.Box("relativeTimestamp", width-2))
                return boxes
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go
index 506ff2c..158672b 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go
@@ -162,5 +162,5 @@ func (m CEMIPriority) Box(s string, i int) utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 1, uint8(m), 
m.name()), -1)
 }
diff --git 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableAddresses.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableAddresses.go
index 52870c3..3197381 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableAddresses.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableAddresses.go
@@ -20611,5 +20611,5 @@ func (m ComObjectTableAddresses) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint16(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 4, uint16(m), 
m.name()), -1)
 }
diff --git 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectValueType.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectValueType.go
index 040bbc1..c6a46d6 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectValueType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectValueType.go
@@ -319,5 +319,5 @@ func (m ComObjectValueType) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 2, uint8(m), 
m.name()), -1)
 }
diff --git 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go
 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go
index 71a1c07..72f5eb4 100644
--- 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go
+++ 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go
@@ -276,9 +276,9 @@ func (m *ConnectionRequestInformation) BoxParent(name 
string, width int, childBo
        // uint8 can be boxed as anything with the least amount of space
        boxes = append(boxes, utils.BoxAnything("StructureLength", 
structureLength, -1))
        // Discriminator Field (connectionType) (Used as input to a switch 
field)
-       // connectionType := uint8(child.ConnectionType())
+       connectionType := uint8(m.Child.ConnectionType())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("ConnectionType", 
connectionType, -1))
+       boxes = append(boxes, utils.BoxAnything("ConnectionType", 
connectionType, -1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
diff --git 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
index 2f70ac4..f7bd394 100644
--- 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
+++ 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
@@ -276,9 +276,9 @@ func (m *ConnectionResponseDataBlock) BoxParent(name 
string, width int, childBox
        // uint8 can be boxed as anything with the least amount of space
        boxes = append(boxes, utils.BoxAnything("StructureLength", 
structureLength, -1))
        // Discriminator Field (connectionType) (Used as input to a switch 
field)
-       // connectionType := uint8(child.ConnectionType())
+       connectionType := uint8(m.Child.ConnectionType())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("ConnectionType", 
connectionType, -1))
+       boxes = append(boxes, utils.BoxAnything("ConnectionType", 
connectionType, -1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
diff --git 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptor.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptor.go
index f4ef48d..bb230d2 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptor.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptor.go
@@ -613,5 +613,5 @@ func (m DeviceDescriptor) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint16(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 4, uint16(m), 
m.name()), -1)
 }
diff --git 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptorMediumType.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptorMediumType.go
index 6b0627e..98a5087 100644
--- 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptorMediumType.go
+++ 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptorMediumType.go
@@ -178,5 +178,5 @@ func (m DeviceDescriptorMediumType) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 1, uint8(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/FirmwareType.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/FirmwareType.go
index 764d059..37855ba 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/FirmwareType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/FirmwareType.go
@@ -258,5 +258,5 @@ func (m FirmwareType) Box(s string, i int) utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint16(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 4, uint16(m), 
m.name()), -1)
 }
diff --git 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go
index 2aa48dd..9412dae 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go
@@ -146,5 +146,5 @@ func (m HostProtocolCode) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 2, uint8(m), 
m.name()), -1)
 }
diff --git 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointMainType.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointMainType.go
index a78ee3b..7c4188e 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointMainType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointMainType.go
@@ -1359,5 +1359,5 @@ func (m KnxDatapointMainType) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint16(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 4, uint16(m), 
m.name()), -1)
 }
diff --git 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go
index 7c7c722..486f6fb 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go
@@ -7119,5 +7119,5 @@ func (m KnxDatapointType) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint32(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 8, uint32(m), 
m.name()), -1)
 }
diff --git 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectProperty.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectProperty.go
index ec62b1b..25f81ed 100644
--- 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectProperty.go
+++ 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectProperty.go
@@ -5353,5 +5353,5 @@ func (m KnxInterfaceObjectProperty) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint32(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 8, uint32(m), 
m.name()), -1)
 }
diff --git 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectType.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectType.go
index eeff73e..73234e0 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectType.go
@@ -549,5 +549,5 @@ func (m KnxInterfaceObjectType) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint16(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 4, uint16(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go
index e73f13d..1cf6931 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go
@@ -154,5 +154,5 @@ func (m KnxLayer) Box(s string, i int) utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 2, uint8(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go
index b8ecbcf..c503569 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go
@@ -8949,5 +8949,5 @@ func (m KnxManufacturer) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint16(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 4, uint16(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxMedium.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxMedium.go
index dc5d66a..3683787 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxMedium.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxMedium.go
@@ -178,5 +178,5 @@ func (m KnxMedium) Box(s string, i int) utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 2, uint8(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpMessage.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpMessage.go
index 5d1f77e..b0a4f58 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpMessage.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpMessage.go
@@ -511,11 +511,11 @@ func (m *KnxNetIpMessage) BoxParent(name string, width 
int, childBoxer func() []
        // uint8 can be boxed as anything with the least amount of space
        boxes = append(boxes, utils.BoxAnything("HeaderLength", headerLength, 
-1))
        // Const Field (protocolVersion)
-       boxes = append(boxes, utils.BoxAnything("ProtocolVersion", 0x10, -1))
+       boxes = append(boxes, utils.BoxAnything("ProtocolVersion", uint8(0x10), 
-1))
        // Discriminator Field (msgType) (Used as input to a switch field)
-       // msgType := uint16(child.MsgType())
+       msgType := uint16(m.Child.MsgType())
        // uint16 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("MsgType", msgType, -1))
+       boxes = append(boxes, utils.BoxAnything("MsgType", msgType, -1))
        // Implicit Field (totalLength)
        totalLength := uint16(uint16(m.LengthInBytes()))
        // uint16 can be boxed as anything with the least amount of space
diff --git 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxPropertyDataType.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxPropertyDataType.go
index f1f2ec3..9976e8f 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxPropertyDataType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxPropertyDataType.go
@@ -1159,5 +1159,5 @@ func (m KnxPropertyDataType) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 2, uint8(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrame.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrame.go
index 3cb984f..35c1f61 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrame.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrame.go
@@ -419,16 +419,16 @@ func (m *LDataFrame) BoxParent(name string, width int, 
childBoxer func() []utils
        // bool can be boxed as anything with the least amount of space
        boxes = append(boxes, utils.BoxAnything("FrameType", m.FrameType, -1))
        // Discriminator Field (polling) (Used as input to a switch field)
-       // polling := bool(child.Polling())
+       polling := bool(m.Child.Polling())
        // bool can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("Polling", polling, -1))
+       boxes = append(boxes, utils.BoxAnything("Polling", polling, -1))
        // Simple field (case simple)
        // bool can be boxed as anything with the least amount of space
        boxes = append(boxes, utils.BoxAnything("NotRepeated", m.NotRepeated, 
-1))
        // Discriminator Field (notAckFrame) (Used as input to a switch field)
-       // notAckFrame := bool(child.NotAckFrame())
+       notAckFrame := bool(m.Child.NotAckFrame())
        // bool can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("NotAckFrame", notAckFrame, 
-1))
+       boxes = append(boxes, utils.BoxAnything("NotAckFrame", notAckFrame, -1))
        // Enum field (priority)
        priority := CastCEMIPriority(m.Priority)
        boxes = append(boxes, priority.Box("priority", -1))
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go
index 225a0e8..1df2e01 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go
@@ -318,9 +318,9 @@ func (m *ServiceId) BoxParent(name string, width int, 
childBoxer func() []utils.
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (serviceType) (Used as input to a switch field)
-       // serviceType := uint8(child.ServiceType())
+       serviceType := uint8(m.Child.ServiceType())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("ServiceType", serviceType, 
-1))
+       boxes = append(boxes, utils.BoxAnything("ServiceType", serviceType, -1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go
index c765d2c..dce9c6a 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go
@@ -226,5 +226,5 @@ func (m Status) Box(s string, i int) utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 2, uint8(m), 
m.name()), -1)
 }
diff --git 
a/plc4go/internal/plc4go/knxnetip/readwrite/model/SupportedPhysicalMedia.go 
b/plc4go/internal/plc4go/knxnetip/readwrite/model/SupportedPhysicalMedia.go
index 016be44..449b791 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/SupportedPhysicalMedia.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/SupportedPhysicalMedia.go
@@ -485,5 +485,5 @@ func (m SupportedPhysicalMedia) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 2, uint8(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go 
b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go
index 739c5d9..05c920f 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go
@@ -155,6 +155,6 @@ func (m ModbusConstants) Box(name string, width int) 
utils.AsciiBox {
        }
        boxes := make([]utils.AsciiBox, 0)
        // Const Field (modbusTcpDefaultPort)
-       boxes = append(boxes, utils.BoxAnything("ModbusTcpDefaultPort", 502, 
-1))
+       boxes = append(boxes, utils.BoxAnything("ModbusTcpDefaultPort", 
uint16(502), -1))
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
 }
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataType.go 
b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataType.go
index 25915a1..879de46 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataType.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataType.go
@@ -463,5 +463,5 @@ func (m ModbusDataType) Box(s string, i int) utils.AsciiBox 
{
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 2, uint8(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusErrorCode.go 
b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusErrorCode.go
index bb0f904..9556de3 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusErrorCode.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusErrorCode.go
@@ -210,5 +210,5 @@ func (m ModbusErrorCode) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 2, uint8(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go 
b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go
index 9c04dcc..6d81ed8 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go
@@ -826,13 +826,13 @@ func (m *ModbusPDU) BoxParent(name string, width int, 
childBoxer func() []utils.
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (errorFlag) (Used as input to a switch field)
-       // errorFlag := bool(child.ErrorFlag())
+       errorFlag := bool(m.Child.ErrorFlag())
        // bool can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("ErrorFlag", errorFlag, -1))
+       boxes = append(boxes, utils.BoxAnything("ErrorFlag", errorFlag, -1))
        // Discriminator Field (functionFlag) (Used as input to a switch field)
-       // functionFlag := uint8(child.FunctionFlag())
+       functionFlag := uint8(m.Child.FunctionFlag())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("FunctionFlag", 
functionFlag, -1))
+       boxes = append(boxes, utils.BoxAnything("FunctionFlag", functionFlag, 
-1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusTcpADU.go 
b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusTcpADU.go
index a50ddb8..5886424 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusTcpADU.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusTcpADU.go
@@ -255,7 +255,7 @@ func (m ModbusTcpADU) Box(name string, width int) 
utils.AsciiBox {
        // uint16 can be boxed as anything with the least amount of space
        boxes = append(boxes, utils.BoxAnything("TransactionIdentifier", 
m.TransactionIdentifier, -1))
        // Const Field (protocolIdentifier)
-       boxes = append(boxes, utils.BoxAnything("ProtocolIdentifier", 0x0000, 
-1))
+       boxes = append(boxes, utils.BoxAnything("ProtocolIdentifier", 
uint16(0x0000), -1))
        // Implicit Field (length)
        length := uint16(uint16(m.Pdu.LengthInBytes()) + uint16(uint16(1)))
        // uint16 can be boxed as anything with the least amount of space
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go 
b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go
index 0f588d7..d4722f7 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go
@@ -426,9 +426,9 @@ func (m *COTPPacket) BoxParent(name string, width int, 
childBoxer func() []utils
        // uint8 can be boxed as anything with the least amount of space
        boxes = append(boxes, utils.BoxAnything("HeaderLength", headerLength, 
-1))
        // Discriminator Field (tpduCode) (Used as input to a switch field)
-       // tpduCode := uint8(child.TpduCode())
+       tpduCode := uint8(m.Child.TpduCode())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("TpduCode", tpduCode, -1))
+       boxes = append(boxes, utils.BoxAnything("TpduCode", tpduCode, -1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        // Array Field (parameters)
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPParameter.go 
b/plc4go/internal/plc4go/s7/readwrite/model/COTPParameter.go
index 747fd45..222e3d3 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPParameter.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPParameter.go
@@ -307,9 +307,9 @@ func (m *COTPParameter) BoxParent(name string, width int, 
childBoxer func() []ut
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (parameterType) (Used as input to a switch field)
-       // parameterType := uint8(child.ParameterType())
+       parameterType := uint8(m.Child.ParameterType())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("ParameterType", 
parameterType, -1))
+       boxes = append(boxes, utils.BoxAnything("ParameterType", parameterType, 
-1))
        // Implicit Field (parameterLength)
        parameterLength := uint8(uint8(uint8(m.LengthInBytes())) - 
uint8(uint8(2)))
        // uint8 can be boxed as anything with the least amount of space
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPProtocolClass.go 
b/plc4go/internal/plc4go/s7/readwrite/model/COTPProtocolClass.go
index 43ada27..681fda6 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPProtocolClass.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPProtocolClass.go
@@ -170,5 +170,5 @@ func (m COTPProtocolClass) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", int8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 2, int8(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPTpduSize.go 
b/plc4go/internal/plc4go/s7/readwrite/model/COTPTpduSize.go
index 0ac0de8..0ab1aab 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPTpduSize.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPTpduSize.go
@@ -223,5 +223,5 @@ func (m COTPTpduSize) Box(s string, i int) utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", int8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 2, int8(m), 
m.name()), -1)
 }
diff --git 
a/plc4go/internal/plc4go/s7/readwrite/model/DataTransportErrorCode.go 
b/plc4go/internal/plc4go/s7/readwrite/model/DataTransportErrorCode.go
index e65cc44..95bde75 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/DataTransportErrorCode.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/DataTransportErrorCode.go
@@ -178,5 +178,5 @@ func (m DataTransportErrorCode) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 2, uint8(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/DataTransportSize.go 
b/plc4go/internal/plc4go/s7/readwrite/model/DataTransportSize.go
index a80c500..6e1c8f9 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/DataTransportSize.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/DataTransportSize.go
@@ -223,5 +223,5 @@ func (m DataTransportSize) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 2, uint8(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/DeviceGroup.go 
b/plc4go/internal/plc4go/s7/readwrite/model/DeviceGroup.go
index d1c2077..738ef02 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/DeviceGroup.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/DeviceGroup.go
@@ -154,5 +154,5 @@ func (m DeviceGroup) Box(s string, i int) utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", int8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 2, int8(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/MemoryArea.go 
b/plc4go/internal/plc4go/s7/readwrite/model/MemoryArea.go
index 14f7aa6..fb3ab78 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/MemoryArea.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/MemoryArea.go
@@ -247,5 +247,5 @@ func (m MemoryArea) Box(s string, i int) utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 2, uint8(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7Address.go 
b/plc4go/internal/plc4go/s7/readwrite/model/S7Address.go
index 986ba53..d4e340b 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7Address.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7Address.go
@@ -234,9 +234,9 @@ func (m *S7Address) BoxParent(name string, width int, 
childBoxer func() []utils.
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (addressType) (Used as input to a switch field)
-       // addressType := uint8(child.AddressType())
+       addressType := uint8(m.Child.AddressType())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("AddressType", addressType, 
-1))
+       boxes = append(boxes, utils.BoxAnything("AddressType", addressType, -1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7Message.go 
b/plc4go/internal/plc4go/s7/readwrite/model/S7Message.go
index b279167..2532c6b 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7Message.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7Message.go
@@ -474,11 +474,11 @@ func (m *S7Message) BoxParent(name string, width int, 
childBoxer func() []utils.
        }
        boxes := make([]utils.AsciiBox, 0)
        // Const Field (protocolId)
-       boxes = append(boxes, utils.BoxAnything("ProtocolId", 0x32, -1))
+       boxes = append(boxes, utils.BoxAnything("ProtocolId", uint8(0x32), -1))
        // Discriminator Field (messageType) (Used as input to a switch field)
-       // messageType := uint8(child.MessageType())
+       messageType := uint8(m.Child.MessageType())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("MessageType", messageType, 
-1))
+       boxes = append(boxes, utils.BoxAnything("MessageType", messageType, -1))
        // Reserved Field (reserved)
        // reserved field can be boxed as anything with the least amount of 
space
        boxes = append(boxes, utils.BoxAnything("reserved", uint16(0x0000), -1))
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7Parameter.go 
b/plc4go/internal/plc4go/s7/readwrite/model/S7Parameter.go
index 88dc1df..9678d65 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7Parameter.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7Parameter.go
@@ -305,9 +305,9 @@ func (m *S7Parameter) BoxParent(name string, width int, 
childBoxer func() []util
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (parameterType) (Used as input to a switch field)
-       // parameterType := uint8(child.ParameterType())
+       parameterType := uint8(m.Child.ParameterType())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("ParameterType", 
parameterType, -1))
+       boxes = append(boxes, utils.BoxAnything("ParameterType", parameterType, 
-1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
diff --git 
a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserDataItem.go 
b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserDataItem.go
index 26bdf0f..f5f4686 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserDataItem.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserDataItem.go
@@ -234,9 +234,9 @@ func (m *S7ParameterUserDataItem) BoxParent(name string, 
width int, childBoxer f
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (itemType) (Used as input to a switch field)
-       // itemType := uint8(child.ItemType())
+       itemType := uint8(m.Child.ItemType())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("ItemType", itemType, -1))
+       boxes = append(boxes, utils.BoxAnything("ItemType", itemType, -1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
diff --git 
a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go
 
b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go
index 8ee4b66..9362f32 100644
--- 
a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go
+++ 
b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go
@@ -246,7 +246,7 @@ func (m S7PayloadUserDataItemCpuFunctionReadSzlResponse) 
Box(name string, width
        childBoxer := func() []utils.AsciiBox {
                boxes := make([]utils.AsciiBox, 0)
                // Const Field (szlItemLength)
-               boxes = append(boxes, utils.BoxAnything("SzlItemLength", 28, 
-1))
+               boxes = append(boxes, utils.BoxAnything("SzlItemLength", 
uint16(28), -1))
                // Implicit Field (szlItemCount)
                szlItemCount := uint16(uint16(len(m.Items)))
                // uint16 can be boxed as anything with the least amount of 
space
diff --git 
a/plc4go/internal/plc4go/s7/readwrite/model/S7VarRequestParameterItem.go 
b/plc4go/internal/plc4go/s7/readwrite/model/S7VarRequestParameterItem.go
index 094c9ae..2ecbc9e 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7VarRequestParameterItem.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7VarRequestParameterItem.go
@@ -234,9 +234,9 @@ func (m *S7VarRequestParameterItem) BoxParent(name string, 
width int, childBoxer
        }
        boxes := make([]utils.AsciiBox, 0)
        // Discriminator Field (itemType) (Used as input to a switch field)
-       // itemType := uint8(child.ItemType())
+       itemType := uint8(m.Child.ItemType())
        // uint8 can be boxed as anything with the least amount of space
-       // boxes = append(boxes, utils.BoxAnything("ItemType", itemType, -1))
+       boxes = append(boxes, utils.BoxAnything("ItemType", itemType, -1))
        // Switch field (Depending on the discriminator values, passes the 
boxing to a sub-type)
        boxes = append(boxes, childBoxer()...)
        return utils.BoxBox(boxName, utils.AlignBoxes(boxes, width-2), 0)
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/SzlModuleTypeClass.go 
b/plc4go/internal/plc4go/s7/readwrite/model/SzlModuleTypeClass.go
index 9f61d1a..fbabf04 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/SzlModuleTypeClass.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/SzlModuleTypeClass.go
@@ -162,5 +162,5 @@ func (m SzlModuleTypeClass) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 1, uint8(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/SzlSublist.go 
b/plc4go/internal/plc4go/s7/readwrite/model/SzlSublist.go
index 32691af..692cb34 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/SzlSublist.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/SzlSublist.go
@@ -282,5 +282,5 @@ func (m SzlSublist) Box(s string, i int) utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", uint8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 2, uint8(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/TPKTPacket.go 
b/plc4go/internal/plc4go/s7/readwrite/model/TPKTPacket.go
index eedcc4e..53e15f8 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/TPKTPacket.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/TPKTPacket.go
@@ -226,7 +226,7 @@ func (m TPKTPacket) Box(name string, width int) 
utils.AsciiBox {
        }
        boxes := make([]utils.AsciiBox, 0)
        // Const Field (protocolId)
-       boxes = append(boxes, utils.BoxAnything("ProtocolId", 0x03, -1))
+       boxes = append(boxes, utils.BoxAnything("ProtocolId", uint8(0x03), -1))
        // Reserved Field (reserved)
        // reserved field can be boxed as anything with the least amount of 
space
        boxes = append(boxes, utils.BoxAnything("reserved", uint8(0x00), -1))
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go 
b/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
index a20554e..70e2efe 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
@@ -1591,5 +1591,5 @@ func (m TransportSize) Box(s string, i int) 
utils.AsciiBox {
        if s != "" {
                boxName += "/" + s
        }
-       return utils.BoxString(boxName, fmt.Sprintf("%x %s", int8(m), 
m.name()), -1)
+       return utils.BoxString(boxName, fmt.Sprintf("%#0*x %s", 2, int8(m), 
m.name()), -1)
 }
diff --git a/plc4go/internal/plc4go/s7/s7Io_test.go 
b/plc4go/internal/plc4go/s7/s7Io_test.go
index 2500518..d3e6973 100644
--- a/plc4go/internal/plc4go/s7/s7Io_test.go
+++ b/plc4go/internal/plc4go/s7/s7Io_test.go
@@ -70,41 +70,41 @@ func TestS7MessageBytes(t *testing.T) {
                                ),
                        },
                        wantString: `
-╔═TPKTPacket═══════════════════════════════════════════════════════════════════════════════════════════════════╗
-║╔═ProtocolId╗╔═reserved╗╔═Len╗                                                
                                ║
-║║     3     ║║    0    ║║ 29 ║                                                
                                ║
-║╚═══════════╝╚═════════╝╚════╝                                                
                                ║
-║╔═COTPPacket/COTPPacketData/payload══════════════════════════════════════════════════════════════════════════╗║
-║║╔═HeaderLength╗╔═Eot═╗╔═TpduRef╗╔═Parameters═════════════════════════════════╗
                              ║║
-║║║      5      ║║false║║   13   
║║╔═COTPParameter/COTPParameterTpduSize══════╗║                              ║║
-║║╚═════════════╝╚═════╝╚════════╝║║╔═ParameterLength╗╔═COTPTpduSize/tpduSize╗║║
                              ║║
-║║                                ║║║       1        ║║     c SIZE_4096      
║║║                              ║║
-║║                                
║║╚════════════════╝╚══════════════════════╝║║                              ║║
-║║                                
║╚══════════════════════════════════════════╝║                              ║║
-║║                                
╚════════════════════════════════════════════╝                              ║║
-║║╔═S7Message/S7MessageResponseData/payload══════════════════════════════════════════════════════════════════╗║║
-║║║╔═ProtocolId╗╔═reserved╗╔═TpduReference╗╔═ParameterLength╗╔═PayloadLength╗╔═ErrorClass╗╔═ErrorCode╗
       ║║║
-║║║║    50     ║║    0    ║║      11      ║║       2        ║║      5       ║║ 
    0     ║║    0     ║       ║║║
-║║║╚═══════════╝╚═════════╝╚══════════════╝╚════════════════╝╚══════════════╝╚═══════════╝╚══════════╝
       ║║║
-║║║╔═S7Parameter/S7ParameterReadVarResponse/parameter╗                         
                              ║║║
-║║║║                   ╔═NumItems╗                   ║                         
                              ║║║
-║║║║                   ║    4    ║                   ║                         
                              ║║║
-║║║║                   ╚═════════╝                   ║                         
                              ║║║
-║║║╚═════════════════════════════════════════════════╝                         
                              ║║║
-║║║╔═S7Payload/S7PayloadReadVarResponse/payload═════════════════════════════════════════════════════════════╗║║║
-║║║║╔═Items════════════════════════════════════════════════════════════════════════════════════════════════╗║║║║
-║║║║║╔═S7VarPayloadDataItem═══════════════════════════════════════════════════════════════════════════════╗║║║║║
-║║║║║║╔═DataTransportErrorCode/returnCode╗╔═DataTransportSize/transportSize╗╔═DataLength╗╔═Data╗╔═padding╗║║║║║║
-║║║║║║║              ff OK               ║║             3 BIT              ║║  
   1     ║║ ╔═╗ ║║   0    ║║║║║║║
-║║║║║║╚══════════════════════════════════╝╚════════════════════════════════╝╚═══════════╝║
 ║1║ ║╚════════╝║║║║║║
-║║║║║║                                                                         
          ║ ╚═╝ ║          ║║║║║║
-║║║║║║                                                                         
          ╚═════╝          ║║║║║║
-║║║║║╚════════════════════════════════════════════════════════════════════════════════════════════════════╝║║║║║
-║║║║╚══════════════════════════════════════════════════════════════════════════════════════════════════════╝║║║║
-║║║╚════════════════════════════════════════════════════════════════════════════════════════════════════════╝║║║
-║║╚══════════════════════════════════════════════════════════════════════════════════════════════════════════╝║║
-║╚════════════════════════════════════════════════════════════════════════════════════════════════════════════╝║
-╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
+╔═TPKTPacket══════════════════════════════════════════════════════════════════════════════════════════════════════════╗
+║╔═ProtocolId╗╔═reserved╗╔═Len═════╗                                           
                                       ║
+║║  0x03 3   ║║ 0x00 0  ║║0x001d 29║                                           
                                       ║
+║╚═══════════╝╚═════════╝╚═════════╝                                           
                                       ║
+║╔═COTPPacket/COTPPacketData/payload═════════════════════════════════════════════════════════════════════════════════╗║
+║║╔═HeaderLength╗╔═TpduCode╗╔═Eot════╗╔═TpduRef╗╔═Parameters═════════════════════════════════════════════════╗
       ║║
+║║║   0x05 5    ║║0xf0 240 ║║b0 false║║0x0d 13 
║║╔═COTPParameter/COTPParameterTpduSize══════════════════════╗║       ║║
+║║╚═════════════╝╚═════════╝╚════════╝╚════════╝║║╔═ParameterType╗╔═ParameterLength╗╔═COTPTpduSize/tpduSize╗║║
       ║║
+║║                                              ║║║   0xc0 192   ║║     0x01 1 
    ║║    0x0c SIZE_4096    ║║║       ║║
+║║                                              
║║╚══════════════╝╚════════════════╝╚══════════════════════╝║║       ║║
+║║                                              
║╚══════════════════════════════════════════════════════════╝║       ║║
+║║                                              
╚════════════════════════════════════════════════════════════╝       ║║
+║║╔═S7Message/S7MessageResponseData/payload═════════════════════════════════════════════════════════════════════════╗║║
+║║║╔═ProtocolId╗╔═MessageType╗╔═reserved╗╔═TpduReference╗╔═ParameterLength╗╔═PayloadLength╗╔═ErrorClass╗╔═ErrorCode╗║║║
+║║║║  0x32 50  ║║   0x03 3   ║║0x0000 0 ║║  0x000b 11   ║║    0x0002 2    ║║   
0x0005 5   ║║  0x00 0   ║║  0x00 0  ║║║║
+║║║╚═══════════╝╚════════════╝╚═════════╝╚══════════════╝╚════════════════╝╚══════════════╝╚═══════════╝╚══════════╝║║║
+║║║╔═S7Parameter/S7ParameterReadVarResponse/parameter╗                         
                                     ║║║
+║║║║           ╔═ParameterType╗╔═NumItems╗           ║                         
                                     ║║║
+║║║║           ║    0x04 4    ║║ 0x04 4  ║           ║                         
                                     ║║║
+║║║║           ╚══════════════╝╚═════════╝           ║                         
                                     ║║║
+║║║╚═════════════════════════════════════════════════╝                         
                                     ║║║
+║║║╔═S7Payload/S7PayloadReadVarResponse/payload════════════════════════════════════════════════════════════════╗
    ║║║
+║║║║╔═Items═══════════════════════════════════════════════════════════════════════════════════════════════════╗║
    ║║║
+║║║║║╔═S7VarPayloadDataItem══════════════════════════════════════════════════════════════════════════════════╗║║
    ║║║
+║║║║║║╔═DataTransportErrorCode/returnCode╗╔═DataTransportSize/transportSize╗╔═DataLength╗╔═Data═══╗╔═padding╗║║║
    ║║║
+║║║║║║║             0xff OK              ║║            0x03 BIT            ║║ 
0x0001 1  ║║╔══════╗║║ 0x00 0 ║║║║    ║║║
+║║║║║║╚══════════════════════════════════╝╚════════════════════════════════╝╚═══════════╝║║0x01
 1║║╚════════╝║║║    ║║║
+║║║║║║                                                                         
          ║╚══════╝║          ║║║    ║║║
+║║║║║║                                                                         
          ╚════════╝          ║║║    ║║║
+║║║║║╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝║║
    ║║║
+║║║║╚═════════════════════════════════════════════════════════════════════════════════════════════════════════╝║
    ║║║
+║║║╚═══════════════════════════════════════════════════════════════════════════════════════════════════════════╝
    ║║║
+║║╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝║║
+║╚═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝║
+╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
 `,
                        wantDump: `
 00|03 00 00 1d 05 f0 0d c0 01 0c '..........'
diff --git a/plc4go/internal/plc4go/spi/utils/dumpUtils.go 
b/plc4go/internal/plc4go/spi/utils/dumpUtils.go
index 59a1bad..808c742 100644
--- a/plc4go/internal/plc4go/spi/utils/dumpUtils.go
+++ b/plc4go/internal/plc4go/spi/utils/dumpUtils.go
@@ -23,6 +23,7 @@ import (
        "fmt"
        "github.com/rs/zerolog/log"
        "reflect"
+       "unsafe"
 )
 
 // BoxedDump dumps a 56+2 char wide hex string
@@ -75,11 +76,14 @@ func BoxAnything(name string, anything interface{}, 
charWidth int) AsciiBox {
                // A box usually has its own name
                return anything.(AsciiBoxer).Box(name, charWidth)
        case bool:
-               return BoxString(name, fmt.Sprintf("%t", anything), 0)
+               asInt := 0
+               if anything.(bool) {
+                       asInt = 1
+               }
+               return BoxString(name, fmt.Sprintf("b%d %t", asInt, anything), 
0)
        case uint, uint8, uint16, uint32, uint64, int, int8, int16, int32, 
int64, float32, float64:
-               // TODO: include hex later with this line
-               //return BoxString(name, fmt.Sprintf("%#0*x %d", 
unsafe.Sizeof(anything)/2, anything, anything), 0)
-               return BoxString(name, fmt.Sprintf("%d", anything), 0)
+               hexDigits := reflect.TypeOf(anything).Bits() / 4
+               return BoxString(name, fmt.Sprintf("%#0*x %d", hexDigits, 
anything, anything), 0)
        case []byte:
                return AsciiBox(DumpFixedWidth(anything.([]byte), charWidth))
        case string:
@@ -96,8 +100,7 @@ func BoxAnything(name string, anything interface{}, 
charWidth int) AsciiBox {
                        return BoxString(name, fmt.Sprintf("%t", anything), 0)
                case reflect.Uint, reflect.Uint8, reflect.Uint16, 
reflect.Uint32, reflect.Uint64, reflect.Int,
                        reflect.Int8, reflect.Int16, reflect.Int32, 
reflect.Int64, reflect.Float32, reflect.Float64:
-                       // TODO: include hex here somehow. Seems that %x does 
print strange hex values here
-                       return BoxString(name, fmt.Sprintf("%d", anything), 0)
+                       return BoxString(name, fmt.Sprintf("%#0*x %d", 
unsafe.Sizeof(valueOf.Elem())/2, valueOf.Elem(), anything), 0)
                case reflect.Slice, reflect.Array:
                        boxes := make([]AsciiBox, valueOf.Len())
                        for i := 0; i < valueOf.Len(); i++ {
diff --git a/plc4go/internal/plc4go/spi/utils/dumpUtils_test.go 
b/plc4go/internal/plc4go/spi/utils/dumpUtils_test.go
index 1c6216e..7f85740 100644
--- a/plc4go/internal/plc4go/spi/utils/dumpUtils_test.go
+++ b/plc4go/internal/plc4go/spi/utils/dumpUtils_test.go
@@ -44,7 +44,7 @@ func TestBoxAnything(t *testing.T) {
                        },
                        want: `
 ╔═exampleBool╗
-║    true    ║
+║  b1 true   ║
 ╚════════════╝
 `,
                },
@@ -56,9 +56,9 @@ func TestBoxAnything(t *testing.T) {
                                charWidth: 0,
                        },
                        want: `
-╔═exampleInt╗
-║     1     ║
-╚═══════════╝
+╔═exampleInt═════════╗
+║0x0000000000000001 1║
+╚════════════════════╝
 `,
                },
                {
@@ -69,9 +69,9 @@ func TestBoxAnything(t *testing.T) {
                                charWidth: 0,
                        },
                        want: `
-╔═exampleInt╗
-║ 123123123 ║
-╚═══════════╝
+╔═exampleInt═════════════════╗
+║0x000000000756b5b3 123123123║
+╚════════════════════════════╝
 `,
                },
        }

Reply via email to