You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2022/07/12 18:12:28 UTC

[plc4x] branch develop updated (c684d6c42 -> de2ad0614)

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

sruehl pushed a change to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git


    from c684d6c42 refactor(codegen/plc4go): switched enum back to value with a log statement as an error break more for now...
     new 76391433e feat(cbus): added support for enum parameters
     new de2ad0614 feat(cbus): added parameter relevant types

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 plc4go/protocols/cbus/readwrite/ParserHelper.go    |   18 +
 plc4go/protocols/cbus/readwrite/XmlParserHelper.go |   18 +
 .../cbus/readwrite/model/ApplicationAddress1.go    |  183 +
 .../cbus/readwrite/model/ApplicationAddress2.go    |  183 +
 .../cbus/readwrite/model/BaudRateSelector.go       |  161 +
 .../cbus/readwrite/model/CALDataAcknowledge.go     |   25 +-
 .../cbus/readwrite/model/CALDataGetStatus.go       |   61 +-
 .../model/CALDataOrSetParameterSetParameter.go     |   51 +-
 .../cbus/readwrite/model/CALDataRecall.go          |   61 +-
 .../readwrite/model/CBusCommandDeviceManagement.go |   57 +-
 .../cbus/readwrite/model/CustomManufacturer.go     |  157 +
 .../protocols/cbus/readwrite/model/CustomTypes.go  |  157 +
 .../model/{CBusOptions.go => InterfaceOptions1.go} |  301 +-
 .../model/InterfaceOptions1PowerUpSettings.go      |  168 +
 .../cbus/readwrite/model/InterfaceOptions2.go      |  332 +
 .../cbus/readwrite/model/InterfaceOptions3.go      |  330 +
 plc4go/protocols/cbus/readwrite/model/Parameter.go | 7375 ++++++++++++++++++++
 .../cbus/readwrite/model/ProtectionLevel.go        |  179 +
 .../protocols/cbus/readwrite/model/SerialNumber.go |  229 +
 .../apache/plc4x/java/cbus/RandomPackagesTest.java |   42 +
 .../src/main/resources/protocols/cbus/c-bus.mspec  |  367 +-
 21 files changed, 10181 insertions(+), 274 deletions(-)
 create mode 100644 plc4go/protocols/cbus/readwrite/model/ApplicationAddress1.go
 create mode 100644 plc4go/protocols/cbus/readwrite/model/ApplicationAddress2.go
 create mode 100644 plc4go/protocols/cbus/readwrite/model/BaudRateSelector.go
 create mode 100644 plc4go/protocols/cbus/readwrite/model/CustomManufacturer.go
 create mode 100644 plc4go/protocols/cbus/readwrite/model/CustomTypes.go
 copy plc4go/protocols/cbus/readwrite/model/{CBusOptions.go => InterfaceOptions1.go} (52%)
 create mode 100644 plc4go/protocols/cbus/readwrite/model/InterfaceOptions1PowerUpSettings.go
 create mode 100644 plc4go/protocols/cbus/readwrite/model/InterfaceOptions2.go
 create mode 100644 plc4go/protocols/cbus/readwrite/model/InterfaceOptions3.go
 create mode 100644 plc4go/protocols/cbus/readwrite/model/Parameter.go
 create mode 100644 plc4go/protocols/cbus/readwrite/model/ProtectionLevel.go
 create mode 100644 plc4go/protocols/cbus/readwrite/model/SerialNumber.go


[plc4x] 01/02: feat(cbus): added support for enum parameters

Posted by sr...@apache.org.
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 76391433e04c6437fc0c4009ded7501201b23136
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue Jul 12 19:47:41 2022 +0200

    feat(cbus): added support for enum parameters
---
 .../cbus/readwrite/model/CALDataAcknowledge.go     |   25 +-
 .../cbus/readwrite/model/CALDataGetStatus.go       |   61 +-
 .../model/CALDataOrSetParameterSetParameter.go     |   51 +-
 .../cbus/readwrite/model/CALDataRecall.go          |   61 +-
 .../readwrite/model/CBusCommandDeviceManagement.go |   57 +-
 plc4go/protocols/cbus/readwrite/model/Parameter.go | 7375 ++++++++++++++++++++
 .../cbus/readwrite/model/ProtectionLevel.go        |  179 +
 .../apache/plc4x/java/cbus/RandomPackagesTest.java |   42 +
 .../src/main/resources/protocols/cbus/c-bus.mspec  |  292 +-
 9 files changed, 8030 insertions(+), 113 deletions(-)

diff --git a/plc4go/protocols/cbus/readwrite/model/CALDataAcknowledge.go b/plc4go/protocols/cbus/readwrite/model/CALDataAcknowledge.go
index 0bee65789..012a1ffb5 100644
--- a/plc4go/protocols/cbus/readwrite/model/CALDataAcknowledge.go
+++ b/plc4go/protocols/cbus/readwrite/model/CALDataAcknowledge.go
@@ -32,7 +32,7 @@ type CALDataAcknowledge interface {
 	utils.Serializable
 	CALData
 	// GetParamNo returns ParamNo (property field)
-	GetParamNo() uint8
+	GetParamNo() Parameter
 	// GetCode returns Code (property field)
 	GetCode() uint8
 }
@@ -47,7 +47,7 @@ type CALDataAcknowledgeExactly interface {
 // _CALDataAcknowledge is the data-structure of this message
 type _CALDataAcknowledge struct {
 	*_CALData
-	ParamNo uint8
+	ParamNo Parameter
 	Code    uint8
 }
 
@@ -75,7 +75,7 @@ func (m *_CALDataAcknowledge) GetParent() CALData {
 /////////////////////// Accessors for property fields.
 ///////////////////////
 
-func (m *_CALDataAcknowledge) GetParamNo() uint8 {
+func (m *_CALDataAcknowledge) GetParamNo() Parameter {
 	return m.ParamNo
 }
 
@@ -89,7 +89,7 @@ func (m *_CALDataAcknowledge) GetCode() uint8 {
 ///////////////////////////////////////////////////////////
 
 // NewCALDataAcknowledge factory function for _CALDataAcknowledge
-func NewCALDataAcknowledge(paramNo uint8, code uint8, commandTypeContainer CALCommandTypeContainer, additionalData CALData, requestContext RequestContext) *_CALDataAcknowledge {
+func NewCALDataAcknowledge(paramNo Parameter, code uint8, commandTypeContainer CALCommandTypeContainer, additionalData CALData, requestContext RequestContext) *_CALDataAcknowledge {
 	_result := &_CALDataAcknowledge{
 		ParamNo:  paramNo,
 		Code:     code,
@@ -144,11 +144,17 @@ func CALDataAcknowledgeParse(readBuffer utils.ReadBuffer, requestContext Request
 	_ = currentPos
 
 	// Simple Field (paramNo)
-	_paramNo, _paramNoErr := readBuffer.ReadUint8("paramNo", 8)
+	if pullErr := readBuffer.PullContext("paramNo"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for paramNo")
+	}
+	_paramNo, _paramNoErr := ParameterParse(readBuffer)
 	if _paramNoErr != nil {
 		return nil, errors.Wrap(_paramNoErr, "Error parsing 'paramNo' field of CALDataAcknowledge")
 	}
 	paramNo := _paramNo
+	if closeErr := readBuffer.CloseContext("paramNo"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for paramNo")
+	}
 
 	// Simple Field (code)
 	_code, _codeErr := readBuffer.ReadUint8("code", 8)
@@ -182,8 +188,13 @@ func (m *_CALDataAcknowledge) Serialize(writeBuffer utils.WriteBuffer) error {
 		}
 
 		// Simple Field (paramNo)
-		paramNo := uint8(m.GetParamNo())
-		_paramNoErr := writeBuffer.WriteUint8("paramNo", 8, (paramNo))
+		if pushErr := writeBuffer.PushContext("paramNo"); pushErr != nil {
+			return errors.Wrap(pushErr, "Error pushing for paramNo")
+		}
+		_paramNoErr := writeBuffer.WriteSerializable(m.GetParamNo())
+		if popErr := writeBuffer.PopContext("paramNo"); popErr != nil {
+			return errors.Wrap(popErr, "Error popping for paramNo")
+		}
 		if _paramNoErr != nil {
 			return errors.Wrap(_paramNoErr, "Error serializing 'paramNo' field")
 		}
diff --git a/plc4go/protocols/cbus/readwrite/model/CALDataGetStatus.go b/plc4go/protocols/cbus/readwrite/model/CALDataGetStatus.go
index 8fd7e4b06..b24729acd 100644
--- a/plc4go/protocols/cbus/readwrite/model/CALDataGetStatus.go
+++ b/plc4go/protocols/cbus/readwrite/model/CALDataGetStatus.go
@@ -32,9 +32,9 @@ type CALDataGetStatus interface {
 	utils.Serializable
 	CALData
 	// GetParamNo returns ParamNo (property field)
-	GetParamNo() uint8
-	// GetCount returns Count (property field)
-	GetCount() uint8
+	GetParamNo() Parameter
+	// GetCode returns Code (property field)
+	GetCode() uint8
 }
 
 // CALDataGetStatusExactly can be used when we want exactly this type and not a type which fulfills CALDataGetStatus.
@@ -47,8 +47,8 @@ type CALDataGetStatusExactly interface {
 // _CALDataGetStatus is the data-structure of this message
 type _CALDataGetStatus struct {
 	*_CALData
-	ParamNo uint8
-	Count   uint8
+	ParamNo Parameter
+	Code    uint8
 }
 
 ///////////////////////////////////////////////////////////
@@ -75,12 +75,12 @@ func (m *_CALDataGetStatus) GetParent() CALData {
 /////////////////////// Accessors for property fields.
 ///////////////////////
 
-func (m *_CALDataGetStatus) GetParamNo() uint8 {
+func (m *_CALDataGetStatus) GetParamNo() Parameter {
 	return m.ParamNo
 }
 
-func (m *_CALDataGetStatus) GetCount() uint8 {
-	return m.Count
+func (m *_CALDataGetStatus) GetCode() uint8 {
+	return m.Code
 }
 
 ///////////////////////
@@ -89,10 +89,10 @@ func (m *_CALDataGetStatus) GetCount() uint8 {
 ///////////////////////////////////////////////////////////
 
 // NewCALDataGetStatus factory function for _CALDataGetStatus
-func NewCALDataGetStatus(paramNo uint8, count uint8, commandTypeContainer CALCommandTypeContainer, additionalData CALData, requestContext RequestContext) *_CALDataGetStatus {
+func NewCALDataGetStatus(paramNo Parameter, code uint8, commandTypeContainer CALCommandTypeContainer, additionalData CALData, requestContext RequestContext) *_CALDataGetStatus {
 	_result := &_CALDataGetStatus{
 		ParamNo:  paramNo,
-		Count:    count,
+		Code:     code,
 		_CALData: NewCALData(commandTypeContainer, additionalData, requestContext),
 	}
 	_result._CALData._CALDataChildRequirements = _result
@@ -124,7 +124,7 @@ func (m *_CALDataGetStatus) GetLengthInBitsConditional(lastItem bool) uint16 {
 	// Simple field (paramNo)
 	lengthInBits += 8
 
-	// Simple field (count)
+	// Simple field (code)
 	lengthInBits += 8
 
 	return lengthInBits
@@ -144,18 +144,24 @@ func CALDataGetStatusParse(readBuffer utils.ReadBuffer, requestContext RequestCo
 	_ = currentPos
 
 	// Simple Field (paramNo)
-	_paramNo, _paramNoErr := readBuffer.ReadUint8("paramNo", 8)
+	if pullErr := readBuffer.PullContext("paramNo"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for paramNo")
+	}
+	_paramNo, _paramNoErr := ParameterParse(readBuffer)
 	if _paramNoErr != nil {
 		return nil, errors.Wrap(_paramNoErr, "Error parsing 'paramNo' field of CALDataGetStatus")
 	}
 	paramNo := _paramNo
+	if closeErr := readBuffer.CloseContext("paramNo"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for paramNo")
+	}
 
-	// Simple Field (count)
-	_count, _countErr := readBuffer.ReadUint8("count", 8)
-	if _countErr != nil {
-		return nil, errors.Wrap(_countErr, "Error parsing 'count' field of CALDataGetStatus")
+	// Simple Field (code)
+	_code, _codeErr := readBuffer.ReadUint8("code", 8)
+	if _codeErr != nil {
+		return nil, errors.Wrap(_codeErr, "Error parsing 'code' field of CALDataGetStatus")
 	}
-	count := _count
+	code := _code
 
 	if closeErr := readBuffer.CloseContext("CALDataGetStatus"); closeErr != nil {
 		return nil, errors.Wrap(closeErr, "Error closing for CALDataGetStatus")
@@ -164,7 +170,7 @@ func CALDataGetStatusParse(readBuffer utils.ReadBuffer, requestContext RequestCo
 	// Create a partially initialized instance
 	_child := &_CALDataGetStatus{
 		ParamNo: paramNo,
-		Count:   count,
+		Code:    code,
 		_CALData: &_CALData{
 			RequestContext: requestContext,
 		},
@@ -182,17 +188,22 @@ func (m *_CALDataGetStatus) Serialize(writeBuffer utils.WriteBuffer) error {
 		}
 
 		// Simple Field (paramNo)
-		paramNo := uint8(m.GetParamNo())
-		_paramNoErr := writeBuffer.WriteUint8("paramNo", 8, (paramNo))
+		if pushErr := writeBuffer.PushContext("paramNo"); pushErr != nil {
+			return errors.Wrap(pushErr, "Error pushing for paramNo")
+		}
+		_paramNoErr := writeBuffer.WriteSerializable(m.GetParamNo())
+		if popErr := writeBuffer.PopContext("paramNo"); popErr != nil {
+			return errors.Wrap(popErr, "Error popping for paramNo")
+		}
 		if _paramNoErr != nil {
 			return errors.Wrap(_paramNoErr, "Error serializing 'paramNo' field")
 		}
 
-		// Simple Field (count)
-		count := uint8(m.GetCount())
-		_countErr := writeBuffer.WriteUint8("count", 8, (count))
-		if _countErr != nil {
-			return errors.Wrap(_countErr, "Error serializing 'count' field")
+		// Simple Field (code)
+		code := uint8(m.GetCode())
+		_codeErr := writeBuffer.WriteUint8("code", 8, (code))
+		if _codeErr != nil {
+			return errors.Wrap(_codeErr, "Error serializing 'code' field")
 		}
 
 		if popErr := writeBuffer.PopContext("CALDataGetStatus"); popErr != nil {
diff --git a/plc4go/protocols/cbus/readwrite/model/CALDataOrSetParameterSetParameter.go b/plc4go/protocols/cbus/readwrite/model/CALDataOrSetParameterSetParameter.go
index 089b05582..cb069435f 100644
--- a/plc4go/protocols/cbus/readwrite/model/CALDataOrSetParameterSetParameter.go
+++ b/plc4go/protocols/cbus/readwrite/model/CALDataOrSetParameterSetParameter.go
@@ -36,8 +36,8 @@ type CALDataOrSetParameterSetParameter interface {
 	utils.LengthAware
 	utils.Serializable
 	CALDataOrSetParameter
-	// GetParameterNumber returns ParameterNumber (property field)
-	GetParameterNumber() uint8
+	// GetParamNo returns ParamNo (property field)
+	GetParamNo() Parameter
 	// GetParameterValue returns ParameterValue (property field)
 	GetParameterValue() byte
 }
@@ -52,8 +52,8 @@ type CALDataOrSetParameterSetParameterExactly interface {
 // _CALDataOrSetParameterSetParameter is the data-structure of this message
 type _CALDataOrSetParameterSetParameter struct {
 	*_CALDataOrSetParameter
-	ParameterNumber uint8
-	ParameterValue  byte
+	ParamNo        Parameter
+	ParameterValue byte
 }
 
 ///////////////////////////////////////////////////////////
@@ -79,8 +79,8 @@ func (m *_CALDataOrSetParameterSetParameter) GetParent() CALDataOrSetParameter {
 /////////////////////// Accessors for property fields.
 ///////////////////////
 
-func (m *_CALDataOrSetParameterSetParameter) GetParameterNumber() uint8 {
-	return m.ParameterNumber
+func (m *_CALDataOrSetParameterSetParameter) GetParamNo() Parameter {
+	return m.ParamNo
 }
 
 func (m *_CALDataOrSetParameterSetParameter) GetParameterValue() byte {
@@ -110,9 +110,9 @@ func (m *_CALDataOrSetParameterSetParameter) GetDelimiter() byte {
 ///////////////////////////////////////////////////////////
 
 // NewCALDataOrSetParameterSetParameter factory function for _CALDataOrSetParameterSetParameter
-func NewCALDataOrSetParameterSetParameter(parameterNumber uint8, parameterValue byte, firstByte byte) *_CALDataOrSetParameterSetParameter {
+func NewCALDataOrSetParameterSetParameter(paramNo Parameter, parameterValue byte, firstByte byte) *_CALDataOrSetParameterSetParameter {
 	_result := &_CALDataOrSetParameterSetParameter{
-		ParameterNumber:        parameterNumber,
+		ParamNo:                paramNo,
 		ParameterValue:         parameterValue,
 		_CALDataOrSetParameter: NewCALDataOrSetParameter(firstByte),
 	}
@@ -145,7 +145,7 @@ func (m *_CALDataOrSetParameterSetParameter) GetLengthInBitsConditional(lastItem
 	// Const Field (magicId)
 	lengthInBits += 8
 
-	// Simple field (parameterNumber)
+	// Simple field (paramNo)
 	lengthInBits += 8
 
 	// Const Field (delimiter)
@@ -179,12 +179,18 @@ func CALDataOrSetParameterSetParameterParse(readBuffer utils.ReadBuffer) (CALDat
 		return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", CALDataOrSetParameterSetParameter_MAGICID) + " but got " + fmt.Sprintf("%d", magicId))
 	}
 
-	// Simple Field (parameterNumber)
-	_parameterNumber, _parameterNumberErr := readBuffer.ReadUint8("parameterNumber", 8)
-	if _parameterNumberErr != nil {
-		return nil, errors.Wrap(_parameterNumberErr, "Error parsing 'parameterNumber' field of CALDataOrSetParameterSetParameter")
+	// Simple Field (paramNo)
+	if pullErr := readBuffer.PullContext("paramNo"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for paramNo")
+	}
+	_paramNo, _paramNoErr := ParameterParse(readBuffer)
+	if _paramNoErr != nil {
+		return nil, errors.Wrap(_paramNoErr, "Error parsing 'paramNo' field of CALDataOrSetParameterSetParameter")
+	}
+	paramNo := _paramNo
+	if closeErr := readBuffer.CloseContext("paramNo"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for paramNo")
 	}
-	parameterNumber := _parameterNumber
 
 	// Const Field (delimiter)
 	delimiter, _delimiterErr := readBuffer.ReadByte("delimiter")
@@ -208,7 +214,7 @@ func CALDataOrSetParameterSetParameterParse(readBuffer utils.ReadBuffer) (CALDat
 
 	// Create a partially initialized instance
 	_child := &_CALDataOrSetParameterSetParameter{
-		ParameterNumber:        parameterNumber,
+		ParamNo:                paramNo,
 		ParameterValue:         parameterValue,
 		_CALDataOrSetParameter: &_CALDataOrSetParameter{},
 	}
@@ -230,11 +236,16 @@ func (m *_CALDataOrSetParameterSetParameter) Serialize(writeBuffer utils.WriteBu
 			return errors.Wrap(_magicIdErr, "Error serializing 'magicId' field")
 		}
 
-		// Simple Field (parameterNumber)
-		parameterNumber := uint8(m.GetParameterNumber())
-		_parameterNumberErr := writeBuffer.WriteUint8("parameterNumber", 8, (parameterNumber))
-		if _parameterNumberErr != nil {
-			return errors.Wrap(_parameterNumberErr, "Error serializing 'parameterNumber' field")
+		// Simple Field (paramNo)
+		if pushErr := writeBuffer.PushContext("paramNo"); pushErr != nil {
+			return errors.Wrap(pushErr, "Error pushing for paramNo")
+		}
+		_paramNoErr := writeBuffer.WriteSerializable(m.GetParamNo())
+		if popErr := writeBuffer.PopContext("paramNo"); popErr != nil {
+			return errors.Wrap(popErr, "Error popping for paramNo")
+		}
+		if _paramNoErr != nil {
+			return errors.Wrap(_paramNoErr, "Error serializing 'paramNo' field")
 		}
 
 		// Const Field (delimiter)
diff --git a/plc4go/protocols/cbus/readwrite/model/CALDataRecall.go b/plc4go/protocols/cbus/readwrite/model/CALDataRecall.go
index 66058394a..fc17f7a17 100644
--- a/plc4go/protocols/cbus/readwrite/model/CALDataRecall.go
+++ b/plc4go/protocols/cbus/readwrite/model/CALDataRecall.go
@@ -32,9 +32,9 @@ type CALDataRecall interface {
 	utils.Serializable
 	CALData
 	// GetParamNo returns ParamNo (property field)
-	GetParamNo() uint8
-	// GetCount returns Count (property field)
-	GetCount() uint8
+	GetParamNo() Parameter
+	// GetCode returns Code (property field)
+	GetCode() uint8
 }
 
 // CALDataRecallExactly can be used when we want exactly this type and not a type which fulfills CALDataRecall.
@@ -47,8 +47,8 @@ type CALDataRecallExactly interface {
 // _CALDataRecall is the data-structure of this message
 type _CALDataRecall struct {
 	*_CALData
-	ParamNo uint8
-	Count   uint8
+	ParamNo Parameter
+	Code    uint8
 }
 
 ///////////////////////////////////////////////////////////
@@ -75,12 +75,12 @@ func (m *_CALDataRecall) GetParent() CALData {
 /////////////////////// Accessors for property fields.
 ///////////////////////
 
-func (m *_CALDataRecall) GetParamNo() uint8 {
+func (m *_CALDataRecall) GetParamNo() Parameter {
 	return m.ParamNo
 }
 
-func (m *_CALDataRecall) GetCount() uint8 {
-	return m.Count
+func (m *_CALDataRecall) GetCode() uint8 {
+	return m.Code
 }
 
 ///////////////////////
@@ -89,10 +89,10 @@ func (m *_CALDataRecall) GetCount() uint8 {
 ///////////////////////////////////////////////////////////
 
 // NewCALDataRecall factory function for _CALDataRecall
-func NewCALDataRecall(paramNo uint8, count uint8, commandTypeContainer CALCommandTypeContainer, additionalData CALData, requestContext RequestContext) *_CALDataRecall {
+func NewCALDataRecall(paramNo Parameter, code uint8, commandTypeContainer CALCommandTypeContainer, additionalData CALData, requestContext RequestContext) *_CALDataRecall {
 	_result := &_CALDataRecall{
 		ParamNo:  paramNo,
-		Count:    count,
+		Code:     code,
 		_CALData: NewCALData(commandTypeContainer, additionalData, requestContext),
 	}
 	_result._CALData._CALDataChildRequirements = _result
@@ -124,7 +124,7 @@ func (m *_CALDataRecall) GetLengthInBitsConditional(lastItem bool) uint16 {
 	// Simple field (paramNo)
 	lengthInBits += 8
 
-	// Simple field (count)
+	// Simple field (code)
 	lengthInBits += 8
 
 	return lengthInBits
@@ -144,18 +144,24 @@ func CALDataRecallParse(readBuffer utils.ReadBuffer, requestContext RequestConte
 	_ = currentPos
 
 	// Simple Field (paramNo)
-	_paramNo, _paramNoErr := readBuffer.ReadUint8("paramNo", 8)
+	if pullErr := readBuffer.PullContext("paramNo"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for paramNo")
+	}
+	_paramNo, _paramNoErr := ParameterParse(readBuffer)
 	if _paramNoErr != nil {
 		return nil, errors.Wrap(_paramNoErr, "Error parsing 'paramNo' field of CALDataRecall")
 	}
 	paramNo := _paramNo
+	if closeErr := readBuffer.CloseContext("paramNo"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for paramNo")
+	}
 
-	// Simple Field (count)
-	_count, _countErr := readBuffer.ReadUint8("count", 8)
-	if _countErr != nil {
-		return nil, errors.Wrap(_countErr, "Error parsing 'count' field of CALDataRecall")
+	// Simple Field (code)
+	_code, _codeErr := readBuffer.ReadUint8("code", 8)
+	if _codeErr != nil {
+		return nil, errors.Wrap(_codeErr, "Error parsing 'code' field of CALDataRecall")
 	}
-	count := _count
+	code := _code
 
 	if closeErr := readBuffer.CloseContext("CALDataRecall"); closeErr != nil {
 		return nil, errors.Wrap(closeErr, "Error closing for CALDataRecall")
@@ -164,7 +170,7 @@ func CALDataRecallParse(readBuffer utils.ReadBuffer, requestContext RequestConte
 	// Create a partially initialized instance
 	_child := &_CALDataRecall{
 		ParamNo: paramNo,
-		Count:   count,
+		Code:    code,
 		_CALData: &_CALData{
 			RequestContext: requestContext,
 		},
@@ -182,17 +188,22 @@ func (m *_CALDataRecall) Serialize(writeBuffer utils.WriteBuffer) error {
 		}
 
 		// Simple Field (paramNo)
-		paramNo := uint8(m.GetParamNo())
-		_paramNoErr := writeBuffer.WriteUint8("paramNo", 8, (paramNo))
+		if pushErr := writeBuffer.PushContext("paramNo"); pushErr != nil {
+			return errors.Wrap(pushErr, "Error pushing for paramNo")
+		}
+		_paramNoErr := writeBuffer.WriteSerializable(m.GetParamNo())
+		if popErr := writeBuffer.PopContext("paramNo"); popErr != nil {
+			return errors.Wrap(popErr, "Error popping for paramNo")
+		}
 		if _paramNoErr != nil {
 			return errors.Wrap(_paramNoErr, "Error serializing 'paramNo' field")
 		}
 
-		// Simple Field (count)
-		count := uint8(m.GetCount())
-		_countErr := writeBuffer.WriteUint8("count", 8, (count))
-		if _countErr != nil {
-			return errors.Wrap(_countErr, "Error serializing 'count' field")
+		// Simple Field (code)
+		code := uint8(m.GetCode())
+		_codeErr := writeBuffer.WriteUint8("code", 8, (code))
+		if _codeErr != nil {
+			return errors.Wrap(_codeErr, "Error serializing 'code' field")
 		}
 
 		if popErr := writeBuffer.PopContext("CALDataRecall"); popErr != nil {
diff --git a/plc4go/protocols/cbus/readwrite/model/CBusCommandDeviceManagement.go b/plc4go/protocols/cbus/readwrite/model/CBusCommandDeviceManagement.go
index c298c6950..219f1ee7b 100644
--- a/plc4go/protocols/cbus/readwrite/model/CBusCommandDeviceManagement.go
+++ b/plc4go/protocols/cbus/readwrite/model/CBusCommandDeviceManagement.go
@@ -35,8 +35,8 @@ type CBusCommandDeviceManagement interface {
 	utils.LengthAware
 	utils.Serializable
 	CBusCommand
-	// GetParameterNumber returns ParameterNumber (property field)
-	GetParameterNumber() uint8
+	// GetParamNo returns ParamNo (property field)
+	GetParamNo() Parameter
 	// GetParameterValue returns ParameterValue (property field)
 	GetParameterValue() byte
 }
@@ -51,8 +51,8 @@ type CBusCommandDeviceManagementExactly interface {
 // _CBusCommandDeviceManagement is the data-structure of this message
 type _CBusCommandDeviceManagement struct {
 	*_CBusCommand
-	ParameterNumber uint8
-	ParameterValue  byte
+	ParamNo        Parameter
+	ParameterValue byte
 }
 
 ///////////////////////////////////////////////////////////
@@ -78,8 +78,8 @@ func (m *_CBusCommandDeviceManagement) GetParent() CBusCommand {
 /////////////////////// Accessors for property fields.
 ///////////////////////
 
-func (m *_CBusCommandDeviceManagement) GetParameterNumber() uint8 {
-	return m.ParameterNumber
+func (m *_CBusCommandDeviceManagement) GetParamNo() Parameter {
+	return m.ParamNo
 }
 
 func (m *_CBusCommandDeviceManagement) GetParameterValue() byte {
@@ -105,11 +105,11 @@ func (m *_CBusCommandDeviceManagement) GetDelimiter() byte {
 ///////////////////////////////////////////////////////////
 
 // NewCBusCommandDeviceManagement factory function for _CBusCommandDeviceManagement
-func NewCBusCommandDeviceManagement(parameterNumber uint8, parameterValue byte, header CBusHeader, cBusOptions CBusOptions) *_CBusCommandDeviceManagement {
+func NewCBusCommandDeviceManagement(paramNo Parameter, parameterValue byte, header CBusHeader, cBusOptions CBusOptions) *_CBusCommandDeviceManagement {
 	_result := &_CBusCommandDeviceManagement{
-		ParameterNumber: parameterNumber,
-		ParameterValue:  parameterValue,
-		_CBusCommand:    NewCBusCommand(header, cBusOptions),
+		ParamNo:        paramNo,
+		ParameterValue: parameterValue,
+		_CBusCommand:   NewCBusCommand(header, cBusOptions),
 	}
 	_result._CBusCommand._CBusCommandChildRequirements = _result
 	return _result
@@ -137,7 +137,7 @@ func (m *_CBusCommandDeviceManagement) GetLengthInBits() uint16 {
 func (m *_CBusCommandDeviceManagement) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.GetParentLengthInBits())
 
-	// Simple field (parameterNumber)
+	// Simple field (paramNo)
 	lengthInBits += 8
 
 	// Const Field (delimiter)
@@ -162,12 +162,18 @@ func CBusCommandDeviceManagementParse(readBuffer utils.ReadBuffer, cBusOptions C
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	// Simple Field (parameterNumber)
-	_parameterNumber, _parameterNumberErr := readBuffer.ReadUint8("parameterNumber", 8)
-	if _parameterNumberErr != nil {
-		return nil, errors.Wrap(_parameterNumberErr, "Error parsing 'parameterNumber' field of CBusCommandDeviceManagement")
+	// Simple Field (paramNo)
+	if pullErr := readBuffer.PullContext("paramNo"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for paramNo")
+	}
+	_paramNo, _paramNoErr := ParameterParse(readBuffer)
+	if _paramNoErr != nil {
+		return nil, errors.Wrap(_paramNoErr, "Error parsing 'paramNo' field of CBusCommandDeviceManagement")
+	}
+	paramNo := _paramNo
+	if closeErr := readBuffer.CloseContext("paramNo"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for paramNo")
 	}
-	parameterNumber := _parameterNumber
 
 	// Const Field (delimiter)
 	delimiter, _delimiterErr := readBuffer.ReadByte("delimiter")
@@ -191,8 +197,8 @@ func CBusCommandDeviceManagementParse(readBuffer utils.ReadBuffer, cBusOptions C
 
 	// Create a partially initialized instance
 	_child := &_CBusCommandDeviceManagement{
-		ParameterNumber: parameterNumber,
-		ParameterValue:  parameterValue,
+		ParamNo:        paramNo,
+		ParameterValue: parameterValue,
 		_CBusCommand: &_CBusCommand{
 			CBusOptions: cBusOptions,
 		},
@@ -209,11 +215,16 @@ func (m *_CBusCommandDeviceManagement) Serialize(writeBuffer utils.WriteBuffer)
 			return errors.Wrap(pushErr, "Error pushing for CBusCommandDeviceManagement")
 		}
 
-		// Simple Field (parameterNumber)
-		parameterNumber := uint8(m.GetParameterNumber())
-		_parameterNumberErr := writeBuffer.WriteUint8("parameterNumber", 8, (parameterNumber))
-		if _parameterNumberErr != nil {
-			return errors.Wrap(_parameterNumberErr, "Error serializing 'parameterNumber' field")
+		// Simple Field (paramNo)
+		if pushErr := writeBuffer.PushContext("paramNo"); pushErr != nil {
+			return errors.Wrap(pushErr, "Error pushing for paramNo")
+		}
+		_paramNoErr := writeBuffer.WriteSerializable(m.GetParamNo())
+		if popErr := writeBuffer.PopContext("paramNo"); popErr != nil {
+			return errors.Wrap(popErr, "Error popping for paramNo")
+		}
+		if _paramNoErr != nil {
+			return errors.Wrap(_paramNoErr, "Error serializing 'paramNo' field")
 		}
 
 		// Const Field (delimiter)
diff --git a/plc4go/protocols/cbus/readwrite/model/Parameter.go b/plc4go/protocols/cbus/readwrite/model/Parameter.go
new file mode 100644
index 000000000..e12049cfc
--- /dev/null
+++ b/plc4go/protocols/cbus/readwrite/model/Parameter.go
@@ -0,0 +1,7375 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
+	"github.com/rs/zerolog/log"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// Parameter is an enum
+type Parameter uint8
+
+type IParameter interface {
+	Form() string
+	IsVolatile() bool
+	ParameterDescription() string
+	ProtectionLevel() ProtectionLevel
+	Group() string
+	Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+const (
+	Parameter_UNKNOWN_01                            Parameter = 0x00
+	Parameter_UNKNOWN_02                            Parameter = 0x01
+	Parameter_UNKNOWN_03                            Parameter = 0x02
+	Parameter_UNKNOWN_04                            Parameter = 0x03
+	Parameter_UNKNOWN_05                            Parameter = 0x04
+	Parameter_UNKNOWN_06                            Parameter = 0x05
+	Parameter_UNKNOWN_07                            Parameter = 0x06
+	Parameter_UNKNOWN_08                            Parameter = 0x07
+	Parameter_UNKNOWN_09                            Parameter = 0x08
+	Parameter_UNKNOWN_10                            Parameter = 0x09
+	Parameter_UNKNOWN_11                            Parameter = 0x0A
+	Parameter_UNKNOWN_12                            Parameter = 0x0B
+	Parameter_UNKNOWN_13                            Parameter = 0x0C
+	Parameter_UNKNOWN_14                            Parameter = 0x0D
+	Parameter_UNKNOWN_15                            Parameter = 0x0E
+	Parameter_UNKNOWN_16                            Parameter = 0x0F
+	Parameter_UNKNOWN_17                            Parameter = 0x10
+	Parameter_UNKNOWN_18                            Parameter = 0x11
+	Parameter_UNKNOWN_19                            Parameter = 0x12
+	Parameter_UNKNOWN_20                            Parameter = 0x13
+	Parameter_UNKNOWN_21                            Parameter = 0x14
+	Parameter_UNKNOWN_22                            Parameter = 0x15
+	Parameter_UNKNOWN_23                            Parameter = 0x16
+	Parameter_UNKNOWN_24                            Parameter = 0x17
+	Parameter_UNKNOWN_25                            Parameter = 0x18
+	Parameter_UNKNOWN_26                            Parameter = 0x19
+	Parameter_UNKNOWN_27                            Parameter = 0x1A
+	Parameter_UNKNOWN_28                            Parameter = 0x1B
+	Parameter_UNKNOWN_29                            Parameter = 0x1C
+	Parameter_UNKNOWN_30                            Parameter = 0x1D
+	Parameter_UNKNOWN_31                            Parameter = 0x1E
+	Parameter_UNKNOWN_32                            Parameter = 0x1F
+	Parameter_UNKNOWN_33                            Parameter = 0x20
+	Parameter_APPLICATION_ADDRESS_1                 Parameter = 0x21
+	Parameter_APPLICATION_ADDRESS_2                 Parameter = 0x22
+	Parameter_UNKOWN_35                             Parameter = 0x23
+	Parameter_UNKOWN_36                             Parameter = 0x24
+	Parameter_UNKOWN_37                             Parameter = 0x25
+	Parameter_UNKOWN_38                             Parameter = 0x26
+	Parameter_UNKOWN_39                             Parameter = 0x27
+	Parameter_UNKOWN_40                             Parameter = 0x28
+	Parameter_UNKOWN_41                             Parameter = 0x29
+	Parameter_UNKOWN_42                             Parameter = 0x2A
+	Parameter_UNKOWN_43                             Parameter = 0x2B
+	Parameter_UNKOWN_44                             Parameter = 0x2C
+	Parameter_UNKOWN_45                             Parameter = 0x2D
+	Parameter_UNKOWN_46                             Parameter = 0x2E
+	Parameter_UNKOWN_47                             Parameter = 0x2F
+	Parameter_INTERFACE_OPTIONS_1                   Parameter = 0x30
+	Parameter_UNKOWN_49                             Parameter = 0x31
+	Parameter_UNKOWN_50                             Parameter = 0x32
+	Parameter_UNKOWN_51                             Parameter = 0x33
+	Parameter_UNKOWN_52                             Parameter = 0x34
+	Parameter_UNKOWN_53                             Parameter = 0x35
+	Parameter_UNKOWN_54                             Parameter = 0x36
+	Parameter_UNKOWN_55                             Parameter = 0x37
+	Parameter_UNKOWN_56                             Parameter = 0x38
+	Parameter_UNKOWN_57                             Parameter = 0x39
+	Parameter_UNKOWN_58                             Parameter = 0x3A
+	Parameter_UNKOWN_59                             Parameter = 0x3B
+	Parameter_UNKOWN_60                             Parameter = 0x3C
+	Parameter_BAUD_RATE_SELECTOR                    Parameter = 0x3D
+	Parameter_INTERFACE_OPTIONS_2                   Parameter = 0x3E
+	Parameter_UNKOWN_63                             Parameter = 0x3F
+	Parameter_UNKOWN_64                             Parameter = 0x40
+	Parameter_INTERFACE_OPTIONS_1_POWER_UP_SETTINGS Parameter = 0x41
+	Parameter_INTERFACE_OPTIONS_3                   Parameter = 0x42
+	Parameter_UNKOWN_67                             Parameter = 0x43
+	Parameter_UNKOWN_68                             Parameter = 0x44
+	Parameter_UNKOWN_69                             Parameter = 0x45
+	Parameter_UNKOWN_70                             Parameter = 0x46
+	Parameter_UNKOWN_71                             Parameter = 0x47
+	Parameter_UNKOWN_72                             Parameter = 0x48
+	Parameter_UNKOWN_73                             Parameter = 0x49
+	Parameter_UNKOWN_74                             Parameter = 0x4A
+	Parameter_UNKOWN_75                             Parameter = 0x4B
+	Parameter_UNKOWN_76                             Parameter = 0x4C
+	Parameter_UNKOWN_77                             Parameter = 0x4D
+	Parameter_UNKOWN_78                             Parameter = 0x4E
+	Parameter_UNKOWN_79                             Parameter = 0x4F
+	Parameter_UNKOWN_80                             Parameter = 0x50
+	Parameter_UNKOWN_81                             Parameter = 0x51
+	Parameter_UNKOWN_82                             Parameter = 0x52
+	Parameter_UNKOWN_83                             Parameter = 0x53
+	Parameter_UNKOWN_84                             Parameter = 0x54
+	Parameter_UNKOWN_85                             Parameter = 0x55
+	Parameter_UNKOWN_86                             Parameter = 0x56
+	Parameter_UNKOWN_87                             Parameter = 0x57
+	Parameter_UNKOWN_88                             Parameter = 0x58
+	Parameter_UNKOWN_89                             Parameter = 0x59
+	Parameter_UNKOWN_90                             Parameter = 0x5A
+	Parameter_UNKOWN_91                             Parameter = 0x5B
+	Parameter_UNKOWN_92                             Parameter = 0x5C
+	Parameter_UNKOWN_93                             Parameter = 0x5D
+	Parameter_UNKOWN_94                             Parameter = 0x5E
+	Parameter_UNKOWN_95                             Parameter = 0x5F
+	Parameter_UNKOWN_96                             Parameter = 0x60
+	Parameter_UNKOWN_97                             Parameter = 0x61
+	Parameter_UNKOWN_98                             Parameter = 0x62
+	Parameter_UNKOWN_99                             Parameter = 0x63
+	Parameter_UNKOWN_100                            Parameter = 0x64
+	Parameter_UNKOWN_101                            Parameter = 0x65
+	Parameter_UNKOWN_102                            Parameter = 0x66
+	Parameter_UNKOWN_103                            Parameter = 0x67
+	Parameter_UNKOWN_104                            Parameter = 0x68
+	Parameter_UNKOWN_105                            Parameter = 0x69
+	Parameter_UNKOWN_106                            Parameter = 0x6A
+	Parameter_UNKOWN_107                            Parameter = 0x6B
+	Parameter_UNKOWN_108                            Parameter = 0x6C
+	Parameter_UNKOWN_109                            Parameter = 0x6D
+	Parameter_UNKOWN_110                            Parameter = 0x6E
+	Parameter_UNKOWN_111                            Parameter = 0x6F
+	Parameter_UNKOWN_112                            Parameter = 0x70
+	Parameter_UNKOWN_113                            Parameter = 0x71
+	Parameter_UNKOWN_114                            Parameter = 0x72
+	Parameter_UNKOWN_115                            Parameter = 0x73
+	Parameter_UNKOWN_116                            Parameter = 0x74
+	Parameter_UNKOWN_117                            Parameter = 0x75
+	Parameter_UNKOWN_118                            Parameter = 0x76
+	Parameter_UNKOWN_119                            Parameter = 0x77
+	Parameter_UNKOWN_120                            Parameter = 0x78
+	Parameter_UNKOWN_121                            Parameter = 0x79
+	Parameter_UNKOWN_122                            Parameter = 0x7A
+	Parameter_UNKOWN_123                            Parameter = 0x7B
+	Parameter_UNKOWN_124                            Parameter = 0x7C
+	Parameter_UNKOWN_125                            Parameter = 0x7D
+	Parameter_UNKOWN_126                            Parameter = 0x7E
+	Parameter_UNKOWN_127                            Parameter = 0x7F
+	Parameter_UNKOWN_128                            Parameter = 0x80
+	Parameter_UNKOWN_129                            Parameter = 0x81
+	Parameter_UNKOWN_130                            Parameter = 0x82
+	Parameter_UNKOWN_131                            Parameter = 0x83
+	Parameter_UNKOWN_132                            Parameter = 0x84
+	Parameter_UNKOWN_133                            Parameter = 0x85
+	Parameter_UNKOWN_134                            Parameter = 0x86
+	Parameter_UNKOWN_135                            Parameter = 0x87
+	Parameter_UNKOWN_136                            Parameter = 0x88
+	Parameter_UNKOWN_137                            Parameter = 0x89
+	Parameter_UNKOWN_138                            Parameter = 0x8A
+	Parameter_UNKOWN_139                            Parameter = 0x8B
+	Parameter_UNKOWN_140                            Parameter = 0x8C
+	Parameter_UNKOWN_141                            Parameter = 0x8D
+	Parameter_UNKOWN_142                            Parameter = 0x8E
+	Parameter_UNKOWN_143                            Parameter = 0x8F
+	Parameter_UNKOWN_144                            Parameter = 0x90
+	Parameter_UNKOWN_145                            Parameter = 0x91
+	Parameter_UNKOWN_146                            Parameter = 0x92
+	Parameter_UNKOWN_147                            Parameter = 0x93
+	Parameter_UNKOWN_148                            Parameter = 0x94
+	Parameter_UNKOWN_149                            Parameter = 0x95
+	Parameter_UNKOWN_150                            Parameter = 0x96
+	Parameter_UNKOWN_151                            Parameter = 0x97
+	Parameter_UNKOWN_152                            Parameter = 0x98
+	Parameter_UNKOWN_153                            Parameter = 0x99
+	Parameter_UNKOWN_154                            Parameter = 0x9A
+	Parameter_UNKOWN_155                            Parameter = 0x9B
+	Parameter_UNKOWN_156                            Parameter = 0x9C
+	Parameter_UNKOWN_157                            Parameter = 0x9D
+	Parameter_UNKOWN_158                            Parameter = 0x9E
+	Parameter_UNKOWN_159                            Parameter = 0x9F
+	Parameter_UNKOWN_160                            Parameter = 0xA0
+	Parameter_UNKOWN_161                            Parameter = 0xA1
+	Parameter_UNKOWN_162                            Parameter = 0xA2
+	Parameter_UNKOWN_163                            Parameter = 0xA3
+	Parameter_UNKOWN_164                            Parameter = 0xA4
+	Parameter_UNKOWN_165                            Parameter = 0xA5
+	Parameter_UNKOWN_166                            Parameter = 0xA6
+	Parameter_UNKOWN_167                            Parameter = 0xA7
+	Parameter_UNKOWN_168                            Parameter = 0xA8
+	Parameter_UNKOWN_169                            Parameter = 0xA9
+	Parameter_UNKOWN_170                            Parameter = 0xAA
+	Parameter_UNKOWN_171                            Parameter = 0xAB
+	Parameter_UNKOWN_172                            Parameter = 0xAC
+	Parameter_UNKOWN_173                            Parameter = 0xAD
+	Parameter_UNKOWN_174                            Parameter = 0xAE
+	Parameter_UNKOWN_175                            Parameter = 0xAF
+	Parameter_UNKOWN_176                            Parameter = 0xB0
+	Parameter_UNKOWN_177                            Parameter = 0xB1
+	Parameter_UNKOWN_178                            Parameter = 0xB2
+	Parameter_UNKOWN_179                            Parameter = 0xB3
+	Parameter_UNKOWN_180                            Parameter = 0xB4
+	Parameter_UNKOWN_181                            Parameter = 0xB5
+	Parameter_UNKOWN_182                            Parameter = 0xB6
+	Parameter_UNKOWN_183                            Parameter = 0xB7
+	Parameter_UNKOWN_184                            Parameter = 0xB8
+	Parameter_UNKOWN_185                            Parameter = 0xB9
+	Parameter_UNKOWN_186                            Parameter = 0xBA
+	Parameter_UNKOWN_187                            Parameter = 0xBB
+	Parameter_UNKOWN_188                            Parameter = 0xBC
+	Parameter_UNKOWN_189                            Parameter = 0xBD
+	Parameter_UNKOWN_190                            Parameter = 0xBE
+	Parameter_UNKOWN_191                            Parameter = 0xBF
+	Parameter_UNKOWN_192                            Parameter = 0xC0
+	Parameter_UNKOWN_193                            Parameter = 0xC1
+	Parameter_UNKOWN_194                            Parameter = 0xC2
+	Parameter_UNKOWN_195                            Parameter = 0xC3
+	Parameter_UNKOWN_196                            Parameter = 0xC4
+	Parameter_UNKOWN_197                            Parameter = 0xC5
+	Parameter_UNKOWN_198                            Parameter = 0xC6
+	Parameter_UNKOWN_199                            Parameter = 0xC7
+	Parameter_UNKOWN_200                            Parameter = 0xC8
+	Parameter_UNKOWN_201                            Parameter = 0xC9
+	Parameter_UNKOWN_202                            Parameter = 0xCA
+	Parameter_UNKOWN_203                            Parameter = 0xCB
+	Parameter_UNKOWN_204                            Parameter = 0xCC
+	Parameter_UNKOWN_205                            Parameter = 0xCD
+	Parameter_UNKOWN_206                            Parameter = 0xCE
+	Parameter_UNKOWN_207                            Parameter = 0xCF
+	Parameter_UNKOWN_208                            Parameter = 0xD0
+	Parameter_UNKOWN_209                            Parameter = 0xD1
+	Parameter_UNKOWN_210                            Parameter = 0xD2
+	Parameter_UNKOWN_211                            Parameter = 0xD3
+	Parameter_UNKOWN_212                            Parameter = 0xD4
+	Parameter_UNKOWN_213                            Parameter = 0xD5
+	Parameter_UNKOWN_214                            Parameter = 0xD6
+	Parameter_UNKOWN_215                            Parameter = 0xD7
+	Parameter_UNKOWN_216                            Parameter = 0xD8
+	Parameter_UNKOWN_217                            Parameter = 0xD9
+	Parameter_UNKOWN_218                            Parameter = 0xDA
+	Parameter_UNKOWN_219                            Parameter = 0xDB
+	Parameter_UNKOWN_220                            Parameter = 0xDC
+	Parameter_UNKOWN_221                            Parameter = 0xDD
+	Parameter_UNKOWN_222                            Parameter = 0xDE
+	Parameter_UNKOWN_223                            Parameter = 0xDF
+	Parameter_UNKOWN_224                            Parameter = 0xE0
+	Parameter_UNKOWN_225                            Parameter = 0xE1
+	Parameter_UNKOWN_226                            Parameter = 0xE2
+	Parameter_UNKOWN_227                            Parameter = 0xE3
+	Parameter_UNKOWN_228                            Parameter = 0xE4
+	Parameter_UNKOWN_229                            Parameter = 0xE5
+	Parameter_UNKOWN_230                            Parameter = 0xE6
+	Parameter_UNKOWN_231                            Parameter = 0xE7
+	Parameter_UNKOWN_232                            Parameter = 0xE8
+	Parameter_UNKOWN_233                            Parameter = 0xE9
+	Parameter_UNKOWN_234                            Parameter = 0xEA
+	Parameter_CUSTOM_MANUFACTURER_1                 Parameter = 0xEB
+	Parameter_CUSTOM_MANUFACTURER_2                 Parameter = 0xEC
+	Parameter_CUSTOM_MANUFACTURER_3                 Parameter = 0xED
+	Parameter_CUSTOM_MANUFACTURER_4                 Parameter = 0xEE
+	Parameter_CUSTOM_MANUFACTURER_5                 Parameter = 0xEF
+	Parameter_CUSTOM_MANUFACTURER_6                 Parameter = 0xF0
+	Parameter_CUSTOM_MANUFACTURER_7                 Parameter = 0xF1
+	Parameter_CUSTOM_MANUFACTURER_8                 Parameter = 0xF2
+	Parameter_SERIAL_NUMBER_1                       Parameter = 0xF3
+	Parameter_SERIAL_NUMBER_2                       Parameter = 0xF4
+	Parameter_SERIAL_NUMBER_3                       Parameter = 0xF5
+	Parameter_SERIAL_NUMBER_4                       Parameter = 0xF6
+	Parameter_CUSTOM_TYPE_1                         Parameter = 0xF7
+	Parameter_CUSTOM_TYPE_2                         Parameter = 0xF8
+	Parameter_CUSTOM_TYPE_3                         Parameter = 0xF9
+	Parameter_CUSTOM_TYPE_4                         Parameter = 0xFA
+	Parameter_CUSTOM_TYPE_5                         Parameter = 0xFB
+	Parameter_CUSTOM_TYPE_6                         Parameter = 0xFC
+	Parameter_CUSTOM_TYPE_7                         Parameter = 0xFD
+	Parameter_CUSTOM_TYPE_8                         Parameter = 0xFE
+	Parameter_UNKOWN_255                            Parameter = 0xFF
+)
+
+var ParameterValues []Parameter
+
+func init() {
+	_ = errors.New
+	ParameterValues = []Parameter{
+		Parameter_UNKNOWN_01,
+		Parameter_UNKNOWN_02,
+		Parameter_UNKNOWN_03,
+		Parameter_UNKNOWN_04,
+		Parameter_UNKNOWN_05,
+		Parameter_UNKNOWN_06,
+		Parameter_UNKNOWN_07,
+		Parameter_UNKNOWN_08,
+		Parameter_UNKNOWN_09,
+		Parameter_UNKNOWN_10,
+		Parameter_UNKNOWN_11,
+		Parameter_UNKNOWN_12,
+		Parameter_UNKNOWN_13,
+		Parameter_UNKNOWN_14,
+		Parameter_UNKNOWN_15,
+		Parameter_UNKNOWN_16,
+		Parameter_UNKNOWN_17,
+		Parameter_UNKNOWN_18,
+		Parameter_UNKNOWN_19,
+		Parameter_UNKNOWN_20,
+		Parameter_UNKNOWN_21,
+		Parameter_UNKNOWN_22,
+		Parameter_UNKNOWN_23,
+		Parameter_UNKNOWN_24,
+		Parameter_UNKNOWN_25,
+		Parameter_UNKNOWN_26,
+		Parameter_UNKNOWN_27,
+		Parameter_UNKNOWN_28,
+		Parameter_UNKNOWN_29,
+		Parameter_UNKNOWN_30,
+		Parameter_UNKNOWN_31,
+		Parameter_UNKNOWN_32,
+		Parameter_UNKNOWN_33,
+		Parameter_APPLICATION_ADDRESS_1,
+		Parameter_APPLICATION_ADDRESS_2,
+		Parameter_UNKOWN_35,
+		Parameter_UNKOWN_36,
+		Parameter_UNKOWN_37,
+		Parameter_UNKOWN_38,
+		Parameter_UNKOWN_39,
+		Parameter_UNKOWN_40,
+		Parameter_UNKOWN_41,
+		Parameter_UNKOWN_42,
+		Parameter_UNKOWN_43,
+		Parameter_UNKOWN_44,
+		Parameter_UNKOWN_45,
+		Parameter_UNKOWN_46,
+		Parameter_UNKOWN_47,
+		Parameter_INTERFACE_OPTIONS_1,
+		Parameter_UNKOWN_49,
+		Parameter_UNKOWN_50,
+		Parameter_UNKOWN_51,
+		Parameter_UNKOWN_52,
+		Parameter_UNKOWN_53,
+		Parameter_UNKOWN_54,
+		Parameter_UNKOWN_55,
+		Parameter_UNKOWN_56,
+		Parameter_UNKOWN_57,
+		Parameter_UNKOWN_58,
+		Parameter_UNKOWN_59,
+		Parameter_UNKOWN_60,
+		Parameter_BAUD_RATE_SELECTOR,
+		Parameter_INTERFACE_OPTIONS_2,
+		Parameter_UNKOWN_63,
+		Parameter_UNKOWN_64,
+		Parameter_INTERFACE_OPTIONS_1_POWER_UP_SETTINGS,
+		Parameter_INTERFACE_OPTIONS_3,
+		Parameter_UNKOWN_67,
+		Parameter_UNKOWN_68,
+		Parameter_UNKOWN_69,
+		Parameter_UNKOWN_70,
+		Parameter_UNKOWN_71,
+		Parameter_UNKOWN_72,
+		Parameter_UNKOWN_73,
+		Parameter_UNKOWN_74,
+		Parameter_UNKOWN_75,
+		Parameter_UNKOWN_76,
+		Parameter_UNKOWN_77,
+		Parameter_UNKOWN_78,
+		Parameter_UNKOWN_79,
+		Parameter_UNKOWN_80,
+		Parameter_UNKOWN_81,
+		Parameter_UNKOWN_82,
+		Parameter_UNKOWN_83,
+		Parameter_UNKOWN_84,
+		Parameter_UNKOWN_85,
+		Parameter_UNKOWN_86,
+		Parameter_UNKOWN_87,
+		Parameter_UNKOWN_88,
+		Parameter_UNKOWN_89,
+		Parameter_UNKOWN_90,
+		Parameter_UNKOWN_91,
+		Parameter_UNKOWN_92,
+		Parameter_UNKOWN_93,
+		Parameter_UNKOWN_94,
+		Parameter_UNKOWN_95,
+		Parameter_UNKOWN_96,
+		Parameter_UNKOWN_97,
+		Parameter_UNKOWN_98,
+		Parameter_UNKOWN_99,
+		Parameter_UNKOWN_100,
+		Parameter_UNKOWN_101,
+		Parameter_UNKOWN_102,
+		Parameter_UNKOWN_103,
+		Parameter_UNKOWN_104,
+		Parameter_UNKOWN_105,
+		Parameter_UNKOWN_106,
+		Parameter_UNKOWN_107,
+		Parameter_UNKOWN_108,
+		Parameter_UNKOWN_109,
+		Parameter_UNKOWN_110,
+		Parameter_UNKOWN_111,
+		Parameter_UNKOWN_112,
+		Parameter_UNKOWN_113,
+		Parameter_UNKOWN_114,
+		Parameter_UNKOWN_115,
+		Parameter_UNKOWN_116,
+		Parameter_UNKOWN_117,
+		Parameter_UNKOWN_118,
+		Parameter_UNKOWN_119,
+		Parameter_UNKOWN_120,
+		Parameter_UNKOWN_121,
+		Parameter_UNKOWN_122,
+		Parameter_UNKOWN_123,
+		Parameter_UNKOWN_124,
+		Parameter_UNKOWN_125,
+		Parameter_UNKOWN_126,
+		Parameter_UNKOWN_127,
+		Parameter_UNKOWN_128,
+		Parameter_UNKOWN_129,
+		Parameter_UNKOWN_130,
+		Parameter_UNKOWN_131,
+		Parameter_UNKOWN_132,
+		Parameter_UNKOWN_133,
+		Parameter_UNKOWN_134,
+		Parameter_UNKOWN_135,
+		Parameter_UNKOWN_136,
+		Parameter_UNKOWN_137,
+		Parameter_UNKOWN_138,
+		Parameter_UNKOWN_139,
+		Parameter_UNKOWN_140,
+		Parameter_UNKOWN_141,
+		Parameter_UNKOWN_142,
+		Parameter_UNKOWN_143,
+		Parameter_UNKOWN_144,
+		Parameter_UNKOWN_145,
+		Parameter_UNKOWN_146,
+		Parameter_UNKOWN_147,
+		Parameter_UNKOWN_148,
+		Parameter_UNKOWN_149,
+		Parameter_UNKOWN_150,
+		Parameter_UNKOWN_151,
+		Parameter_UNKOWN_152,
+		Parameter_UNKOWN_153,
+		Parameter_UNKOWN_154,
+		Parameter_UNKOWN_155,
+		Parameter_UNKOWN_156,
+		Parameter_UNKOWN_157,
+		Parameter_UNKOWN_158,
+		Parameter_UNKOWN_159,
+		Parameter_UNKOWN_160,
+		Parameter_UNKOWN_161,
+		Parameter_UNKOWN_162,
+		Parameter_UNKOWN_163,
+		Parameter_UNKOWN_164,
+		Parameter_UNKOWN_165,
+		Parameter_UNKOWN_166,
+		Parameter_UNKOWN_167,
+		Parameter_UNKOWN_168,
+		Parameter_UNKOWN_169,
+		Parameter_UNKOWN_170,
+		Parameter_UNKOWN_171,
+		Parameter_UNKOWN_172,
+		Parameter_UNKOWN_173,
+		Parameter_UNKOWN_174,
+		Parameter_UNKOWN_175,
+		Parameter_UNKOWN_176,
+		Parameter_UNKOWN_177,
+		Parameter_UNKOWN_178,
+		Parameter_UNKOWN_179,
+		Parameter_UNKOWN_180,
+		Parameter_UNKOWN_181,
+		Parameter_UNKOWN_182,
+		Parameter_UNKOWN_183,
+		Parameter_UNKOWN_184,
+		Parameter_UNKOWN_185,
+		Parameter_UNKOWN_186,
+		Parameter_UNKOWN_187,
+		Parameter_UNKOWN_188,
+		Parameter_UNKOWN_189,
+		Parameter_UNKOWN_190,
+		Parameter_UNKOWN_191,
+		Parameter_UNKOWN_192,
+		Parameter_UNKOWN_193,
+		Parameter_UNKOWN_194,
+		Parameter_UNKOWN_195,
+		Parameter_UNKOWN_196,
+		Parameter_UNKOWN_197,
+		Parameter_UNKOWN_198,
+		Parameter_UNKOWN_199,
+		Parameter_UNKOWN_200,
+		Parameter_UNKOWN_201,
+		Parameter_UNKOWN_202,
+		Parameter_UNKOWN_203,
+		Parameter_UNKOWN_204,
+		Parameter_UNKOWN_205,
+		Parameter_UNKOWN_206,
+		Parameter_UNKOWN_207,
+		Parameter_UNKOWN_208,
+		Parameter_UNKOWN_209,
+		Parameter_UNKOWN_210,
+		Parameter_UNKOWN_211,
+		Parameter_UNKOWN_212,
+		Parameter_UNKOWN_213,
+		Parameter_UNKOWN_214,
+		Parameter_UNKOWN_215,
+		Parameter_UNKOWN_216,
+		Parameter_UNKOWN_217,
+		Parameter_UNKOWN_218,
+		Parameter_UNKOWN_219,
+		Parameter_UNKOWN_220,
+		Parameter_UNKOWN_221,
+		Parameter_UNKOWN_222,
+		Parameter_UNKOWN_223,
+		Parameter_UNKOWN_224,
+		Parameter_UNKOWN_225,
+		Parameter_UNKOWN_226,
+		Parameter_UNKOWN_227,
+		Parameter_UNKOWN_228,
+		Parameter_UNKOWN_229,
+		Parameter_UNKOWN_230,
+		Parameter_UNKOWN_231,
+		Parameter_UNKOWN_232,
+		Parameter_UNKOWN_233,
+		Parameter_UNKOWN_234,
+		Parameter_CUSTOM_MANUFACTURER_1,
+		Parameter_CUSTOM_MANUFACTURER_2,
+		Parameter_CUSTOM_MANUFACTURER_3,
+		Parameter_CUSTOM_MANUFACTURER_4,
+		Parameter_CUSTOM_MANUFACTURER_5,
+		Parameter_CUSTOM_MANUFACTURER_6,
+		Parameter_CUSTOM_MANUFACTURER_7,
+		Parameter_CUSTOM_MANUFACTURER_8,
+		Parameter_SERIAL_NUMBER_1,
+		Parameter_SERIAL_NUMBER_2,
+		Parameter_SERIAL_NUMBER_3,
+		Parameter_SERIAL_NUMBER_4,
+		Parameter_CUSTOM_TYPE_1,
+		Parameter_CUSTOM_TYPE_2,
+		Parameter_CUSTOM_TYPE_3,
+		Parameter_CUSTOM_TYPE_4,
+		Parameter_CUSTOM_TYPE_5,
+		Parameter_CUSTOM_TYPE_6,
+		Parameter_CUSTOM_TYPE_7,
+		Parameter_CUSTOM_TYPE_8,
+		Parameter_UNKOWN_255,
+	}
+}
+
+func (e Parameter) Form() string {
+	switch e {
+	case 0x00:
+		{ /* '0x00' */
+			return ""
+		}
+	case 0x01:
+		{ /* '0x01' */
+			return ""
+		}
+	case 0x02:
+		{ /* '0x02' */
+			return ""
+		}
+	case 0x03:
+		{ /* '0x03' */
+			return ""
+		}
+	case 0x04:
+		{ /* '0x04' */
+			return ""
+		}
+	case 0x05:
+		{ /* '0x05' */
+			return ""
+		}
+	case 0x06:
+		{ /* '0x06' */
+			return ""
+		}
+	case 0x07:
+		{ /* '0x07' */
+			return ""
+		}
+	case 0x08:
+		{ /* '0x08' */
+			return ""
+		}
+	case 0x09:
+		{ /* '0x09' */
+			return ""
+		}
+	case 0x0A:
+		{ /* '0x0A' */
+			return ""
+		}
+	case 0x0B:
+		{ /* '0x0B' */
+			return ""
+		}
+	case 0x0C:
+		{ /* '0x0C' */
+			return ""
+		}
+	case 0x0D:
+		{ /* '0x0D' */
+			return ""
+		}
+	case 0x0E:
+		{ /* '0x0E' */
+			return ""
+		}
+	case 0x0F:
+		{ /* '0x0F' */
+			return ""
+		}
+	case 0x10:
+		{ /* '0x10' */
+			return ""
+		}
+	case 0x11:
+		{ /* '0x11' */
+			return ""
+		}
+	case 0x12:
+		{ /* '0x12' */
+			return ""
+		}
+	case 0x13:
+		{ /* '0x13' */
+			return ""
+		}
+	case 0x14:
+		{ /* '0x14' */
+			return ""
+		}
+	case 0x15:
+		{ /* '0x15' */
+			return ""
+		}
+	case 0x16:
+		{ /* '0x16' */
+			return ""
+		}
+	case 0x17:
+		{ /* '0x17' */
+			return ""
+		}
+	case 0x18:
+		{ /* '0x18' */
+			return ""
+		}
+	case 0x19:
+		{ /* '0x19' */
+			return ""
+		}
+	case 0x1A:
+		{ /* '0x1A' */
+			return ""
+		}
+	case 0x1B:
+		{ /* '0x1B' */
+			return ""
+		}
+	case 0x1C:
+		{ /* '0x1C' */
+			return ""
+		}
+	case 0x1D:
+		{ /* '0x1D' */
+			return ""
+		}
+	case 0x1E:
+		{ /* '0x1E' */
+			return ""
+		}
+	case 0x1F:
+		{ /* '0x1F' */
+			return ""
+		}
+	case 0x20:
+		{ /* '0x20' */
+			return ""
+		}
+	case 0x21:
+		{ /* '0x21' */
+			return "Byte (Note 1)"
+		}
+	case 0x22:
+		{ /* '0x22' */
+			return "Byte (Note 1)"
+		}
+	case 0x23:
+		{ /* '0x23' */
+			return ""
+		}
+	case 0x24:
+		{ /* '0x24' */
+			return ""
+		}
+	case 0x25:
+		{ /* '0x25' */
+			return ""
+		}
+	case 0x26:
+		{ /* '0x26' */
+			return ""
+		}
+	case 0x27:
+		{ /* '0x27' */
+			return ""
+		}
+	case 0x28:
+		{ /* '0x28' */
+			return ""
+		}
+	case 0x29:
+		{ /* '0x29' */
+			return ""
+		}
+	case 0x2A:
+		{ /* '0x2A' */
+			return ""
+		}
+	case 0x2B:
+		{ /* '0x2B' */
+			return ""
+		}
+	case 0x2C:
+		{ /* '0x2C' */
+			return ""
+		}
+	case 0x2D:
+		{ /* '0x2D' */
+			return ""
+		}
+	case 0x2E:
+		{ /* '0x2E' */
+			return ""
+		}
+	case 0x2F:
+		{ /* '0x2F' */
+			return ""
+		}
+	case 0x30:
+		{ /* '0x30' */
+			return "8 Bits (Note 2)"
+		}
+	case 0x31:
+		{ /* '0x31' */
+			return ""
+		}
+	case 0x32:
+		{ /* '0x32' */
+			return ""
+		}
+	case 0x33:
+		{ /* '0x33' */
+			return ""
+		}
+	case 0x34:
+		{ /* '0x34' */
+			return ""
+		}
+	case 0x35:
+		{ /* '0x35' */
+			return ""
+		}
+	case 0x36:
+		{ /* '0x36' */
+			return ""
+		}
+	case 0x37:
+		{ /* '0x37' */
+			return ""
+		}
+	case 0x38:
+		{ /* '0x38' */
+			return ""
+		}
+	case 0x39:
+		{ /* '0x39' */
+			return ""
+		}
+	case 0x3A:
+		{ /* '0x3A' */
+			return ""
+		}
+	case 0x3B:
+		{ /* '0x3B' */
+			return ""
+		}
+	case 0x3C:
+		{ /* '0x3C' */
+			return ""
+		}
+	case 0x3D:
+		{ /* '0x3D' */
+			return "Byte (Note 3)"
+		}
+	case 0x3E:
+		{ /* '0x3E' */
+			return "Byte (Note 4)"
+		}
+	case 0x3F:
+		{ /* '0x3F' */
+			return ""
+		}
+	case 0x40:
+		{ /* '0x40' */
+			return ""
+		}
+	case 0x41:
+		{ /* '0x41' */
+			return "8 Bits (Note 5)"
+		}
+	case 0x42:
+		{ /* '0x42' */
+			return "Byte (Note 6)"
+		}
+	case 0x43:
+		{ /* '0x43' */
+			return ""
+		}
+	case 0x44:
+		{ /* '0x44' */
+			return ""
+		}
+	case 0x45:
+		{ /* '0x45' */
+			return ""
+		}
+	case 0x46:
+		{ /* '0x46' */
+			return ""
+		}
+	case 0x47:
+		{ /* '0x47' */
+			return ""
+		}
+	case 0x48:
+		{ /* '0x48' */
+			return ""
+		}
+	case 0x49:
+		{ /* '0x49' */
+			return ""
+		}
+	case 0x4A:
+		{ /* '0x4A' */
+			return ""
+		}
+	case 0x4B:
+		{ /* '0x4B' */
+			return ""
+		}
+	case 0x4C:
+		{ /* '0x4C' */
+			return ""
+		}
+	case 0x4D:
+		{ /* '0x4D' */
+			return ""
+		}
+	case 0x4E:
+		{ /* '0x4E' */
+			return ""
+		}
+	case 0x4F:
+		{ /* '0x4F' */
+			return ""
+		}
+	case 0x50:
+		{ /* '0x50' */
+			return ""
+		}
+	case 0x51:
+		{ /* '0x51' */
+			return ""
+		}
+	case 0x52:
+		{ /* '0x52' */
+			return ""
+		}
+	case 0x53:
+		{ /* '0x53' */
+			return ""
+		}
+	case 0x54:
+		{ /* '0x54' */
+			return ""
+		}
+	case 0x55:
+		{ /* '0x55' */
+			return ""
+		}
+	case 0x56:
+		{ /* '0x56' */
+			return ""
+		}
+	case 0x57:
+		{ /* '0x57' */
+			return ""
+		}
+	case 0x58:
+		{ /* '0x58' */
+			return ""
+		}
+	case 0x59:
+		{ /* '0x59' */
+			return ""
+		}
+	case 0x5A:
+		{ /* '0x5A' */
+			return ""
+		}
+	case 0x5B:
+		{ /* '0x5B' */
+			return ""
+		}
+	case 0x5C:
+		{ /* '0x5C' */
+			return ""
+		}
+	case 0x5D:
+		{ /* '0x5D' */
+			return ""
+		}
+	case 0x5E:
+		{ /* '0x5E' */
+			return ""
+		}
+	case 0x5F:
+		{ /* '0x5F' */
+			return ""
+		}
+	case 0x60:
+		{ /* '0x60' */
+			return ""
+		}
+	case 0x61:
+		{ /* '0x61' */
+			return ""
+		}
+	case 0x62:
+		{ /* '0x62' */
+			return ""
+		}
+	case 0x63:
+		{ /* '0x63' */
+			return ""
+		}
+	case 0x64:
+		{ /* '0x64' */
+			return ""
+		}
+	case 0x65:
+		{ /* '0x65' */
+			return ""
+		}
+	case 0x66:
+		{ /* '0x66' */
+			return ""
+		}
+	case 0x67:
+		{ /* '0x67' */
+			return ""
+		}
+	case 0x68:
+		{ /* '0x68' */
+			return ""
+		}
+	case 0x69:
+		{ /* '0x69' */
+			return ""
+		}
+	case 0x6A:
+		{ /* '0x6A' */
+			return ""
+		}
+	case 0x6B:
+		{ /* '0x6B' */
+			return ""
+		}
+	case 0x6C:
+		{ /* '0x6C' */
+			return ""
+		}
+	case 0x6D:
+		{ /* '0x6D' */
+			return ""
+		}
+	case 0x6E:
+		{ /* '0x6E' */
+			return ""
+		}
+	case 0x6F:
+		{ /* '0x6F' */
+			return ""
+		}
+	case 0x70:
+		{ /* '0x70' */
+			return ""
+		}
+	case 0x71:
+		{ /* '0x71' */
+			return ""
+		}
+	case 0x72:
+		{ /* '0x72' */
+			return ""
+		}
+	case 0x73:
+		{ /* '0x73' */
+			return ""
+		}
+	case 0x74:
+		{ /* '0x74' */
+			return ""
+		}
+	case 0x75:
+		{ /* '0x75' */
+			return ""
+		}
+	case 0x76:
+		{ /* '0x76' */
+			return ""
+		}
+	case 0x77:
+		{ /* '0x77' */
+			return ""
+		}
+	case 0x78:
+		{ /* '0x78' */
+			return ""
+		}
+	case 0x79:
+		{ /* '0x79' */
+			return ""
+		}
+	case 0x7A:
+		{ /* '0x7A' */
+			return ""
+		}
+	case 0x7B:
+		{ /* '0x7B' */
+			return ""
+		}
+	case 0x7C:
+		{ /* '0x7C' */
+			return ""
+		}
+	case 0x7D:
+		{ /* '0x7D' */
+			return ""
+		}
+	case 0x7E:
+		{ /* '0x7E' */
+			return ""
+		}
+	case 0x7F:
+		{ /* '0x7F' */
+			return ""
+		}
+	case 0x80:
+		{ /* '0x80' */
+			return ""
+		}
+	case 0x81:
+		{ /* '0x81' */
+			return ""
+		}
+	case 0x82:
+		{ /* '0x82' */
+			return ""
+		}
+	case 0x83:
+		{ /* '0x83' */
+			return ""
+		}
+	case 0x84:
+		{ /* '0x84' */
+			return ""
+		}
+	case 0x85:
+		{ /* '0x85' */
+			return ""
+		}
+	case 0x86:
+		{ /* '0x86' */
+			return ""
+		}
+	case 0x87:
+		{ /* '0x87' */
+			return ""
+		}
+	case 0x88:
+		{ /* '0x88' */
+			return ""
+		}
+	case 0x89:
+		{ /* '0x89' */
+			return ""
+		}
+	case 0x8A:
+		{ /* '0x8A' */
+			return ""
+		}
+	case 0x8B:
+		{ /* '0x8B' */
+			return ""
+		}
+	case 0x8C:
+		{ /* '0x8C' */
+			return ""
+		}
+	case 0x8D:
+		{ /* '0x8D' */
+			return ""
+		}
+	case 0x8E:
+		{ /* '0x8E' */
+			return ""
+		}
+	case 0x8F:
+		{ /* '0x8F' */
+			return ""
+		}
+	case 0x90:
+		{ /* '0x90' */
+			return ""
+		}
+	case 0x91:
+		{ /* '0x91' */
+			return ""
+		}
+	case 0x92:
+		{ /* '0x92' */
+			return ""
+		}
+	case 0x93:
+		{ /* '0x93' */
+			return ""
+		}
+	case 0x94:
+		{ /* '0x94' */
+			return ""
+		}
+	case 0x95:
+		{ /* '0x95' */
+			return ""
+		}
+	case 0x96:
+		{ /* '0x96' */
+			return ""
+		}
+	case 0x97:
+		{ /* '0x97' */
+			return ""
+		}
+	case 0x98:
+		{ /* '0x98' */
+			return ""
+		}
+	case 0x99:
+		{ /* '0x99' */
+			return ""
+		}
+	case 0x9A:
+		{ /* '0x9A' */
+			return ""
+		}
+	case 0x9B:
+		{ /* '0x9B' */
+			return ""
+		}
+	case 0x9C:
+		{ /* '0x9C' */
+			return ""
+		}
+	case 0x9D:
+		{ /* '0x9D' */
+			return ""
+		}
+	case 0x9E:
+		{ /* '0x9E' */
+			return ""
+		}
+	case 0x9F:
+		{ /* '0x9F' */
+			return ""
+		}
+	case 0xA0:
+		{ /* '0xA0' */
+			return ""
+		}
+	case 0xA1:
+		{ /* '0xA1' */
+			return ""
+		}
+	case 0xA2:
+		{ /* '0xA2' */
+			return ""
+		}
+	case 0xA3:
+		{ /* '0xA3' */
+			return ""
+		}
+	case 0xA4:
+		{ /* '0xA4' */
+			return ""
+		}
+	case 0xA5:
+		{ /* '0xA5' */
+			return ""
+		}
+	case 0xA6:
+		{ /* '0xA6' */
+			return ""
+		}
+	case 0xA7:
+		{ /* '0xA7' */
+			return ""
+		}
+	case 0xA8:
+		{ /* '0xA8' */
+			return ""
+		}
+	case 0xA9:
+		{ /* '0xA9' */
+			return ""
+		}
+	case 0xAA:
+		{ /* '0xAA' */
+			return ""
+		}
+	case 0xAB:
+		{ /* '0xAB' */
+			return ""
+		}
+	case 0xAC:
+		{ /* '0xAC' */
+			return ""
+		}
+	case 0xAD:
+		{ /* '0xAD' */
+			return ""
+		}
+	case 0xAE:
+		{ /* '0xAE' */
+			return ""
+		}
+	case 0xAF:
+		{ /* '0xAF' */
+			return ""
+		}
+	case 0xB0:
+		{ /* '0xB0' */
+			return ""
+		}
+	case 0xB1:
+		{ /* '0xB1' */
+			return ""
+		}
+	case 0xB2:
+		{ /* '0xB2' */
+			return ""
+		}
+	case 0xB3:
+		{ /* '0xB3' */
+			return ""
+		}
+	case 0xB4:
+		{ /* '0xB4' */
+			return ""
+		}
+	case 0xB5:
+		{ /* '0xB5' */
+			return ""
+		}
+	case 0xB6:
+		{ /* '0xB6' */
+			return ""
+		}
+	case 0xB7:
+		{ /* '0xB7' */
+			return ""
+		}
+	case 0xB8:
+		{ /* '0xB8' */
+			return ""
+		}
+	case 0xB9:
+		{ /* '0xB9' */
+			return ""
+		}
+	case 0xBA:
+		{ /* '0xBA' */
+			return ""
+		}
+	case 0xBB:
+		{ /* '0xBB' */
+			return ""
+		}
+	case 0xBC:
+		{ /* '0xBC' */
+			return ""
+		}
+	case 0xBD:
+		{ /* '0xBD' */
+			return ""
+		}
+	case 0xBE:
+		{ /* '0xBE' */
+			return ""
+		}
+	case 0xBF:
+		{ /* '0xBF' */
+			return ""
+		}
+	case 0xC0:
+		{ /* '0xC0' */
+			return ""
+		}
+	case 0xC1:
+		{ /* '0xC1' */
+			return ""
+		}
+	case 0xC2:
+		{ /* '0xC2' */
+			return ""
+		}
+	case 0xC3:
+		{ /* '0xC3' */
+			return ""
+		}
+	case 0xC4:
+		{ /* '0xC4' */
+			return ""
+		}
+	case 0xC5:
+		{ /* '0xC5' */
+			return ""
+		}
+	case 0xC6:
+		{ /* '0xC6' */
+			return ""
+		}
+	case 0xC7:
+		{ /* '0xC7' */
+			return ""
+		}
+	case 0xC8:
+		{ /* '0xC8' */
+			return ""
+		}
+	case 0xC9:
+		{ /* '0xC9' */
+			return ""
+		}
+	case 0xCA:
+		{ /* '0xCA' */
+			return ""
+		}
+	case 0xCB:
+		{ /* '0xCB' */
+			return ""
+		}
+	case 0xCC:
+		{ /* '0xCC' */
+			return ""
+		}
+	case 0xCD:
+		{ /* '0xCD' */
+			return ""
+		}
+	case 0xCE:
+		{ /* '0xCE' */
+			return ""
+		}
+	case 0xCF:
+		{ /* '0xCF' */
+			return ""
+		}
+	case 0xD0:
+		{ /* '0xD0' */
+			return ""
+		}
+	case 0xD1:
+		{ /* '0xD1' */
+			return ""
+		}
+	case 0xD2:
+		{ /* '0xD2' */
+			return ""
+		}
+	case 0xD3:
+		{ /* '0xD3' */
+			return ""
+		}
+	case 0xD4:
+		{ /* '0xD4' */
+			return ""
+		}
+	case 0xD5:
+		{ /* '0xD5' */
+			return ""
+		}
+	case 0xD6:
+		{ /* '0xD6' */
+			return ""
+		}
+	case 0xD7:
+		{ /* '0xD7' */
+			return ""
+		}
+	case 0xD8:
+		{ /* '0xD8' */
+			return ""
+		}
+	case 0xD9:
+		{ /* '0xD9' */
+			return ""
+		}
+	case 0xDA:
+		{ /* '0xDA' */
+			return ""
+		}
+	case 0xDB:
+		{ /* '0xDB' */
+			return ""
+		}
+	case 0xDC:
+		{ /* '0xDC' */
+			return ""
+		}
+	case 0xDD:
+		{ /* '0xDD' */
+			return ""
+		}
+	case 0xDE:
+		{ /* '0xDE' */
+			return ""
+		}
+	case 0xDF:
+		{ /* '0xDF' */
+			return ""
+		}
+	case 0xE0:
+		{ /* '0xE0' */
+			return ""
+		}
+	case 0xE1:
+		{ /* '0xE1' */
+			return ""
+		}
+	case 0xE2:
+		{ /* '0xE2' */
+			return ""
+		}
+	case 0xE3:
+		{ /* '0xE3' */
+			return ""
+		}
+	case 0xE4:
+		{ /* '0xE4' */
+			return ""
+		}
+	case 0xE5:
+		{ /* '0xE5' */
+			return ""
+		}
+	case 0xE6:
+		{ /* '0xE6' */
+			return ""
+		}
+	case 0xE7:
+		{ /* '0xE7' */
+			return ""
+		}
+	case 0xE8:
+		{ /* '0xE8' */
+			return ""
+		}
+	case 0xE9:
+		{ /* '0xE9' */
+			return ""
+		}
+	case 0xEA:
+		{ /* '0xEA' */
+			return ""
+		}
+	case 0xEB:
+		{ /* '0xEB' */
+			return "ASCII Chars (Note 7)"
+		}
+	case 0xEC:
+		{ /* '0xEC' */
+			return "ASCII Chars (Note 7)"
+		}
+	case 0xED:
+		{ /* '0xED' */
+			return "ASCII Chars (Note 7)"
+		}
+	case 0xEE:
+		{ /* '0xEE' */
+			return "ASCII Chars (Note 7)"
+		}
+	case 0xEF:
+		{ /* '0xEF' */
+			return "ASCII Chars (Note 7)"
+		}
+	case 0xF0:
+		{ /* '0xF0' */
+			return "ASCII Chars (Note 7)"
+		}
+	case 0xF1:
+		{ /* '0xF1' */
+			return "ASCII Chars (Note 7)"
+		}
+	case 0xF2:
+		{ /* '0xF2' */
+			return "ASCII Chars (Note 7)"
+		}
+	case 0xF3:
+		{ /* '0xF3' */
+			return "Bytes (Note 8)"
+		}
+	case 0xF4:
+		{ /* '0xF4' */
+			return "Bytes (Note 8)"
+		}
+	case 0xF5:
+		{ /* '0xF5' */
+			return "Bytes (Note 8)"
+		}
+	case 0xF6:
+		{ /* '0xF6' */
+			return "Bytes (Note 8)"
+		}
+	case 0xF7:
+		{ /* '0xF7' */
+			return "ASCII Chars (Note 9)"
+		}
+	case 0xF8:
+		{ /* '0xF8' */
+			return "ASCII Chars (Note 9)"
+		}
+	case 0xF9:
+		{ /* '0xF9' */
+			return "ASCII Chars (Note 9)"
+		}
+	case 0xFA:
+		{ /* '0xFA' */
+			return "ASCII Chars (Note 9)"
+		}
+	case 0xFB:
+		{ /* '0xFB' */
+			return "ASCII Chars (Note 9)"
+		}
+	case 0xFC:
+		{ /* '0xFC' */
+			return "ASCII Chars (Note 9)"
+		}
+	case 0xFD:
+		{ /* '0xFD' */
+			return "ASCII Chars (Note 9)"
+		}
+	case 0xFE:
+		{ /* '0xFE' */
+			return "ASCII Chars (Note 9)"
+		}
+	case 0xFF:
+		{ /* '0xFF' */
+			return ""
+		}
+	default:
+		{
+			return ""
+		}
+	}
+}
+
+func ParameterFirstEnumForFieldForm(value string) (Parameter, error) {
+	for _, sizeValue := range ParameterValues {
+		if sizeValue.Form() == value {
+			return sizeValue, nil
+		}
+	}
+	return 0, errors.Errorf("enum for %v describing Form not found", value)
+}
+
+func (e Parameter) IsVolatile() bool {
+	switch e {
+	case 0x00:
+		{ /* '0x00' */
+			return false
+		}
+	case 0x01:
+		{ /* '0x01' */
+			return false
+		}
+	case 0x02:
+		{ /* '0x02' */
+			return false
+		}
+	case 0x03:
+		{ /* '0x03' */
+			return false
+		}
+	case 0x04:
+		{ /* '0x04' */
+			return false
+		}
+	case 0x05:
+		{ /* '0x05' */
+			return false
+		}
+	case 0x06:
+		{ /* '0x06' */
+			return false
+		}
+	case 0x07:
+		{ /* '0x07' */
+			return false
+		}
+	case 0x08:
+		{ /* '0x08' */
+			return false
+		}
+	case 0x09:
+		{ /* '0x09' */
+			return false
+		}
+	case 0x0A:
+		{ /* '0x0A' */
+			return false
+		}
+	case 0x0B:
+		{ /* '0x0B' */
+			return false
+		}
+	case 0x0C:
+		{ /* '0x0C' */
+			return false
+		}
+	case 0x0D:
+		{ /* '0x0D' */
+			return false
+		}
+	case 0x0E:
+		{ /* '0x0E' */
+			return false
+		}
+	case 0x0F:
+		{ /* '0x0F' */
+			return false
+		}
+	case 0x10:
+		{ /* '0x10' */
+			return false
+		}
+	case 0x11:
+		{ /* '0x11' */
+			return false
+		}
+	case 0x12:
+		{ /* '0x12' */
+			return false
+		}
+	case 0x13:
+		{ /* '0x13' */
+			return false
+		}
+	case 0x14:
+		{ /* '0x14' */
+			return false
+		}
+	case 0x15:
+		{ /* '0x15' */
+			return false
+		}
+	case 0x16:
+		{ /* '0x16' */
+			return false
+		}
+	case 0x17:
+		{ /* '0x17' */
+			return false
+		}
+	case 0x18:
+		{ /* '0x18' */
+			return false
+		}
+	case 0x19:
+		{ /* '0x19' */
+			return false
+		}
+	case 0x1A:
+		{ /* '0x1A' */
+			return false
+		}
+	case 0x1B:
+		{ /* '0x1B' */
+			return false
+		}
+	case 0x1C:
+		{ /* '0x1C' */
+			return false
+		}
+	case 0x1D:
+		{ /* '0x1D' */
+			return false
+		}
+	case 0x1E:
+		{ /* '0x1E' */
+			return false
+		}
+	case 0x1F:
+		{ /* '0x1F' */
+			return false
+		}
+	case 0x20:
+		{ /* '0x20' */
+			return false
+		}
+	case 0x21:
+		{ /* '0x21' */
+			return false
+		}
+	case 0x22:
+		{ /* '0x22' */
+			return false
+		}
+	case 0x23:
+		{ /* '0x23' */
+			return false
+		}
+	case 0x24:
+		{ /* '0x24' */
+			return false
+		}
+	case 0x25:
+		{ /* '0x25' */
+			return false
+		}
+	case 0x26:
+		{ /* '0x26' */
+			return false
+		}
+	case 0x27:
+		{ /* '0x27' */
+			return false
+		}
+	case 0x28:
+		{ /* '0x28' */
+			return false
+		}
+	case 0x29:
+		{ /* '0x29' */
+			return false
+		}
+	case 0x2A:
+		{ /* '0x2A' */
+			return false
+		}
+	case 0x2B:
+		{ /* '0x2B' */
+			return false
+		}
+	case 0x2C:
+		{ /* '0x2C' */
+			return false
+		}
+	case 0x2D:
+		{ /* '0x2D' */
+			return false
+		}
+	case 0x2E:
+		{ /* '0x2E' */
+			return false
+		}
+	case 0x2F:
+		{ /* '0x2F' */
+			return false
+		}
+	case 0x30:
+		{ /* '0x30' */
+			return true
+		}
+	case 0x31:
+		{ /* '0x31' */
+			return false
+		}
+	case 0x32:
+		{ /* '0x32' */
+			return false
+		}
+	case 0x33:
+		{ /* '0x33' */
+			return false
+		}
+	case 0x34:
+		{ /* '0x34' */
+			return false
+		}
+	case 0x35:
+		{ /* '0x35' */
+			return false
+		}
+	case 0x36:
+		{ /* '0x36' */
+			return false
+		}
+	case 0x37:
+		{ /* '0x37' */
+			return false
+		}
+	case 0x38:
+		{ /* '0x38' */
+			return false
+		}
+	case 0x39:
+		{ /* '0x39' */
+			return false
+		}
+	case 0x3A:
+		{ /* '0x3A' */
+			return false
+		}
+	case 0x3B:
+		{ /* '0x3B' */
+			return false
+		}
+	case 0x3C:
+		{ /* '0x3C' */
+			return false
+		}
+	case 0x3D:
+		{ /* '0x3D' */
+			return false
+		}
+	case 0x3E:
+		{ /* '0x3E' */
+			return false
+		}
+	case 0x3F:
+		{ /* '0x3F' */
+			return false
+		}
+	case 0x40:
+		{ /* '0x40' */
+			return false
+		}
+	case 0x41:
+		{ /* '0x41' */
+			return false
+		}
+	case 0x42:
+		{ /* '0x42' */
+			return false
+		}
+	case 0x43:
+		{ /* '0x43' */
+			return false
+		}
+	case 0x44:
+		{ /* '0x44' */
+			return false
+		}
+	case 0x45:
+		{ /* '0x45' */
+			return false
+		}
+	case 0x46:
+		{ /* '0x46' */
+			return false
+		}
+	case 0x47:
+		{ /* '0x47' */
+			return false
+		}
+	case 0x48:
+		{ /* '0x48' */
+			return false
+		}
+	case 0x49:
+		{ /* '0x49' */
+			return false
+		}
+	case 0x4A:
+		{ /* '0x4A' */
+			return false
+		}
+	case 0x4B:
+		{ /* '0x4B' */
+			return false
+		}
+	case 0x4C:
+		{ /* '0x4C' */
+			return false
+		}
+	case 0x4D:
+		{ /* '0x4D' */
+			return false
+		}
+	case 0x4E:
+		{ /* '0x4E' */
+			return false
+		}
+	case 0x4F:
+		{ /* '0x4F' */
+			return false
+		}
+	case 0x50:
+		{ /* '0x50' */
+			return false
+		}
+	case 0x51:
+		{ /* '0x51' */
+			return false
+		}
+	case 0x52:
+		{ /* '0x52' */
+			return false
+		}
+	case 0x53:
+		{ /* '0x53' */
+			return false
+		}
+	case 0x54:
+		{ /* '0x54' */
+			return false
+		}
+	case 0x55:
+		{ /* '0x55' */
+			return false
+		}
+	case 0x56:
+		{ /* '0x56' */
+			return false
+		}
+	case 0x57:
+		{ /* '0x57' */
+			return false
+		}
+	case 0x58:
+		{ /* '0x58' */
+			return false
+		}
+	case 0x59:
+		{ /* '0x59' */
+			return false
+		}
+	case 0x5A:
+		{ /* '0x5A' */
+			return false
+		}
+	case 0x5B:
+		{ /* '0x5B' */
+			return false
+		}
+	case 0x5C:
+		{ /* '0x5C' */
+			return false
+		}
+	case 0x5D:
+		{ /* '0x5D' */
+			return false
+		}
+	case 0x5E:
+		{ /* '0x5E' */
+			return false
+		}
+	case 0x5F:
+		{ /* '0x5F' */
+			return false
+		}
+	case 0x60:
+		{ /* '0x60' */
+			return false
+		}
+	case 0x61:
+		{ /* '0x61' */
+			return false
+		}
+	case 0x62:
+		{ /* '0x62' */
+			return false
+		}
+	case 0x63:
+		{ /* '0x63' */
+			return false
+		}
+	case 0x64:
+		{ /* '0x64' */
+			return false
+		}
+	case 0x65:
+		{ /* '0x65' */
+			return false
+		}
+	case 0x66:
+		{ /* '0x66' */
+			return false
+		}
+	case 0x67:
+		{ /* '0x67' */
+			return false
+		}
+	case 0x68:
+		{ /* '0x68' */
+			return false
+		}
+	case 0x69:
+		{ /* '0x69' */
+			return false
+		}
+	case 0x6A:
+		{ /* '0x6A' */
+			return false
+		}
+	case 0x6B:
+		{ /* '0x6B' */
+			return false
+		}
+	case 0x6C:
+		{ /* '0x6C' */
+			return false
+		}
+	case 0x6D:
+		{ /* '0x6D' */
+			return false
+		}
+	case 0x6E:
+		{ /* '0x6E' */
+			return false
+		}
+	case 0x6F:
+		{ /* '0x6F' */
+			return false
+		}
+	case 0x70:
+		{ /* '0x70' */
+			return false
+		}
+	case 0x71:
+		{ /* '0x71' */
+			return false
+		}
+	case 0x72:
+		{ /* '0x72' */
+			return false
+		}
+	case 0x73:
+		{ /* '0x73' */
+			return false
+		}
+	case 0x74:
+		{ /* '0x74' */
+			return false
+		}
+	case 0x75:
+		{ /* '0x75' */
+			return false
+		}
+	case 0x76:
+		{ /* '0x76' */
+			return false
+		}
+	case 0x77:
+		{ /* '0x77' */
+			return false
+		}
+	case 0x78:
+		{ /* '0x78' */
+			return false
+		}
+	case 0x79:
+		{ /* '0x79' */
+			return false
+		}
+	case 0x7A:
+		{ /* '0x7A' */
+			return false
+		}
+	case 0x7B:
+		{ /* '0x7B' */
+			return false
+		}
+	case 0x7C:
+		{ /* '0x7C' */
+			return false
+		}
+	case 0x7D:
+		{ /* '0x7D' */
+			return false
+		}
+	case 0x7E:
+		{ /* '0x7E' */
+			return false
+		}
+	case 0x7F:
+		{ /* '0x7F' */
+			return false
+		}
+	case 0x80:
+		{ /* '0x80' */
+			return false
+		}
+	case 0x81:
+		{ /* '0x81' */
+			return false
+		}
+	case 0x82:
+		{ /* '0x82' */
+			return false
+		}
+	case 0x83:
+		{ /* '0x83' */
+			return false
+		}
+	case 0x84:
+		{ /* '0x84' */
+			return false
+		}
+	case 0x85:
+		{ /* '0x85' */
+			return false
+		}
+	case 0x86:
+		{ /* '0x86' */
+			return false
+		}
+	case 0x87:
+		{ /* '0x87' */
+			return false
+		}
+	case 0x88:
+		{ /* '0x88' */
+			return false
+		}
+	case 0x89:
+		{ /* '0x89' */
+			return false
+		}
+	case 0x8A:
+		{ /* '0x8A' */
+			return false
+		}
+	case 0x8B:
+		{ /* '0x8B' */
+			return false
+		}
+	case 0x8C:
+		{ /* '0x8C' */
+			return false
+		}
+	case 0x8D:
+		{ /* '0x8D' */
+			return false
+		}
+	case 0x8E:
+		{ /* '0x8E' */
+			return false
+		}
+	case 0x8F:
+		{ /* '0x8F' */
+			return false
+		}
+	case 0x90:
+		{ /* '0x90' */
+			return false
+		}
+	case 0x91:
+		{ /* '0x91' */
+			return false
+		}
+	case 0x92:
+		{ /* '0x92' */
+			return false
+		}
+	case 0x93:
+		{ /* '0x93' */
+			return false
+		}
+	case 0x94:
+		{ /* '0x94' */
+			return false
+		}
+	case 0x95:
+		{ /* '0x95' */
+			return false
+		}
+	case 0x96:
+		{ /* '0x96' */
+			return false
+		}
+	case 0x97:
+		{ /* '0x97' */
+			return false
+		}
+	case 0x98:
+		{ /* '0x98' */
+			return false
+		}
+	case 0x99:
+		{ /* '0x99' */
+			return false
+		}
+	case 0x9A:
+		{ /* '0x9A' */
+			return false
+		}
+	case 0x9B:
+		{ /* '0x9B' */
+			return false
+		}
+	case 0x9C:
+		{ /* '0x9C' */
+			return false
+		}
+	case 0x9D:
+		{ /* '0x9D' */
+			return false
+		}
+	case 0x9E:
+		{ /* '0x9E' */
+			return false
+		}
+	case 0x9F:
+		{ /* '0x9F' */
+			return false
+		}
+	case 0xA0:
+		{ /* '0xA0' */
+			return false
+		}
+	case 0xA1:
+		{ /* '0xA1' */
+			return false
+		}
+	case 0xA2:
+		{ /* '0xA2' */
+			return false
+		}
+	case 0xA3:
+		{ /* '0xA3' */
+			return false
+		}
+	case 0xA4:
+		{ /* '0xA4' */
+			return false
+		}
+	case 0xA5:
+		{ /* '0xA5' */
+			return false
+		}
+	case 0xA6:
+		{ /* '0xA6' */
+			return false
+		}
+	case 0xA7:
+		{ /* '0xA7' */
+			return false
+		}
+	case 0xA8:
+		{ /* '0xA8' */
+			return false
+		}
+	case 0xA9:
+		{ /* '0xA9' */
+			return false
+		}
+	case 0xAA:
+		{ /* '0xAA' */
+			return false
+		}
+	case 0xAB:
+		{ /* '0xAB' */
+			return false
+		}
+	case 0xAC:
+		{ /* '0xAC' */
+			return false
+		}
+	case 0xAD:
+		{ /* '0xAD' */
+			return false
+		}
+	case 0xAE:
+		{ /* '0xAE' */
+			return false
+		}
+	case 0xAF:
+		{ /* '0xAF' */
+			return false
+		}
+	case 0xB0:
+		{ /* '0xB0' */
+			return false
+		}
+	case 0xB1:
+		{ /* '0xB1' */
+			return false
+		}
+	case 0xB2:
+		{ /* '0xB2' */
+			return false
+		}
+	case 0xB3:
+		{ /* '0xB3' */
+			return false
+		}
+	case 0xB4:
+		{ /* '0xB4' */
+			return false
+		}
+	case 0xB5:
+		{ /* '0xB5' */
+			return false
+		}
+	case 0xB6:
+		{ /* '0xB6' */
+			return false
+		}
+	case 0xB7:
+		{ /* '0xB7' */
+			return false
+		}
+	case 0xB8:
+		{ /* '0xB8' */
+			return false
+		}
+	case 0xB9:
+		{ /* '0xB9' */
+			return false
+		}
+	case 0xBA:
+		{ /* '0xBA' */
+			return false
+		}
+	case 0xBB:
+		{ /* '0xBB' */
+			return false
+		}
+	case 0xBC:
+		{ /* '0xBC' */
+			return false
+		}
+	case 0xBD:
+		{ /* '0xBD' */
+			return false
+		}
+	case 0xBE:
+		{ /* '0xBE' */
+			return false
+		}
+	case 0xBF:
+		{ /* '0xBF' */
+			return false
+		}
+	case 0xC0:
+		{ /* '0xC0' */
+			return false
+		}
+	case 0xC1:
+		{ /* '0xC1' */
+			return false
+		}
+	case 0xC2:
+		{ /* '0xC2' */
+			return false
+		}
+	case 0xC3:
+		{ /* '0xC3' */
+			return false
+		}
+	case 0xC4:
+		{ /* '0xC4' */
+			return false
+		}
+	case 0xC5:
+		{ /* '0xC5' */
+			return false
+		}
+	case 0xC6:
+		{ /* '0xC6' */
+			return false
+		}
+	case 0xC7:
+		{ /* '0xC7' */
+			return false
+		}
+	case 0xC8:
+		{ /* '0xC8' */
+			return false
+		}
+	case 0xC9:
+		{ /* '0xC9' */
+			return false
+		}
+	case 0xCA:
+		{ /* '0xCA' */
+			return false
+		}
+	case 0xCB:
+		{ /* '0xCB' */
+			return false
+		}
+	case 0xCC:
+		{ /* '0xCC' */
+			return false
+		}
+	case 0xCD:
+		{ /* '0xCD' */
+			return false
+		}
+	case 0xCE:
+		{ /* '0xCE' */
+			return false
+		}
+	case 0xCF:
+		{ /* '0xCF' */
+			return false
+		}
+	case 0xD0:
+		{ /* '0xD0' */
+			return false
+		}
+	case 0xD1:
+		{ /* '0xD1' */
+			return false
+		}
+	case 0xD2:
+		{ /* '0xD2' */
+			return false
+		}
+	case 0xD3:
+		{ /* '0xD3' */
+			return false
+		}
+	case 0xD4:
+		{ /* '0xD4' */
+			return false
+		}
+	case 0xD5:
+		{ /* '0xD5' */
+			return false
+		}
+	case 0xD6:
+		{ /* '0xD6' */
+			return false
+		}
+	case 0xD7:
+		{ /* '0xD7' */
+			return false
+		}
+	case 0xD8:
+		{ /* '0xD8' */
+			return false
+		}
+	case 0xD9:
+		{ /* '0xD9' */
+			return false
+		}
+	case 0xDA:
+		{ /* '0xDA' */
+			return false
+		}
+	case 0xDB:
+		{ /* '0xDB' */
+			return false
+		}
+	case 0xDC:
+		{ /* '0xDC' */
+			return false
+		}
+	case 0xDD:
+		{ /* '0xDD' */
+			return false
+		}
+	case 0xDE:
+		{ /* '0xDE' */
+			return false
+		}
+	case 0xDF:
+		{ /* '0xDF' */
+			return false
+		}
+	case 0xE0:
+		{ /* '0xE0' */
+			return false
+		}
+	case 0xE1:
+		{ /* '0xE1' */
+			return false
+		}
+	case 0xE2:
+		{ /* '0xE2' */
+			return false
+		}
+	case 0xE3:
+		{ /* '0xE3' */
+			return false
+		}
+	case 0xE4:
+		{ /* '0xE4' */
+			return false
+		}
+	case 0xE5:
+		{ /* '0xE5' */
+			return false
+		}
+	case 0xE6:
+		{ /* '0xE6' */
+			return false
+		}
+	case 0xE7:
+		{ /* '0xE7' */
+			return false
+		}
+	case 0xE8:
+		{ /* '0xE8' */
+			return false
+		}
+	case 0xE9:
+		{ /* '0xE9' */
+			return false
+		}
+	case 0xEA:
+		{ /* '0xEA' */
+			return false
+		}
+	case 0xEB:
+		{ /* '0xEB' */
+			return false
+		}
+	case 0xEC:
+		{ /* '0xEC' */
+			return false
+		}
+	case 0xED:
+		{ /* '0xED' */
+			return false
+		}
+	case 0xEE:
+		{ /* '0xEE' */
+			return false
+		}
+	case 0xEF:
+		{ /* '0xEF' */
+			return false
+		}
+	case 0xF0:
+		{ /* '0xF0' */
+			return false
+		}
+	case 0xF1:
+		{ /* '0xF1' */
+			return false
+		}
+	case 0xF2:
+		{ /* '0xF2' */
+			return false
+		}
+	case 0xF3:
+		{ /* '0xF3' */
+			return false
+		}
+	case 0xF4:
+		{ /* '0xF4' */
+			return false
+		}
+	case 0xF5:
+		{ /* '0xF5' */
+			return false
+		}
+	case 0xF6:
+		{ /* '0xF6' */
+			return false
+		}
+	case 0xF7:
+		{ /* '0xF7' */
+			return false
+		}
+	case 0xF8:
+		{ /* '0xF8' */
+			return false
+		}
+	case 0xF9:
+		{ /* '0xF9' */
+			return false
+		}
+	case 0xFA:
+		{ /* '0xFA' */
+			return false
+		}
+	case 0xFB:
+		{ /* '0xFB' */
+			return false
+		}
+	case 0xFC:
+		{ /* '0xFC' */
+			return false
+		}
+	case 0xFD:
+		{ /* '0xFD' */
+			return false
+		}
+	case 0xFE:
+		{ /* '0xFE' */
+			return false
+		}
+	case 0xFF:
+		{ /* '0xFF' */
+			return false
+		}
+	default:
+		{
+			return false
+		}
+	}
+}
+
+func ParameterFirstEnumForFieldIsVolatile(value bool) (Parameter, error) {
+	for _, sizeValue := range ParameterValues {
+		if sizeValue.IsVolatile() == value {
+			return sizeValue, nil
+		}
+	}
+	return 0, errors.Errorf("enum for %v describing IsVolatile not found", value)
+}
+
+func (e Parameter) ParameterDescription() string {
+	switch e {
+	case 0x00:
+		{ /* '0x00' */
+			return ""
+		}
+	case 0x01:
+		{ /* '0x01' */
+			return ""
+		}
+	case 0x02:
+		{ /* '0x02' */
+			return ""
+		}
+	case 0x03:
+		{ /* '0x03' */
+			return ""
+		}
+	case 0x04:
+		{ /* '0x04' */
+			return ""
+		}
+	case 0x05:
+		{ /* '0x05' */
+			return ""
+		}
+	case 0x06:
+		{ /* '0x06' */
+			return ""
+		}
+	case 0x07:
+		{ /* '0x07' */
+			return ""
+		}
+	case 0x08:
+		{ /* '0x08' */
+			return ""
+		}
+	case 0x09:
+		{ /* '0x09' */
+			return ""
+		}
+	case 0x0A:
+		{ /* '0x0A' */
+			return ""
+		}
+	case 0x0B:
+		{ /* '0x0B' */
+			return ""
+		}
+	case 0x0C:
+		{ /* '0x0C' */
+			return ""
+		}
+	case 0x0D:
+		{ /* '0x0D' */
+			return ""
+		}
+	case 0x0E:
+		{ /* '0x0E' */
+			return ""
+		}
+	case 0x0F:
+		{ /* '0x0F' */
+			return ""
+		}
+	case 0x10:
+		{ /* '0x10' */
+			return ""
+		}
+	case 0x11:
+		{ /* '0x11' */
+			return ""
+		}
+	case 0x12:
+		{ /* '0x12' */
+			return ""
+		}
+	case 0x13:
+		{ /* '0x13' */
+			return ""
+		}
+	case 0x14:
+		{ /* '0x14' */
+			return ""
+		}
+	case 0x15:
+		{ /* '0x15' */
+			return ""
+		}
+	case 0x16:
+		{ /* '0x16' */
+			return ""
+		}
+	case 0x17:
+		{ /* '0x17' */
+			return ""
+		}
+	case 0x18:
+		{ /* '0x18' */
+			return ""
+		}
+	case 0x19:
+		{ /* '0x19' */
+			return ""
+		}
+	case 0x1A:
+		{ /* '0x1A' */
+			return ""
+		}
+	case 0x1B:
+		{ /* '0x1B' */
+			return ""
+		}
+	case 0x1C:
+		{ /* '0x1C' */
+			return ""
+		}
+	case 0x1D:
+		{ /* '0x1D' */
+			return ""
+		}
+	case 0x1E:
+		{ /* '0x1E' */
+			return ""
+		}
+	case 0x1F:
+		{ /* '0x1F' */
+			return ""
+		}
+	case 0x20:
+		{ /* '0x20' */
+			return ""
+		}
+	case 0x21:
+		{ /* '0x21' */
+			return "Application Address 1"
+		}
+	case 0x22:
+		{ /* '0x22' */
+			return "Application Address 2"
+		}
+	case 0x23:
+		{ /* '0x23' */
+			return ""
+		}
+	case 0x24:
+		{ /* '0x24' */
+			return ""
+		}
+	case 0x25:
+		{ /* '0x25' */
+			return ""
+		}
+	case 0x26:
+		{ /* '0x26' */
+			return ""
+		}
+	case 0x27:
+		{ /* '0x27' */
+			return ""
+		}
+	case 0x28:
+		{ /* '0x28' */
+			return ""
+		}
+	case 0x29:
+		{ /* '0x29' */
+			return ""
+		}
+	case 0x2A:
+		{ /* '0x2A' */
+			return ""
+		}
+	case 0x2B:
+		{ /* '0x2B' */
+			return ""
+		}
+	case 0x2C:
+		{ /* '0x2C' */
+			return ""
+		}
+	case 0x2D:
+		{ /* '0x2D' */
+			return ""
+		}
+	case 0x2E:
+		{ /* '0x2E' */
+			return ""
+		}
+	case 0x2F:
+		{ /* '0x2F' */
+			return ""
+		}
+	case 0x30:
+		{ /* '0x30' */
+			return "Interface options 1"
+		}
+	case 0x31:
+		{ /* '0x31' */
+			return ""
+		}
+	case 0x32:
+		{ /* '0x32' */
+			return ""
+		}
+	case 0x33:
+		{ /* '0x33' */
+			return ""
+		}
+	case 0x34:
+		{ /* '0x34' */
+			return ""
+		}
+	case 0x35:
+		{ /* '0x35' */
+			return ""
+		}
+	case 0x36:
+		{ /* '0x36' */
+			return ""
+		}
+	case 0x37:
+		{ /* '0x37' */
+			return ""
+		}
+	case 0x38:
+		{ /* '0x38' */
+			return ""
+		}
+	case 0x39:
+		{ /* '0x39' */
+			return ""
+		}
+	case 0x3A:
+		{ /* '0x3A' */
+			return ""
+		}
+	case 0x3B:
+		{ /* '0x3B' */
+			return ""
+		}
+	case 0x3C:
+		{ /* '0x3C' */
+			return ""
+		}
+	case 0x3D:
+		{ /* '0x3D' */
+			return "Baud rate selector"
+		}
+	case 0x3E:
+		{ /* '0x3E' */
+			return "Interface options 2"
+		}
+	case 0x3F:
+		{ /* '0x3F' */
+			return ""
+		}
+	case 0x40:
+		{ /* '0x40' */
+			return ""
+		}
+	case 0x41:
+		{ /* '0x41' */
+			return "Interface options 2 power up settings"
+		}
+	case 0x42:
+		{ /* '0x42' */
+			return "Interface options 3"
+		}
+	case 0x43:
+		{ /* '0x43' */
+			return ""
+		}
+	case 0x44:
+		{ /* '0x44' */
+			return ""
+		}
+	case 0x45:
+		{ /* '0x45' */
+			return ""
+		}
+	case 0x46:
+		{ /* '0x46' */
+			return ""
+		}
+	case 0x47:
+		{ /* '0x47' */
+			return ""
+		}
+	case 0x48:
+		{ /* '0x48' */
+			return ""
+		}
+	case 0x49:
+		{ /* '0x49' */
+			return ""
+		}
+	case 0x4A:
+		{ /* '0x4A' */
+			return ""
+		}
+	case 0x4B:
+		{ /* '0x4B' */
+			return ""
+		}
+	case 0x4C:
+		{ /* '0x4C' */
+			return ""
+		}
+	case 0x4D:
+		{ /* '0x4D' */
+			return ""
+		}
+	case 0x4E:
+		{ /* '0x4E' */
+			return ""
+		}
+	case 0x4F:
+		{ /* '0x4F' */
+			return ""
+		}
+	case 0x50:
+		{ /* '0x50' */
+			return ""
+		}
+	case 0x51:
+		{ /* '0x51' */
+			return ""
+		}
+	case 0x52:
+		{ /* '0x52' */
+			return ""
+		}
+	case 0x53:
+		{ /* '0x53' */
+			return ""
+		}
+	case 0x54:
+		{ /* '0x54' */
+			return ""
+		}
+	case 0x55:
+		{ /* '0x55' */
+			return ""
+		}
+	case 0x56:
+		{ /* '0x56' */
+			return ""
+		}
+	case 0x57:
+		{ /* '0x57' */
+			return ""
+		}
+	case 0x58:
+		{ /* '0x58' */
+			return ""
+		}
+	case 0x59:
+		{ /* '0x59' */
+			return ""
+		}
+	case 0x5A:
+		{ /* '0x5A' */
+			return ""
+		}
+	case 0x5B:
+		{ /* '0x5B' */
+			return ""
+		}
+	case 0x5C:
+		{ /* '0x5C' */
+			return ""
+		}
+	case 0x5D:
+		{ /* '0x5D' */
+			return ""
+		}
+	case 0x5E:
+		{ /* '0x5E' */
+			return ""
+		}
+	case 0x5F:
+		{ /* '0x5F' */
+			return ""
+		}
+	case 0x60:
+		{ /* '0x60' */
+			return ""
+		}
+	case 0x61:
+		{ /* '0x61' */
+			return ""
+		}
+	case 0x62:
+		{ /* '0x62' */
+			return ""
+		}
+	case 0x63:
+		{ /* '0x63' */
+			return ""
+		}
+	case 0x64:
+		{ /* '0x64' */
+			return ""
+		}
+	case 0x65:
+		{ /* '0x65' */
+			return ""
+		}
+	case 0x66:
+		{ /* '0x66' */
+			return ""
+		}
+	case 0x67:
+		{ /* '0x67' */
+			return ""
+		}
+	case 0x68:
+		{ /* '0x68' */
+			return ""
+		}
+	case 0x69:
+		{ /* '0x69' */
+			return ""
+		}
+	case 0x6A:
+		{ /* '0x6A' */
+			return ""
+		}
+	case 0x6B:
+		{ /* '0x6B' */
+			return ""
+		}
+	case 0x6C:
+		{ /* '0x6C' */
+			return ""
+		}
+	case 0x6D:
+		{ /* '0x6D' */
+			return ""
+		}
+	case 0x6E:
+		{ /* '0x6E' */
+			return ""
+		}
+	case 0x6F:
+		{ /* '0x6F' */
+			return ""
+		}
+	case 0x70:
+		{ /* '0x70' */
+			return ""
+		}
+	case 0x71:
+		{ /* '0x71' */
+			return ""
+		}
+	case 0x72:
+		{ /* '0x72' */
+			return ""
+		}
+	case 0x73:
+		{ /* '0x73' */
+			return ""
+		}
+	case 0x74:
+		{ /* '0x74' */
+			return ""
+		}
+	case 0x75:
+		{ /* '0x75' */
+			return ""
+		}
+	case 0x76:
+		{ /* '0x76' */
+			return ""
+		}
+	case 0x77:
+		{ /* '0x77' */
+			return ""
+		}
+	case 0x78:
+		{ /* '0x78' */
+			return ""
+		}
+	case 0x79:
+		{ /* '0x79' */
+			return ""
+		}
+	case 0x7A:
+		{ /* '0x7A' */
+			return ""
+		}
+	case 0x7B:
+		{ /* '0x7B' */
+			return ""
+		}
+	case 0x7C:
+		{ /* '0x7C' */
+			return ""
+		}
+	case 0x7D:
+		{ /* '0x7D' */
+			return ""
+		}
+	case 0x7E:
+		{ /* '0x7E' */
+			return ""
+		}
+	case 0x7F:
+		{ /* '0x7F' */
+			return ""
+		}
+	case 0x80:
+		{ /* '0x80' */
+			return ""
+		}
+	case 0x81:
+		{ /* '0x81' */
+			return ""
+		}
+	case 0x82:
+		{ /* '0x82' */
+			return ""
+		}
+	case 0x83:
+		{ /* '0x83' */
+			return ""
+		}
+	case 0x84:
+		{ /* '0x84' */
+			return ""
+		}
+	case 0x85:
+		{ /* '0x85' */
+			return ""
+		}
+	case 0x86:
+		{ /* '0x86' */
+			return ""
+		}
+	case 0x87:
+		{ /* '0x87' */
+			return ""
+		}
+	case 0x88:
+		{ /* '0x88' */
+			return ""
+		}
+	case 0x89:
+		{ /* '0x89' */
+			return ""
+		}
+	case 0x8A:
+		{ /* '0x8A' */
+			return ""
+		}
+	case 0x8B:
+		{ /* '0x8B' */
+			return ""
+		}
+	case 0x8C:
+		{ /* '0x8C' */
+			return ""
+		}
+	case 0x8D:
+		{ /* '0x8D' */
+			return ""
+		}
+	case 0x8E:
+		{ /* '0x8E' */
+			return ""
+		}
+	case 0x8F:
+		{ /* '0x8F' */
+			return ""
+		}
+	case 0x90:
+		{ /* '0x90' */
+			return ""
+		}
+	case 0x91:
+		{ /* '0x91' */
+			return ""
+		}
+	case 0x92:
+		{ /* '0x92' */
+			return ""
+		}
+	case 0x93:
+		{ /* '0x93' */
+			return ""
+		}
+	case 0x94:
+		{ /* '0x94' */
+			return ""
+		}
+	case 0x95:
+		{ /* '0x95' */
+			return ""
+		}
+	case 0x96:
+		{ /* '0x96' */
+			return ""
+		}
+	case 0x97:
+		{ /* '0x97' */
+			return ""
+		}
+	case 0x98:
+		{ /* '0x98' */
+			return ""
+		}
+	case 0x99:
+		{ /* '0x99' */
+			return ""
+		}
+	case 0x9A:
+		{ /* '0x9A' */
+			return ""
+		}
+	case 0x9B:
+		{ /* '0x9B' */
+			return ""
+		}
+	case 0x9C:
+		{ /* '0x9C' */
+			return ""
+		}
+	case 0x9D:
+		{ /* '0x9D' */
+			return ""
+		}
+	case 0x9E:
+		{ /* '0x9E' */
+			return ""
+		}
+	case 0x9F:
+		{ /* '0x9F' */
+			return ""
+		}
+	case 0xA0:
+		{ /* '0xA0' */
+			return ""
+		}
+	case 0xA1:
+		{ /* '0xA1' */
+			return ""
+		}
+	case 0xA2:
+		{ /* '0xA2' */
+			return ""
+		}
+	case 0xA3:
+		{ /* '0xA3' */
+			return ""
+		}
+	case 0xA4:
+		{ /* '0xA4' */
+			return ""
+		}
+	case 0xA5:
+		{ /* '0xA5' */
+			return ""
+		}
+	case 0xA6:
+		{ /* '0xA6' */
+			return ""
+		}
+	case 0xA7:
+		{ /* '0xA7' */
+			return ""
+		}
+	case 0xA8:
+		{ /* '0xA8' */
+			return ""
+		}
+	case 0xA9:
+		{ /* '0xA9' */
+			return ""
+		}
+	case 0xAA:
+		{ /* '0xAA' */
+			return ""
+		}
+	case 0xAB:
+		{ /* '0xAB' */
+			return ""
+		}
+	case 0xAC:
+		{ /* '0xAC' */
+			return ""
+		}
+	case 0xAD:
+		{ /* '0xAD' */
+			return ""
+		}
+	case 0xAE:
+		{ /* '0xAE' */
+			return ""
+		}
+	case 0xAF:
+		{ /* '0xAF' */
+			return ""
+		}
+	case 0xB0:
+		{ /* '0xB0' */
+			return ""
+		}
+	case 0xB1:
+		{ /* '0xB1' */
+			return ""
+		}
+	case 0xB2:
+		{ /* '0xB2' */
+			return ""
+		}
+	case 0xB3:
+		{ /* '0xB3' */
+			return ""
+		}
+	case 0xB4:
+		{ /* '0xB4' */
+			return ""
+		}
+	case 0xB5:
+		{ /* '0xB5' */
+			return ""
+		}
+	case 0xB6:
+		{ /* '0xB6' */
+			return ""
+		}
+	case 0xB7:
+		{ /* '0xB7' */
+			return ""
+		}
+	case 0xB8:
+		{ /* '0xB8' */
+			return ""
+		}
+	case 0xB9:
+		{ /* '0xB9' */
+			return ""
+		}
+	case 0xBA:
+		{ /* '0xBA' */
+			return ""
+		}
+	case 0xBB:
+		{ /* '0xBB' */
+			return ""
+		}
+	case 0xBC:
+		{ /* '0xBC' */
+			return ""
+		}
+	case 0xBD:
+		{ /* '0xBD' */
+			return ""
+		}
+	case 0xBE:
+		{ /* '0xBE' */
+			return ""
+		}
+	case 0xBF:
+		{ /* '0xBF' */
+			return ""
+		}
+	case 0xC0:
+		{ /* '0xC0' */
+			return ""
+		}
+	case 0xC1:
+		{ /* '0xC1' */
+			return ""
+		}
+	case 0xC2:
+		{ /* '0xC2' */
+			return ""
+		}
+	case 0xC3:
+		{ /* '0xC3' */
+			return ""
+		}
+	case 0xC4:
+		{ /* '0xC4' */
+			return ""
+		}
+	case 0xC5:
+		{ /* '0xC5' */
+			return ""
+		}
+	case 0xC6:
+		{ /* '0xC6' */
+			return ""
+		}
+	case 0xC7:
+		{ /* '0xC7' */
+			return ""
+		}
+	case 0xC8:
+		{ /* '0xC8' */
+			return ""
+		}
+	case 0xC9:
+		{ /* '0xC9' */
+			return ""
+		}
+	case 0xCA:
+		{ /* '0xCA' */
+			return ""
+		}
+	case 0xCB:
+		{ /* '0xCB' */
+			return ""
+		}
+	case 0xCC:
+		{ /* '0xCC' */
+			return ""
+		}
+	case 0xCD:
+		{ /* '0xCD' */
+			return ""
+		}
+	case 0xCE:
+		{ /* '0xCE' */
+			return ""
+		}
+	case 0xCF:
+		{ /* '0xCF' */
+			return ""
+		}
+	case 0xD0:
+		{ /* '0xD0' */
+			return ""
+		}
+	case 0xD1:
+		{ /* '0xD1' */
+			return ""
+		}
+	case 0xD2:
+		{ /* '0xD2' */
+			return ""
+		}
+	case 0xD3:
+		{ /* '0xD3' */
+			return ""
+		}
+	case 0xD4:
+		{ /* '0xD4' */
+			return ""
+		}
+	case 0xD5:
+		{ /* '0xD5' */
+			return ""
+		}
+	case 0xD6:
+		{ /* '0xD6' */
+			return ""
+		}
+	case 0xD7:
+		{ /* '0xD7' */
+			return ""
+		}
+	case 0xD8:
+		{ /* '0xD8' */
+			return ""
+		}
+	case 0xD9:
+		{ /* '0xD9' */
+			return ""
+		}
+	case 0xDA:
+		{ /* '0xDA' */
+			return ""
+		}
+	case 0xDB:
+		{ /* '0xDB' */
+			return ""
+		}
+	case 0xDC:
+		{ /* '0xDC' */
+			return ""
+		}
+	case 0xDD:
+		{ /* '0xDD' */
+			return ""
+		}
+	case 0xDE:
+		{ /* '0xDE' */
+			return ""
+		}
+	case 0xDF:
+		{ /* '0xDF' */
+			return ""
+		}
+	case 0xE0:
+		{ /* '0xE0' */
+			return ""
+		}
+	case 0xE1:
+		{ /* '0xE1' */
+			return ""
+		}
+	case 0xE2:
+		{ /* '0xE2' */
+			return ""
+		}
+	case 0xE3:
+		{ /* '0xE3' */
+			return ""
+		}
+	case 0xE4:
+		{ /* '0xE4' */
+			return ""
+		}
+	case 0xE5:
+		{ /* '0xE5' */
+			return ""
+		}
+	case 0xE6:
+		{ /* '0xE6' */
+			return ""
+		}
+	case 0xE7:
+		{ /* '0xE7' */
+			return ""
+		}
+	case 0xE8:
+		{ /* '0xE8' */
+			return ""
+		}
+	case 0xE9:
+		{ /* '0xE9' */
+			return ""
+		}
+	case 0xEA:
+		{ /* '0xEA' */
+			return ""
+		}
+	case 0xEB:
+		{ /* '0xEB' */
+			return "Custom Manufacturer (8 bytes)"
+		}
+	case 0xEC:
+		{ /* '0xEC' */
+			return "Custom Manufacturer (8 bytes)"
+		}
+	case 0xED:
+		{ /* '0xED' */
+			return "Custom Manufacturer (8 bytes)"
+		}
+	case 0xEE:
+		{ /* '0xEE' */
+			return "Custom Manufacturer (8 bytes)"
+		}
+	case 0xEF:
+		{ /* '0xEF' */
+			return "Custom Manufacturer (8 bytes)"
+		}
+	case 0xF0:
+		{ /* '0xF0' */
+			return "Custom Manufacturer (8 bytes)"
+		}
+	case 0xF1:
+		{ /* '0xF1' */
+			return "Custom Manufacturer (8 bytes)"
+		}
+	case 0xF2:
+		{ /* '0xF2' */
+			return "Custom Manufacturer (8 bytes)"
+		}
+	case 0xF3:
+		{ /* '0xF3' */
+			return "Serial Number"
+		}
+	case 0xF4:
+		{ /* '0xF4' */
+			return "Serial Number"
+		}
+	case 0xF5:
+		{ /* '0xF5' */
+			return "Serial Number"
+		}
+	case 0xF6:
+		{ /* '0xF6' */
+			return "Serial Number"
+		}
+	case 0xF7:
+		{ /* '0xF7' */
+			return "Custom Type (8 bytes)"
+		}
+	case 0xF8:
+		{ /* '0xF8' */
+			return "Custom Type (8 bytes)"
+		}
+	case 0xF9:
+		{ /* '0xF9' */
+			return "Custom Type (8 bytes)"
+		}
+	case 0xFA:
+		{ /* '0xFA' */
+			return "Custom Type (8 bytes)"
+		}
+	case 0xFB:
+		{ /* '0xFB' */
+			return "Custom Type (8 bytes)"
+		}
+	case 0xFC:
+		{ /* '0xFC' */
+			return "Custom Type (8 bytes)"
+		}
+	case 0xFD:
+		{ /* '0xFD' */
+			return "Custom Type (8 bytes)"
+		}
+	case 0xFE:
+		{ /* '0xFE' */
+			return "Custom Type (8 bytes)"
+		}
+	case 0xFF:
+		{ /* '0xFF' */
+			return ""
+		}
+	default:
+		{
+			return ""
+		}
+	}
+}
+
+func ParameterFirstEnumForFieldParameterDescription(value string) (Parameter, error) {
+	for _, sizeValue := range ParameterValues {
+		if sizeValue.ParameterDescription() == value {
+			return sizeValue, nil
+		}
+	}
+	return 0, errors.Errorf("enum for %v describing ParameterDescription not found", value)
+}
+
+func (e Parameter) ProtectionLevel() ProtectionLevel {
+	switch e {
+	case 0x00:
+		{ /* '0x00' */
+			return ProtectionLevel_NONE
+		}
+	case 0x01:
+		{ /* '0x01' */
+			return ProtectionLevel_NONE
+		}
+	case 0x02:
+		{ /* '0x02' */
+			return ProtectionLevel_NONE
+		}
+	case 0x03:
+		{ /* '0x03' */
+			return ProtectionLevel_NONE
+		}
+	case 0x04:
+		{ /* '0x04' */
+			return ProtectionLevel_NONE
+		}
+	case 0x05:
+		{ /* '0x05' */
+			return ProtectionLevel_NONE
+		}
+	case 0x06:
+		{ /* '0x06' */
+			return ProtectionLevel_NONE
+		}
+	case 0x07:
+		{ /* '0x07' */
+			return ProtectionLevel_NONE
+		}
+	case 0x08:
+		{ /* '0x08' */
+			return ProtectionLevel_NONE
+		}
+	case 0x09:
+		{ /* '0x09' */
+			return ProtectionLevel_NONE
+		}
+	case 0x0A:
+		{ /* '0x0A' */
+			return ProtectionLevel_NONE
+		}
+	case 0x0B:
+		{ /* '0x0B' */
+			return ProtectionLevel_NONE
+		}
+	case 0x0C:
+		{ /* '0x0C' */
+			return ProtectionLevel_NONE
+		}
+	case 0x0D:
+		{ /* '0x0D' */
+			return ProtectionLevel_NONE
+		}
+	case 0x0E:
+		{ /* '0x0E' */
+			return ProtectionLevel_NONE
+		}
+	case 0x0F:
+		{ /* '0x0F' */
+			return ProtectionLevel_NONE
+		}
+	case 0x10:
+		{ /* '0x10' */
+			return ProtectionLevel_NONE
+		}
+	case 0x11:
+		{ /* '0x11' */
+			return ProtectionLevel_NONE
+		}
+	case 0x12:
+		{ /* '0x12' */
+			return ProtectionLevel_NONE
+		}
+	case 0x13:
+		{ /* '0x13' */
+			return ProtectionLevel_NONE
+		}
+	case 0x14:
+		{ /* '0x14' */
+			return ProtectionLevel_NONE
+		}
+	case 0x15:
+		{ /* '0x15' */
+			return ProtectionLevel_NONE
+		}
+	case 0x16:
+		{ /* '0x16' */
+			return ProtectionLevel_NONE
+		}
+	case 0x17:
+		{ /* '0x17' */
+			return ProtectionLevel_NONE
+		}
+	case 0x18:
+		{ /* '0x18' */
+			return ProtectionLevel_NONE
+		}
+	case 0x19:
+		{ /* '0x19' */
+			return ProtectionLevel_NONE
+		}
+	case 0x1A:
+		{ /* '0x1A' */
+			return ProtectionLevel_NONE
+		}
+	case 0x1B:
+		{ /* '0x1B' */
+			return ProtectionLevel_NONE
+		}
+	case 0x1C:
+		{ /* '0x1C' */
+			return ProtectionLevel_NONE
+		}
+	case 0x1D:
+		{ /* '0x1D' */
+			return ProtectionLevel_NONE
+		}
+	case 0x1E:
+		{ /* '0x1E' */
+			return ProtectionLevel_NONE
+		}
+	case 0x1F:
+		{ /* '0x1F' */
+			return ProtectionLevel_NONE
+		}
+	case 0x20:
+		{ /* '0x20' */
+			return ProtectionLevel_NONE
+		}
+	case 0x21:
+		{ /* '0x21' */
+			return ProtectionLevel_UNLOCK_REQUIRED
+		}
+	case 0x22:
+		{ /* '0x22' */
+			return ProtectionLevel_UNLOCK_REQUIRED
+		}
+	case 0x23:
+		{ /* '0x23' */
+			return ProtectionLevel_NONE
+		}
+	case 0x24:
+		{ /* '0x24' */
+			return ProtectionLevel_NONE
+		}
+	case 0x25:
+		{ /* '0x25' */
+			return ProtectionLevel_NONE
+		}
+	case 0x26:
+		{ /* '0x26' */
+			return ProtectionLevel_NONE
+		}
+	case 0x27:
+		{ /* '0x27' */
+			return ProtectionLevel_NONE
+		}
+	case 0x28:
+		{ /* '0x28' */
+			return ProtectionLevel_NONE
+		}
+	case 0x29:
+		{ /* '0x29' */
+			return ProtectionLevel_NONE
+		}
+	case 0x2A:
+		{ /* '0x2A' */
+			return ProtectionLevel_NONE
+		}
+	case 0x2B:
+		{ /* '0x2B' */
+			return ProtectionLevel_NONE
+		}
+	case 0x2C:
+		{ /* '0x2C' */
+			return ProtectionLevel_NONE
+		}
+	case 0x2D:
+		{ /* '0x2D' */
+			return ProtectionLevel_NONE
+		}
+	case 0x2E:
+		{ /* '0x2E' */
+			return ProtectionLevel_NONE
+		}
+	case 0x2F:
+		{ /* '0x2F' */
+			return ProtectionLevel_NONE
+		}
+	case 0x30:
+		{ /* '0x30' */
+			return ProtectionLevel_NO_WRITE_ACCESS
+		}
+	case 0x31:
+		{ /* '0x31' */
+			return ProtectionLevel_NONE
+		}
+	case 0x32:
+		{ /* '0x32' */
+			return ProtectionLevel_NONE
+		}
+	case 0x33:
+		{ /* '0x33' */
+			return ProtectionLevel_NONE
+		}
+	case 0x34:
+		{ /* '0x34' */
+			return ProtectionLevel_NONE
+		}
+	case 0x35:
+		{ /* '0x35' */
+			return ProtectionLevel_NONE
+		}
+	case 0x36:
+		{ /* '0x36' */
+			return ProtectionLevel_NONE
+		}
+	case 0x37:
+		{ /* '0x37' */
+			return ProtectionLevel_NONE
+		}
+	case 0x38:
+		{ /* '0x38' */
+			return ProtectionLevel_NONE
+		}
+	case 0x39:
+		{ /* '0x39' */
+			return ProtectionLevel_NONE
+		}
+	case 0x3A:
+		{ /* '0x3A' */
+			return ProtectionLevel_NONE
+		}
+	case 0x3B:
+		{ /* '0x3B' */
+			return ProtectionLevel_NONE
+		}
+	case 0x3C:
+		{ /* '0x3C' */
+			return ProtectionLevel_NONE
+		}
+	case 0x3D:
+		{ /* '0x3D' */
+			return ProtectionLevel_NO_WRITE_ACCESS
+		}
+	case 0x3E:
+		{ /* '0x3E' */
+			return ProtectionLevel_NONE
+		}
+	case 0x3F:
+		{ /* '0x3F' */
+			return ProtectionLevel_NONE
+		}
+	case 0x40:
+		{ /* '0x40' */
+			return ProtectionLevel_NONE
+		}
+	case 0x41:
+		{ /* '0x41' */
+			return ProtectionLevel_UNLOCK_REQUIRED
+		}
+	case 0x42:
+		{ /* '0x42' */
+			return ProtectionLevel_UNLOCK_REQUIRED
+		}
+	case 0x43:
+		{ /* '0x43' */
+			return ProtectionLevel_NONE
+		}
+	case 0x44:
+		{ /* '0x44' */
+			return ProtectionLevel_NONE
+		}
+	case 0x45:
+		{ /* '0x45' */
+			return ProtectionLevel_NONE
+		}
+	case 0x46:
+		{ /* '0x46' */
+			return ProtectionLevel_NONE
+		}
+	case 0x47:
+		{ /* '0x47' */
+			return ProtectionLevel_NONE
+		}
+	case 0x48:
+		{ /* '0x48' */
+			return ProtectionLevel_NONE
+		}
+	case 0x49:
+		{ /* '0x49' */
+			return ProtectionLevel_NONE
+		}
+	case 0x4A:
+		{ /* '0x4A' */
+			return ProtectionLevel_NONE
+		}
+	case 0x4B:
+		{ /* '0x4B' */
+			return ProtectionLevel_NONE
+		}
+	case 0x4C:
+		{ /* '0x4C' */
+			return ProtectionLevel_NONE
+		}
+	case 0x4D:
+		{ /* '0x4D' */
+			return ProtectionLevel_NONE
+		}
+	case 0x4E:
+		{ /* '0x4E' */
+			return ProtectionLevel_NONE
+		}
+	case 0x4F:
+		{ /* '0x4F' */
+			return ProtectionLevel_NONE
+		}
+	case 0x50:
+		{ /* '0x50' */
+			return ProtectionLevel_NONE
+		}
+	case 0x51:
+		{ /* '0x51' */
+			return ProtectionLevel_NONE
+		}
+	case 0x52:
+		{ /* '0x52' */
+			return ProtectionLevel_NONE
+		}
+	case 0x53:
+		{ /* '0x53' */
+			return ProtectionLevel_NONE
+		}
+	case 0x54:
+		{ /* '0x54' */
+			return ProtectionLevel_NONE
+		}
+	case 0x55:
+		{ /* '0x55' */
+			return ProtectionLevel_NONE
+		}
+	case 0x56:
+		{ /* '0x56' */
+			return ProtectionLevel_NONE
+		}
+	case 0x57:
+		{ /* '0x57' */
+			return ProtectionLevel_NONE
+		}
+	case 0x58:
+		{ /* '0x58' */
+			return ProtectionLevel_NONE
+		}
+	case 0x59:
+		{ /* '0x59' */
+			return ProtectionLevel_NONE
+		}
+	case 0x5A:
+		{ /* '0x5A' */
+			return ProtectionLevel_NONE
+		}
+	case 0x5B:
+		{ /* '0x5B' */
+			return ProtectionLevel_NONE
+		}
+	case 0x5C:
+		{ /* '0x5C' */
+			return ProtectionLevel_NONE
+		}
+	case 0x5D:
+		{ /* '0x5D' */
+			return ProtectionLevel_NONE
+		}
+	case 0x5E:
+		{ /* '0x5E' */
+			return ProtectionLevel_NONE
+		}
+	case 0x5F:
+		{ /* '0x5F' */
+			return ProtectionLevel_NONE
+		}
+	case 0x60:
+		{ /* '0x60' */
+			return ProtectionLevel_NONE
+		}
+	case 0x61:
+		{ /* '0x61' */
+			return ProtectionLevel_NONE
+		}
+	case 0x62:
+		{ /* '0x62' */
+			return ProtectionLevel_NONE
+		}
+	case 0x63:
+		{ /* '0x63' */
+			return ProtectionLevel_NONE
+		}
+	case 0x64:
+		{ /* '0x64' */
+			return ProtectionLevel_NONE
+		}
+	case 0x65:
+		{ /* '0x65' */
+			return ProtectionLevel_NONE
+		}
+	case 0x66:
+		{ /* '0x66' */
+			return ProtectionLevel_NONE
+		}
+	case 0x67:
+		{ /* '0x67' */
+			return ProtectionLevel_NONE
+		}
+	case 0x68:
+		{ /* '0x68' */
+			return ProtectionLevel_NONE
+		}
+	case 0x69:
+		{ /* '0x69' */
+			return ProtectionLevel_NONE
+		}
+	case 0x6A:
+		{ /* '0x6A' */
+			return ProtectionLevel_NONE
+		}
+	case 0x6B:
+		{ /* '0x6B' */
+			return ProtectionLevel_NONE
+		}
+	case 0x6C:
+		{ /* '0x6C' */
+			return ProtectionLevel_NONE
+		}
+	case 0x6D:
+		{ /* '0x6D' */
+			return ProtectionLevel_NONE
+		}
+	case 0x6E:
+		{ /* '0x6E' */
+			return ProtectionLevel_NONE
+		}
+	case 0x6F:
+		{ /* '0x6F' */
+			return ProtectionLevel_NONE
+		}
+	case 0x70:
+		{ /* '0x70' */
+			return ProtectionLevel_NONE
+		}
+	case 0x71:
+		{ /* '0x71' */
+			return ProtectionLevel_NONE
+		}
+	case 0x72:
+		{ /* '0x72' */
+			return ProtectionLevel_NONE
+		}
+	case 0x73:
+		{ /* '0x73' */
+			return ProtectionLevel_NONE
+		}
+	case 0x74:
+		{ /* '0x74' */
+			return ProtectionLevel_NONE
+		}
+	case 0x75:
+		{ /* '0x75' */
+			return ProtectionLevel_NONE
+		}
+	case 0x76:
+		{ /* '0x76' */
+			return ProtectionLevel_NONE
+		}
+	case 0x77:
+		{ /* '0x77' */
+			return ProtectionLevel_NONE
+		}
+	case 0x78:
+		{ /* '0x78' */
+			return ProtectionLevel_NONE
+		}
+	case 0x79:
+		{ /* '0x79' */
+			return ProtectionLevel_NONE
+		}
+	case 0x7A:
+		{ /* '0x7A' */
+			return ProtectionLevel_NONE
+		}
+	case 0x7B:
+		{ /* '0x7B' */
+			return ProtectionLevel_NONE
+		}
+	case 0x7C:
+		{ /* '0x7C' */
+			return ProtectionLevel_NONE
+		}
+	case 0x7D:
+		{ /* '0x7D' */
+			return ProtectionLevel_NONE
+		}
+	case 0x7E:
+		{ /* '0x7E' */
+			return ProtectionLevel_NONE
+		}
+	case 0x7F:
+		{ /* '0x7F' */
+			return ProtectionLevel_NONE
+		}
+	case 0x80:
+		{ /* '0x80' */
+			return ProtectionLevel_NONE
+		}
+	case 0x81:
+		{ /* '0x81' */
+			return ProtectionLevel_NONE
+		}
+	case 0x82:
+		{ /* '0x82' */
+			return ProtectionLevel_NONE
+		}
+	case 0x83:
+		{ /* '0x83' */
+			return ProtectionLevel_NONE
+		}
+	case 0x84:
+		{ /* '0x84' */
+			return ProtectionLevel_NONE
+		}
+	case 0x85:
+		{ /* '0x85' */
+			return ProtectionLevel_NONE
+		}
+	case 0x86:
+		{ /* '0x86' */
+			return ProtectionLevel_NONE
+		}
+	case 0x87:
+		{ /* '0x87' */
+			return ProtectionLevel_NONE
+		}
+	case 0x88:
+		{ /* '0x88' */
+			return ProtectionLevel_NONE
+		}
+	case 0x89:
+		{ /* '0x89' */
+			return ProtectionLevel_NONE
+		}
+	case 0x8A:
+		{ /* '0x8A' */
+			return ProtectionLevel_NONE
+		}
+	case 0x8B:
+		{ /* '0x8B' */
+			return ProtectionLevel_NONE
+		}
+	case 0x8C:
+		{ /* '0x8C' */
+			return ProtectionLevel_NONE
+		}
+	case 0x8D:
+		{ /* '0x8D' */
+			return ProtectionLevel_NONE
+		}
+	case 0x8E:
+		{ /* '0x8E' */
+			return ProtectionLevel_NONE
+		}
+	case 0x8F:
+		{ /* '0x8F' */
+			return ProtectionLevel_NONE
+		}
+	case 0x90:
+		{ /* '0x90' */
+			return ProtectionLevel_NONE
+		}
+	case 0x91:
+		{ /* '0x91' */
+			return ProtectionLevel_NONE
+		}
+	case 0x92:
+		{ /* '0x92' */
+			return ProtectionLevel_NONE
+		}
+	case 0x93:
+		{ /* '0x93' */
+			return ProtectionLevel_NONE
+		}
+	case 0x94:
+		{ /* '0x94' */
+			return ProtectionLevel_NONE
+		}
+	case 0x95:
+		{ /* '0x95' */
+			return ProtectionLevel_NONE
+		}
+	case 0x96:
+		{ /* '0x96' */
+			return ProtectionLevel_NONE
+		}
+	case 0x97:
+		{ /* '0x97' */
+			return ProtectionLevel_NONE
+		}
+	case 0x98:
+		{ /* '0x98' */
+			return ProtectionLevel_NONE
+		}
+	case 0x99:
+		{ /* '0x99' */
+			return ProtectionLevel_NONE
+		}
+	case 0x9A:
+		{ /* '0x9A' */
+			return ProtectionLevel_NONE
+		}
+	case 0x9B:
+		{ /* '0x9B' */
+			return ProtectionLevel_NONE
+		}
+	case 0x9C:
+		{ /* '0x9C' */
+			return ProtectionLevel_NONE
+		}
+	case 0x9D:
+		{ /* '0x9D' */
+			return ProtectionLevel_NONE
+		}
+	case 0x9E:
+		{ /* '0x9E' */
+			return ProtectionLevel_NONE
+		}
+	case 0x9F:
+		{ /* '0x9F' */
+			return ProtectionLevel_NONE
+		}
+	case 0xA0:
+		{ /* '0xA0' */
+			return ProtectionLevel_NONE
+		}
+	case 0xA1:
+		{ /* '0xA1' */
+			return ProtectionLevel_NONE
+		}
+	case 0xA2:
+		{ /* '0xA2' */
+			return ProtectionLevel_NONE
+		}
+	case 0xA3:
+		{ /* '0xA3' */
+			return ProtectionLevel_NONE
+		}
+	case 0xA4:
+		{ /* '0xA4' */
+			return ProtectionLevel_NONE
+		}
+	case 0xA5:
+		{ /* '0xA5' */
+			return ProtectionLevel_NONE
+		}
+	case 0xA6:
+		{ /* '0xA6' */
+			return ProtectionLevel_NONE
+		}
+	case 0xA7:
+		{ /* '0xA7' */
+			return ProtectionLevel_NONE
+		}
+	case 0xA8:
+		{ /* '0xA8' */
+			return ProtectionLevel_NONE
+		}
+	case 0xA9:
+		{ /* '0xA9' */
+			return ProtectionLevel_NONE
+		}
+	case 0xAA:
+		{ /* '0xAA' */
+			return ProtectionLevel_NONE
+		}
+	case 0xAB:
+		{ /* '0xAB' */
+			return ProtectionLevel_NONE
+		}
+	case 0xAC:
+		{ /* '0xAC' */
+			return ProtectionLevel_NONE
+		}
+	case 0xAD:
+		{ /* '0xAD' */
+			return ProtectionLevel_NONE
+		}
+	case 0xAE:
+		{ /* '0xAE' */
+			return ProtectionLevel_NONE
+		}
+	case 0xAF:
+		{ /* '0xAF' */
+			return ProtectionLevel_NONE
+		}
+	case 0xB0:
+		{ /* '0xB0' */
+			return ProtectionLevel_NONE
+		}
+	case 0xB1:
+		{ /* '0xB1' */
+			return ProtectionLevel_NONE
+		}
+	case 0xB2:
+		{ /* '0xB2' */
+			return ProtectionLevel_NONE
+		}
+	case 0xB3:
+		{ /* '0xB3' */
+			return ProtectionLevel_NONE
+		}
+	case 0xB4:
+		{ /* '0xB4' */
+			return ProtectionLevel_NONE
+		}
+	case 0xB5:
+		{ /* '0xB5' */
+			return ProtectionLevel_NONE
+		}
+	case 0xB6:
+		{ /* '0xB6' */
+			return ProtectionLevel_NONE
+		}
+	case 0xB7:
+		{ /* '0xB7' */
+			return ProtectionLevel_NONE
+		}
+	case 0xB8:
+		{ /* '0xB8' */
+			return ProtectionLevel_NONE
+		}
+	case 0xB9:
+		{ /* '0xB9' */
+			return ProtectionLevel_NONE
+		}
+	case 0xBA:
+		{ /* '0xBA' */
+			return ProtectionLevel_NONE
+		}
+	case 0xBB:
+		{ /* '0xBB' */
+			return ProtectionLevel_NONE
+		}
+	case 0xBC:
+		{ /* '0xBC' */
+			return ProtectionLevel_NONE
+		}
+	case 0xBD:
+		{ /* '0xBD' */
+			return ProtectionLevel_NONE
+		}
+	case 0xBE:
+		{ /* '0xBE' */
+			return ProtectionLevel_NONE
+		}
+	case 0xBF:
+		{ /* '0xBF' */
+			return ProtectionLevel_NONE
+		}
+	case 0xC0:
+		{ /* '0xC0' */
+			return ProtectionLevel_NONE
+		}
+	case 0xC1:
+		{ /* '0xC1' */
+			return ProtectionLevel_NONE
+		}
+	case 0xC2:
+		{ /* '0xC2' */
+			return ProtectionLevel_NONE
+		}
+	case 0xC3:
+		{ /* '0xC3' */
+			return ProtectionLevel_NONE
+		}
+	case 0xC4:
+		{ /* '0xC4' */
+			return ProtectionLevel_NONE
+		}
+	case 0xC5:
+		{ /* '0xC5' */
+			return ProtectionLevel_NONE
+		}
+	case 0xC6:
+		{ /* '0xC6' */
+			return ProtectionLevel_NONE
+		}
+	case 0xC7:
+		{ /* '0xC7' */
+			return ProtectionLevel_NONE
+		}
+	case 0xC8:
+		{ /* '0xC8' */
+			return ProtectionLevel_NONE
+		}
+	case 0xC9:
+		{ /* '0xC9' */
+			return ProtectionLevel_NONE
+		}
+	case 0xCA:
+		{ /* '0xCA' */
+			return ProtectionLevel_NONE
+		}
+	case 0xCB:
+		{ /* '0xCB' */
+			return ProtectionLevel_NONE
+		}
+	case 0xCC:
+		{ /* '0xCC' */
+			return ProtectionLevel_NONE
+		}
+	case 0xCD:
+		{ /* '0xCD' */
+			return ProtectionLevel_NONE
+		}
+	case 0xCE:
+		{ /* '0xCE' */
+			return ProtectionLevel_NONE
+		}
+	case 0xCF:
+		{ /* '0xCF' */
+			return ProtectionLevel_NONE
+		}
+	case 0xD0:
+		{ /* '0xD0' */
+			return ProtectionLevel_NONE
+		}
+	case 0xD1:
+		{ /* '0xD1' */
+			return ProtectionLevel_NONE
+		}
+	case 0xD2:
+		{ /* '0xD2' */
+			return ProtectionLevel_NONE
+		}
+	case 0xD3:
+		{ /* '0xD3' */
+			return ProtectionLevel_NONE
+		}
+	case 0xD4:
+		{ /* '0xD4' */
+			return ProtectionLevel_NONE
+		}
+	case 0xD5:
+		{ /* '0xD5' */
+			return ProtectionLevel_NONE
+		}
+	case 0xD6:
+		{ /* '0xD6' */
+			return ProtectionLevel_NONE
+		}
+	case 0xD7:
+		{ /* '0xD7' */
+			return ProtectionLevel_NONE
+		}
+	case 0xD8:
+		{ /* '0xD8' */
+			return ProtectionLevel_NONE
+		}
+	case 0xD9:
+		{ /* '0xD9' */
+			return ProtectionLevel_NONE
+		}
+	case 0xDA:
+		{ /* '0xDA' */
+			return ProtectionLevel_NONE
+		}
+	case 0xDB:
+		{ /* '0xDB' */
+			return ProtectionLevel_NONE
+		}
+	case 0xDC:
+		{ /* '0xDC' */
+			return ProtectionLevel_NONE
+		}
+	case 0xDD:
+		{ /* '0xDD' */
+			return ProtectionLevel_NONE
+		}
+	case 0xDE:
+		{ /* '0xDE' */
+			return ProtectionLevel_NONE
+		}
+	case 0xDF:
+		{ /* '0xDF' */
+			return ProtectionLevel_NONE
+		}
+	case 0xE0:
+		{ /* '0xE0' */
+			return ProtectionLevel_NONE
+		}
+	case 0xE1:
+		{ /* '0xE1' */
+			return ProtectionLevel_NONE
+		}
+	case 0xE2:
+		{ /* '0xE2' */
+			return ProtectionLevel_NONE
+		}
+	case 0xE3:
+		{ /* '0xE3' */
+			return ProtectionLevel_NONE
+		}
+	case 0xE4:
+		{ /* '0xE4' */
+			return ProtectionLevel_NONE
+		}
+	case 0xE5:
+		{ /* '0xE5' */
+			return ProtectionLevel_NONE
+		}
+	case 0xE6:
+		{ /* '0xE6' */
+			return ProtectionLevel_NONE
+		}
+	case 0xE7:
+		{ /* '0xE7' */
+			return ProtectionLevel_NONE
+		}
+	case 0xE8:
+		{ /* '0xE8' */
+			return ProtectionLevel_NONE
+		}
+	case 0xE9:
+		{ /* '0xE9' */
+			return ProtectionLevel_NONE
+		}
+	case 0xEA:
+		{ /* '0xEA' */
+			return ProtectionLevel_NONE
+		}
+	case 0xEB:
+		{ /* '0xEB' */
+			return ProtectionLevel_UNLOCK_REQUIRED
+		}
+	case 0xEC:
+		{ /* '0xEC' */
+			return ProtectionLevel_UNLOCK_REQUIRED
+		}
+	case 0xED:
+		{ /* '0xED' */
+			return ProtectionLevel_UNLOCK_REQUIRED
+		}
+	case 0xEE:
+		{ /* '0xEE' */
+			return ProtectionLevel_UNLOCK_REQUIRED
+		}
+	case 0xEF:
+		{ /* '0xEF' */
+			return ProtectionLevel_UNLOCK_REQUIRED
+		}
+	case 0xF0:
+		{ /* '0xF0' */
+			return ProtectionLevel_UNLOCK_REQUIRED
+		}
+	case 0xF1:
+		{ /* '0xF1' */
+			return ProtectionLevel_UNLOCK_REQUIRED
+		}
+	case 0xF2:
+		{ /* '0xF2' */
+			return ProtectionLevel_READ_ONLY
+		}
+	case 0xF3:
+		{ /* '0xF3' */
+			return ProtectionLevel_READ_ONLY
+		}
+	case 0xF4:
+		{ /* '0xF4' */
+			return ProtectionLevel_READ_ONLY
+		}
+	case 0xF5:
+		{ /* '0xF5' */
+			return ProtectionLevel_READ_ONLY
+		}
+	case 0xF6:
+		{ /* '0xF6' */
+			return ProtectionLevel_READ_ONLY
+		}
+	case 0xF7:
+		{ /* '0xF7' */
+			return ProtectionLevel_READ_ONLY
+		}
+	case 0xF8:
+		{ /* '0xF8' */
+			return ProtectionLevel_READ_ONLY
+		}
+	case 0xF9:
+		{ /* '0xF9' */
+			return ProtectionLevel_READ_ONLY
+		}
+	case 0xFA:
+		{ /* '0xFA' */
+			return ProtectionLevel_READ_ONLY
+		}
+	case 0xFB:
+		{ /* '0xFB' */
+			return ProtectionLevel_READ_ONLY
+		}
+	case 0xFC:
+		{ /* '0xFC' */
+			return ProtectionLevel_READ_ONLY
+		}
+	case 0xFD:
+		{ /* '0xFD' */
+			return ProtectionLevel_READ_ONLY
+		}
+	case 0xFE:
+		{ /* '0xFE' */
+			return ProtectionLevel_READ_ONLY
+		}
+	case 0xFF:
+		{ /* '0xFF' */
+			return ProtectionLevel_NONE
+		}
+	default:
+		{
+			return 0
+		}
+	}
+}
+
+func ParameterFirstEnumForFieldProtectionLevel(value ProtectionLevel) (Parameter, error) {
+	for _, sizeValue := range ParameterValues {
+		if sizeValue.ProtectionLevel() == value {
+			return sizeValue, nil
+		}
+	}
+	return 0, errors.Errorf("enum for %v describing ProtectionLevel not found", value)
+}
+
+func (e Parameter) Group() string {
+	switch e {
+	case 0x00:
+		{ /* '0x00' */
+			return ""
+		}
+	case 0x01:
+		{ /* '0x01' */
+			return ""
+		}
+	case 0x02:
+		{ /* '0x02' */
+			return ""
+		}
+	case 0x03:
+		{ /* '0x03' */
+			return ""
+		}
+	case 0x04:
+		{ /* '0x04' */
+			return ""
+		}
+	case 0x05:
+		{ /* '0x05' */
+			return ""
+		}
+	case 0x06:
+		{ /* '0x06' */
+			return ""
+		}
+	case 0x07:
+		{ /* '0x07' */
+			return ""
+		}
+	case 0x08:
+		{ /* '0x08' */
+			return ""
+		}
+	case 0x09:
+		{ /* '0x09' */
+			return ""
+		}
+	case 0x0A:
+		{ /* '0x0A' */
+			return ""
+		}
+	case 0x0B:
+		{ /* '0x0B' */
+			return ""
+		}
+	case 0x0C:
+		{ /* '0x0C' */
+			return ""
+		}
+	case 0x0D:
+		{ /* '0x0D' */
+			return ""
+		}
+	case 0x0E:
+		{ /* '0x0E' */
+			return ""
+		}
+	case 0x0F:
+		{ /* '0x0F' */
+			return ""
+		}
+	case 0x10:
+		{ /* '0x10' */
+			return ""
+		}
+	case 0x11:
+		{ /* '0x11' */
+			return ""
+		}
+	case 0x12:
+		{ /* '0x12' */
+			return ""
+		}
+	case 0x13:
+		{ /* '0x13' */
+			return ""
+		}
+	case 0x14:
+		{ /* '0x14' */
+			return ""
+		}
+	case 0x15:
+		{ /* '0x15' */
+			return ""
+		}
+	case 0x16:
+		{ /* '0x16' */
+			return ""
+		}
+	case 0x17:
+		{ /* '0x17' */
+			return ""
+		}
+	case 0x18:
+		{ /* '0x18' */
+			return ""
+		}
+	case 0x19:
+		{ /* '0x19' */
+			return ""
+		}
+	case 0x1A:
+		{ /* '0x1A' */
+			return ""
+		}
+	case 0x1B:
+		{ /* '0x1B' */
+			return ""
+		}
+	case 0x1C:
+		{ /* '0x1C' */
+			return ""
+		}
+	case 0x1D:
+		{ /* '0x1D' */
+			return ""
+		}
+	case 0x1E:
+		{ /* '0x1E' */
+			return ""
+		}
+	case 0x1F:
+		{ /* '0x1F' */
+			return ""
+		}
+	case 0x20:
+		{ /* '0x20' */
+			return ""
+		}
+	case 0x21:
+		{ /* '0x21' */
+			return "Mgmt"
+		}
+	case 0x22:
+		{ /* '0x22' */
+			return "Mgmt"
+		}
+	case 0x23:
+		{ /* '0x23' */
+			return ""
+		}
+	case 0x24:
+		{ /* '0x24' */
+			return ""
+		}
+	case 0x25:
+		{ /* '0x25' */
+			return ""
+		}
+	case 0x26:
+		{ /* '0x26' */
+			return ""
+		}
+	case 0x27:
+		{ /* '0x27' */
+			return ""
+		}
+	case 0x28:
+		{ /* '0x28' */
+			return ""
+		}
+	case 0x29:
+		{ /* '0x29' */
+			return ""
+		}
+	case 0x2A:
+		{ /* '0x2A' */
+			return ""
+		}
+	case 0x2B:
+		{ /* '0x2B' */
+			return ""
+		}
+	case 0x2C:
+		{ /* '0x2C' */
+			return ""
+		}
+	case 0x2D:
+		{ /* '0x2D' */
+			return ""
+		}
+	case 0x2E:
+		{ /* '0x2E' */
+			return ""
+		}
+	case 0x2F:
+		{ /* '0x2F' */
+			return ""
+		}
+	case 0x30:
+		{ /* '0x30' */
+			return "Unit"
+		}
+	case 0x31:
+		{ /* '0x31' */
+			return ""
+		}
+	case 0x32:
+		{ /* '0x32' */
+			return ""
+		}
+	case 0x33:
+		{ /* '0x33' */
+			return ""
+		}
+	case 0x34:
+		{ /* '0x34' */
+			return ""
+		}
+	case 0x35:
+		{ /* '0x35' */
+			return ""
+		}
+	case 0x36:
+		{ /* '0x36' */
+			return ""
+		}
+	case 0x37:
+		{ /* '0x37' */
+			return ""
+		}
+	case 0x38:
+		{ /* '0x38' */
+			return ""
+		}
+	case 0x39:
+		{ /* '0x39' */
+			return ""
+		}
+	case 0x3A:
+		{ /* '0x3A' */
+			return ""
+		}
+	case 0x3B:
+		{ /* '0x3B' */
+			return ""
+		}
+	case 0x3C:
+		{ /* '0x3C' */
+			return ""
+		}
+	case 0x3D:
+		{ /* '0x3D' */
+			return "Unit"
+		}
+	case 0x3E:
+		{ /* '0x3E' */
+			return "Unit"
+		}
+	case 0x3F:
+		{ /* '0x3F' */
+			return ""
+		}
+	case 0x40:
+		{ /* '0x40' */
+			return ""
+		}
+	case 0x41:
+		{ /* '0x41' */
+			return "Unit"
+		}
+	case 0x42:
+		{ /* '0x42' */
+			return "Unit"
+		}
+	case 0x43:
+		{ /* '0x43' */
+			return ""
+		}
+	case 0x44:
+		{ /* '0x44' */
+			return ""
+		}
+	case 0x45:
+		{ /* '0x45' */
+			return ""
+		}
+	case 0x46:
+		{ /* '0x46' */
+			return ""
+		}
+	case 0x47:
+		{ /* '0x47' */
+			return ""
+		}
+	case 0x48:
+		{ /* '0x48' */
+			return ""
+		}
+	case 0x49:
+		{ /* '0x49' */
+			return ""
+		}
+	case 0x4A:
+		{ /* '0x4A' */
+			return ""
+		}
+	case 0x4B:
+		{ /* '0x4B' */
+			return ""
+		}
+	case 0x4C:
+		{ /* '0x4C' */
+			return ""
+		}
+	case 0x4D:
+		{ /* '0x4D' */
+			return ""
+		}
+	case 0x4E:
+		{ /* '0x4E' */
+			return ""
+		}
+	case 0x4F:
+		{ /* '0x4F' */
+			return ""
+		}
+	case 0x50:
+		{ /* '0x50' */
+			return ""
+		}
+	case 0x51:
+		{ /* '0x51' */
+			return ""
+		}
+	case 0x52:
+		{ /* '0x52' */
+			return ""
+		}
+	case 0x53:
+		{ /* '0x53' */
+			return ""
+		}
+	case 0x54:
+		{ /* '0x54' */
+			return ""
+		}
+	case 0x55:
+		{ /* '0x55' */
+			return ""
+		}
+	case 0x56:
+		{ /* '0x56' */
+			return ""
+		}
+	case 0x57:
+		{ /* '0x57' */
+			return ""
+		}
+	case 0x58:
+		{ /* '0x58' */
+			return ""
+		}
+	case 0x59:
+		{ /* '0x59' */
+			return ""
+		}
+	case 0x5A:
+		{ /* '0x5A' */
+			return ""
+		}
+	case 0x5B:
+		{ /* '0x5B' */
+			return ""
+		}
+	case 0x5C:
+		{ /* '0x5C' */
+			return ""
+		}
+	case 0x5D:
+		{ /* '0x5D' */
+			return ""
+		}
+	case 0x5E:
+		{ /* '0x5E' */
+			return ""
+		}
+	case 0x5F:
+		{ /* '0x5F' */
+			return ""
+		}
+	case 0x60:
+		{ /* '0x60' */
+			return ""
+		}
+	case 0x61:
+		{ /* '0x61' */
+			return ""
+		}
+	case 0x62:
+		{ /* '0x62' */
+			return ""
+		}
+	case 0x63:
+		{ /* '0x63' */
+			return ""
+		}
+	case 0x64:
+		{ /* '0x64' */
+			return ""
+		}
+	case 0x65:
+		{ /* '0x65' */
+			return ""
+		}
+	case 0x66:
+		{ /* '0x66' */
+			return ""
+		}
+	case 0x67:
+		{ /* '0x67' */
+			return ""
+		}
+	case 0x68:
+		{ /* '0x68' */
+			return ""
+		}
+	case 0x69:
+		{ /* '0x69' */
+			return ""
+		}
+	case 0x6A:
+		{ /* '0x6A' */
+			return ""
+		}
+	case 0x6B:
+		{ /* '0x6B' */
+			return ""
+		}
+	case 0x6C:
+		{ /* '0x6C' */
+			return ""
+		}
+	case 0x6D:
+		{ /* '0x6D' */
+			return ""
+		}
+	case 0x6E:
+		{ /* '0x6E' */
+			return ""
+		}
+	case 0x6F:
+		{ /* '0x6F' */
+			return ""
+		}
+	case 0x70:
+		{ /* '0x70' */
+			return ""
+		}
+	case 0x71:
+		{ /* '0x71' */
+			return ""
+		}
+	case 0x72:
+		{ /* '0x72' */
+			return ""
+		}
+	case 0x73:
+		{ /* '0x73' */
+			return ""
+		}
+	case 0x74:
+		{ /* '0x74' */
+			return ""
+		}
+	case 0x75:
+		{ /* '0x75' */
+			return ""
+		}
+	case 0x76:
+		{ /* '0x76' */
+			return ""
+		}
+	case 0x77:
+		{ /* '0x77' */
+			return ""
+		}
+	case 0x78:
+		{ /* '0x78' */
+			return ""
+		}
+	case 0x79:
+		{ /* '0x79' */
+			return ""
+		}
+	case 0x7A:
+		{ /* '0x7A' */
+			return ""
+		}
+	case 0x7B:
+		{ /* '0x7B' */
+			return ""
+		}
+	case 0x7C:
+		{ /* '0x7C' */
+			return ""
+		}
+	case 0x7D:
+		{ /* '0x7D' */
+			return ""
+		}
+	case 0x7E:
+		{ /* '0x7E' */
+			return ""
+		}
+	case 0x7F:
+		{ /* '0x7F' */
+			return ""
+		}
+	case 0x80:
+		{ /* '0x80' */
+			return ""
+		}
+	case 0x81:
+		{ /* '0x81' */
+			return ""
+		}
+	case 0x82:
+		{ /* '0x82' */
+			return ""
+		}
+	case 0x83:
+		{ /* '0x83' */
+			return ""
+		}
+	case 0x84:
+		{ /* '0x84' */
+			return ""
+		}
+	case 0x85:
+		{ /* '0x85' */
+			return ""
+		}
+	case 0x86:
+		{ /* '0x86' */
+			return ""
+		}
+	case 0x87:
+		{ /* '0x87' */
+			return ""
+		}
+	case 0x88:
+		{ /* '0x88' */
+			return ""
+		}
+	case 0x89:
+		{ /* '0x89' */
+			return ""
+		}
+	case 0x8A:
+		{ /* '0x8A' */
+			return ""
+		}
+	case 0x8B:
+		{ /* '0x8B' */
+			return ""
+		}
+	case 0x8C:
+		{ /* '0x8C' */
+			return ""
+		}
+	case 0x8D:
+		{ /* '0x8D' */
+			return ""
+		}
+	case 0x8E:
+		{ /* '0x8E' */
+			return ""
+		}
+	case 0x8F:
+		{ /* '0x8F' */
+			return ""
+		}
+	case 0x90:
+		{ /* '0x90' */
+			return ""
+		}
+	case 0x91:
+		{ /* '0x91' */
+			return ""
+		}
+	case 0x92:
+		{ /* '0x92' */
+			return ""
+		}
+	case 0x93:
+		{ /* '0x93' */
+			return ""
+		}
+	case 0x94:
+		{ /* '0x94' */
+			return ""
+		}
+	case 0x95:
+		{ /* '0x95' */
+			return ""
+		}
+	case 0x96:
+		{ /* '0x96' */
+			return ""
+		}
+	case 0x97:
+		{ /* '0x97' */
+			return ""
+		}
+	case 0x98:
+		{ /* '0x98' */
+			return ""
+		}
+	case 0x99:
+		{ /* '0x99' */
+			return ""
+		}
+	case 0x9A:
+		{ /* '0x9A' */
+			return ""
+		}
+	case 0x9B:
+		{ /* '0x9B' */
+			return ""
+		}
+	case 0x9C:
+		{ /* '0x9C' */
+			return ""
+		}
+	case 0x9D:
+		{ /* '0x9D' */
+			return ""
+		}
+	case 0x9E:
+		{ /* '0x9E' */
+			return ""
+		}
+	case 0x9F:
+		{ /* '0x9F' */
+			return ""
+		}
+	case 0xA0:
+		{ /* '0xA0' */
+			return ""
+		}
+	case 0xA1:
+		{ /* '0xA1' */
+			return ""
+		}
+	case 0xA2:
+		{ /* '0xA2' */
+			return ""
+		}
+	case 0xA3:
+		{ /* '0xA3' */
+			return ""
+		}
+	case 0xA4:
+		{ /* '0xA4' */
+			return ""
+		}
+	case 0xA5:
+		{ /* '0xA5' */
+			return ""
+		}
+	case 0xA6:
+		{ /* '0xA6' */
+			return ""
+		}
+	case 0xA7:
+		{ /* '0xA7' */
+			return ""
+		}
+	case 0xA8:
+		{ /* '0xA8' */
+			return ""
+		}
+	case 0xA9:
+		{ /* '0xA9' */
+			return ""
+		}
+	case 0xAA:
+		{ /* '0xAA' */
+			return ""
+		}
+	case 0xAB:
+		{ /* '0xAB' */
+			return ""
+		}
+	case 0xAC:
+		{ /* '0xAC' */
+			return ""
+		}
+	case 0xAD:
+		{ /* '0xAD' */
+			return ""
+		}
+	case 0xAE:
+		{ /* '0xAE' */
+			return ""
+		}
+	case 0xAF:
+		{ /* '0xAF' */
+			return ""
+		}
+	case 0xB0:
+		{ /* '0xB0' */
+			return ""
+		}
+	case 0xB1:
+		{ /* '0xB1' */
+			return ""
+		}
+	case 0xB2:
+		{ /* '0xB2' */
+			return ""
+		}
+	case 0xB3:
+		{ /* '0xB3' */
+			return ""
+		}
+	case 0xB4:
+		{ /* '0xB4' */
+			return ""
+		}
+	case 0xB5:
+		{ /* '0xB5' */
+			return ""
+		}
+	case 0xB6:
+		{ /* '0xB6' */
+			return ""
+		}
+	case 0xB7:
+		{ /* '0xB7' */
+			return ""
+		}
+	case 0xB8:
+		{ /* '0xB8' */
+			return ""
+		}
+	case 0xB9:
+		{ /* '0xB9' */
+			return ""
+		}
+	case 0xBA:
+		{ /* '0xBA' */
+			return ""
+		}
+	case 0xBB:
+		{ /* '0xBB' */
+			return ""
+		}
+	case 0xBC:
+		{ /* '0xBC' */
+			return ""
+		}
+	case 0xBD:
+		{ /* '0xBD' */
+			return ""
+		}
+	case 0xBE:
+		{ /* '0xBE' */
+			return ""
+		}
+	case 0xBF:
+		{ /* '0xBF' */
+			return ""
+		}
+	case 0xC0:
+		{ /* '0xC0' */
+			return ""
+		}
+	case 0xC1:
+		{ /* '0xC1' */
+			return ""
+		}
+	case 0xC2:
+		{ /* '0xC2' */
+			return ""
+		}
+	case 0xC3:
+		{ /* '0xC3' */
+			return ""
+		}
+	case 0xC4:
+		{ /* '0xC4' */
+			return ""
+		}
+	case 0xC5:
+		{ /* '0xC5' */
+			return ""
+		}
+	case 0xC6:
+		{ /* '0xC6' */
+			return ""
+		}
+	case 0xC7:
+		{ /* '0xC7' */
+			return ""
+		}
+	case 0xC8:
+		{ /* '0xC8' */
+			return ""
+		}
+	case 0xC9:
+		{ /* '0xC9' */
+			return ""
+		}
+	case 0xCA:
+		{ /* '0xCA' */
+			return ""
+		}
+	case 0xCB:
+		{ /* '0xCB' */
+			return ""
+		}
+	case 0xCC:
+		{ /* '0xCC' */
+			return ""
+		}
+	case 0xCD:
+		{ /* '0xCD' */
+			return ""
+		}
+	case 0xCE:
+		{ /* '0xCE' */
+			return ""
+		}
+	case 0xCF:
+		{ /* '0xCF' */
+			return ""
+		}
+	case 0xD0:
+		{ /* '0xD0' */
+			return ""
+		}
+	case 0xD1:
+		{ /* '0xD1' */
+			return ""
+		}
+	case 0xD2:
+		{ /* '0xD2' */
+			return ""
+		}
+	case 0xD3:
+		{ /* '0xD3' */
+			return ""
+		}
+	case 0xD4:
+		{ /* '0xD4' */
+			return ""
+		}
+	case 0xD5:
+		{ /* '0xD5' */
+			return ""
+		}
+	case 0xD6:
+		{ /* '0xD6' */
+			return ""
+		}
+	case 0xD7:
+		{ /* '0xD7' */
+			return ""
+		}
+	case 0xD8:
+		{ /* '0xD8' */
+			return ""
+		}
+	case 0xD9:
+		{ /* '0xD9' */
+			return ""
+		}
+	case 0xDA:
+		{ /* '0xDA' */
+			return ""
+		}
+	case 0xDB:
+		{ /* '0xDB' */
+			return ""
+		}
+	case 0xDC:
+		{ /* '0xDC' */
+			return ""
+		}
+	case 0xDD:
+		{ /* '0xDD' */
+			return ""
+		}
+	case 0xDE:
+		{ /* '0xDE' */
+			return ""
+		}
+	case 0xDF:
+		{ /* '0xDF' */
+			return ""
+		}
+	case 0xE0:
+		{ /* '0xE0' */
+			return ""
+		}
+	case 0xE1:
+		{ /* '0xE1' */
+			return ""
+		}
+	case 0xE2:
+		{ /* '0xE2' */
+			return ""
+		}
+	case 0xE3:
+		{ /* '0xE3' */
+			return ""
+		}
+	case 0xE4:
+		{ /* '0xE4' */
+			return ""
+		}
+	case 0xE5:
+		{ /* '0xE5' */
+			return ""
+		}
+	case 0xE6:
+		{ /* '0xE6' */
+			return ""
+		}
+	case 0xE7:
+		{ /* '0xE7' */
+			return ""
+		}
+	case 0xE8:
+		{ /* '0xE8' */
+			return ""
+		}
+	case 0xE9:
+		{ /* '0xE9' */
+			return ""
+		}
+	case 0xEA:
+		{ /* '0xEA' */
+			return ""
+		}
+	case 0xEB:
+		{ /* '0xEB' */
+			return "Mgmt"
+		}
+	case 0xEC:
+		{ /* '0xEC' */
+			return "Mgmt"
+		}
+	case 0xED:
+		{ /* '0xED' */
+			return "Mgmt"
+		}
+	case 0xEE:
+		{ /* '0xEE' */
+			return "Mgmt"
+		}
+	case 0xEF:
+		{ /* '0xEF' */
+			return "Mgmt"
+		}
+	case 0xF0:
+		{ /* '0xF0' */
+			return "Mgmt"
+		}
+	case 0xF1:
+		{ /* '0xF1' */
+			return "Mgmt"
+		}
+	case 0xF2:
+		{ /* '0xF2' */
+			return "Mgmt"
+		}
+	case 0xF3:
+		{ /* '0xF3' */
+			return "Mgmt"
+		}
+	case 0xF4:
+		{ /* '0xF4' */
+			return "Mgmt"
+		}
+	case 0xF5:
+		{ /* '0xF5' */
+			return "Mgmt"
+		}
+	case 0xF6:
+		{ /* '0xF6' */
+			return "Mgmt"
+		}
+	case 0xF7:
+		{ /* '0xF7' */
+			return "Mgmt"
+		}
+	case 0xF8:
+		{ /* '0xF8' */
+			return "Mgmt"
+		}
+	case 0xF9:
+		{ /* '0xF9' */
+			return "Mgmt"
+		}
+	case 0xFA:
+		{ /* '0xFA' */
+			return "Mgmt"
+		}
+	case 0xFB:
+		{ /* '0xFB' */
+			return "Mgmt"
+		}
+	case 0xFC:
+		{ /* '0xFC' */
+			return "Mgmt"
+		}
+	case 0xFD:
+		{ /* '0xFD' */
+			return "Mgmt"
+		}
+	case 0xFE:
+		{ /* '0xFE' */
+			return "Mgmt"
+		}
+	case 0xFF:
+		{ /* '0xFF' */
+			return ""
+		}
+	default:
+		{
+			return ""
+		}
+	}
+}
+
+func ParameterFirstEnumForFieldGroup(value string) (Parameter, error) {
+	for _, sizeValue := range ParameterValues {
+		if sizeValue.Group() == value {
+			return sizeValue, nil
+		}
+	}
+	return 0, errors.Errorf("enum for %v describing Group not found", value)
+}
+func ParameterByValue(value uint8) (enum Parameter, ok bool) {
+	switch value {
+	case 0x00:
+		return Parameter_UNKNOWN_01, true
+	case 0x01:
+		return Parameter_UNKNOWN_02, true
+	case 0x02:
+		return Parameter_UNKNOWN_03, true
+	case 0x03:
+		return Parameter_UNKNOWN_04, true
+	case 0x04:
+		return Parameter_UNKNOWN_05, true
+	case 0x05:
+		return Parameter_UNKNOWN_06, true
+	case 0x06:
+		return Parameter_UNKNOWN_07, true
+	case 0x07:
+		return Parameter_UNKNOWN_08, true
+	case 0x08:
+		return Parameter_UNKNOWN_09, true
+	case 0x09:
+		return Parameter_UNKNOWN_10, true
+	case 0x0A:
+		return Parameter_UNKNOWN_11, true
+	case 0x0B:
+		return Parameter_UNKNOWN_12, true
+	case 0x0C:
+		return Parameter_UNKNOWN_13, true
+	case 0x0D:
+		return Parameter_UNKNOWN_14, true
+	case 0x0E:
+		return Parameter_UNKNOWN_15, true
+	case 0x0F:
+		return Parameter_UNKNOWN_16, true
+	case 0x10:
+		return Parameter_UNKNOWN_17, true
+	case 0x11:
+		return Parameter_UNKNOWN_18, true
+	case 0x12:
+		return Parameter_UNKNOWN_19, true
+	case 0x13:
+		return Parameter_UNKNOWN_20, true
+	case 0x14:
+		return Parameter_UNKNOWN_21, true
+	case 0x15:
+		return Parameter_UNKNOWN_22, true
+	case 0x16:
+		return Parameter_UNKNOWN_23, true
+	case 0x17:
+		return Parameter_UNKNOWN_24, true
+	case 0x18:
+		return Parameter_UNKNOWN_25, true
+	case 0x19:
+		return Parameter_UNKNOWN_26, true
+	case 0x1A:
+		return Parameter_UNKNOWN_27, true
+	case 0x1B:
+		return Parameter_UNKNOWN_28, true
+	case 0x1C:
+		return Parameter_UNKNOWN_29, true
+	case 0x1D:
+		return Parameter_UNKNOWN_30, true
+	case 0x1E:
+		return Parameter_UNKNOWN_31, true
+	case 0x1F:
+		return Parameter_UNKNOWN_32, true
+	case 0x20:
+		return Parameter_UNKNOWN_33, true
+	case 0x21:
+		return Parameter_APPLICATION_ADDRESS_1, true
+	case 0x22:
+		return Parameter_APPLICATION_ADDRESS_2, true
+	case 0x23:
+		return Parameter_UNKOWN_35, true
+	case 0x24:
+		return Parameter_UNKOWN_36, true
+	case 0x25:
+		return Parameter_UNKOWN_37, true
+	case 0x26:
+		return Parameter_UNKOWN_38, true
+	case 0x27:
+		return Parameter_UNKOWN_39, true
+	case 0x28:
+		return Parameter_UNKOWN_40, true
+	case 0x29:
+		return Parameter_UNKOWN_41, true
+	case 0x2A:
+		return Parameter_UNKOWN_42, true
+	case 0x2B:
+		return Parameter_UNKOWN_43, true
+	case 0x2C:
+		return Parameter_UNKOWN_44, true
+	case 0x2D:
+		return Parameter_UNKOWN_45, true
+	case 0x2E:
+		return Parameter_UNKOWN_46, true
+	case 0x2F:
+		return Parameter_UNKOWN_47, true
+	case 0x30:
+		return Parameter_INTERFACE_OPTIONS_1, true
+	case 0x31:
+		return Parameter_UNKOWN_49, true
+	case 0x32:
+		return Parameter_UNKOWN_50, true
+	case 0x33:
+		return Parameter_UNKOWN_51, true
+	case 0x34:
+		return Parameter_UNKOWN_52, true
+	case 0x35:
+		return Parameter_UNKOWN_53, true
+	case 0x36:
+		return Parameter_UNKOWN_54, true
+	case 0x37:
+		return Parameter_UNKOWN_55, true
+	case 0x38:
+		return Parameter_UNKOWN_56, true
+	case 0x39:
+		return Parameter_UNKOWN_57, true
+	case 0x3A:
+		return Parameter_UNKOWN_58, true
+	case 0x3B:
+		return Parameter_UNKOWN_59, true
+	case 0x3C:
+		return Parameter_UNKOWN_60, true
+	case 0x3D:
+		return Parameter_BAUD_RATE_SELECTOR, true
+	case 0x3E:
+		return Parameter_INTERFACE_OPTIONS_2, true
+	case 0x3F:
+		return Parameter_UNKOWN_63, true
+	case 0x40:
+		return Parameter_UNKOWN_64, true
+	case 0x41:
+		return Parameter_INTERFACE_OPTIONS_1_POWER_UP_SETTINGS, true
+	case 0x42:
+		return Parameter_INTERFACE_OPTIONS_3, true
+	case 0x43:
+		return Parameter_UNKOWN_67, true
+	case 0x44:
+		return Parameter_UNKOWN_68, true
+	case 0x45:
+		return Parameter_UNKOWN_69, true
+	case 0x46:
+		return Parameter_UNKOWN_70, true
+	case 0x47:
+		return Parameter_UNKOWN_71, true
+	case 0x48:
+		return Parameter_UNKOWN_72, true
+	case 0x49:
+		return Parameter_UNKOWN_73, true
+	case 0x4A:
+		return Parameter_UNKOWN_74, true
+	case 0x4B:
+		return Parameter_UNKOWN_75, true
+	case 0x4C:
+		return Parameter_UNKOWN_76, true
+	case 0x4D:
+		return Parameter_UNKOWN_77, true
+	case 0x4E:
+		return Parameter_UNKOWN_78, true
+	case 0x4F:
+		return Parameter_UNKOWN_79, true
+	case 0x50:
+		return Parameter_UNKOWN_80, true
+	case 0x51:
+		return Parameter_UNKOWN_81, true
+	case 0x52:
+		return Parameter_UNKOWN_82, true
+	case 0x53:
+		return Parameter_UNKOWN_83, true
+	case 0x54:
+		return Parameter_UNKOWN_84, true
+	case 0x55:
+		return Parameter_UNKOWN_85, true
+	case 0x56:
+		return Parameter_UNKOWN_86, true
+	case 0x57:
+		return Parameter_UNKOWN_87, true
+	case 0x58:
+		return Parameter_UNKOWN_88, true
+	case 0x59:
+		return Parameter_UNKOWN_89, true
+	case 0x5A:
+		return Parameter_UNKOWN_90, true
+	case 0x5B:
+		return Parameter_UNKOWN_91, true
+	case 0x5C:
+		return Parameter_UNKOWN_92, true
+	case 0x5D:
+		return Parameter_UNKOWN_93, true
+	case 0x5E:
+		return Parameter_UNKOWN_94, true
+	case 0x5F:
+		return Parameter_UNKOWN_95, true
+	case 0x60:
+		return Parameter_UNKOWN_96, true
+	case 0x61:
+		return Parameter_UNKOWN_97, true
+	case 0x62:
+		return Parameter_UNKOWN_98, true
+	case 0x63:
+		return Parameter_UNKOWN_99, true
+	case 0x64:
+		return Parameter_UNKOWN_100, true
+	case 0x65:
+		return Parameter_UNKOWN_101, true
+	case 0x66:
+		return Parameter_UNKOWN_102, true
+	case 0x67:
+		return Parameter_UNKOWN_103, true
+	case 0x68:
+		return Parameter_UNKOWN_104, true
+	case 0x69:
+		return Parameter_UNKOWN_105, true
+	case 0x6A:
+		return Parameter_UNKOWN_106, true
+	case 0x6B:
+		return Parameter_UNKOWN_107, true
+	case 0x6C:
+		return Parameter_UNKOWN_108, true
+	case 0x6D:
+		return Parameter_UNKOWN_109, true
+	case 0x6E:
+		return Parameter_UNKOWN_110, true
+	case 0x6F:
+		return Parameter_UNKOWN_111, true
+	case 0x70:
+		return Parameter_UNKOWN_112, true
+	case 0x71:
+		return Parameter_UNKOWN_113, true
+	case 0x72:
+		return Parameter_UNKOWN_114, true
+	case 0x73:
+		return Parameter_UNKOWN_115, true
+	case 0x74:
+		return Parameter_UNKOWN_116, true
+	case 0x75:
+		return Parameter_UNKOWN_117, true
+	case 0x76:
+		return Parameter_UNKOWN_118, true
+	case 0x77:
+		return Parameter_UNKOWN_119, true
+	case 0x78:
+		return Parameter_UNKOWN_120, true
+	case 0x79:
+		return Parameter_UNKOWN_121, true
+	case 0x7A:
+		return Parameter_UNKOWN_122, true
+	case 0x7B:
+		return Parameter_UNKOWN_123, true
+	case 0x7C:
+		return Parameter_UNKOWN_124, true
+	case 0x7D:
+		return Parameter_UNKOWN_125, true
+	case 0x7E:
+		return Parameter_UNKOWN_126, true
+	case 0x7F:
+		return Parameter_UNKOWN_127, true
+	case 0x80:
+		return Parameter_UNKOWN_128, true
+	case 0x81:
+		return Parameter_UNKOWN_129, true
+	case 0x82:
+		return Parameter_UNKOWN_130, true
+	case 0x83:
+		return Parameter_UNKOWN_131, true
+	case 0x84:
+		return Parameter_UNKOWN_132, true
+	case 0x85:
+		return Parameter_UNKOWN_133, true
+	case 0x86:
+		return Parameter_UNKOWN_134, true
+	case 0x87:
+		return Parameter_UNKOWN_135, true
+	case 0x88:
+		return Parameter_UNKOWN_136, true
+	case 0x89:
+		return Parameter_UNKOWN_137, true
+	case 0x8A:
+		return Parameter_UNKOWN_138, true
+	case 0x8B:
+		return Parameter_UNKOWN_139, true
+	case 0x8C:
+		return Parameter_UNKOWN_140, true
+	case 0x8D:
+		return Parameter_UNKOWN_141, true
+	case 0x8E:
+		return Parameter_UNKOWN_142, true
+	case 0x8F:
+		return Parameter_UNKOWN_143, true
+	case 0x90:
+		return Parameter_UNKOWN_144, true
+	case 0x91:
+		return Parameter_UNKOWN_145, true
+	case 0x92:
+		return Parameter_UNKOWN_146, true
+	case 0x93:
+		return Parameter_UNKOWN_147, true
+	case 0x94:
+		return Parameter_UNKOWN_148, true
+	case 0x95:
+		return Parameter_UNKOWN_149, true
+	case 0x96:
+		return Parameter_UNKOWN_150, true
+	case 0x97:
+		return Parameter_UNKOWN_151, true
+	case 0x98:
+		return Parameter_UNKOWN_152, true
+	case 0x99:
+		return Parameter_UNKOWN_153, true
+	case 0x9A:
+		return Parameter_UNKOWN_154, true
+	case 0x9B:
+		return Parameter_UNKOWN_155, true
+	case 0x9C:
+		return Parameter_UNKOWN_156, true
+	case 0x9D:
+		return Parameter_UNKOWN_157, true
+	case 0x9E:
+		return Parameter_UNKOWN_158, true
+	case 0x9F:
+		return Parameter_UNKOWN_159, true
+	case 0xA0:
+		return Parameter_UNKOWN_160, true
+	case 0xA1:
+		return Parameter_UNKOWN_161, true
+	case 0xA2:
+		return Parameter_UNKOWN_162, true
+	case 0xA3:
+		return Parameter_UNKOWN_163, true
+	case 0xA4:
+		return Parameter_UNKOWN_164, true
+	case 0xA5:
+		return Parameter_UNKOWN_165, true
+	case 0xA6:
+		return Parameter_UNKOWN_166, true
+	case 0xA7:
+		return Parameter_UNKOWN_167, true
+	case 0xA8:
+		return Parameter_UNKOWN_168, true
+	case 0xA9:
+		return Parameter_UNKOWN_169, true
+	case 0xAA:
+		return Parameter_UNKOWN_170, true
+	case 0xAB:
+		return Parameter_UNKOWN_171, true
+	case 0xAC:
+		return Parameter_UNKOWN_172, true
+	case 0xAD:
+		return Parameter_UNKOWN_173, true
+	case 0xAE:
+		return Parameter_UNKOWN_174, true
+	case 0xAF:
+		return Parameter_UNKOWN_175, true
+	case 0xB0:
+		return Parameter_UNKOWN_176, true
+	case 0xB1:
+		return Parameter_UNKOWN_177, true
+	case 0xB2:
+		return Parameter_UNKOWN_178, true
+	case 0xB3:
+		return Parameter_UNKOWN_179, true
+	case 0xB4:
+		return Parameter_UNKOWN_180, true
+	case 0xB5:
+		return Parameter_UNKOWN_181, true
+	case 0xB6:
+		return Parameter_UNKOWN_182, true
+	case 0xB7:
+		return Parameter_UNKOWN_183, true
+	case 0xB8:
+		return Parameter_UNKOWN_184, true
+	case 0xB9:
+		return Parameter_UNKOWN_185, true
+	case 0xBA:
+		return Parameter_UNKOWN_186, true
+	case 0xBB:
+		return Parameter_UNKOWN_187, true
+	case 0xBC:
+		return Parameter_UNKOWN_188, true
+	case 0xBD:
+		return Parameter_UNKOWN_189, true
+	case 0xBE:
+		return Parameter_UNKOWN_190, true
+	case 0xBF:
+		return Parameter_UNKOWN_191, true
+	case 0xC0:
+		return Parameter_UNKOWN_192, true
+	case 0xC1:
+		return Parameter_UNKOWN_193, true
+	case 0xC2:
+		return Parameter_UNKOWN_194, true
+	case 0xC3:
+		return Parameter_UNKOWN_195, true
+	case 0xC4:
+		return Parameter_UNKOWN_196, true
+	case 0xC5:
+		return Parameter_UNKOWN_197, true
+	case 0xC6:
+		return Parameter_UNKOWN_198, true
+	case 0xC7:
+		return Parameter_UNKOWN_199, true
+	case 0xC8:
+		return Parameter_UNKOWN_200, true
+	case 0xC9:
+		return Parameter_UNKOWN_201, true
+	case 0xCA:
+		return Parameter_UNKOWN_202, true
+	case 0xCB:
+		return Parameter_UNKOWN_203, true
+	case 0xCC:
+		return Parameter_UNKOWN_204, true
+	case 0xCD:
+		return Parameter_UNKOWN_205, true
+	case 0xCE:
+		return Parameter_UNKOWN_206, true
+	case 0xCF:
+		return Parameter_UNKOWN_207, true
+	case 0xD0:
+		return Parameter_UNKOWN_208, true
+	case 0xD1:
+		return Parameter_UNKOWN_209, true
+	case 0xD2:
+		return Parameter_UNKOWN_210, true
+	case 0xD3:
+		return Parameter_UNKOWN_211, true
+	case 0xD4:
+		return Parameter_UNKOWN_212, true
+	case 0xD5:
+		return Parameter_UNKOWN_213, true
+	case 0xD6:
+		return Parameter_UNKOWN_214, true
+	case 0xD7:
+		return Parameter_UNKOWN_215, true
+	case 0xD8:
+		return Parameter_UNKOWN_216, true
+	case 0xD9:
+		return Parameter_UNKOWN_217, true
+	case 0xDA:
+		return Parameter_UNKOWN_218, true
+	case 0xDB:
+		return Parameter_UNKOWN_219, true
+	case 0xDC:
+		return Parameter_UNKOWN_220, true
+	case 0xDD:
+		return Parameter_UNKOWN_221, true
+	case 0xDE:
+		return Parameter_UNKOWN_222, true
+	case 0xDF:
+		return Parameter_UNKOWN_223, true
+	case 0xE0:
+		return Parameter_UNKOWN_224, true
+	case 0xE1:
+		return Parameter_UNKOWN_225, true
+	case 0xE2:
+		return Parameter_UNKOWN_226, true
+	case 0xE3:
+		return Parameter_UNKOWN_227, true
+	case 0xE4:
+		return Parameter_UNKOWN_228, true
+	case 0xE5:
+		return Parameter_UNKOWN_229, true
+	case 0xE6:
+		return Parameter_UNKOWN_230, true
+	case 0xE7:
+		return Parameter_UNKOWN_231, true
+	case 0xE8:
+		return Parameter_UNKOWN_232, true
+	case 0xE9:
+		return Parameter_UNKOWN_233, true
+	case 0xEA:
+		return Parameter_UNKOWN_234, true
+	case 0xEB:
+		return Parameter_CUSTOM_MANUFACTURER_1, true
+	case 0xEC:
+		return Parameter_CUSTOM_MANUFACTURER_2, true
+	case 0xED:
+		return Parameter_CUSTOM_MANUFACTURER_3, true
+	case 0xEE:
+		return Parameter_CUSTOM_MANUFACTURER_4, true
+	case 0xEF:
+		return Parameter_CUSTOM_MANUFACTURER_5, true
+	case 0xF0:
+		return Parameter_CUSTOM_MANUFACTURER_6, true
+	case 0xF1:
+		return Parameter_CUSTOM_MANUFACTURER_7, true
+	case 0xF2:
+		return Parameter_CUSTOM_MANUFACTURER_8, true
+	case 0xF3:
+		return Parameter_SERIAL_NUMBER_1, true
+	case 0xF4:
+		return Parameter_SERIAL_NUMBER_2, true
+	case 0xF5:
+		return Parameter_SERIAL_NUMBER_3, true
+	case 0xF6:
+		return Parameter_SERIAL_NUMBER_4, true
+	case 0xF7:
+		return Parameter_CUSTOM_TYPE_1, true
+	case 0xF8:
+		return Parameter_CUSTOM_TYPE_2, true
+	case 0xF9:
+		return Parameter_CUSTOM_TYPE_3, true
+	case 0xFA:
+		return Parameter_CUSTOM_TYPE_4, true
+	case 0xFB:
+		return Parameter_CUSTOM_TYPE_5, true
+	case 0xFC:
+		return Parameter_CUSTOM_TYPE_6, true
+	case 0xFD:
+		return Parameter_CUSTOM_TYPE_7, true
+	case 0xFE:
+		return Parameter_CUSTOM_TYPE_8, true
+	case 0xFF:
+		return Parameter_UNKOWN_255, true
+	}
+	return 0, false
+}
+
+func ParameterByName(value string) (enum Parameter, ok bool) {
+	switch value {
+	case "UNKNOWN_01":
+		return Parameter_UNKNOWN_01, true
+	case "UNKNOWN_02":
+		return Parameter_UNKNOWN_02, true
+	case "UNKNOWN_03":
+		return Parameter_UNKNOWN_03, true
+	case "UNKNOWN_04":
+		return Parameter_UNKNOWN_04, true
+	case "UNKNOWN_05":
+		return Parameter_UNKNOWN_05, true
+	case "UNKNOWN_06":
+		return Parameter_UNKNOWN_06, true
+	case "UNKNOWN_07":
+		return Parameter_UNKNOWN_07, true
+	case "UNKNOWN_08":
+		return Parameter_UNKNOWN_08, true
+	case "UNKNOWN_09":
+		return Parameter_UNKNOWN_09, true
+	case "UNKNOWN_10":
+		return Parameter_UNKNOWN_10, true
+	case "UNKNOWN_11":
+		return Parameter_UNKNOWN_11, true
+	case "UNKNOWN_12":
+		return Parameter_UNKNOWN_12, true
+	case "UNKNOWN_13":
+		return Parameter_UNKNOWN_13, true
+	case "UNKNOWN_14":
+		return Parameter_UNKNOWN_14, true
+	case "UNKNOWN_15":
+		return Parameter_UNKNOWN_15, true
+	case "UNKNOWN_16":
+		return Parameter_UNKNOWN_16, true
+	case "UNKNOWN_17":
+		return Parameter_UNKNOWN_17, true
+	case "UNKNOWN_18":
+		return Parameter_UNKNOWN_18, true
+	case "UNKNOWN_19":
+		return Parameter_UNKNOWN_19, true
+	case "UNKNOWN_20":
+		return Parameter_UNKNOWN_20, true
+	case "UNKNOWN_21":
+		return Parameter_UNKNOWN_21, true
+	case "UNKNOWN_22":
+		return Parameter_UNKNOWN_22, true
+	case "UNKNOWN_23":
+		return Parameter_UNKNOWN_23, true
+	case "UNKNOWN_24":
+		return Parameter_UNKNOWN_24, true
+	case "UNKNOWN_25":
+		return Parameter_UNKNOWN_25, true
+	case "UNKNOWN_26":
+		return Parameter_UNKNOWN_26, true
+	case "UNKNOWN_27":
+		return Parameter_UNKNOWN_27, true
+	case "UNKNOWN_28":
+		return Parameter_UNKNOWN_28, true
+	case "UNKNOWN_29":
+		return Parameter_UNKNOWN_29, true
+	case "UNKNOWN_30":
+		return Parameter_UNKNOWN_30, true
+	case "UNKNOWN_31":
+		return Parameter_UNKNOWN_31, true
+	case "UNKNOWN_32":
+		return Parameter_UNKNOWN_32, true
+	case "UNKNOWN_33":
+		return Parameter_UNKNOWN_33, true
+	case "APPLICATION_ADDRESS_1":
+		return Parameter_APPLICATION_ADDRESS_1, true
+	case "APPLICATION_ADDRESS_2":
+		return Parameter_APPLICATION_ADDRESS_2, true
+	case "UNKOWN_35":
+		return Parameter_UNKOWN_35, true
+	case "UNKOWN_36":
+		return Parameter_UNKOWN_36, true
+	case "UNKOWN_37":
+		return Parameter_UNKOWN_37, true
+	case "UNKOWN_38":
+		return Parameter_UNKOWN_38, true
+	case "UNKOWN_39":
+		return Parameter_UNKOWN_39, true
+	case "UNKOWN_40":
+		return Parameter_UNKOWN_40, true
+	case "UNKOWN_41":
+		return Parameter_UNKOWN_41, true
+	case "UNKOWN_42":
+		return Parameter_UNKOWN_42, true
+	case "UNKOWN_43":
+		return Parameter_UNKOWN_43, true
+	case "UNKOWN_44":
+		return Parameter_UNKOWN_44, true
+	case "UNKOWN_45":
+		return Parameter_UNKOWN_45, true
+	case "UNKOWN_46":
+		return Parameter_UNKOWN_46, true
+	case "UNKOWN_47":
+		return Parameter_UNKOWN_47, true
+	case "INTERFACE_OPTIONS_1":
+		return Parameter_INTERFACE_OPTIONS_1, true
+	case "UNKOWN_49":
+		return Parameter_UNKOWN_49, true
+	case "UNKOWN_50":
+		return Parameter_UNKOWN_50, true
+	case "UNKOWN_51":
+		return Parameter_UNKOWN_51, true
+	case "UNKOWN_52":
+		return Parameter_UNKOWN_52, true
+	case "UNKOWN_53":
+		return Parameter_UNKOWN_53, true
+	case "UNKOWN_54":
+		return Parameter_UNKOWN_54, true
+	case "UNKOWN_55":
+		return Parameter_UNKOWN_55, true
+	case "UNKOWN_56":
+		return Parameter_UNKOWN_56, true
+	case "UNKOWN_57":
+		return Parameter_UNKOWN_57, true
+	case "UNKOWN_58":
+		return Parameter_UNKOWN_58, true
+	case "UNKOWN_59":
+		return Parameter_UNKOWN_59, true
+	case "UNKOWN_60":
+		return Parameter_UNKOWN_60, true
+	case "BAUD_RATE_SELECTOR":
+		return Parameter_BAUD_RATE_SELECTOR, true
+	case "INTERFACE_OPTIONS_2":
+		return Parameter_INTERFACE_OPTIONS_2, true
+	case "UNKOWN_63":
+		return Parameter_UNKOWN_63, true
+	case "UNKOWN_64":
+		return Parameter_UNKOWN_64, true
+	case "INTERFACE_OPTIONS_1_POWER_UP_SETTINGS":
+		return Parameter_INTERFACE_OPTIONS_1_POWER_UP_SETTINGS, true
+	case "INTERFACE_OPTIONS_3":
+		return Parameter_INTERFACE_OPTIONS_3, true
+	case "UNKOWN_67":
+		return Parameter_UNKOWN_67, true
+	case "UNKOWN_68":
+		return Parameter_UNKOWN_68, true
+	case "UNKOWN_69":
+		return Parameter_UNKOWN_69, true
+	case "UNKOWN_70":
+		return Parameter_UNKOWN_70, true
+	case "UNKOWN_71":
+		return Parameter_UNKOWN_71, true
+	case "UNKOWN_72":
+		return Parameter_UNKOWN_72, true
+	case "UNKOWN_73":
+		return Parameter_UNKOWN_73, true
+	case "UNKOWN_74":
+		return Parameter_UNKOWN_74, true
+	case "UNKOWN_75":
+		return Parameter_UNKOWN_75, true
+	case "UNKOWN_76":
+		return Parameter_UNKOWN_76, true
+	case "UNKOWN_77":
+		return Parameter_UNKOWN_77, true
+	case "UNKOWN_78":
+		return Parameter_UNKOWN_78, true
+	case "UNKOWN_79":
+		return Parameter_UNKOWN_79, true
+	case "UNKOWN_80":
+		return Parameter_UNKOWN_80, true
+	case "UNKOWN_81":
+		return Parameter_UNKOWN_81, true
+	case "UNKOWN_82":
+		return Parameter_UNKOWN_82, true
+	case "UNKOWN_83":
+		return Parameter_UNKOWN_83, true
+	case "UNKOWN_84":
+		return Parameter_UNKOWN_84, true
+	case "UNKOWN_85":
+		return Parameter_UNKOWN_85, true
+	case "UNKOWN_86":
+		return Parameter_UNKOWN_86, true
+	case "UNKOWN_87":
+		return Parameter_UNKOWN_87, true
+	case "UNKOWN_88":
+		return Parameter_UNKOWN_88, true
+	case "UNKOWN_89":
+		return Parameter_UNKOWN_89, true
+	case "UNKOWN_90":
+		return Parameter_UNKOWN_90, true
+	case "UNKOWN_91":
+		return Parameter_UNKOWN_91, true
+	case "UNKOWN_92":
+		return Parameter_UNKOWN_92, true
+	case "UNKOWN_93":
+		return Parameter_UNKOWN_93, true
+	case "UNKOWN_94":
+		return Parameter_UNKOWN_94, true
+	case "UNKOWN_95":
+		return Parameter_UNKOWN_95, true
+	case "UNKOWN_96":
+		return Parameter_UNKOWN_96, true
+	case "UNKOWN_97":
+		return Parameter_UNKOWN_97, true
+	case "UNKOWN_98":
+		return Parameter_UNKOWN_98, true
+	case "UNKOWN_99":
+		return Parameter_UNKOWN_99, true
+	case "UNKOWN_100":
+		return Parameter_UNKOWN_100, true
+	case "UNKOWN_101":
+		return Parameter_UNKOWN_101, true
+	case "UNKOWN_102":
+		return Parameter_UNKOWN_102, true
+	case "UNKOWN_103":
+		return Parameter_UNKOWN_103, true
+	case "UNKOWN_104":
+		return Parameter_UNKOWN_104, true
+	case "UNKOWN_105":
+		return Parameter_UNKOWN_105, true
+	case "UNKOWN_106":
+		return Parameter_UNKOWN_106, true
+	case "UNKOWN_107":
+		return Parameter_UNKOWN_107, true
+	case "UNKOWN_108":
+		return Parameter_UNKOWN_108, true
+	case "UNKOWN_109":
+		return Parameter_UNKOWN_109, true
+	case "UNKOWN_110":
+		return Parameter_UNKOWN_110, true
+	case "UNKOWN_111":
+		return Parameter_UNKOWN_111, true
+	case "UNKOWN_112":
+		return Parameter_UNKOWN_112, true
+	case "UNKOWN_113":
+		return Parameter_UNKOWN_113, true
+	case "UNKOWN_114":
+		return Parameter_UNKOWN_114, true
+	case "UNKOWN_115":
+		return Parameter_UNKOWN_115, true
+	case "UNKOWN_116":
+		return Parameter_UNKOWN_116, true
+	case "UNKOWN_117":
+		return Parameter_UNKOWN_117, true
+	case "UNKOWN_118":
+		return Parameter_UNKOWN_118, true
+	case "UNKOWN_119":
+		return Parameter_UNKOWN_119, true
+	case "UNKOWN_120":
+		return Parameter_UNKOWN_120, true
+	case "UNKOWN_121":
+		return Parameter_UNKOWN_121, true
+	case "UNKOWN_122":
+		return Parameter_UNKOWN_122, true
+	case "UNKOWN_123":
+		return Parameter_UNKOWN_123, true
+	case "UNKOWN_124":
+		return Parameter_UNKOWN_124, true
+	case "UNKOWN_125":
+		return Parameter_UNKOWN_125, true
+	case "UNKOWN_126":
+		return Parameter_UNKOWN_126, true
+	case "UNKOWN_127":
+		return Parameter_UNKOWN_127, true
+	case "UNKOWN_128":
+		return Parameter_UNKOWN_128, true
+	case "UNKOWN_129":
+		return Parameter_UNKOWN_129, true
+	case "UNKOWN_130":
+		return Parameter_UNKOWN_130, true
+	case "UNKOWN_131":
+		return Parameter_UNKOWN_131, true
+	case "UNKOWN_132":
+		return Parameter_UNKOWN_132, true
+	case "UNKOWN_133":
+		return Parameter_UNKOWN_133, true
+	case "UNKOWN_134":
+		return Parameter_UNKOWN_134, true
+	case "UNKOWN_135":
+		return Parameter_UNKOWN_135, true
+	case "UNKOWN_136":
+		return Parameter_UNKOWN_136, true
+	case "UNKOWN_137":
+		return Parameter_UNKOWN_137, true
+	case "UNKOWN_138":
+		return Parameter_UNKOWN_138, true
+	case "UNKOWN_139":
+		return Parameter_UNKOWN_139, true
+	case "UNKOWN_140":
+		return Parameter_UNKOWN_140, true
+	case "UNKOWN_141":
+		return Parameter_UNKOWN_141, true
+	case "UNKOWN_142":
+		return Parameter_UNKOWN_142, true
+	case "UNKOWN_143":
+		return Parameter_UNKOWN_143, true
+	case "UNKOWN_144":
+		return Parameter_UNKOWN_144, true
+	case "UNKOWN_145":
+		return Parameter_UNKOWN_145, true
+	case "UNKOWN_146":
+		return Parameter_UNKOWN_146, true
+	case "UNKOWN_147":
+		return Parameter_UNKOWN_147, true
+	case "UNKOWN_148":
+		return Parameter_UNKOWN_148, true
+	case "UNKOWN_149":
+		return Parameter_UNKOWN_149, true
+	case "UNKOWN_150":
+		return Parameter_UNKOWN_150, true
+	case "UNKOWN_151":
+		return Parameter_UNKOWN_151, true
+	case "UNKOWN_152":
+		return Parameter_UNKOWN_152, true
+	case "UNKOWN_153":
+		return Parameter_UNKOWN_153, true
+	case "UNKOWN_154":
+		return Parameter_UNKOWN_154, true
+	case "UNKOWN_155":
+		return Parameter_UNKOWN_155, true
+	case "UNKOWN_156":
+		return Parameter_UNKOWN_156, true
+	case "UNKOWN_157":
+		return Parameter_UNKOWN_157, true
+	case "UNKOWN_158":
+		return Parameter_UNKOWN_158, true
+	case "UNKOWN_159":
+		return Parameter_UNKOWN_159, true
+	case "UNKOWN_160":
+		return Parameter_UNKOWN_160, true
+	case "UNKOWN_161":
+		return Parameter_UNKOWN_161, true
+	case "UNKOWN_162":
+		return Parameter_UNKOWN_162, true
+	case "UNKOWN_163":
+		return Parameter_UNKOWN_163, true
+	case "UNKOWN_164":
+		return Parameter_UNKOWN_164, true
+	case "UNKOWN_165":
+		return Parameter_UNKOWN_165, true
+	case "UNKOWN_166":
+		return Parameter_UNKOWN_166, true
+	case "UNKOWN_167":
+		return Parameter_UNKOWN_167, true
+	case "UNKOWN_168":
+		return Parameter_UNKOWN_168, true
+	case "UNKOWN_169":
+		return Parameter_UNKOWN_169, true
+	case "UNKOWN_170":
+		return Parameter_UNKOWN_170, true
+	case "UNKOWN_171":
+		return Parameter_UNKOWN_171, true
+	case "UNKOWN_172":
+		return Parameter_UNKOWN_172, true
+	case "UNKOWN_173":
+		return Parameter_UNKOWN_173, true
+	case "UNKOWN_174":
+		return Parameter_UNKOWN_174, true
+	case "UNKOWN_175":
+		return Parameter_UNKOWN_175, true
+	case "UNKOWN_176":
+		return Parameter_UNKOWN_176, true
+	case "UNKOWN_177":
+		return Parameter_UNKOWN_177, true
+	case "UNKOWN_178":
+		return Parameter_UNKOWN_178, true
+	case "UNKOWN_179":
+		return Parameter_UNKOWN_179, true
+	case "UNKOWN_180":
+		return Parameter_UNKOWN_180, true
+	case "UNKOWN_181":
+		return Parameter_UNKOWN_181, true
+	case "UNKOWN_182":
+		return Parameter_UNKOWN_182, true
+	case "UNKOWN_183":
+		return Parameter_UNKOWN_183, true
+	case "UNKOWN_184":
+		return Parameter_UNKOWN_184, true
+	case "UNKOWN_185":
+		return Parameter_UNKOWN_185, true
+	case "UNKOWN_186":
+		return Parameter_UNKOWN_186, true
+	case "UNKOWN_187":
+		return Parameter_UNKOWN_187, true
+	case "UNKOWN_188":
+		return Parameter_UNKOWN_188, true
+	case "UNKOWN_189":
+		return Parameter_UNKOWN_189, true
+	case "UNKOWN_190":
+		return Parameter_UNKOWN_190, true
+	case "UNKOWN_191":
+		return Parameter_UNKOWN_191, true
+	case "UNKOWN_192":
+		return Parameter_UNKOWN_192, true
+	case "UNKOWN_193":
+		return Parameter_UNKOWN_193, true
+	case "UNKOWN_194":
+		return Parameter_UNKOWN_194, true
+	case "UNKOWN_195":
+		return Parameter_UNKOWN_195, true
+	case "UNKOWN_196":
+		return Parameter_UNKOWN_196, true
+	case "UNKOWN_197":
+		return Parameter_UNKOWN_197, true
+	case "UNKOWN_198":
+		return Parameter_UNKOWN_198, true
+	case "UNKOWN_199":
+		return Parameter_UNKOWN_199, true
+	case "UNKOWN_200":
+		return Parameter_UNKOWN_200, true
+	case "UNKOWN_201":
+		return Parameter_UNKOWN_201, true
+	case "UNKOWN_202":
+		return Parameter_UNKOWN_202, true
+	case "UNKOWN_203":
+		return Parameter_UNKOWN_203, true
+	case "UNKOWN_204":
+		return Parameter_UNKOWN_204, true
+	case "UNKOWN_205":
+		return Parameter_UNKOWN_205, true
+	case "UNKOWN_206":
+		return Parameter_UNKOWN_206, true
+	case "UNKOWN_207":
+		return Parameter_UNKOWN_207, true
+	case "UNKOWN_208":
+		return Parameter_UNKOWN_208, true
+	case "UNKOWN_209":
+		return Parameter_UNKOWN_209, true
+	case "UNKOWN_210":
+		return Parameter_UNKOWN_210, true
+	case "UNKOWN_211":
+		return Parameter_UNKOWN_211, true
+	case "UNKOWN_212":
+		return Parameter_UNKOWN_212, true
+	case "UNKOWN_213":
+		return Parameter_UNKOWN_213, true
+	case "UNKOWN_214":
+		return Parameter_UNKOWN_214, true
+	case "UNKOWN_215":
+		return Parameter_UNKOWN_215, true
+	case "UNKOWN_216":
+		return Parameter_UNKOWN_216, true
+	case "UNKOWN_217":
+		return Parameter_UNKOWN_217, true
+	case "UNKOWN_218":
+		return Parameter_UNKOWN_218, true
+	case "UNKOWN_219":
+		return Parameter_UNKOWN_219, true
+	case "UNKOWN_220":
+		return Parameter_UNKOWN_220, true
+	case "UNKOWN_221":
+		return Parameter_UNKOWN_221, true
+	case "UNKOWN_222":
+		return Parameter_UNKOWN_222, true
+	case "UNKOWN_223":
+		return Parameter_UNKOWN_223, true
+	case "UNKOWN_224":
+		return Parameter_UNKOWN_224, true
+	case "UNKOWN_225":
+		return Parameter_UNKOWN_225, true
+	case "UNKOWN_226":
+		return Parameter_UNKOWN_226, true
+	case "UNKOWN_227":
+		return Parameter_UNKOWN_227, true
+	case "UNKOWN_228":
+		return Parameter_UNKOWN_228, true
+	case "UNKOWN_229":
+		return Parameter_UNKOWN_229, true
+	case "UNKOWN_230":
+		return Parameter_UNKOWN_230, true
+	case "UNKOWN_231":
+		return Parameter_UNKOWN_231, true
+	case "UNKOWN_232":
+		return Parameter_UNKOWN_232, true
+	case "UNKOWN_233":
+		return Parameter_UNKOWN_233, true
+	case "UNKOWN_234":
+		return Parameter_UNKOWN_234, true
+	case "CUSTOM_MANUFACTURER_1":
+		return Parameter_CUSTOM_MANUFACTURER_1, true
+	case "CUSTOM_MANUFACTURER_2":
+		return Parameter_CUSTOM_MANUFACTURER_2, true
+	case "CUSTOM_MANUFACTURER_3":
+		return Parameter_CUSTOM_MANUFACTURER_3, true
+	case "CUSTOM_MANUFACTURER_4":
+		return Parameter_CUSTOM_MANUFACTURER_4, true
+	case "CUSTOM_MANUFACTURER_5":
+		return Parameter_CUSTOM_MANUFACTURER_5, true
+	case "CUSTOM_MANUFACTURER_6":
+		return Parameter_CUSTOM_MANUFACTURER_6, true
+	case "CUSTOM_MANUFACTURER_7":
+		return Parameter_CUSTOM_MANUFACTURER_7, true
+	case "CUSTOM_MANUFACTURER_8":
+		return Parameter_CUSTOM_MANUFACTURER_8, true
+	case "SERIAL_NUMBER_1":
+		return Parameter_SERIAL_NUMBER_1, true
+	case "SERIAL_NUMBER_2":
+		return Parameter_SERIAL_NUMBER_2, true
+	case "SERIAL_NUMBER_3":
+		return Parameter_SERIAL_NUMBER_3, true
+	case "SERIAL_NUMBER_4":
+		return Parameter_SERIAL_NUMBER_4, true
+	case "CUSTOM_TYPE_1":
+		return Parameter_CUSTOM_TYPE_1, true
+	case "CUSTOM_TYPE_2":
+		return Parameter_CUSTOM_TYPE_2, true
+	case "CUSTOM_TYPE_3":
+		return Parameter_CUSTOM_TYPE_3, true
+	case "CUSTOM_TYPE_4":
+		return Parameter_CUSTOM_TYPE_4, true
+	case "CUSTOM_TYPE_5":
+		return Parameter_CUSTOM_TYPE_5, true
+	case "CUSTOM_TYPE_6":
+		return Parameter_CUSTOM_TYPE_6, true
+	case "CUSTOM_TYPE_7":
+		return Parameter_CUSTOM_TYPE_7, true
+	case "CUSTOM_TYPE_8":
+		return Parameter_CUSTOM_TYPE_8, true
+	case "UNKOWN_255":
+		return Parameter_UNKOWN_255, true
+	}
+	return 0, false
+}
+
+func ParameterKnows(value uint8) bool {
+	for _, typeValue := range ParameterValues {
+		if uint8(typeValue) == value {
+			return true
+		}
+	}
+	return false
+}
+
+func CastParameter(structType interface{}) Parameter {
+	castFunc := func(typ interface{}) Parameter {
+		if sParameter, ok := typ.(Parameter); ok {
+			return sParameter
+		}
+		return 0
+	}
+	return castFunc(structType)
+}
+
+func (m Parameter) GetLengthInBits() uint16 {
+	return 8
+}
+
+func (m Parameter) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func ParameterParse(readBuffer utils.ReadBuffer) (Parameter, error) {
+	val, err := readBuffer.ReadUint8("Parameter", 8)
+	if err != nil {
+		return 0, errors.Wrap(err, "error reading Parameter")
+	}
+	if enum, ok := ParameterByValue(val); !ok {
+		log.Debug().Msgf("no value %x found for RequestType", val)
+		return Parameter(val), nil
+	} else {
+		return enum, nil
+	}
+}
+
+func (e Parameter) Serialize(writeBuffer utils.WriteBuffer) error {
+	return writeBuffer.WriteUint8("Parameter", 8, uint8(e), utils.WithAdditionalStringRepresentation(e.PLC4XEnumName()))
+}
+
+// PLC4XEnumName returns the name that is used in code to identify this enum
+func (e Parameter) PLC4XEnumName() string {
+	switch e {
+	case Parameter_UNKNOWN_01:
+		return "UNKNOWN_01"
+	case Parameter_UNKNOWN_02:
+		return "UNKNOWN_02"
+	case Parameter_UNKNOWN_03:
+		return "UNKNOWN_03"
+	case Parameter_UNKNOWN_04:
+		return "UNKNOWN_04"
+	case Parameter_UNKNOWN_05:
+		return "UNKNOWN_05"
+	case Parameter_UNKNOWN_06:
+		return "UNKNOWN_06"
+	case Parameter_UNKNOWN_07:
+		return "UNKNOWN_07"
+	case Parameter_UNKNOWN_08:
+		return "UNKNOWN_08"
+	case Parameter_UNKNOWN_09:
+		return "UNKNOWN_09"
+	case Parameter_UNKNOWN_10:
+		return "UNKNOWN_10"
+	case Parameter_UNKNOWN_11:
+		return "UNKNOWN_11"
+	case Parameter_UNKNOWN_12:
+		return "UNKNOWN_12"
+	case Parameter_UNKNOWN_13:
+		return "UNKNOWN_13"
+	case Parameter_UNKNOWN_14:
+		return "UNKNOWN_14"
+	case Parameter_UNKNOWN_15:
+		return "UNKNOWN_15"
+	case Parameter_UNKNOWN_16:
+		return "UNKNOWN_16"
+	case Parameter_UNKNOWN_17:
+		return "UNKNOWN_17"
+	case Parameter_UNKNOWN_18:
+		return "UNKNOWN_18"
+	case Parameter_UNKNOWN_19:
+		return "UNKNOWN_19"
+	case Parameter_UNKNOWN_20:
+		return "UNKNOWN_20"
+	case Parameter_UNKNOWN_21:
+		return "UNKNOWN_21"
+	case Parameter_UNKNOWN_22:
+		return "UNKNOWN_22"
+	case Parameter_UNKNOWN_23:
+		return "UNKNOWN_23"
+	case Parameter_UNKNOWN_24:
+		return "UNKNOWN_24"
+	case Parameter_UNKNOWN_25:
+		return "UNKNOWN_25"
+	case Parameter_UNKNOWN_26:
+		return "UNKNOWN_26"
+	case Parameter_UNKNOWN_27:
+		return "UNKNOWN_27"
+	case Parameter_UNKNOWN_28:
+		return "UNKNOWN_28"
+	case Parameter_UNKNOWN_29:
+		return "UNKNOWN_29"
+	case Parameter_UNKNOWN_30:
+		return "UNKNOWN_30"
+	case Parameter_UNKNOWN_31:
+		return "UNKNOWN_31"
+	case Parameter_UNKNOWN_32:
+		return "UNKNOWN_32"
+	case Parameter_UNKNOWN_33:
+		return "UNKNOWN_33"
+	case Parameter_APPLICATION_ADDRESS_1:
+		return "APPLICATION_ADDRESS_1"
+	case Parameter_APPLICATION_ADDRESS_2:
+		return "APPLICATION_ADDRESS_2"
+	case Parameter_UNKOWN_35:
+		return "UNKOWN_35"
+	case Parameter_UNKOWN_36:
+		return "UNKOWN_36"
+	case Parameter_UNKOWN_37:
+		return "UNKOWN_37"
+	case Parameter_UNKOWN_38:
+		return "UNKOWN_38"
+	case Parameter_UNKOWN_39:
+		return "UNKOWN_39"
+	case Parameter_UNKOWN_40:
+		return "UNKOWN_40"
+	case Parameter_UNKOWN_41:
+		return "UNKOWN_41"
+	case Parameter_UNKOWN_42:
+		return "UNKOWN_42"
+	case Parameter_UNKOWN_43:
+		return "UNKOWN_43"
+	case Parameter_UNKOWN_44:
+		return "UNKOWN_44"
+	case Parameter_UNKOWN_45:
+		return "UNKOWN_45"
+	case Parameter_UNKOWN_46:
+		return "UNKOWN_46"
+	case Parameter_UNKOWN_47:
+		return "UNKOWN_47"
+	case Parameter_INTERFACE_OPTIONS_1:
+		return "INTERFACE_OPTIONS_1"
+	case Parameter_UNKOWN_49:
+		return "UNKOWN_49"
+	case Parameter_UNKOWN_50:
+		return "UNKOWN_50"
+	case Parameter_UNKOWN_51:
+		return "UNKOWN_51"
+	case Parameter_UNKOWN_52:
+		return "UNKOWN_52"
+	case Parameter_UNKOWN_53:
+		return "UNKOWN_53"
+	case Parameter_UNKOWN_54:
+		return "UNKOWN_54"
+	case Parameter_UNKOWN_55:
+		return "UNKOWN_55"
+	case Parameter_UNKOWN_56:
+		return "UNKOWN_56"
+	case Parameter_UNKOWN_57:
+		return "UNKOWN_57"
+	case Parameter_UNKOWN_58:
+		return "UNKOWN_58"
+	case Parameter_UNKOWN_59:
+		return "UNKOWN_59"
+	case Parameter_UNKOWN_60:
+		return "UNKOWN_60"
+	case Parameter_BAUD_RATE_SELECTOR:
+		return "BAUD_RATE_SELECTOR"
+	case Parameter_INTERFACE_OPTIONS_2:
+		return "INTERFACE_OPTIONS_2"
+	case Parameter_UNKOWN_63:
+		return "UNKOWN_63"
+	case Parameter_UNKOWN_64:
+		return "UNKOWN_64"
+	case Parameter_INTERFACE_OPTIONS_1_POWER_UP_SETTINGS:
+		return "INTERFACE_OPTIONS_1_POWER_UP_SETTINGS"
+	case Parameter_INTERFACE_OPTIONS_3:
+		return "INTERFACE_OPTIONS_3"
+	case Parameter_UNKOWN_67:
+		return "UNKOWN_67"
+	case Parameter_UNKOWN_68:
+		return "UNKOWN_68"
+	case Parameter_UNKOWN_69:
+		return "UNKOWN_69"
+	case Parameter_UNKOWN_70:
+		return "UNKOWN_70"
+	case Parameter_UNKOWN_71:
+		return "UNKOWN_71"
+	case Parameter_UNKOWN_72:
+		return "UNKOWN_72"
+	case Parameter_UNKOWN_73:
+		return "UNKOWN_73"
+	case Parameter_UNKOWN_74:
+		return "UNKOWN_74"
+	case Parameter_UNKOWN_75:
+		return "UNKOWN_75"
+	case Parameter_UNKOWN_76:
+		return "UNKOWN_76"
+	case Parameter_UNKOWN_77:
+		return "UNKOWN_77"
+	case Parameter_UNKOWN_78:
+		return "UNKOWN_78"
+	case Parameter_UNKOWN_79:
+		return "UNKOWN_79"
+	case Parameter_UNKOWN_80:
+		return "UNKOWN_80"
+	case Parameter_UNKOWN_81:
+		return "UNKOWN_81"
+	case Parameter_UNKOWN_82:
+		return "UNKOWN_82"
+	case Parameter_UNKOWN_83:
+		return "UNKOWN_83"
+	case Parameter_UNKOWN_84:
+		return "UNKOWN_84"
+	case Parameter_UNKOWN_85:
+		return "UNKOWN_85"
+	case Parameter_UNKOWN_86:
+		return "UNKOWN_86"
+	case Parameter_UNKOWN_87:
+		return "UNKOWN_87"
+	case Parameter_UNKOWN_88:
+		return "UNKOWN_88"
+	case Parameter_UNKOWN_89:
+		return "UNKOWN_89"
+	case Parameter_UNKOWN_90:
+		return "UNKOWN_90"
+	case Parameter_UNKOWN_91:
+		return "UNKOWN_91"
+	case Parameter_UNKOWN_92:
+		return "UNKOWN_92"
+	case Parameter_UNKOWN_93:
+		return "UNKOWN_93"
+	case Parameter_UNKOWN_94:
+		return "UNKOWN_94"
+	case Parameter_UNKOWN_95:
+		return "UNKOWN_95"
+	case Parameter_UNKOWN_96:
+		return "UNKOWN_96"
+	case Parameter_UNKOWN_97:
+		return "UNKOWN_97"
+	case Parameter_UNKOWN_98:
+		return "UNKOWN_98"
+	case Parameter_UNKOWN_99:
+		return "UNKOWN_99"
+	case Parameter_UNKOWN_100:
+		return "UNKOWN_100"
+	case Parameter_UNKOWN_101:
+		return "UNKOWN_101"
+	case Parameter_UNKOWN_102:
+		return "UNKOWN_102"
+	case Parameter_UNKOWN_103:
+		return "UNKOWN_103"
+	case Parameter_UNKOWN_104:
+		return "UNKOWN_104"
+	case Parameter_UNKOWN_105:
+		return "UNKOWN_105"
+	case Parameter_UNKOWN_106:
+		return "UNKOWN_106"
+	case Parameter_UNKOWN_107:
+		return "UNKOWN_107"
+	case Parameter_UNKOWN_108:
+		return "UNKOWN_108"
+	case Parameter_UNKOWN_109:
+		return "UNKOWN_109"
+	case Parameter_UNKOWN_110:
+		return "UNKOWN_110"
+	case Parameter_UNKOWN_111:
+		return "UNKOWN_111"
+	case Parameter_UNKOWN_112:
+		return "UNKOWN_112"
+	case Parameter_UNKOWN_113:
+		return "UNKOWN_113"
+	case Parameter_UNKOWN_114:
+		return "UNKOWN_114"
+	case Parameter_UNKOWN_115:
+		return "UNKOWN_115"
+	case Parameter_UNKOWN_116:
+		return "UNKOWN_116"
+	case Parameter_UNKOWN_117:
+		return "UNKOWN_117"
+	case Parameter_UNKOWN_118:
+		return "UNKOWN_118"
+	case Parameter_UNKOWN_119:
+		return "UNKOWN_119"
+	case Parameter_UNKOWN_120:
+		return "UNKOWN_120"
+	case Parameter_UNKOWN_121:
+		return "UNKOWN_121"
+	case Parameter_UNKOWN_122:
+		return "UNKOWN_122"
+	case Parameter_UNKOWN_123:
+		return "UNKOWN_123"
+	case Parameter_UNKOWN_124:
+		return "UNKOWN_124"
+	case Parameter_UNKOWN_125:
+		return "UNKOWN_125"
+	case Parameter_UNKOWN_126:
+		return "UNKOWN_126"
+	case Parameter_UNKOWN_127:
+		return "UNKOWN_127"
+	case Parameter_UNKOWN_128:
+		return "UNKOWN_128"
+	case Parameter_UNKOWN_129:
+		return "UNKOWN_129"
+	case Parameter_UNKOWN_130:
+		return "UNKOWN_130"
+	case Parameter_UNKOWN_131:
+		return "UNKOWN_131"
+	case Parameter_UNKOWN_132:
+		return "UNKOWN_132"
+	case Parameter_UNKOWN_133:
+		return "UNKOWN_133"
+	case Parameter_UNKOWN_134:
+		return "UNKOWN_134"
+	case Parameter_UNKOWN_135:
+		return "UNKOWN_135"
+	case Parameter_UNKOWN_136:
+		return "UNKOWN_136"
+	case Parameter_UNKOWN_137:
+		return "UNKOWN_137"
+	case Parameter_UNKOWN_138:
+		return "UNKOWN_138"
+	case Parameter_UNKOWN_139:
+		return "UNKOWN_139"
+	case Parameter_UNKOWN_140:
+		return "UNKOWN_140"
+	case Parameter_UNKOWN_141:
+		return "UNKOWN_141"
+	case Parameter_UNKOWN_142:
+		return "UNKOWN_142"
+	case Parameter_UNKOWN_143:
+		return "UNKOWN_143"
+	case Parameter_UNKOWN_144:
+		return "UNKOWN_144"
+	case Parameter_UNKOWN_145:
+		return "UNKOWN_145"
+	case Parameter_UNKOWN_146:
+		return "UNKOWN_146"
+	case Parameter_UNKOWN_147:
+		return "UNKOWN_147"
+	case Parameter_UNKOWN_148:
+		return "UNKOWN_148"
+	case Parameter_UNKOWN_149:
+		return "UNKOWN_149"
+	case Parameter_UNKOWN_150:
+		return "UNKOWN_150"
+	case Parameter_UNKOWN_151:
+		return "UNKOWN_151"
+	case Parameter_UNKOWN_152:
+		return "UNKOWN_152"
+	case Parameter_UNKOWN_153:
+		return "UNKOWN_153"
+	case Parameter_UNKOWN_154:
+		return "UNKOWN_154"
+	case Parameter_UNKOWN_155:
+		return "UNKOWN_155"
+	case Parameter_UNKOWN_156:
+		return "UNKOWN_156"
+	case Parameter_UNKOWN_157:
+		return "UNKOWN_157"
+	case Parameter_UNKOWN_158:
+		return "UNKOWN_158"
+	case Parameter_UNKOWN_159:
+		return "UNKOWN_159"
+	case Parameter_UNKOWN_160:
+		return "UNKOWN_160"
+	case Parameter_UNKOWN_161:
+		return "UNKOWN_161"
+	case Parameter_UNKOWN_162:
+		return "UNKOWN_162"
+	case Parameter_UNKOWN_163:
+		return "UNKOWN_163"
+	case Parameter_UNKOWN_164:
+		return "UNKOWN_164"
+	case Parameter_UNKOWN_165:
+		return "UNKOWN_165"
+	case Parameter_UNKOWN_166:
+		return "UNKOWN_166"
+	case Parameter_UNKOWN_167:
+		return "UNKOWN_167"
+	case Parameter_UNKOWN_168:
+		return "UNKOWN_168"
+	case Parameter_UNKOWN_169:
+		return "UNKOWN_169"
+	case Parameter_UNKOWN_170:
+		return "UNKOWN_170"
+	case Parameter_UNKOWN_171:
+		return "UNKOWN_171"
+	case Parameter_UNKOWN_172:
+		return "UNKOWN_172"
+	case Parameter_UNKOWN_173:
+		return "UNKOWN_173"
+	case Parameter_UNKOWN_174:
+		return "UNKOWN_174"
+	case Parameter_UNKOWN_175:
+		return "UNKOWN_175"
+	case Parameter_UNKOWN_176:
+		return "UNKOWN_176"
+	case Parameter_UNKOWN_177:
+		return "UNKOWN_177"
+	case Parameter_UNKOWN_178:
+		return "UNKOWN_178"
+	case Parameter_UNKOWN_179:
+		return "UNKOWN_179"
+	case Parameter_UNKOWN_180:
+		return "UNKOWN_180"
+	case Parameter_UNKOWN_181:
+		return "UNKOWN_181"
+	case Parameter_UNKOWN_182:
+		return "UNKOWN_182"
+	case Parameter_UNKOWN_183:
+		return "UNKOWN_183"
+	case Parameter_UNKOWN_184:
+		return "UNKOWN_184"
+	case Parameter_UNKOWN_185:
+		return "UNKOWN_185"
+	case Parameter_UNKOWN_186:
+		return "UNKOWN_186"
+	case Parameter_UNKOWN_187:
+		return "UNKOWN_187"
+	case Parameter_UNKOWN_188:
+		return "UNKOWN_188"
+	case Parameter_UNKOWN_189:
+		return "UNKOWN_189"
+	case Parameter_UNKOWN_190:
+		return "UNKOWN_190"
+	case Parameter_UNKOWN_191:
+		return "UNKOWN_191"
+	case Parameter_UNKOWN_192:
+		return "UNKOWN_192"
+	case Parameter_UNKOWN_193:
+		return "UNKOWN_193"
+	case Parameter_UNKOWN_194:
+		return "UNKOWN_194"
+	case Parameter_UNKOWN_195:
+		return "UNKOWN_195"
+	case Parameter_UNKOWN_196:
+		return "UNKOWN_196"
+	case Parameter_UNKOWN_197:
+		return "UNKOWN_197"
+	case Parameter_UNKOWN_198:
+		return "UNKOWN_198"
+	case Parameter_UNKOWN_199:
+		return "UNKOWN_199"
+	case Parameter_UNKOWN_200:
+		return "UNKOWN_200"
+	case Parameter_UNKOWN_201:
+		return "UNKOWN_201"
+	case Parameter_UNKOWN_202:
+		return "UNKOWN_202"
+	case Parameter_UNKOWN_203:
+		return "UNKOWN_203"
+	case Parameter_UNKOWN_204:
+		return "UNKOWN_204"
+	case Parameter_UNKOWN_205:
+		return "UNKOWN_205"
+	case Parameter_UNKOWN_206:
+		return "UNKOWN_206"
+	case Parameter_UNKOWN_207:
+		return "UNKOWN_207"
+	case Parameter_UNKOWN_208:
+		return "UNKOWN_208"
+	case Parameter_UNKOWN_209:
+		return "UNKOWN_209"
+	case Parameter_UNKOWN_210:
+		return "UNKOWN_210"
+	case Parameter_UNKOWN_211:
+		return "UNKOWN_211"
+	case Parameter_UNKOWN_212:
+		return "UNKOWN_212"
+	case Parameter_UNKOWN_213:
+		return "UNKOWN_213"
+	case Parameter_UNKOWN_214:
+		return "UNKOWN_214"
+	case Parameter_UNKOWN_215:
+		return "UNKOWN_215"
+	case Parameter_UNKOWN_216:
+		return "UNKOWN_216"
+	case Parameter_UNKOWN_217:
+		return "UNKOWN_217"
+	case Parameter_UNKOWN_218:
+		return "UNKOWN_218"
+	case Parameter_UNKOWN_219:
+		return "UNKOWN_219"
+	case Parameter_UNKOWN_220:
+		return "UNKOWN_220"
+	case Parameter_UNKOWN_221:
+		return "UNKOWN_221"
+	case Parameter_UNKOWN_222:
+		return "UNKOWN_222"
+	case Parameter_UNKOWN_223:
+		return "UNKOWN_223"
+	case Parameter_UNKOWN_224:
+		return "UNKOWN_224"
+	case Parameter_UNKOWN_225:
+		return "UNKOWN_225"
+	case Parameter_UNKOWN_226:
+		return "UNKOWN_226"
+	case Parameter_UNKOWN_227:
+		return "UNKOWN_227"
+	case Parameter_UNKOWN_228:
+		return "UNKOWN_228"
+	case Parameter_UNKOWN_229:
+		return "UNKOWN_229"
+	case Parameter_UNKOWN_230:
+		return "UNKOWN_230"
+	case Parameter_UNKOWN_231:
+		return "UNKOWN_231"
+	case Parameter_UNKOWN_232:
+		return "UNKOWN_232"
+	case Parameter_UNKOWN_233:
+		return "UNKOWN_233"
+	case Parameter_UNKOWN_234:
+		return "UNKOWN_234"
+	case Parameter_CUSTOM_MANUFACTURER_1:
+		return "CUSTOM_MANUFACTURER_1"
+	case Parameter_CUSTOM_MANUFACTURER_2:
+		return "CUSTOM_MANUFACTURER_2"
+	case Parameter_CUSTOM_MANUFACTURER_3:
+		return "CUSTOM_MANUFACTURER_3"
+	case Parameter_CUSTOM_MANUFACTURER_4:
+		return "CUSTOM_MANUFACTURER_4"
+	case Parameter_CUSTOM_MANUFACTURER_5:
+		return "CUSTOM_MANUFACTURER_5"
+	case Parameter_CUSTOM_MANUFACTURER_6:
+		return "CUSTOM_MANUFACTURER_6"
+	case Parameter_CUSTOM_MANUFACTURER_7:
+		return "CUSTOM_MANUFACTURER_7"
+	case Parameter_CUSTOM_MANUFACTURER_8:
+		return "CUSTOM_MANUFACTURER_8"
+	case Parameter_SERIAL_NUMBER_1:
+		return "SERIAL_NUMBER_1"
+	case Parameter_SERIAL_NUMBER_2:
+		return "SERIAL_NUMBER_2"
+	case Parameter_SERIAL_NUMBER_3:
+		return "SERIAL_NUMBER_3"
+	case Parameter_SERIAL_NUMBER_4:
+		return "SERIAL_NUMBER_4"
+	case Parameter_CUSTOM_TYPE_1:
+		return "CUSTOM_TYPE_1"
+	case Parameter_CUSTOM_TYPE_2:
+		return "CUSTOM_TYPE_2"
+	case Parameter_CUSTOM_TYPE_3:
+		return "CUSTOM_TYPE_3"
+	case Parameter_CUSTOM_TYPE_4:
+		return "CUSTOM_TYPE_4"
+	case Parameter_CUSTOM_TYPE_5:
+		return "CUSTOM_TYPE_5"
+	case Parameter_CUSTOM_TYPE_6:
+		return "CUSTOM_TYPE_6"
+	case Parameter_CUSTOM_TYPE_7:
+		return "CUSTOM_TYPE_7"
+	case Parameter_CUSTOM_TYPE_8:
+		return "CUSTOM_TYPE_8"
+	case Parameter_UNKOWN_255:
+		return "UNKOWN_255"
+	}
+	return ""
+}
+
+func (e Parameter) String() string {
+	return e.PLC4XEnumName()
+}
diff --git a/plc4go/protocols/cbus/readwrite/model/ProtectionLevel.go b/plc4go/protocols/cbus/readwrite/model/ProtectionLevel.go
new file mode 100644
index 000000000..44a689faa
--- /dev/null
+++ b/plc4go/protocols/cbus/readwrite/model/ProtectionLevel.go
@@ -0,0 +1,179 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
+	"github.com/rs/zerolog/log"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// ProtectionLevel is an enum
+type ProtectionLevel uint8
+
+type IProtectionLevel interface {
+	Description() string
+	Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+const (
+	ProtectionLevel_UNLOCK_REQUIRED ProtectionLevel = 0
+	ProtectionLevel_NO_WRITE_ACCESS ProtectionLevel = 1
+	ProtectionLevel_NONE            ProtectionLevel = 2
+	ProtectionLevel_READ_ONLY       ProtectionLevel = 3
+)
+
+var ProtectionLevelValues []ProtectionLevel
+
+func init() {
+	_ = errors.New
+	ProtectionLevelValues = []ProtectionLevel{
+		ProtectionLevel_UNLOCK_REQUIRED,
+		ProtectionLevel_NO_WRITE_ACCESS,
+		ProtectionLevel_NONE,
+		ProtectionLevel_READ_ONLY,
+	}
+}
+
+func (e ProtectionLevel) Description() string {
+	switch e {
+	case 0:
+		{ /* '0' */
+			return "Unlock required from C-BUS port"
+		}
+	case 1:
+		{ /* '1' */
+			return "No write access via C-BUS port"
+		}
+	case 2:
+		{ /* '2' */
+			return "None"
+		}
+	case 3:
+		{ /* '3' */
+			return "Read only"
+		}
+	default:
+		{
+			return ""
+		}
+	}
+}
+
+func ProtectionLevelFirstEnumForFieldDescription(value string) (ProtectionLevel, error) {
+	for _, sizeValue := range ProtectionLevelValues {
+		if sizeValue.Description() == value {
+			return sizeValue, nil
+		}
+	}
+	return 0, errors.Errorf("enum for %v describing Description not found", value)
+}
+func ProtectionLevelByValue(value uint8) (enum ProtectionLevel, ok bool) {
+	switch value {
+	case 0:
+		return ProtectionLevel_UNLOCK_REQUIRED, true
+	case 1:
+		return ProtectionLevel_NO_WRITE_ACCESS, true
+	case 2:
+		return ProtectionLevel_NONE, true
+	case 3:
+		return ProtectionLevel_READ_ONLY, true
+	}
+	return 0, false
+}
+
+func ProtectionLevelByName(value string) (enum ProtectionLevel, ok bool) {
+	switch value {
+	case "UNLOCK_REQUIRED":
+		return ProtectionLevel_UNLOCK_REQUIRED, true
+	case "NO_WRITE_ACCESS":
+		return ProtectionLevel_NO_WRITE_ACCESS, true
+	case "NONE":
+		return ProtectionLevel_NONE, true
+	case "READ_ONLY":
+		return ProtectionLevel_READ_ONLY, true
+	}
+	return 0, false
+}
+
+func ProtectionLevelKnows(value uint8) bool {
+	for _, typeValue := range ProtectionLevelValues {
+		if uint8(typeValue) == value {
+			return true
+		}
+	}
+	return false
+}
+
+func CastProtectionLevel(structType interface{}) ProtectionLevel {
+	castFunc := func(typ interface{}) ProtectionLevel {
+		if sProtectionLevel, ok := typ.(ProtectionLevel); ok {
+			return sProtectionLevel
+		}
+		return 0
+	}
+	return castFunc(structType)
+}
+
+func (m ProtectionLevel) GetLengthInBits() uint16 {
+	return 4
+}
+
+func (m ProtectionLevel) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func ProtectionLevelParse(readBuffer utils.ReadBuffer) (ProtectionLevel, error) {
+	val, err := readBuffer.ReadUint8("ProtectionLevel", 4)
+	if err != nil {
+		return 0, errors.Wrap(err, "error reading ProtectionLevel")
+	}
+	if enum, ok := ProtectionLevelByValue(val); !ok {
+		log.Debug().Msgf("no value %x found for RequestType", val)
+		return ProtectionLevel(val), nil
+	} else {
+		return enum, nil
+	}
+}
+
+func (e ProtectionLevel) Serialize(writeBuffer utils.WriteBuffer) error {
+	return writeBuffer.WriteUint8("ProtectionLevel", 4, uint8(e), utils.WithAdditionalStringRepresentation(e.PLC4XEnumName()))
+}
+
+// PLC4XEnumName returns the name that is used in code to identify this enum
+func (e ProtectionLevel) PLC4XEnumName() string {
+	switch e {
+	case ProtectionLevel_UNLOCK_REQUIRED:
+		return "UNLOCK_REQUIRED"
+	case ProtectionLevel_NO_WRITE_ACCESS:
+		return "NO_WRITE_ACCESS"
+	case ProtectionLevel_NONE:
+		return "NONE"
+	case ProtectionLevel_READ_ONLY:
+		return "READ_ONLY"
+	}
+	return ""
+}
+
+func (e ProtectionLevel) String() string {
+	return e.PLC4XEnumName()
+}
diff --git a/plc4j/drivers/c-bus/src/test/java/org/apache/plc4x/java/cbus/RandomPackagesTest.java b/plc4j/drivers/c-bus/src/test/java/org/apache/plc4x/java/cbus/RandomPackagesTest.java
index 79dc2b0f6..fbd232b4d 100644
--- a/plc4j/drivers/c-bus/src/test/java/org/apache/plc4x/java/cbus/RandomPackagesTest.java
+++ b/plc4j/drivers/c-bus/src/test/java/org/apache/plc4x/java/cbus/RandomPackagesTest.java
@@ -731,5 +731,47 @@ public class RandomPackagesTest {
             byte[] bytes1 = writeBuffer.getBytes();
             assertThat(bytes1).isEqualTo(bytes);
         }
+
+        @Disabled
+        @Test
+        void strangeNotYetParsableCommand() throws Exception {
+            byte[] bytes = "A3309755s\r".getBytes(StandardCharsets.UTF_8);
+            ReadBufferByteBased readBufferByteBased = new ReadBufferByteBased(bytes);
+            cBusOptions = new CBusOptions(false, false, false, false, false, false, false, false, true);
+            CBusMessage msg = CBusMessage.staticParse(readBufferByteBased, false, requestContext, cBusOptions, bytes.length);
+            assertThat(msg).isNotNull();
+            System.out.println(msg);
+            CBusMessageToClient messageToClient = (CBusMessageToClient) msg;
+            ReplyOrConfirmationConfirmation confirmationReply = (ReplyOrConfirmationConfirmation) messageToClient.getReply();
+            ReplyOrConfirmationReply normalReply = (ReplyOrConfirmationReply) confirmationReply.getEmbeddedReply();
+            ReplyCALReply calReplyReply = (ReplyCALReply) normalReply.getReply();
+            System.out.println(calReplyReply.getCalReply());
+
+            WriteBufferByteBased writeBuffer = new WriteBufferByteBased(bytes.length);
+            msg.serialize(writeBuffer);
+            byte[] bytes1 = writeBuffer.getBytes();
+            assertThat(bytes1).isEqualTo(bytes);
+        }
+
+        @Test
+        void strangeNotYetParsableCommandResponse() throws Exception {
+            byte[] bytes = "s.860202003230977D\r\n".getBytes(StandardCharsets.UTF_8);
+            ReadBufferByteBased readBufferByteBased = new ReadBufferByteBased(bytes);
+            requestContext = new RequestContext(true, false, false);
+            cBusOptions = new CBusOptions(false, false, false, false, false, false, false, false, true);
+            CBusMessage msg = CBusMessage.staticParse(readBufferByteBased, true, requestContext, cBusOptions, bytes.length);
+            assertThat(msg).isNotNull();
+            System.out.println(msg);
+            CBusMessageToClient messageToClient = (CBusMessageToClient) msg;
+            ReplyOrConfirmationConfirmation confirmationReply = (ReplyOrConfirmationConfirmation) messageToClient.getReply();
+            ReplyOrConfirmationReply normalReply = (ReplyOrConfirmationReply) confirmationReply.getEmbeddedReply();
+            ReplyCALReply calReplyReply = (ReplyCALReply) normalReply.getReply();
+            System.out.println(calReplyReply.getCalReply());
+
+            WriteBufferByteBased writeBuffer = new WriteBufferByteBased(bytes.length);
+            msg.serialize(writeBuffer);
+            byte[] bytes1 = writeBuffer.getBytes();
+            assertThat(bytes1).isEqualTo(bytes);
+        }
     }
 }
diff --git a/protocols/c-bus/src/main/resources/protocols/cbus/c-bus.mspec b/protocols/c-bus/src/main/resources/protocols/cbus/c-bus.mspec
index 21df37684..369f0f27b 100644
--- a/protocols/c-bus/src/main/resources/protocols/cbus/c-bus.mspec
+++ b/protocols/c-bus/src/main/resources/protocols/cbus/c-bus.mspec
@@ -132,9 +132,9 @@
     [virtual DestinationAddressType destinationAddressType 'header.destinationAddressType']
     [typeSwitch destinationAddressType, isDeviceManagement
         [*, 'true' *DeviceManagement
-            [simple     uint 8  parameterNumber                         ]
-            [const      byte    delimiter       0x0                     ]
-            [simple     byte    parameterValue                          ]
+            [simple     Parameter paramNo                                 ]
+            [const      byte      delimiter       0x0                     ]
+            [simple     byte      parameterValue                          ]
         ]
         ['PointToPointToMultiPoint' *PointToPointToMultiPoint
             [simple CBusPointToPointToMultipointCommand('cBusOptions') command]
@@ -560,10 +560,10 @@
     [peek    byte     firstByte           ]
     [typeSwitch firstByte
         ['0xA3' *SetParameter
-            [const      uint 8  magicId         0xA3                    ]
-            [simple     uint 8  parameterNumber                         ]
-            [const      byte    delimiter       0x0                     ]
-            [simple     byte    parameterValue                          ]
+            [const      uint 8    magicId         0xA3                    ]
+            [simple     Parameter paramNo                                 ]
+            [const      byte      delimiter       0x0                     ]
+            [simple     byte      parameterValue                          ]
         ]
         [* *Value
             [simple   CALData('null') calData]
@@ -581,15 +581,15 @@
         ['RESET'            *Reset // Request
         ]
         ['RECALL'           *Recall // Request
-            [simple uint 8 paramNo                                                          ]
-            [simple uint 8 count                                                            ]
+            [simple Parameter paramNo                                                       ]
+            [simple uint 8    code                                                          ]
         ]
         ['IDENTIFY'         *Identify // Request
             [simple Attribute attribute                                                     ]
         ]
         ['GET_STATUS'       *GetStatus // Request
-            [simple uint 8 paramNo                                                          ]
-            [simple uint 8 count                                                            ]
+            [simple Parameter paramNo                                                       ]
+            [simple uint 8    code                                                          ]
         ]
         ['REPLY', 'true'    *IdentifyReply(CALCommandTypeContainer commandTypeContainer) // Reply
             [simple Attribute attribute                                                     ]
@@ -600,8 +600,8 @@
             [array  byte   data        count 'commandTypeContainer.numBytes'                ]
         ]
         ['ACKNOWLEDGE'      *Acknowledge // Reply
-            [simple uint 8 paramNo                                                          ]
-            [simple uint 8 code                                                             ]
+            [simple Parameter paramNo                                                       ]
+            [simple uint 8    code                                                          ]
         ]
         ['STATUS'           *Status(CALCommandTypeContainer commandTypeContainer) // Reply
             [simple ApplicationIdContainer application                                                 ]
@@ -619,6 +619,272 @@
     [optional CALData('requestContext') additionalData]
 ]
 
+[enum uint 8 Parameter(vstring group, vstring parameterDescription, vstring form, bit isVolatile, ProtectionLevel protectionLevel)
+    ['0x00' UNKNOWN_01                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x01' UNKNOWN_02                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x02' UNKNOWN_03                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x03' UNKNOWN_04                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x04' UNKNOWN_05                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x05' UNKNOWN_06                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x06' UNKNOWN_07                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x07' UNKNOWN_08                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x08' UNKNOWN_09                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x09' UNKNOWN_10                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x0A' UNKNOWN_11                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x0B' UNKNOWN_12                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x0C' UNKNOWN_13                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x0D' UNKNOWN_14                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x0E' UNKNOWN_15                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x0F' UNKNOWN_16                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x10' UNKNOWN_17                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x11' UNKNOWN_18                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x12' UNKNOWN_19                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x13' UNKNOWN_20                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x14' UNKNOWN_21                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x15' UNKNOWN_22                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x16' UNKNOWN_23                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x17' UNKNOWN_24                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x18' UNKNOWN_25                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x19' UNKNOWN_26                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x1A' UNKNOWN_27                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x1B' UNKNOWN_28                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x1C' UNKNOWN_29                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x1D' UNKNOWN_30                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x1E' UNKNOWN_31                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x1F' UNKNOWN_32                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x20' UNKNOWN_33                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x21' APPLICATION_ADDRESS_1                   ['"Mgmt"', '"Application Address 1"',                   '"Byte (Note 1)"',          'false', 'UNLOCK_REQUIRED']]
+    ['0x22' APPLICATION_ADDRESS_2                   ['"Mgmt"', '"Application Address 2"',                   '"Byte (Note 1)"',          'false', 'UNLOCK_REQUIRED']]
+    ['0x23' UNKOWN_35                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x24' UNKOWN_36                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x25' UNKOWN_37                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x26' UNKOWN_38                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x27' UNKOWN_39                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x28' UNKOWN_40                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x29' UNKOWN_41                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x2A' UNKOWN_42                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x2B' UNKOWN_43                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x2C' UNKOWN_44                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x2D' UNKOWN_45                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x2E' UNKOWN_46                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x2F' UNKOWN_47                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x30' INTERFACE_OPTIONS_1                     ['"Unit"', '"Interface options 1"',                     '"8 Bits (Note 2)"',        'true',  'NO_WRITE_ACCESS']]
+    ['0x31' UNKOWN_49                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x32' UNKOWN_50                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x33' UNKOWN_51                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x34' UNKOWN_52                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x35' UNKOWN_53                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x36' UNKOWN_54                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x37' UNKOWN_55                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x38' UNKOWN_56                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x39' UNKOWN_57                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x3A' UNKOWN_58                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x3B' UNKOWN_59                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x3C' UNKOWN_60                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x3D' BAUD_RATE_SELECTOR                      ['"Unit"', '"Baud rate selector"',                      '"Byte (Note 3)"',          'false', 'NO_WRITE_ACCESS']]
+    ['0x3E' INTERFACE_OPTIONS_2                     ['"Unit"', '"Interface options 2"',                     '"Byte (Note 4)"',          'false', 'NONE'           ]]
+    ['0x3F' UNKOWN_63                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x40' UNKOWN_64                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x41' INTERFACE_OPTIONS_1_POWER_UP_SETTINGS   ['"Unit"', '"Interface options 2 power up settings"',   '"8 Bits (Note 5)"',        'false', 'UNLOCK_REQUIRED']]
+    ['0x42' INTERFACE_OPTIONS_3                     ['"Unit"', '"Interface options 3"',                     '"Byte (Note 6)"',          'false', 'UNLOCK_REQUIRED']]
+    ['0x43' UNKOWN_67                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x44' UNKOWN_68                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x45' UNKOWN_69                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x46' UNKOWN_70                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x47' UNKOWN_71                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x48' UNKOWN_72                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x49' UNKOWN_73                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x4A' UNKOWN_74                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x4B' UNKOWN_75                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x4C' UNKOWN_76                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x4D' UNKOWN_77                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x4E' UNKOWN_78                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x4F' UNKOWN_79                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x50' UNKOWN_80                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x51' UNKOWN_81                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x52' UNKOWN_82                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x53' UNKOWN_83                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x54' UNKOWN_84                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x55' UNKOWN_85                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x56' UNKOWN_86                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x57' UNKOWN_87                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x58' UNKOWN_88                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x59' UNKOWN_89                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x5A' UNKOWN_90                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x5B' UNKOWN_91                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x5C' UNKOWN_92                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x5D' UNKOWN_93                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x5E' UNKOWN_94                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x5F' UNKOWN_95                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x60' UNKOWN_96                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x61' UNKOWN_97                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x62' UNKOWN_98                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x63' UNKOWN_99                               ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x64' UNKOWN_100                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x65' UNKOWN_101                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x66' UNKOWN_102                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x67' UNKOWN_103                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x68' UNKOWN_104                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x69' UNKOWN_105                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x6A' UNKOWN_106                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x6B' UNKOWN_107                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x6C' UNKOWN_108                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x6D' UNKOWN_109                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x6E' UNKOWN_110                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x6F' UNKOWN_111                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x70' UNKOWN_112                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x71' UNKOWN_113                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x72' UNKOWN_114                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x73' UNKOWN_115                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x74' UNKOWN_116                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x75' UNKOWN_117                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x76' UNKOWN_118                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x77' UNKOWN_119                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x78' UNKOWN_120                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x79' UNKOWN_121                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x7A' UNKOWN_122                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x7B' UNKOWN_123                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x7C' UNKOWN_124                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x7D' UNKOWN_125                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x7E' UNKOWN_126                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x7F' UNKOWN_127                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x80' UNKOWN_128                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x81' UNKOWN_129                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x82' UNKOWN_130                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x83' UNKOWN_131                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x84' UNKOWN_132                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x85' UNKOWN_133                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x86' UNKOWN_134                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x87' UNKOWN_135                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x88' UNKOWN_136                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x89' UNKOWN_137                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x8A' UNKOWN_138                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x8B' UNKOWN_139                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x8C' UNKOWN_140                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x8D' UNKOWN_141                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x8E' UNKOWN_142                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x8F' UNKOWN_143                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x90' UNKOWN_144                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x91' UNKOWN_145                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x92' UNKOWN_146                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x93' UNKOWN_147                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x94' UNKOWN_148                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x95' UNKOWN_149                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x96' UNKOWN_150                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x97' UNKOWN_151                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x98' UNKOWN_152                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x99' UNKOWN_153                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x9A' UNKOWN_154                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x9B' UNKOWN_155                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x9C' UNKOWN_156                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x9D' UNKOWN_157                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x9E' UNKOWN_158                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0x9F' UNKOWN_159                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xA0' UNKOWN_160                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xA1' UNKOWN_161                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xA2' UNKOWN_162                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xA3' UNKOWN_163                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xA4' UNKOWN_164                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xA5' UNKOWN_165                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xA6' UNKOWN_166                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xA7' UNKOWN_167                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xA8' UNKOWN_168                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xA9' UNKOWN_169                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xAA' UNKOWN_170                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xAB' UNKOWN_171                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xAC' UNKOWN_172                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xAD' UNKOWN_173                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xAE' UNKOWN_174                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xAF' UNKOWN_175                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xB0' UNKOWN_176                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xB1' UNKOWN_177                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xB2' UNKOWN_178                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xB3' UNKOWN_179                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xB4' UNKOWN_180                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xB5' UNKOWN_181                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xB6' UNKOWN_182                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xB7' UNKOWN_183                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xB8' UNKOWN_184                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xB9' UNKOWN_185                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xBA' UNKOWN_186                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xBB' UNKOWN_187                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xBC' UNKOWN_188                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xBD' UNKOWN_189                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xBE' UNKOWN_190                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xBF' UNKOWN_191                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xC0' UNKOWN_192                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xC1' UNKOWN_193                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xC2' UNKOWN_194                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xC3' UNKOWN_195                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xC4' UNKOWN_196                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xC5' UNKOWN_197                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xC6' UNKOWN_198                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xC7' UNKOWN_199                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xC8' UNKOWN_200                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xC9' UNKOWN_201                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xCA' UNKOWN_202                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xCB' UNKOWN_203                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xCC' UNKOWN_204                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xCD' UNKOWN_205                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xCE' UNKOWN_206                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xCF' UNKOWN_207                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xD0' UNKOWN_208                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xD1' UNKOWN_209                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xD2' UNKOWN_210                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xD3' UNKOWN_211                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xD4' UNKOWN_212                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xD5' UNKOWN_213                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xD6' UNKOWN_214                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xD7' UNKOWN_215                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xD8' UNKOWN_216                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xD9' UNKOWN_217                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xDA' UNKOWN_218                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xDB' UNKOWN_219                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xDC' UNKOWN_220                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xDD' UNKOWN_221                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xDE' UNKOWN_222                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xDF' UNKOWN_223                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xE0' UNKOWN_224                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xE1' UNKOWN_225                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xE2' UNKOWN_226                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xE3' UNKOWN_227                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xE4' UNKOWN_228                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xE5' UNKOWN_229                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xE6' UNKOWN_230                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xE7' UNKOWN_231                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xE8' UNKOWN_232                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xE9' UNKOWN_233                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xEA' UNKOWN_234                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+    ['0xEB' CUSTOM_MANUFACTURER_1                   ['"Mgmt"', '"Custom Manufacturer (8 bytes)"',           '"ASCII Chars (Note 7)"',   'false', 'UNLOCK_REQUIRED']]
+    ['0xEC' CUSTOM_MANUFACTURER_2                   ['"Mgmt"', '"Custom Manufacturer (8 bytes)"',           '"ASCII Chars (Note 7)"',   'false', 'UNLOCK_REQUIRED']]
+    ['0xED' CUSTOM_MANUFACTURER_3                   ['"Mgmt"', '"Custom Manufacturer (8 bytes)"',           '"ASCII Chars (Note 7)"',   'false', 'UNLOCK_REQUIRED']]
+    ['0xEE' CUSTOM_MANUFACTURER_4                   ['"Mgmt"', '"Custom Manufacturer (8 bytes)"',           '"ASCII Chars (Note 7)"',   'false', 'UNLOCK_REQUIRED']]
+    ['0xEF' CUSTOM_MANUFACTURER_5                   ['"Mgmt"', '"Custom Manufacturer (8 bytes)"',           '"ASCII Chars (Note 7)"',   'false', 'UNLOCK_REQUIRED']]
+    ['0xF0' CUSTOM_MANUFACTURER_6                   ['"Mgmt"', '"Custom Manufacturer (8 bytes)"',           '"ASCII Chars (Note 7)"',   'false', 'UNLOCK_REQUIRED']]
+    ['0xF1' CUSTOM_MANUFACTURER_7                   ['"Mgmt"', '"Custom Manufacturer (8 bytes)"',           '"ASCII Chars (Note 7)"',   'false', 'UNLOCK_REQUIRED']]
+    ['0xF2' CUSTOM_MANUFACTURER_8                   ['"Mgmt"', '"Custom Manufacturer (8 bytes)"',           '"ASCII Chars (Note 7)"',   'false', 'READ_ONLY'      ]]
+    ['0xF3' SERIAL_NUMBER_1                         ['"Mgmt"', '"Serial Number"',                           '"Bytes (Note 8)"',         'false', 'READ_ONLY'      ]]
+    ['0xF4' SERIAL_NUMBER_2                         ['"Mgmt"', '"Serial Number"',                           '"Bytes (Note 8)"',         'false', 'READ_ONLY'      ]]
+    ['0xF5' SERIAL_NUMBER_3                         ['"Mgmt"', '"Serial Number"',                           '"Bytes (Note 8)"',         'false', 'READ_ONLY'      ]]
+    ['0xF6' SERIAL_NUMBER_4                         ['"Mgmt"', '"Serial Number"',                           '"Bytes (Note 8)"',         'false', 'READ_ONLY'      ]]
+    ['0xF7' CUSTOM_TYPE_1                           ['"Mgmt"', '"Custom Type (8 bytes)"',                   '"ASCII Chars (Note 9)"',   'false', 'READ_ONLY'      ]]
+    ['0xF8' CUSTOM_TYPE_2                           ['"Mgmt"', '"Custom Type (8 bytes)"',                   '"ASCII Chars (Note 9)"',   'false', 'READ_ONLY'      ]]
+    ['0xF9' CUSTOM_TYPE_3                           ['"Mgmt"', '"Custom Type (8 bytes)"',                   '"ASCII Chars (Note 9)"',   'false', 'READ_ONLY'      ]]
+    ['0xFA' CUSTOM_TYPE_4                           ['"Mgmt"', '"Custom Type (8 bytes)"',                   '"ASCII Chars (Note 9)"',   'false', 'READ_ONLY'      ]]
+    ['0xFB' CUSTOM_TYPE_5                           ['"Mgmt"', '"Custom Type (8 bytes)"',                   '"ASCII Chars (Note 9)"',   'false', 'READ_ONLY'      ]]
+    ['0xFC' CUSTOM_TYPE_6                           ['"Mgmt"', '"Custom Type (8 bytes)"',                   '"ASCII Chars (Note 9)"',   'false', 'READ_ONLY'      ]]
+    ['0xFD' CUSTOM_TYPE_7                           ['"Mgmt"', '"Custom Type (8 bytes)"',                   '"ASCII Chars (Note 9)"',   'false', 'READ_ONLY'      ]]
+    ['0xFE' CUSTOM_TYPE_8                           ['"Mgmt"', '"Custom Type (8 bytes)"',                   '"ASCII Chars (Note 9)"',   'false', 'READ_ONLY'      ]]
+    ['0xFF' UNKOWN_255                              ['""',     '""',                                        '""',                       'false', 'NONE'           ]]
+]
+
+[enum uint 4 ProtectionLevel(vstring description)
+    ['0' UNLOCK_REQUIRED    ['"Unlock required from C-BUS port"']]
+    ['1' NO_WRITE_ACCESS    ['"No write access via C-BUS port"' ]]
+    ['2' NONE               ['"None"'                           ]]
+    ['3' READ_ONLY          ['"Read only"'                      ]]
+]
+
 [enum uint 8 Attribute(uint 8 bytesReturned)
     ['0x00' Manufacturer              [ '8']]
     ['0x01' Type                      [ '8']]


[plc4x] 02/02: feat(cbus): added parameter relevant types

Posted by sr...@apache.org.
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 de2ad06146e7e44119630dd1217248b8007446fb
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue Jul 12 20:12:21 2022 +0200

    feat(cbus): added parameter relevant types
---
 plc4go/protocols/cbus/readwrite/ParserHelper.go    |  18 ++
 plc4go/protocols/cbus/readwrite/XmlParserHelper.go |  18 ++
 .../cbus/readwrite/model/ApplicationAddress1.go    | 183 ++++++++++++
 .../cbus/readwrite/model/ApplicationAddress2.go    | 183 ++++++++++++
 .../cbus/readwrite/model/BaudRateSelector.go       | 161 ++++++++++
 .../cbus/readwrite/model/CustomManufacturer.go     | 157 ++++++++++
 .../protocols/cbus/readwrite/model/CustomTypes.go  | 157 ++++++++++
 .../cbus/readwrite/model/InterfaceOptions1.go      | 328 ++++++++++++++++++++
 .../model/InterfaceOptions1PowerUpSettings.go      | 168 +++++++++++
 .../cbus/readwrite/model/InterfaceOptions2.go      | 332 +++++++++++++++++++++
 .../cbus/readwrite/model/InterfaceOptions3.go      | 330 ++++++++++++++++++++
 .../protocols/cbus/readwrite/model/SerialNumber.go | 229 ++++++++++++++
 .../src/main/resources/protocols/cbus/c-bus.mspec  |  75 +++++
 13 files changed, 2339 insertions(+)

diff --git a/plc4go/protocols/cbus/readwrite/ParserHelper.go b/plc4go/protocols/cbus/readwrite/ParserHelper.go
index 6fdb1cdc4..6a3c6dcbe 100644
--- a/plc4go/protocols/cbus/readwrite/ParserHelper.go
+++ b/plc4go/protocols/cbus/readwrite/ParserHelper.go
@@ -35,6 +35,10 @@ func (m CbusParserHelper) Parse(typeName string, arguments []string, io utils.Re
 	case "CALData":
 		var requestContext model.RequestContext
 		return model.CALDataParse(io, requestContext)
+	case "ApplicationAddress2":
+		return model.ApplicationAddress2Parse(io)
+	case "ApplicationAddress1":
+		return model.ApplicationAddress1Parse(io)
 	case "Checksum":
 		return model.ChecksumParse(io)
 	case "RequestContext":
@@ -43,6 +47,8 @@ func (m CbusParserHelper) Parse(typeName string, arguments []string, io utils.Re
 		var cBusOptions model.CBusOptions
 		var requestContext model.RequestContext
 		return model.CALReplyParse(io, cBusOptions, requestContext)
+	case "CustomManufacturer":
+		return model.CustomManufacturerParse(io)
 	case "NetworkRoute":
 		return model.NetworkRouteParse(io)
 	case "NetworkNumber":
@@ -101,6 +107,8 @@ func (m CbusParserHelper) Parse(typeName string, arguments []string, io utils.Re
 		return model.ReplyParse(io, cBusOptions, replyLength, requestContext)
 	case "SerialInterfaceAddress":
 		return model.SerialInterfaceAddressParse(io)
+	case "InterfaceOptions1PowerUpSettings":
+		return model.InterfaceOptions1PowerUpSettingsParse(io)
 	case "BridgeAddress":
 		return model.BridgeAddressParse(io)
 	case "MonitoredSAL":
@@ -112,8 +120,12 @@ func (m CbusParserHelper) Parse(typeName string, arguments []string, io utils.Re
 		return model.StatusByteParse(io)
 	case "ReplyNetwork":
 		return model.ReplyNetworkParse(io)
+	case "SerialNumber":
+		return model.SerialNumberParse(io)
 	case "ExtendedStatusHeader":
 		return model.ExtendedStatusHeaderParse(io)
+	case "CustomTypes":
+		return model.CustomTypesParse(io)
 	case "CommandHeader":
 		return model.CommandHeaderParse(io)
 	case "Confirmation":
@@ -125,6 +137,12 @@ func (m CbusParserHelper) Parse(typeName string, arguments []string, io utils.Re
 		return model.StatusHeaderParse(io)
 	case "StatusRequest":
 		return model.StatusRequestParse(io)
+	case "InterfaceOptions3":
+		return model.InterfaceOptions3Parse(io)
+	case "InterfaceOptions1":
+		return model.InterfaceOptions1Parse(io)
+	case "InterfaceOptions2":
+		return model.InterfaceOptions2Parse(io)
 	case "UnitAddress":
 		return model.UnitAddressParse(io)
 	case "NetworkProtocolControlInformation":
diff --git a/plc4go/protocols/cbus/readwrite/XmlParserHelper.go b/plc4go/protocols/cbus/readwrite/XmlParserHelper.go
index 85f641e49..22590809c 100644
--- a/plc4go/protocols/cbus/readwrite/XmlParserHelper.go
+++ b/plc4go/protocols/cbus/readwrite/XmlParserHelper.go
@@ -46,6 +46,10 @@ func (m CbusXmlParserHelper) Parse(typeName string, xmlString string, parserArgu
 		// TODO: find a way to parse the sub types
 		var requestContext model.RequestContext
 		return model.CALDataParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), requestContext)
+	case "ApplicationAddress2":
+		return model.ApplicationAddress2Parse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+	case "ApplicationAddress1":
+		return model.ApplicationAddress1Parse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "Checksum":
 		return model.ChecksumParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "RequestContext":
@@ -56,6 +60,8 @@ func (m CbusXmlParserHelper) Parse(typeName string, xmlString string, parserArgu
 		// TODO: find a way to parse the sub types
 		var requestContext model.RequestContext
 		return model.CALReplyParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), cBusOptions, requestContext)
+	case "CustomManufacturer":
+		return model.CustomManufacturerParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "NetworkRoute":
 		return model.NetworkRouteParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "NetworkNumber":
@@ -121,6 +127,8 @@ func (m CbusXmlParserHelper) Parse(typeName string, xmlString string, parserArgu
 		return model.ReplyParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), cBusOptions, replyLength, requestContext)
 	case "SerialInterfaceAddress":
 		return model.SerialInterfaceAddressParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+	case "InterfaceOptions1PowerUpSettings":
+		return model.InterfaceOptions1PowerUpSettingsParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "BridgeAddress":
 		return model.BridgeAddressParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "MonitoredSAL":
@@ -133,8 +141,12 @@ func (m CbusXmlParserHelper) Parse(typeName string, xmlString string, parserArgu
 		return model.StatusByteParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "ReplyNetwork":
 		return model.ReplyNetworkParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+	case "SerialNumber":
+		return model.SerialNumberParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "ExtendedStatusHeader":
 		return model.ExtendedStatusHeaderParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+	case "CustomTypes":
+		return model.CustomTypesParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "CommandHeader":
 		return model.CommandHeaderParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "Confirmation":
@@ -147,6 +159,12 @@ func (m CbusXmlParserHelper) Parse(typeName string, xmlString string, parserArgu
 		return model.StatusHeaderParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "StatusRequest":
 		return model.StatusRequestParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+	case "InterfaceOptions3":
+		return model.InterfaceOptions3Parse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+	case "InterfaceOptions1":
+		return model.InterfaceOptions1Parse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+	case "InterfaceOptions2":
+		return model.InterfaceOptions2Parse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "UnitAddress":
 		return model.UnitAddressParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "NetworkProtocolControlInformation":
diff --git a/plc4go/protocols/cbus/readwrite/model/ApplicationAddress1.go b/plc4go/protocols/cbus/readwrite/model/ApplicationAddress1.go
new file mode 100644
index 000000000..f8eab18fd
--- /dev/null
+++ b/plc4go/protocols/cbus/readwrite/model/ApplicationAddress1.go
@@ -0,0 +1,183 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// ApplicationAddress1 is the corresponding interface of ApplicationAddress1
+type ApplicationAddress1 interface {
+	utils.LengthAware
+	utils.Serializable
+	// GetAddress returns Address (property field)
+	GetAddress() byte
+	// GetIsWildcard returns IsWildcard (virtual field)
+	GetIsWildcard() bool
+}
+
+// ApplicationAddress1Exactly can be used when we want exactly this type and not a type which fulfills ApplicationAddress1.
+// This is useful for switch cases.
+type ApplicationAddress1Exactly interface {
+	ApplicationAddress1
+	isApplicationAddress1() bool
+}
+
+// _ApplicationAddress1 is the data-structure of this message
+type _ApplicationAddress1 struct {
+	Address byte
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *_ApplicationAddress1) GetAddress() byte {
+	return m.Address
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for virtual fields.
+///////////////////////
+
+func (m *_ApplicationAddress1) GetIsWildcard() bool {
+	return bool(bool((m.GetAddress()) == (0xFF)))
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewApplicationAddress1 factory function for _ApplicationAddress1
+func NewApplicationAddress1(address byte) *_ApplicationAddress1 {
+	return &_ApplicationAddress1{Address: address}
+}
+
+// Deprecated: use the interface for direct cast
+func CastApplicationAddress1(structType interface{}) ApplicationAddress1 {
+	if casted, ok := structType.(ApplicationAddress1); ok {
+		return casted
+	}
+	if casted, ok := structType.(*ApplicationAddress1); ok {
+		return *casted
+	}
+	return nil
+}
+
+func (m *_ApplicationAddress1) GetTypeName() string {
+	return "ApplicationAddress1"
+}
+
+func (m *_ApplicationAddress1) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
+}
+
+func (m *_ApplicationAddress1) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(0)
+
+	// Simple field (address)
+	lengthInBits += 8
+
+	// A virtual field doesn't have any in- or output.
+
+	return lengthInBits
+}
+
+func (m *_ApplicationAddress1) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func ApplicationAddress1Parse(readBuffer utils.ReadBuffer) (ApplicationAddress1, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("ApplicationAddress1"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for ApplicationAddress1")
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	// Simple Field (address)
+	_address, _addressErr := readBuffer.ReadByte("address")
+	if _addressErr != nil {
+		return nil, errors.Wrap(_addressErr, "Error parsing 'address' field of ApplicationAddress1")
+	}
+	address := _address
+
+	// Virtual field
+	_isWildcard := bool((address) == (0xFF))
+	isWildcard := bool(_isWildcard)
+	_ = isWildcard
+
+	if closeErr := readBuffer.CloseContext("ApplicationAddress1"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for ApplicationAddress1")
+	}
+
+	// Create the instance
+	return NewApplicationAddress1(address), nil
+}
+
+func (m *_ApplicationAddress1) Serialize(writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	if pushErr := writeBuffer.PushContext("ApplicationAddress1"); pushErr != nil {
+		return errors.Wrap(pushErr, "Error pushing for ApplicationAddress1")
+	}
+
+	// Simple Field (address)
+	address := byte(m.GetAddress())
+	_addressErr := writeBuffer.WriteByte("address", (address))
+	if _addressErr != nil {
+		return errors.Wrap(_addressErr, "Error serializing 'address' field")
+	}
+	// Virtual field
+	if _isWildcardErr := writeBuffer.WriteVirtual("isWildcard", m.GetIsWildcard()); _isWildcardErr != nil {
+		return errors.Wrap(_isWildcardErr, "Error serializing 'isWildcard' field")
+	}
+
+	if popErr := writeBuffer.PopContext("ApplicationAddress1"); popErr != nil {
+		return errors.Wrap(popErr, "Error popping for ApplicationAddress1")
+	}
+	return nil
+}
+
+func (m *_ApplicationAddress1) isApplicationAddress1() bool {
+	return true
+}
+
+func (m *_ApplicationAddress1) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	writeBuffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(m); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/protocols/cbus/readwrite/model/ApplicationAddress2.go b/plc4go/protocols/cbus/readwrite/model/ApplicationAddress2.go
new file mode 100644
index 000000000..8dff674a9
--- /dev/null
+++ b/plc4go/protocols/cbus/readwrite/model/ApplicationAddress2.go
@@ -0,0 +1,183 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// ApplicationAddress2 is the corresponding interface of ApplicationAddress2
+type ApplicationAddress2 interface {
+	utils.LengthAware
+	utils.Serializable
+	// GetAddress returns Address (property field)
+	GetAddress() byte
+	// GetIsWildcard returns IsWildcard (virtual field)
+	GetIsWildcard() bool
+}
+
+// ApplicationAddress2Exactly can be used when we want exactly this type and not a type which fulfills ApplicationAddress2.
+// This is useful for switch cases.
+type ApplicationAddress2Exactly interface {
+	ApplicationAddress2
+	isApplicationAddress2() bool
+}
+
+// _ApplicationAddress2 is the data-structure of this message
+type _ApplicationAddress2 struct {
+	Address byte
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *_ApplicationAddress2) GetAddress() byte {
+	return m.Address
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for virtual fields.
+///////////////////////
+
+func (m *_ApplicationAddress2) GetIsWildcard() bool {
+	return bool(bool((m.GetAddress()) == (0xFF)))
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewApplicationAddress2 factory function for _ApplicationAddress2
+func NewApplicationAddress2(address byte) *_ApplicationAddress2 {
+	return &_ApplicationAddress2{Address: address}
+}
+
+// Deprecated: use the interface for direct cast
+func CastApplicationAddress2(structType interface{}) ApplicationAddress2 {
+	if casted, ok := structType.(ApplicationAddress2); ok {
+		return casted
+	}
+	if casted, ok := structType.(*ApplicationAddress2); ok {
+		return *casted
+	}
+	return nil
+}
+
+func (m *_ApplicationAddress2) GetTypeName() string {
+	return "ApplicationAddress2"
+}
+
+func (m *_ApplicationAddress2) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
+}
+
+func (m *_ApplicationAddress2) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(0)
+
+	// Simple field (address)
+	lengthInBits += 8
+
+	// A virtual field doesn't have any in- or output.
+
+	return lengthInBits
+}
+
+func (m *_ApplicationAddress2) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func ApplicationAddress2Parse(readBuffer utils.ReadBuffer) (ApplicationAddress2, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("ApplicationAddress2"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for ApplicationAddress2")
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	// Simple Field (address)
+	_address, _addressErr := readBuffer.ReadByte("address")
+	if _addressErr != nil {
+		return nil, errors.Wrap(_addressErr, "Error parsing 'address' field of ApplicationAddress2")
+	}
+	address := _address
+
+	// Virtual field
+	_isWildcard := bool((address) == (0xFF))
+	isWildcard := bool(_isWildcard)
+	_ = isWildcard
+
+	if closeErr := readBuffer.CloseContext("ApplicationAddress2"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for ApplicationAddress2")
+	}
+
+	// Create the instance
+	return NewApplicationAddress2(address), nil
+}
+
+func (m *_ApplicationAddress2) Serialize(writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	if pushErr := writeBuffer.PushContext("ApplicationAddress2"); pushErr != nil {
+		return errors.Wrap(pushErr, "Error pushing for ApplicationAddress2")
+	}
+
+	// Simple Field (address)
+	address := byte(m.GetAddress())
+	_addressErr := writeBuffer.WriteByte("address", (address))
+	if _addressErr != nil {
+		return errors.Wrap(_addressErr, "Error serializing 'address' field")
+	}
+	// Virtual field
+	if _isWildcardErr := writeBuffer.WriteVirtual("isWildcard", m.GetIsWildcard()); _isWildcardErr != nil {
+		return errors.Wrap(_isWildcardErr, "Error serializing 'isWildcard' field")
+	}
+
+	if popErr := writeBuffer.PopContext("ApplicationAddress2"); popErr != nil {
+		return errors.Wrap(popErr, "Error popping for ApplicationAddress2")
+	}
+	return nil
+}
+
+func (m *_ApplicationAddress2) isApplicationAddress2() bool {
+	return true
+}
+
+func (m *_ApplicationAddress2) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	writeBuffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(m); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/protocols/cbus/readwrite/model/BaudRateSelector.go b/plc4go/protocols/cbus/readwrite/model/BaudRateSelector.go
new file mode 100644
index 000000000..fa036e416
--- /dev/null
+++ b/plc4go/protocols/cbus/readwrite/model/BaudRateSelector.go
@@ -0,0 +1,161 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
+	"github.com/rs/zerolog/log"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// BaudRateSelector is an enum
+type BaudRateSelector uint8
+
+type IBaudRateSelector interface {
+	Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+const (
+	BaudRateSelector_SELECTED_4800_BAUD BaudRateSelector = 0x01
+	BaudRateSelector_SELECTED_2400_BAUD BaudRateSelector = 0x02
+	BaudRateSelector_SELECTED_1200_BAUD BaudRateSelector = 0x03
+	BaudRateSelector_SELECTED_600_BAUD  BaudRateSelector = 0x04
+	BaudRateSelector_SELECTED_300_BAUD  BaudRateSelector = 0x05
+	BaudRateSelector_SELECTED_9600_BAUD BaudRateSelector = 0xFF
+)
+
+var BaudRateSelectorValues []BaudRateSelector
+
+func init() {
+	_ = errors.New
+	BaudRateSelectorValues = []BaudRateSelector{
+		BaudRateSelector_SELECTED_4800_BAUD,
+		BaudRateSelector_SELECTED_2400_BAUD,
+		BaudRateSelector_SELECTED_1200_BAUD,
+		BaudRateSelector_SELECTED_600_BAUD,
+		BaudRateSelector_SELECTED_300_BAUD,
+		BaudRateSelector_SELECTED_9600_BAUD,
+	}
+}
+
+func BaudRateSelectorByValue(value uint8) (enum BaudRateSelector, ok bool) {
+	switch value {
+	case 0x01:
+		return BaudRateSelector_SELECTED_4800_BAUD, true
+	case 0x02:
+		return BaudRateSelector_SELECTED_2400_BAUD, true
+	case 0x03:
+		return BaudRateSelector_SELECTED_1200_BAUD, true
+	case 0x04:
+		return BaudRateSelector_SELECTED_600_BAUD, true
+	case 0x05:
+		return BaudRateSelector_SELECTED_300_BAUD, true
+	case 0xFF:
+		return BaudRateSelector_SELECTED_9600_BAUD, true
+	}
+	return 0, false
+}
+
+func BaudRateSelectorByName(value string) (enum BaudRateSelector, ok bool) {
+	switch value {
+	case "SELECTED_4800_BAUD":
+		return BaudRateSelector_SELECTED_4800_BAUD, true
+	case "SELECTED_2400_BAUD":
+		return BaudRateSelector_SELECTED_2400_BAUD, true
+	case "SELECTED_1200_BAUD":
+		return BaudRateSelector_SELECTED_1200_BAUD, true
+	case "SELECTED_600_BAUD":
+		return BaudRateSelector_SELECTED_600_BAUD, true
+	case "SELECTED_300_BAUD":
+		return BaudRateSelector_SELECTED_300_BAUD, true
+	case "SELECTED_9600_BAUD":
+		return BaudRateSelector_SELECTED_9600_BAUD, true
+	}
+	return 0, false
+}
+
+func BaudRateSelectorKnows(value uint8) bool {
+	for _, typeValue := range BaudRateSelectorValues {
+		if uint8(typeValue) == value {
+			return true
+		}
+	}
+	return false
+}
+
+func CastBaudRateSelector(structType interface{}) BaudRateSelector {
+	castFunc := func(typ interface{}) BaudRateSelector {
+		if sBaudRateSelector, ok := typ.(BaudRateSelector); ok {
+			return sBaudRateSelector
+		}
+		return 0
+	}
+	return castFunc(structType)
+}
+
+func (m BaudRateSelector) GetLengthInBits() uint16 {
+	return 8
+}
+
+func (m BaudRateSelector) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func BaudRateSelectorParse(readBuffer utils.ReadBuffer) (BaudRateSelector, error) {
+	val, err := readBuffer.ReadUint8("BaudRateSelector", 8)
+	if err != nil {
+		return 0, errors.Wrap(err, "error reading BaudRateSelector")
+	}
+	if enum, ok := BaudRateSelectorByValue(val); !ok {
+		log.Debug().Msgf("no value %x found for RequestType", val)
+		return BaudRateSelector(val), nil
+	} else {
+		return enum, nil
+	}
+}
+
+func (e BaudRateSelector) Serialize(writeBuffer utils.WriteBuffer) error {
+	return writeBuffer.WriteUint8("BaudRateSelector", 8, uint8(e), utils.WithAdditionalStringRepresentation(e.PLC4XEnumName()))
+}
+
+// PLC4XEnumName returns the name that is used in code to identify this enum
+func (e BaudRateSelector) PLC4XEnumName() string {
+	switch e {
+	case BaudRateSelector_SELECTED_4800_BAUD:
+		return "SELECTED_4800_BAUD"
+	case BaudRateSelector_SELECTED_2400_BAUD:
+		return "SELECTED_2400_BAUD"
+	case BaudRateSelector_SELECTED_1200_BAUD:
+		return "SELECTED_1200_BAUD"
+	case BaudRateSelector_SELECTED_600_BAUD:
+		return "SELECTED_600_BAUD"
+	case BaudRateSelector_SELECTED_300_BAUD:
+		return "SELECTED_300_BAUD"
+	case BaudRateSelector_SELECTED_9600_BAUD:
+		return "SELECTED_9600_BAUD"
+	}
+	return ""
+}
+
+func (e BaudRateSelector) String() string {
+	return e.PLC4XEnumName()
+}
diff --git a/plc4go/protocols/cbus/readwrite/model/CustomManufacturer.go b/plc4go/protocols/cbus/readwrite/model/CustomManufacturer.go
new file mode 100644
index 000000000..79fd23a82
--- /dev/null
+++ b/plc4go/protocols/cbus/readwrite/model/CustomManufacturer.go
@@ -0,0 +1,157 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// CustomManufacturer is the corresponding interface of CustomManufacturer
+type CustomManufacturer interface {
+	utils.LengthAware
+	utils.Serializable
+	// GetCustomString returns CustomString (property field)
+	GetCustomString() string
+}
+
+// CustomManufacturerExactly can be used when we want exactly this type and not a type which fulfills CustomManufacturer.
+// This is useful for switch cases.
+type CustomManufacturerExactly interface {
+	CustomManufacturer
+	isCustomManufacturer() bool
+}
+
+// _CustomManufacturer is the data-structure of this message
+type _CustomManufacturer struct {
+	CustomString string
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *_CustomManufacturer) GetCustomString() string {
+	return m.CustomString
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewCustomManufacturer factory function for _CustomManufacturer
+func NewCustomManufacturer(customString string) *_CustomManufacturer {
+	return &_CustomManufacturer{CustomString: customString}
+}
+
+// Deprecated: use the interface for direct cast
+func CastCustomManufacturer(structType interface{}) CustomManufacturer {
+	if casted, ok := structType.(CustomManufacturer); ok {
+		return casted
+	}
+	if casted, ok := structType.(*CustomManufacturer); ok {
+		return *casted
+	}
+	return nil
+}
+
+func (m *_CustomManufacturer) GetTypeName() string {
+	return "CustomManufacturer"
+}
+
+func (m *_CustomManufacturer) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
+}
+
+func (m *_CustomManufacturer) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(0)
+
+	// Simple field (customString)
+	lengthInBits += uint16(int32(8))
+
+	return lengthInBits
+}
+
+func (m *_CustomManufacturer) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func CustomManufacturerParse(readBuffer utils.ReadBuffer) (CustomManufacturer, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("CustomManufacturer"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for CustomManufacturer")
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	// Simple Field (customString)
+	_customString, _customStringErr := readBuffer.ReadString("customString", uint32((8)))
+	if _customStringErr != nil {
+		return nil, errors.Wrap(_customStringErr, "Error parsing 'customString' field of CustomManufacturer")
+	}
+	customString := _customString
+
+	if closeErr := readBuffer.CloseContext("CustomManufacturer"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for CustomManufacturer")
+	}
+
+	// Create the instance
+	return NewCustomManufacturer(customString), nil
+}
+
+func (m *_CustomManufacturer) Serialize(writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	if pushErr := writeBuffer.PushContext("CustomManufacturer"); pushErr != nil {
+		return errors.Wrap(pushErr, "Error pushing for CustomManufacturer")
+	}
+
+	// Simple Field (customString)
+	customString := string(m.GetCustomString())
+	_customStringErr := writeBuffer.WriteString("customString", uint32((8)), "UTF-8", (customString))
+	if _customStringErr != nil {
+		return errors.Wrap(_customStringErr, "Error serializing 'customString' field")
+	}
+
+	if popErr := writeBuffer.PopContext("CustomManufacturer"); popErr != nil {
+		return errors.Wrap(popErr, "Error popping for CustomManufacturer")
+	}
+	return nil
+}
+
+func (m *_CustomManufacturer) isCustomManufacturer() bool {
+	return true
+}
+
+func (m *_CustomManufacturer) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	writeBuffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(m); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/protocols/cbus/readwrite/model/CustomTypes.go b/plc4go/protocols/cbus/readwrite/model/CustomTypes.go
new file mode 100644
index 000000000..ba799df6d
--- /dev/null
+++ b/plc4go/protocols/cbus/readwrite/model/CustomTypes.go
@@ -0,0 +1,157 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// CustomTypes is the corresponding interface of CustomTypes
+type CustomTypes interface {
+	utils.LengthAware
+	utils.Serializable
+	// GetCustomString returns CustomString (property field)
+	GetCustomString() string
+}
+
+// CustomTypesExactly can be used when we want exactly this type and not a type which fulfills CustomTypes.
+// This is useful for switch cases.
+type CustomTypesExactly interface {
+	CustomTypes
+	isCustomTypes() bool
+}
+
+// _CustomTypes is the data-structure of this message
+type _CustomTypes struct {
+	CustomString string
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *_CustomTypes) GetCustomString() string {
+	return m.CustomString
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewCustomTypes factory function for _CustomTypes
+func NewCustomTypes(customString string) *_CustomTypes {
+	return &_CustomTypes{CustomString: customString}
+}
+
+// Deprecated: use the interface for direct cast
+func CastCustomTypes(structType interface{}) CustomTypes {
+	if casted, ok := structType.(CustomTypes); ok {
+		return casted
+	}
+	if casted, ok := structType.(*CustomTypes); ok {
+		return *casted
+	}
+	return nil
+}
+
+func (m *_CustomTypes) GetTypeName() string {
+	return "CustomTypes"
+}
+
+func (m *_CustomTypes) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
+}
+
+func (m *_CustomTypes) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(0)
+
+	// Simple field (customString)
+	lengthInBits += uint16(int32(8))
+
+	return lengthInBits
+}
+
+func (m *_CustomTypes) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func CustomTypesParse(readBuffer utils.ReadBuffer) (CustomTypes, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("CustomTypes"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for CustomTypes")
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	// Simple Field (customString)
+	_customString, _customStringErr := readBuffer.ReadString("customString", uint32((8)))
+	if _customStringErr != nil {
+		return nil, errors.Wrap(_customStringErr, "Error parsing 'customString' field of CustomTypes")
+	}
+	customString := _customString
+
+	if closeErr := readBuffer.CloseContext("CustomTypes"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for CustomTypes")
+	}
+
+	// Create the instance
+	return NewCustomTypes(customString), nil
+}
+
+func (m *_CustomTypes) Serialize(writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	if pushErr := writeBuffer.PushContext("CustomTypes"); pushErr != nil {
+		return errors.Wrap(pushErr, "Error pushing for CustomTypes")
+	}
+
+	// Simple Field (customString)
+	customString := string(m.GetCustomString())
+	_customStringErr := writeBuffer.WriteString("customString", uint32((8)), "UTF-8", (customString))
+	if _customStringErr != nil {
+		return errors.Wrap(_customStringErr, "Error serializing 'customString' field")
+	}
+
+	if popErr := writeBuffer.PopContext("CustomTypes"); popErr != nil {
+		return errors.Wrap(popErr, "Error popping for CustomTypes")
+	}
+	return nil
+}
+
+func (m *_CustomTypes) isCustomTypes() bool {
+	return true
+}
+
+func (m *_CustomTypes) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	writeBuffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(m); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/protocols/cbus/readwrite/model/InterfaceOptions1.go b/plc4go/protocols/cbus/readwrite/model/InterfaceOptions1.go
new file mode 100644
index 000000000..1969fd54b
--- /dev/null
+++ b/plc4go/protocols/cbus/readwrite/model/InterfaceOptions1.go
@@ -0,0 +1,328 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
+	"github.com/rs/zerolog/log"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// InterfaceOptions1 is the corresponding interface of InterfaceOptions1
+type InterfaceOptions1 interface {
+	utils.LengthAware
+	utils.Serializable
+	// GetIdmon returns Idmon (property field)
+	GetIdmon() bool
+	// GetMonitor returns Monitor (property field)
+	GetMonitor() bool
+	// GetSmart returns Smart (property field)
+	GetSmart() bool
+	// GetSrchk returns Srchk (property field)
+	GetSrchk() bool
+	// GetXonXoff returns XonXoff (property field)
+	GetXonXoff() bool
+	// GetConnect returns Connect (property field)
+	GetConnect() bool
+}
+
+// InterfaceOptions1Exactly can be used when we want exactly this type and not a type which fulfills InterfaceOptions1.
+// This is useful for switch cases.
+type InterfaceOptions1Exactly interface {
+	InterfaceOptions1
+	isInterfaceOptions1() bool
+}
+
+// _InterfaceOptions1 is the data-structure of this message
+type _InterfaceOptions1 struct {
+	Idmon   bool
+	Monitor bool
+	Smart   bool
+	Srchk   bool
+	XonXoff bool
+	Connect bool
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *_InterfaceOptions1) GetIdmon() bool {
+	return m.Idmon
+}
+
+func (m *_InterfaceOptions1) GetMonitor() bool {
+	return m.Monitor
+}
+
+func (m *_InterfaceOptions1) GetSmart() bool {
+	return m.Smart
+}
+
+func (m *_InterfaceOptions1) GetSrchk() bool {
+	return m.Srchk
+}
+
+func (m *_InterfaceOptions1) GetXonXoff() bool {
+	return m.XonXoff
+}
+
+func (m *_InterfaceOptions1) GetConnect() bool {
+	return m.Connect
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewInterfaceOptions1 factory function for _InterfaceOptions1
+func NewInterfaceOptions1(idmon bool, monitor bool, smart bool, srchk bool, xonXoff bool, connect bool) *_InterfaceOptions1 {
+	return &_InterfaceOptions1{Idmon: idmon, Monitor: monitor, Smart: smart, Srchk: srchk, XonXoff: xonXoff, Connect: connect}
+}
+
+// Deprecated: use the interface for direct cast
+func CastInterfaceOptions1(structType interface{}) InterfaceOptions1 {
+	if casted, ok := structType.(InterfaceOptions1); ok {
+		return casted
+	}
+	if casted, ok := structType.(*InterfaceOptions1); ok {
+		return *casted
+	}
+	return nil
+}
+
+func (m *_InterfaceOptions1) GetTypeName() string {
+	return "InterfaceOptions1"
+}
+
+func (m *_InterfaceOptions1) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
+}
+
+func (m *_InterfaceOptions1) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(0)
+
+	// Reserved Field (reserved)
+	lengthInBits += 1
+
+	// Simple field (idmon)
+	lengthInBits += 1
+
+	// Simple field (monitor)
+	lengthInBits += 1
+
+	// Simple field (smart)
+	lengthInBits += 1
+
+	// Simple field (srchk)
+	lengthInBits += 1
+
+	// Simple field (xonXoff)
+	lengthInBits += 1
+
+	// Reserved Field (reserved)
+	lengthInBits += 1
+
+	// Simple field (connect)
+	lengthInBits += 1
+
+	return lengthInBits
+}
+
+func (m *_InterfaceOptions1) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func InterfaceOptions1Parse(readBuffer utils.ReadBuffer) (InterfaceOptions1, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("InterfaceOptions1"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for InterfaceOptions1")
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+	{
+		reserved, _err := readBuffer.ReadBit("reserved")
+		if _err != nil {
+			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions1")
+		}
+		if reserved != bool(false) {
+			log.Info().Fields(map[string]interface{}{
+				"expected value": bool(false),
+				"got value":      reserved,
+			}).Msg("Got unexpected response for reserved field.")
+		}
+	}
+
+	// Simple Field (idmon)
+	_idmon, _idmonErr := readBuffer.ReadBit("idmon")
+	if _idmonErr != nil {
+		return nil, errors.Wrap(_idmonErr, "Error parsing 'idmon' field of InterfaceOptions1")
+	}
+	idmon := _idmon
+
+	// Simple Field (monitor)
+	_monitor, _monitorErr := readBuffer.ReadBit("monitor")
+	if _monitorErr != nil {
+		return nil, errors.Wrap(_monitorErr, "Error parsing 'monitor' field of InterfaceOptions1")
+	}
+	monitor := _monitor
+
+	// Simple Field (smart)
+	_smart, _smartErr := readBuffer.ReadBit("smart")
+	if _smartErr != nil {
+		return nil, errors.Wrap(_smartErr, "Error parsing 'smart' field of InterfaceOptions1")
+	}
+	smart := _smart
+
+	// Simple Field (srchk)
+	_srchk, _srchkErr := readBuffer.ReadBit("srchk")
+	if _srchkErr != nil {
+		return nil, errors.Wrap(_srchkErr, "Error parsing 'srchk' field of InterfaceOptions1")
+	}
+	srchk := _srchk
+
+	// Simple Field (xonXoff)
+	_xonXoff, _xonXoffErr := readBuffer.ReadBit("xonXoff")
+	if _xonXoffErr != nil {
+		return nil, errors.Wrap(_xonXoffErr, "Error parsing 'xonXoff' field of InterfaceOptions1")
+	}
+	xonXoff := _xonXoff
+
+	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+	{
+		reserved, _err := readBuffer.ReadBit("reserved")
+		if _err != nil {
+			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions1")
+		}
+		if reserved != bool(false) {
+			log.Info().Fields(map[string]interface{}{
+				"expected value": bool(false),
+				"got value":      reserved,
+			}).Msg("Got unexpected response for reserved field.")
+		}
+	}
+
+	// Simple Field (connect)
+	_connect, _connectErr := readBuffer.ReadBit("connect")
+	if _connectErr != nil {
+		return nil, errors.Wrap(_connectErr, "Error parsing 'connect' field of InterfaceOptions1")
+	}
+	connect := _connect
+
+	if closeErr := readBuffer.CloseContext("InterfaceOptions1"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for InterfaceOptions1")
+	}
+
+	// Create the instance
+	return NewInterfaceOptions1(idmon, monitor, smart, srchk, xonXoff, connect), nil
+}
+
+func (m *_InterfaceOptions1) Serialize(writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	if pushErr := writeBuffer.PushContext("InterfaceOptions1"); pushErr != nil {
+		return errors.Wrap(pushErr, "Error pushing for InterfaceOptions1")
+	}
+
+	// Reserved Field (reserved)
+	{
+		_err := writeBuffer.WriteBit("reserved", bool(false))
+		if _err != nil {
+			return errors.Wrap(_err, "Error serializing 'reserved' field")
+		}
+	}
+
+	// Simple Field (idmon)
+	idmon := bool(m.GetIdmon())
+	_idmonErr := writeBuffer.WriteBit("idmon", (idmon))
+	if _idmonErr != nil {
+		return errors.Wrap(_idmonErr, "Error serializing 'idmon' field")
+	}
+
+	// Simple Field (monitor)
+	monitor := bool(m.GetMonitor())
+	_monitorErr := writeBuffer.WriteBit("monitor", (monitor))
+	if _monitorErr != nil {
+		return errors.Wrap(_monitorErr, "Error serializing 'monitor' field")
+	}
+
+	// Simple Field (smart)
+	smart := bool(m.GetSmart())
+	_smartErr := writeBuffer.WriteBit("smart", (smart))
+	if _smartErr != nil {
+		return errors.Wrap(_smartErr, "Error serializing 'smart' field")
+	}
+
+	// Simple Field (srchk)
+	srchk := bool(m.GetSrchk())
+	_srchkErr := writeBuffer.WriteBit("srchk", (srchk))
+	if _srchkErr != nil {
+		return errors.Wrap(_srchkErr, "Error serializing 'srchk' field")
+	}
+
+	// Simple Field (xonXoff)
+	xonXoff := bool(m.GetXonXoff())
+	_xonXoffErr := writeBuffer.WriteBit("xonXoff", (xonXoff))
+	if _xonXoffErr != nil {
+		return errors.Wrap(_xonXoffErr, "Error serializing 'xonXoff' field")
+	}
+
+	// Reserved Field (reserved)
+	{
+		_err := writeBuffer.WriteBit("reserved", bool(false))
+		if _err != nil {
+			return errors.Wrap(_err, "Error serializing 'reserved' field")
+		}
+	}
+
+	// Simple Field (connect)
+	connect := bool(m.GetConnect())
+	_connectErr := writeBuffer.WriteBit("connect", (connect))
+	if _connectErr != nil {
+		return errors.Wrap(_connectErr, "Error serializing 'connect' field")
+	}
+
+	if popErr := writeBuffer.PopContext("InterfaceOptions1"); popErr != nil {
+		return errors.Wrap(popErr, "Error popping for InterfaceOptions1")
+	}
+	return nil
+}
+
+func (m *_InterfaceOptions1) isInterfaceOptions1() bool {
+	return true
+}
+
+func (m *_InterfaceOptions1) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	writeBuffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(m); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/protocols/cbus/readwrite/model/InterfaceOptions1PowerUpSettings.go b/plc4go/protocols/cbus/readwrite/model/InterfaceOptions1PowerUpSettings.go
new file mode 100644
index 000000000..8706fd3fe
--- /dev/null
+++ b/plc4go/protocols/cbus/readwrite/model/InterfaceOptions1PowerUpSettings.go
@@ -0,0 +1,168 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// InterfaceOptions1PowerUpSettings is the corresponding interface of InterfaceOptions1PowerUpSettings
+type InterfaceOptions1PowerUpSettings interface {
+	utils.LengthAware
+	utils.Serializable
+	// GetInterfaceOptions1 returns InterfaceOptions1 (property field)
+	GetInterfaceOptions1() InterfaceOptions1
+}
+
+// InterfaceOptions1PowerUpSettingsExactly can be used when we want exactly this type and not a type which fulfills InterfaceOptions1PowerUpSettings.
+// This is useful for switch cases.
+type InterfaceOptions1PowerUpSettingsExactly interface {
+	InterfaceOptions1PowerUpSettings
+	isInterfaceOptions1PowerUpSettings() bool
+}
+
+// _InterfaceOptions1PowerUpSettings is the data-structure of this message
+type _InterfaceOptions1PowerUpSettings struct {
+	InterfaceOptions1 InterfaceOptions1
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *_InterfaceOptions1PowerUpSettings) GetInterfaceOptions1() InterfaceOptions1 {
+	return m.InterfaceOptions1
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewInterfaceOptions1PowerUpSettings factory function for _InterfaceOptions1PowerUpSettings
+func NewInterfaceOptions1PowerUpSettings(interfaceOptions1 InterfaceOptions1) *_InterfaceOptions1PowerUpSettings {
+	return &_InterfaceOptions1PowerUpSettings{InterfaceOptions1: interfaceOptions1}
+}
+
+// Deprecated: use the interface for direct cast
+func CastInterfaceOptions1PowerUpSettings(structType interface{}) InterfaceOptions1PowerUpSettings {
+	if casted, ok := structType.(InterfaceOptions1PowerUpSettings); ok {
+		return casted
+	}
+	if casted, ok := structType.(*InterfaceOptions1PowerUpSettings); ok {
+		return *casted
+	}
+	return nil
+}
+
+func (m *_InterfaceOptions1PowerUpSettings) GetTypeName() string {
+	return "InterfaceOptions1PowerUpSettings"
+}
+
+func (m *_InterfaceOptions1PowerUpSettings) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
+}
+
+func (m *_InterfaceOptions1PowerUpSettings) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(0)
+
+	// Simple field (interfaceOptions1)
+	lengthInBits += m.InterfaceOptions1.GetLengthInBits()
+
+	return lengthInBits
+}
+
+func (m *_InterfaceOptions1PowerUpSettings) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func InterfaceOptions1PowerUpSettingsParse(readBuffer utils.ReadBuffer) (InterfaceOptions1PowerUpSettings, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("InterfaceOptions1PowerUpSettings"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for InterfaceOptions1PowerUpSettings")
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	// Simple Field (interfaceOptions1)
+	if pullErr := readBuffer.PullContext("interfaceOptions1"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for interfaceOptions1")
+	}
+	_interfaceOptions1, _interfaceOptions1Err := InterfaceOptions1Parse(readBuffer)
+	if _interfaceOptions1Err != nil {
+		return nil, errors.Wrap(_interfaceOptions1Err, "Error parsing 'interfaceOptions1' field of InterfaceOptions1PowerUpSettings")
+	}
+	interfaceOptions1 := _interfaceOptions1.(InterfaceOptions1)
+	if closeErr := readBuffer.CloseContext("interfaceOptions1"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for interfaceOptions1")
+	}
+
+	if closeErr := readBuffer.CloseContext("InterfaceOptions1PowerUpSettings"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for InterfaceOptions1PowerUpSettings")
+	}
+
+	// Create the instance
+	return NewInterfaceOptions1PowerUpSettings(interfaceOptions1), nil
+}
+
+func (m *_InterfaceOptions1PowerUpSettings) Serialize(writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	if pushErr := writeBuffer.PushContext("InterfaceOptions1PowerUpSettings"); pushErr != nil {
+		return errors.Wrap(pushErr, "Error pushing for InterfaceOptions1PowerUpSettings")
+	}
+
+	// Simple Field (interfaceOptions1)
+	if pushErr := writeBuffer.PushContext("interfaceOptions1"); pushErr != nil {
+		return errors.Wrap(pushErr, "Error pushing for interfaceOptions1")
+	}
+	_interfaceOptions1Err := writeBuffer.WriteSerializable(m.GetInterfaceOptions1())
+	if popErr := writeBuffer.PopContext("interfaceOptions1"); popErr != nil {
+		return errors.Wrap(popErr, "Error popping for interfaceOptions1")
+	}
+	if _interfaceOptions1Err != nil {
+		return errors.Wrap(_interfaceOptions1Err, "Error serializing 'interfaceOptions1' field")
+	}
+
+	if popErr := writeBuffer.PopContext("InterfaceOptions1PowerUpSettings"); popErr != nil {
+		return errors.Wrap(popErr, "Error popping for InterfaceOptions1PowerUpSettings")
+	}
+	return nil
+}
+
+func (m *_InterfaceOptions1PowerUpSettings) isInterfaceOptions1PowerUpSettings() bool {
+	return true
+}
+
+func (m *_InterfaceOptions1PowerUpSettings) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	writeBuffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(m); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/protocols/cbus/readwrite/model/InterfaceOptions2.go b/plc4go/protocols/cbus/readwrite/model/InterfaceOptions2.go
new file mode 100644
index 000000000..a8bb1db56
--- /dev/null
+++ b/plc4go/protocols/cbus/readwrite/model/InterfaceOptions2.go
@@ -0,0 +1,332 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
+	"github.com/rs/zerolog/log"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// InterfaceOptions2 is the corresponding interface of InterfaceOptions2
+type InterfaceOptions2 interface {
+	utils.LengthAware
+	utils.Serializable
+	// GetBurden returns Burden (property field)
+	GetBurden() bool
+	// GetClockGen returns ClockGen (property field)
+	GetClockGen() bool
+}
+
+// InterfaceOptions2Exactly can be used when we want exactly this type and not a type which fulfills InterfaceOptions2.
+// This is useful for switch cases.
+type InterfaceOptions2Exactly interface {
+	InterfaceOptions2
+	isInterfaceOptions2() bool
+}
+
+// _InterfaceOptions2 is the data-structure of this message
+type _InterfaceOptions2 struct {
+	Burden   bool
+	ClockGen bool
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *_InterfaceOptions2) GetBurden() bool {
+	return m.Burden
+}
+
+func (m *_InterfaceOptions2) GetClockGen() bool {
+	return m.ClockGen
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewInterfaceOptions2 factory function for _InterfaceOptions2
+func NewInterfaceOptions2(burden bool, clockGen bool) *_InterfaceOptions2 {
+	return &_InterfaceOptions2{Burden: burden, ClockGen: clockGen}
+}
+
+// Deprecated: use the interface for direct cast
+func CastInterfaceOptions2(structType interface{}) InterfaceOptions2 {
+	if casted, ok := structType.(InterfaceOptions2); ok {
+		return casted
+	}
+	if casted, ok := structType.(*InterfaceOptions2); ok {
+		return *casted
+	}
+	return nil
+}
+
+func (m *_InterfaceOptions2) GetTypeName() string {
+	return "InterfaceOptions2"
+}
+
+func (m *_InterfaceOptions2) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
+}
+
+func (m *_InterfaceOptions2) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(0)
+
+	// Reserved Field (reserved)
+	lengthInBits += 1
+
+	// Simple field (burden)
+	lengthInBits += 1
+
+	// Reserved Field (reserved)
+	lengthInBits += 1
+
+	// Reserved Field (reserved)
+	lengthInBits += 1
+
+	// Reserved Field (reserved)
+	lengthInBits += 1
+
+	// Reserved Field (reserved)
+	lengthInBits += 1
+
+	// Reserved Field (reserved)
+	lengthInBits += 1
+
+	// Simple field (clockGen)
+	lengthInBits += 1
+
+	return lengthInBits
+}
+
+func (m *_InterfaceOptions2) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func InterfaceOptions2Parse(readBuffer utils.ReadBuffer) (InterfaceOptions2, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("InterfaceOptions2"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for InterfaceOptions2")
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+	{
+		reserved, _err := readBuffer.ReadBit("reserved")
+		if _err != nil {
+			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions2")
+		}
+		if reserved != bool(false) {
+			log.Info().Fields(map[string]interface{}{
+				"expected value": bool(false),
+				"got value":      reserved,
+			}).Msg("Got unexpected response for reserved field.")
+		}
+	}
+
+	// Simple Field (burden)
+	_burden, _burdenErr := readBuffer.ReadBit("burden")
+	if _burdenErr != nil {
+		return nil, errors.Wrap(_burdenErr, "Error parsing 'burden' field of InterfaceOptions2")
+	}
+	burden := _burden
+
+	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+	{
+		reserved, _err := readBuffer.ReadBit("reserved")
+		if _err != nil {
+			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions2")
+		}
+		if reserved != bool(false) {
+			log.Info().Fields(map[string]interface{}{
+				"expected value": bool(false),
+				"got value":      reserved,
+			}).Msg("Got unexpected response for reserved field.")
+		}
+	}
+
+	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+	{
+		reserved, _err := readBuffer.ReadBit("reserved")
+		if _err != nil {
+			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions2")
+		}
+		if reserved != bool(false) {
+			log.Info().Fields(map[string]interface{}{
+				"expected value": bool(false),
+				"got value":      reserved,
+			}).Msg("Got unexpected response for reserved field.")
+		}
+	}
+
+	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+	{
+		reserved, _err := readBuffer.ReadBit("reserved")
+		if _err != nil {
+			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions2")
+		}
+		if reserved != bool(false) {
+			log.Info().Fields(map[string]interface{}{
+				"expected value": bool(false),
+				"got value":      reserved,
+			}).Msg("Got unexpected response for reserved field.")
+		}
+	}
+
+	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+	{
+		reserved, _err := readBuffer.ReadBit("reserved")
+		if _err != nil {
+			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions2")
+		}
+		if reserved != bool(false) {
+			log.Info().Fields(map[string]interface{}{
+				"expected value": bool(false),
+				"got value":      reserved,
+			}).Msg("Got unexpected response for reserved field.")
+		}
+	}
+
+	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+	{
+		reserved, _err := readBuffer.ReadBit("reserved")
+		if _err != nil {
+			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions2")
+		}
+		if reserved != bool(false) {
+			log.Info().Fields(map[string]interface{}{
+				"expected value": bool(false),
+				"got value":      reserved,
+			}).Msg("Got unexpected response for reserved field.")
+		}
+	}
+
+	// Simple Field (clockGen)
+	_clockGen, _clockGenErr := readBuffer.ReadBit("clockGen")
+	if _clockGenErr != nil {
+		return nil, errors.Wrap(_clockGenErr, "Error parsing 'clockGen' field of InterfaceOptions2")
+	}
+	clockGen := _clockGen
+
+	if closeErr := readBuffer.CloseContext("InterfaceOptions2"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for InterfaceOptions2")
+	}
+
+	// Create the instance
+	return NewInterfaceOptions2(burden, clockGen), nil
+}
+
+func (m *_InterfaceOptions2) Serialize(writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	if pushErr := writeBuffer.PushContext("InterfaceOptions2"); pushErr != nil {
+		return errors.Wrap(pushErr, "Error pushing for InterfaceOptions2")
+	}
+
+	// Reserved Field (reserved)
+	{
+		_err := writeBuffer.WriteBit("reserved", bool(false))
+		if _err != nil {
+			return errors.Wrap(_err, "Error serializing 'reserved' field")
+		}
+	}
+
+	// Simple Field (burden)
+	burden := bool(m.GetBurden())
+	_burdenErr := writeBuffer.WriteBit("burden", (burden))
+	if _burdenErr != nil {
+		return errors.Wrap(_burdenErr, "Error serializing 'burden' field")
+	}
+
+	// Reserved Field (reserved)
+	{
+		_err := writeBuffer.WriteBit("reserved", bool(false))
+		if _err != nil {
+			return errors.Wrap(_err, "Error serializing 'reserved' field")
+		}
+	}
+
+	// Reserved Field (reserved)
+	{
+		_err := writeBuffer.WriteBit("reserved", bool(false))
+		if _err != nil {
+			return errors.Wrap(_err, "Error serializing 'reserved' field")
+		}
+	}
+
+	// Reserved Field (reserved)
+	{
+		_err := writeBuffer.WriteBit("reserved", bool(false))
+		if _err != nil {
+			return errors.Wrap(_err, "Error serializing 'reserved' field")
+		}
+	}
+
+	// Reserved Field (reserved)
+	{
+		_err := writeBuffer.WriteBit("reserved", bool(false))
+		if _err != nil {
+			return errors.Wrap(_err, "Error serializing 'reserved' field")
+		}
+	}
+
+	// Reserved Field (reserved)
+	{
+		_err := writeBuffer.WriteBit("reserved", bool(false))
+		if _err != nil {
+			return errors.Wrap(_err, "Error serializing 'reserved' field")
+		}
+	}
+
+	// Simple Field (clockGen)
+	clockGen := bool(m.GetClockGen())
+	_clockGenErr := writeBuffer.WriteBit("clockGen", (clockGen))
+	if _clockGenErr != nil {
+		return errors.Wrap(_clockGenErr, "Error serializing 'clockGen' field")
+	}
+
+	if popErr := writeBuffer.PopContext("InterfaceOptions2"); popErr != nil {
+		return errors.Wrap(popErr, "Error popping for InterfaceOptions2")
+	}
+	return nil
+}
+
+func (m *_InterfaceOptions2) isInterfaceOptions2() bool {
+	return true
+}
+
+func (m *_InterfaceOptions2) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	writeBuffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(m); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/protocols/cbus/readwrite/model/InterfaceOptions3.go b/plc4go/protocols/cbus/readwrite/model/InterfaceOptions3.go
new file mode 100644
index 000000000..5431f0b8f
--- /dev/null
+++ b/plc4go/protocols/cbus/readwrite/model/InterfaceOptions3.go
@@ -0,0 +1,330 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
+	"github.com/rs/zerolog/log"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// InterfaceOptions3 is the corresponding interface of InterfaceOptions3
+type InterfaceOptions3 interface {
+	utils.LengthAware
+	utils.Serializable
+	// GetExstat returns Exstat (property field)
+	GetExstat() bool
+	// GetPun returns Pun (property field)
+	GetPun() bool
+	// GetLocalSal returns LocalSal (property field)
+	GetLocalSal() bool
+	// GetPcn returns Pcn (property field)
+	GetPcn() bool
+}
+
+// InterfaceOptions3Exactly can be used when we want exactly this type and not a type which fulfills InterfaceOptions3.
+// This is useful for switch cases.
+type InterfaceOptions3Exactly interface {
+	InterfaceOptions3
+	isInterfaceOptions3() bool
+}
+
+// _InterfaceOptions3 is the data-structure of this message
+type _InterfaceOptions3 struct {
+	Exstat   bool
+	Pun      bool
+	LocalSal bool
+	Pcn      bool
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *_InterfaceOptions3) GetExstat() bool {
+	return m.Exstat
+}
+
+func (m *_InterfaceOptions3) GetPun() bool {
+	return m.Pun
+}
+
+func (m *_InterfaceOptions3) GetLocalSal() bool {
+	return m.LocalSal
+}
+
+func (m *_InterfaceOptions3) GetPcn() bool {
+	return m.Pcn
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewInterfaceOptions3 factory function for _InterfaceOptions3
+func NewInterfaceOptions3(exstat bool, pun bool, localSal bool, pcn bool) *_InterfaceOptions3 {
+	return &_InterfaceOptions3{Exstat: exstat, Pun: pun, LocalSal: localSal, Pcn: pcn}
+}
+
+// Deprecated: use the interface for direct cast
+func CastInterfaceOptions3(structType interface{}) InterfaceOptions3 {
+	if casted, ok := structType.(InterfaceOptions3); ok {
+		return casted
+	}
+	if casted, ok := structType.(*InterfaceOptions3); ok {
+		return *casted
+	}
+	return nil
+}
+
+func (m *_InterfaceOptions3) GetTypeName() string {
+	return "InterfaceOptions3"
+}
+
+func (m *_InterfaceOptions3) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
+}
+
+func (m *_InterfaceOptions3) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(0)
+
+	// Reserved Field (reserved)
+	lengthInBits += 1
+
+	// Reserved Field (reserved)
+	lengthInBits += 1
+
+	// Reserved Field (reserved)
+	lengthInBits += 1
+
+	// Reserved Field (reserved)
+	lengthInBits += 1
+
+	// Simple field (exstat)
+	lengthInBits += 1
+
+	// Simple field (pun)
+	lengthInBits += 1
+
+	// Simple field (localSal)
+	lengthInBits += 1
+
+	// Simple field (pcn)
+	lengthInBits += 1
+
+	return lengthInBits
+}
+
+func (m *_InterfaceOptions3) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func InterfaceOptions3Parse(readBuffer utils.ReadBuffer) (InterfaceOptions3, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("InterfaceOptions3"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for InterfaceOptions3")
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+	{
+		reserved, _err := readBuffer.ReadBit("reserved")
+		if _err != nil {
+			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions3")
+		}
+		if reserved != bool(false) {
+			log.Info().Fields(map[string]interface{}{
+				"expected value": bool(false),
+				"got value":      reserved,
+			}).Msg("Got unexpected response for reserved field.")
+		}
+	}
+
+	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+	{
+		reserved, _err := readBuffer.ReadBit("reserved")
+		if _err != nil {
+			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions3")
+		}
+		if reserved != bool(false) {
+			log.Info().Fields(map[string]interface{}{
+				"expected value": bool(false),
+				"got value":      reserved,
+			}).Msg("Got unexpected response for reserved field.")
+		}
+	}
+
+	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+	{
+		reserved, _err := readBuffer.ReadBit("reserved")
+		if _err != nil {
+			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions3")
+		}
+		if reserved != bool(false) {
+			log.Info().Fields(map[string]interface{}{
+				"expected value": bool(false),
+				"got value":      reserved,
+			}).Msg("Got unexpected response for reserved field.")
+		}
+	}
+
+	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+	{
+		reserved, _err := readBuffer.ReadBit("reserved")
+		if _err != nil {
+			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions3")
+		}
+		if reserved != bool(false) {
+			log.Info().Fields(map[string]interface{}{
+				"expected value": bool(false),
+				"got value":      reserved,
+			}).Msg("Got unexpected response for reserved field.")
+		}
+	}
+
+	// Simple Field (exstat)
+	_exstat, _exstatErr := readBuffer.ReadBit("exstat")
+	if _exstatErr != nil {
+		return nil, errors.Wrap(_exstatErr, "Error parsing 'exstat' field of InterfaceOptions3")
+	}
+	exstat := _exstat
+
+	// Simple Field (pun)
+	_pun, _punErr := readBuffer.ReadBit("pun")
+	if _punErr != nil {
+		return nil, errors.Wrap(_punErr, "Error parsing 'pun' field of InterfaceOptions3")
+	}
+	pun := _pun
+
+	// Simple Field (localSal)
+	_localSal, _localSalErr := readBuffer.ReadBit("localSal")
+	if _localSalErr != nil {
+		return nil, errors.Wrap(_localSalErr, "Error parsing 'localSal' field of InterfaceOptions3")
+	}
+	localSal := _localSal
+
+	// Simple Field (pcn)
+	_pcn, _pcnErr := readBuffer.ReadBit("pcn")
+	if _pcnErr != nil {
+		return nil, errors.Wrap(_pcnErr, "Error parsing 'pcn' field of InterfaceOptions3")
+	}
+	pcn := _pcn
+
+	if closeErr := readBuffer.CloseContext("InterfaceOptions3"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for InterfaceOptions3")
+	}
+
+	// Create the instance
+	return NewInterfaceOptions3(exstat, pun, localSal, pcn), nil
+}
+
+func (m *_InterfaceOptions3) Serialize(writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	if pushErr := writeBuffer.PushContext("InterfaceOptions3"); pushErr != nil {
+		return errors.Wrap(pushErr, "Error pushing for InterfaceOptions3")
+	}
+
+	// Reserved Field (reserved)
+	{
+		_err := writeBuffer.WriteBit("reserved", bool(false))
+		if _err != nil {
+			return errors.Wrap(_err, "Error serializing 'reserved' field")
+		}
+	}
+
+	// Reserved Field (reserved)
+	{
+		_err := writeBuffer.WriteBit("reserved", bool(false))
+		if _err != nil {
+			return errors.Wrap(_err, "Error serializing 'reserved' field")
+		}
+	}
+
+	// Reserved Field (reserved)
+	{
+		_err := writeBuffer.WriteBit("reserved", bool(false))
+		if _err != nil {
+			return errors.Wrap(_err, "Error serializing 'reserved' field")
+		}
+	}
+
+	// Reserved Field (reserved)
+	{
+		_err := writeBuffer.WriteBit("reserved", bool(false))
+		if _err != nil {
+			return errors.Wrap(_err, "Error serializing 'reserved' field")
+		}
+	}
+
+	// Simple Field (exstat)
+	exstat := bool(m.GetExstat())
+	_exstatErr := writeBuffer.WriteBit("exstat", (exstat))
+	if _exstatErr != nil {
+		return errors.Wrap(_exstatErr, "Error serializing 'exstat' field")
+	}
+
+	// Simple Field (pun)
+	pun := bool(m.GetPun())
+	_punErr := writeBuffer.WriteBit("pun", (pun))
+	if _punErr != nil {
+		return errors.Wrap(_punErr, "Error serializing 'pun' field")
+	}
+
+	// Simple Field (localSal)
+	localSal := bool(m.GetLocalSal())
+	_localSalErr := writeBuffer.WriteBit("localSal", (localSal))
+	if _localSalErr != nil {
+		return errors.Wrap(_localSalErr, "Error serializing 'localSal' field")
+	}
+
+	// Simple Field (pcn)
+	pcn := bool(m.GetPcn())
+	_pcnErr := writeBuffer.WriteBit("pcn", (pcn))
+	if _pcnErr != nil {
+		return errors.Wrap(_pcnErr, "Error serializing 'pcn' field")
+	}
+
+	if popErr := writeBuffer.PopContext("InterfaceOptions3"); popErr != nil {
+		return errors.Wrap(popErr, "Error popping for InterfaceOptions3")
+	}
+	return nil
+}
+
+func (m *_InterfaceOptions3) isInterfaceOptions3() bool {
+	return true
+}
+
+func (m *_InterfaceOptions3) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	writeBuffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(m); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/protocols/cbus/readwrite/model/SerialNumber.go b/plc4go/protocols/cbus/readwrite/model/SerialNumber.go
new file mode 100644
index 000000000..ab0be1ca6
--- /dev/null
+++ b/plc4go/protocols/cbus/readwrite/model/SerialNumber.go
@@ -0,0 +1,229 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// SerialNumber is the corresponding interface of SerialNumber
+type SerialNumber interface {
+	utils.LengthAware
+	utils.Serializable
+	// GetOctet1 returns Octet1 (property field)
+	GetOctet1() byte
+	// GetOctet2 returns Octet2 (property field)
+	GetOctet2() byte
+	// GetOctet3 returns Octet3 (property field)
+	GetOctet3() byte
+	// GetOctet4 returns Octet4 (property field)
+	GetOctet4() byte
+}
+
+// SerialNumberExactly can be used when we want exactly this type and not a type which fulfills SerialNumber.
+// This is useful for switch cases.
+type SerialNumberExactly interface {
+	SerialNumber
+	isSerialNumber() bool
+}
+
+// _SerialNumber is the data-structure of this message
+type _SerialNumber struct {
+	Octet1 byte
+	Octet2 byte
+	Octet3 byte
+	Octet4 byte
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *_SerialNumber) GetOctet1() byte {
+	return m.Octet1
+}
+
+func (m *_SerialNumber) GetOctet2() byte {
+	return m.Octet2
+}
+
+func (m *_SerialNumber) GetOctet3() byte {
+	return m.Octet3
+}
+
+func (m *_SerialNumber) GetOctet4() byte {
+	return m.Octet4
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewSerialNumber factory function for _SerialNumber
+func NewSerialNumber(octet1 byte, octet2 byte, octet3 byte, octet4 byte) *_SerialNumber {
+	return &_SerialNumber{Octet1: octet1, Octet2: octet2, Octet3: octet3, Octet4: octet4}
+}
+
+// Deprecated: use the interface for direct cast
+func CastSerialNumber(structType interface{}) SerialNumber {
+	if casted, ok := structType.(SerialNumber); ok {
+		return casted
+	}
+	if casted, ok := structType.(*SerialNumber); ok {
+		return *casted
+	}
+	return nil
+}
+
+func (m *_SerialNumber) GetTypeName() string {
+	return "SerialNumber"
+}
+
+func (m *_SerialNumber) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
+}
+
+func (m *_SerialNumber) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(0)
+
+	// Simple field (octet1)
+	lengthInBits += 8
+
+	// Simple field (octet2)
+	lengthInBits += 8
+
+	// Simple field (octet3)
+	lengthInBits += 8
+
+	// Simple field (octet4)
+	lengthInBits += 8
+
+	return lengthInBits
+}
+
+func (m *_SerialNumber) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func SerialNumberParse(readBuffer utils.ReadBuffer) (SerialNumber, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("SerialNumber"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for SerialNumber")
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	// Simple Field (octet1)
+	_octet1, _octet1Err := readBuffer.ReadByte("octet1")
+	if _octet1Err != nil {
+		return nil, errors.Wrap(_octet1Err, "Error parsing 'octet1' field of SerialNumber")
+	}
+	octet1 := _octet1
+
+	// Simple Field (octet2)
+	_octet2, _octet2Err := readBuffer.ReadByte("octet2")
+	if _octet2Err != nil {
+		return nil, errors.Wrap(_octet2Err, "Error parsing 'octet2' field of SerialNumber")
+	}
+	octet2 := _octet2
+
+	// Simple Field (octet3)
+	_octet3, _octet3Err := readBuffer.ReadByte("octet3")
+	if _octet3Err != nil {
+		return nil, errors.Wrap(_octet3Err, "Error parsing 'octet3' field of SerialNumber")
+	}
+	octet3 := _octet3
+
+	// Simple Field (octet4)
+	_octet4, _octet4Err := readBuffer.ReadByte("octet4")
+	if _octet4Err != nil {
+		return nil, errors.Wrap(_octet4Err, "Error parsing 'octet4' field of SerialNumber")
+	}
+	octet4 := _octet4
+
+	if closeErr := readBuffer.CloseContext("SerialNumber"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for SerialNumber")
+	}
+
+	// Create the instance
+	return NewSerialNumber(octet1, octet2, octet3, octet4), nil
+}
+
+func (m *_SerialNumber) Serialize(writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	if pushErr := writeBuffer.PushContext("SerialNumber"); pushErr != nil {
+		return errors.Wrap(pushErr, "Error pushing for SerialNumber")
+	}
+
+	// Simple Field (octet1)
+	octet1 := byte(m.GetOctet1())
+	_octet1Err := writeBuffer.WriteByte("octet1", (octet1))
+	if _octet1Err != nil {
+		return errors.Wrap(_octet1Err, "Error serializing 'octet1' field")
+	}
+
+	// Simple Field (octet2)
+	octet2 := byte(m.GetOctet2())
+	_octet2Err := writeBuffer.WriteByte("octet2", (octet2))
+	if _octet2Err != nil {
+		return errors.Wrap(_octet2Err, "Error serializing 'octet2' field")
+	}
+
+	// Simple Field (octet3)
+	octet3 := byte(m.GetOctet3())
+	_octet3Err := writeBuffer.WriteByte("octet3", (octet3))
+	if _octet3Err != nil {
+		return errors.Wrap(_octet3Err, "Error serializing 'octet3' field")
+	}
+
+	// Simple Field (octet4)
+	octet4 := byte(m.GetOctet4())
+	_octet4Err := writeBuffer.WriteByte("octet4", (octet4))
+	if _octet4Err != nil {
+		return errors.Wrap(_octet4Err, "Error serializing 'octet4' field")
+	}
+
+	if popErr := writeBuffer.PopContext("SerialNumber"); popErr != nil {
+		return errors.Wrap(popErr, "Error popping for SerialNumber")
+	}
+	return nil
+}
+
+func (m *_SerialNumber) isSerialNumber() bool {
+	return true
+}
+
+func (m *_SerialNumber) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	writeBuffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(m); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/protocols/c-bus/src/main/resources/protocols/cbus/c-bus.mspec b/protocols/c-bus/src/main/resources/protocols/cbus/c-bus.mspec
index 369f0f27b..cbabc8723 100644
--- a/protocols/c-bus/src/main/resources/protocols/cbus/c-bus.mspec
+++ b/protocols/c-bus/src/main/resources/protocols/cbus/c-bus.mspec
@@ -885,6 +885,81 @@
     ['3' READ_ONLY          ['"Read only"'                      ]]
 ]
 
+[type ApplicationAddress1 // Note 1
+    [simple  byte address                       ]
+    // if wildcard is set address 2 should set to wildcard as well
+    [virtual bit  isWildcard 'address == 0xFF'  ]
+]
+
+[type ApplicationAddress2 // Note 1
+    [simple  byte address                       ]
+    [virtual bit  isWildcard 'address == 0xFF'  ]
+]
+
+[type InterfaceOptions1 // Note 2
+    [reserved bit  'false'                       ]
+    [simple   bit  idmon                         ]
+    [simple   bit  monitor                       ]
+    [simple   bit  smart                         ]
+    [simple   bit  srchk                         ]
+    [simple   bit  xonXoff                       ]
+    [reserved bit  'false'                       ]
+    [simple   bit  connect                       ]
+]
+
+// Undefined values default to 0xFF
+[enum uint 8 BaudRateSelector
+    ['0x01' SELECTED_4800_BAUD]
+    ['0x02' SELECTED_2400_BAUD]
+    ['0x03' SELECTED_1200_BAUD]
+    ['0x04' SELECTED_600_BAUD ]
+    ['0x05' SELECTED_300_BAUD ]
+    ['0xFF' SELECTED_9600_BAUD]
+]
+
+[type InterfaceOptions2 // Note 4
+    [reserved bit  'false'                       ]
+    [simple   bit  burden                        ]
+    [reserved bit  'false'                       ]
+    [reserved bit  'false'                       ]
+    [reserved bit  'false'                       ]
+    [reserved bit  'false'                       ]
+    [reserved bit  'false'                       ]
+    [simple   bit  clockGen                      ]
+]
+
+[type InterfaceOptions1PowerUpSettings // Note 5
+    [simple InterfaceOptions1 interfaceOptions1  ]
+]
+
+[type InterfaceOptions3 // Note 6
+    [reserved bit  'false'                       ]
+    [reserved bit  'false'                       ]
+    [reserved bit  'false'                       ]
+    [reserved bit  'false'                       ]
+    [simple   bit  exstat                        ]
+    [simple   bit  pun                           ]
+    [simple   bit  localSal                      ]
+    [simple   bit  pcn                           ]
+]
+
+[type CustomManufacturer // Note 7
+    // TODO: 8 is a placeholder at the moment
+    [simple vstring '8' customString                 ]
+]
+
+[type SerialNumber // Note 8
+    [simple byte octet1]
+    [simple byte octet2]
+    [simple byte octet3]
+    [simple byte octet4]
+]
+
+[type CustomTypes // Note 9
+    // TODO: 8 is a placeholder at the moment
+    [simple vstring '8' customString                 ]
+]
+
 [enum uint 8 Attribute(uint 8 bytesReturned)
     ['0x00' Manufacturer              [ '8']]
     ['0x01' Type                      [ '8']]