You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2020/10/08 14:31:52 UTC
[plc4x] branch feature/plc4go updated: - Got the Go code generation
allmost finished ...
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch feature/plc4go
in repository https://gitbox.apache.org/repos/asf/plc4x.git
The following commit(s) were added to refs/heads/feature/plc4go by this push:
new 6d31075 - Got the Go code generation allmost finished ...
6d31075 is described below
commit 6d310755a93739866ec20778b2c642d561277853
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Thu Oct 8 16:31:45 2020 +0200
- Got the Go code generation allmost finished ...
---
.../language/go/GoLanguageTemplateHelper.java | 33 ++++-
.../resources/templates/go/model-template.ftlh | 119 ++++++++-------
.../plc4go/go/modbus/readwrite/ModbusConstants.go | 41 +++---
.../plc4go/go/modbus/readwrite/ModbusPDU.go | 163 +++++++++++----------
.../modbus/readwrite/ModbusPDUDiagnosticRequest.go | 8 +-
.../plc4go/go/modbus/readwrite/ModbusPDUError.go | 8 +-
.../readwrite/ModbusPDUGetComEventLogRequest.go | 8 +-
.../readwrite/ModbusPDUGetComEventLogResponse.go | 109 +++++++-------
.../ModbusPDUMaskWriteHoldingRegisterRequest.go | 8 +-
.../ModbusPDUMaskWriteHoldingRegisterResponse.go | 8 +-
.../modbus/readwrite/ModbusPDUReadCoilsRequest.go | 8 +-
.../modbus/readwrite/ModbusPDUReadCoilsResponse.go | 67 ++++-----
.../ModbusPDUReadDeviceIdentificationRequest.go | 8 +-
.../ModbusPDUReadDeviceIdentificationResponse.go | 8 +-
.../ModbusPDUReadDiscreteInputsRequest.go | 8 +-
.../ModbusPDUReadDiscreteInputsResponse.go | 67 ++++-----
.../ModbusPDUReadExceptionStatusRequest.go | 8 +-
.../ModbusPDUReadExceptionStatusResponse.go | 8 +-
.../readwrite/ModbusPDUReadFifoQueueRequest.go | 8 +-
.../readwrite/ModbusPDUReadFifoQueueResponse.go | 83 +++++------
.../readwrite/ModbusPDUReadFileRecordRequest.go | 75 +++++-----
.../ModbusPDUReadFileRecordRequestItem.go | 8 +-
.../readwrite/ModbusPDUReadFileRecordResponse.go | 75 +++++-----
.../ModbusPDUReadFileRecordResponseItem.go | 71 ++++-----
.../ModbusPDUReadHoldingRegistersRequest.go | 8 +-
.../ModbusPDUReadHoldingRegistersResponse.go | 67 ++++-----
.../ModbusPDUReadInputRegistersRequest.go | 8 +-
.../ModbusPDUReadInputRegistersResponse.go | 67 ++++-----
...sPDUReadWriteMultipleHoldingRegistersRequest.go | 121 +++++++--------
...PDUReadWriteMultipleHoldingRegistersResponse.go | 67 ++++-----
.../readwrite/ModbusPDUReportServerIdRequest.go | 8 +-
.../readwrite/ModbusPDUReportServerIdResponse.go | 67 ++++-----
.../readwrite/ModbusPDUWriteFileRecordRequest.go | 75 +++++-----
.../ModbusPDUWriteFileRecordRequestItem.go | 103 ++++++-------
.../readwrite/ModbusPDUWriteFileRecordResponse.go | 75 +++++-----
.../ModbusPDUWriteFileRecordResponseItem.go | 103 ++++++-------
.../ModbusPDUWriteMultipleCoilsRequest.go | 97 ++++++------
.../ModbusPDUWriteMultipleCoilsResponse.go | 8 +-
...odbusPDUWriteMultipleHoldingRegistersRequest.go | 97 ++++++------
...dbusPDUWriteMultipleHoldingRegistersResponse.go | 8 +-
.../readwrite/ModbusPDUWriteSingleCoilRequest.go | 8 +-
.../readwrite/ModbusPDUWriteSingleCoilResponse.go | 8 +-
.../ModbusPDUWriteSingleRegisterRequest.go | 8 +-
.../ModbusPDUWriteSingleRegisterResponse.go | 8 +-
.../plc4go/go/modbus/readwrite/ModbusSerialADU.go | 120 +++++++--------
.../plc4go/go/modbus/readwrite/ModbusTcpADU.go | 109 +++++++-------
sandbox/plc4go/src/{ => main}/modbus.go | 24 ++-
sandbox/plc4go/src/plc4go/spi/ReadBuffer.go | 8 +
48 files changed, 1067 insertions(+), 1212 deletions(-)
diff --git a/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java b/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
index 26de96b..4a92a57 100644
--- a/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
+++ b/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
@@ -272,7 +272,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
public String getWriteBufferWriteMethodCall(SimpleTypeReference simpleTypeReference, String fieldName) {
switch (simpleTypeReference.getBaseType()) {
case BIT: {
- return "io.writeBit((boolean) " + fieldName + ")";
+ return "io.writeBit((bool) " + fieldName + ")";
}
case UINT: {
IntegerTypeReference integerTypeReference = (IntegerTypeReference) simpleTypeReference;
@@ -348,7 +348,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
}
if(term instanceof Literal) {
if(term instanceof NullLiteral) {
- return "null";
+ return "nil";
} else if(term instanceof BooleanLiteral) {
return Boolean.toString(((BooleanLiteral) term).getValue());
} else if(term instanceof NumericLiteral) {
@@ -729,5 +729,34 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
return filteredEnumValues.values();
}
+ public List<String> getRequiredImports() {
+ List<String> imports = new ArrayList<>();
+ // At least one reserved field or simple field with complex type
+ if(((ComplexTypeDefinition) getThisTypeDefinition()).getFields().stream().anyMatch(field ->
+ (field instanceof ReservedField))) {
+ imports.add("log \"github.com/sirupsen/logrus\"");
+ }
+
+ // For "Fields with complex type", constant, typeSwitch, fields: "errors"
+ if(((ComplexTypeDefinition) getThisTypeDefinition()).getFields().stream().anyMatch(field ->
+ (field instanceof ConstField) || (field instanceof SwitchField) ||
+ ((field instanceof TypedField) && ((TypedField) field).getType() instanceof ComplexTypeReference))) {
+ imports.add("\"errors\"");
+ }
+
+ // "Fields with complex type": "reflect"
+ if(((ComplexTypeDefinition) getThisTypeDefinition()).getFields().stream().anyMatch(field ->
+ ((field instanceof TypedField) && ((TypedField) field).getType() instanceof ComplexTypeReference))) {
+ imports.add("\"reflect\"");
+ }
+
+ // For Constant field: "strconv"
+ if(((ComplexTypeDefinition) getThisTypeDefinition()).getFields().stream().anyMatch(field ->
+ (field instanceof ReservedField))) {
+ imports.add("\"strconv\"");
+ }
+
+ return imports;
+ }
}
diff --git a/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh b/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh
index bb0f2c9..af17026 100644
--- a/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh
+++ b/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh
@@ -63,15 +63,18 @@ ${helper.fileName(protocolName, languageName, outputFlavor)?replace(".", "/")}/$
package ${helper.packageName(outputFlavor)}
import (
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+<#if helper.getRequiredImports()?has_content>
+ <#list helper.getRequiredImports() as import>
+ ${import}
+ </#list>
+</#if>
)
<#if type.constFields?has_content>
// Constant values.
<#list type.constFields as field>
-const ${field.name?upper_case} ${helper.getLanguageTypeNameForField(field)} = ${field.referenceValue};
+const ${field.name?upper_case} ${helper.getLanguageTypeNameForField(field)} = ${field.referenceValue}
</#list>
</#if>
@@ -231,9 +234,9 @@ func (m ${type.name}) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ${type.name}Parse(io spi.ReadBuffer<#if type.parserArguments?has_content>, <#list type.parserArguments as parserArgument>${parserArgument.name} ${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) <#if type.parentType??>${type.parentType.name}Initializer<#else>spi.Message</#if> {
- var startPos = io.GetPos()
- var curPos uint16
+func ${type.name}Parse(io spi.ReadBuffer<#if type.parserArguments?has_content>, <#list type.parserArguments as parserArgument>${parserArgument.name} ${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) (<#if type.parentType??>${type.parentType.name}Initializer<#else>spi.Message</#if>, error) {
+<#-- var startPos = io.GetPos()
+ var curPos uint16-->
<#list type.fields as field>
<#switch field.typeName>
<#case "array">
@@ -244,63 +247,68 @@ func ${type.name}Parse(io spi.ReadBuffer<#if type.parserArguments?has_content>,
<#if arrayField.loopExpression.contains("curPos")>
curPos = io.GetPos() - startPos
</#if>
+ var ${arrayField.name} []${helper.getLanguageTypeNameForField(field)}
<#-- If this is a count array, we can directly initialize an array with the given size -->
<#if helper.isCountArrayField(field)>
// Count array
- if ${helper.toParseExpression(arrayField, arrayField.loopExpression, type.parserArguments)} > math.MaxUint8 {
- throw new ParseException("Array count of " + (${helper.toParseExpression(arrayField, arrayField.loopExpression, type.parserArguments)}) + " exceeds the maximum allowed count of " + math.MaxUint8);
- }
- ${helper.getLanguageTypeNameForField(field)}[] ${arrayField.name};
{
- var itemCount := ${helper.toParseExpression(arrayField, arrayField.loopExpression, type.parserArguments)}
- ${arrayField.name} = new ${helper.getLanguageTypeNameForField(field)}[itemCount]
- for curItem := 0; curItem < itemCount; curItem++ {
- <#-- When parsing simple types, there is nothing that could require the "lastItem" -->
- <#if !helper.isSimpleTypeReference(arrayField.type)>boolean lastItem = curItem == (itemCount - 1);</#if>
+ ${arrayField.name} := make([]${helper.getLanguageTypeNameForField(field)}, ${helper.toParseExpression(arrayField, arrayField.loopExpression, type.parserArguments)})
+ for curItem := uint16(0); curItem < uint16(${helper.toParseExpression(arrayField, arrayField.loopExpression, type.parserArguments)}); curItem++ {
+<#if !helper.isSimpleTypeReference(arrayField.type)> boolean lastItem = curItem == (itemCount - 1);</#if>
${arrayField.name}[curItem] = <#if helper.isSimpleTypeReference(arrayField.type)><#assign simpleTypeReference = arrayField.type>${helper.getReadBufferReadMethodCall(simpleTypeReference)}<#else>${arrayField.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(arrayField.type, parserArgument?index))}) (${helper.toParseExpression(arrayField, parserArgument, type.parse [...]
}
}
<#-- In all other cases do we have to work with a list, that is later converted to an array -->
- <#else>
+ <#elseif helper.isLengthArrayField(field)>
<#-- For a length array, we read data till the read position of the buffer reaches a given position -->
- <#if helper.isLengthArrayField(field)>
// Length array
- var _${arrayField.name}Length := ${helper.toParseExpression(arrayField, arrayField.loopExpression, type.parserArguments)}
- List<${helper.getLanguageTypeNameForField(arrayField)}> _${arrayField.name}List = new LinkedList<>();
- ${arrayField.name}EndPos := io.GetPos() + _${arrayField.name}Length;
- for ;io.getPos() < ${arrayField.name}EndPos; {
- _${arrayField.name}List.add(<#if helper.isSimpleTypeReference(arrayField.type)><#assign simpleTypeReference = arrayField.type>${helper.getReadBufferReadMethodCall(simpleTypeReference)}<#else>${arrayField.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(arrayField.type, parserArgument?index))}) (${helper.toParseExpression(arrayField, parserArgument, type.parserArgum [...]
+ _${arrayField.name}Length := uint16(${helper.toParseExpression(arrayField, arrayField.loopExpression, type.parserArguments)})
+ _${arrayField.name}EndPos := io.GetPos() + _${arrayField.name}Length
+ for ;io.GetPos() < _${arrayField.name}EndPos; {
+ <#if helper.isSimpleTypeReference(arrayField.type)>
+ <#assign simpleTypeReference = arrayField.type>
+ ${arrayField.name} = append(${arrayField.name}, ${helper.getReadBufferReadMethodCall(simpleTypeReference)})
+ <#else>
+ _message, _err := ${arrayField.type.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument>${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(simpleField.type, parserArgument?index))}(${helper.toParseExpression(simpleField, parserArgument, type.parserArguments)})<#sep>, </#sep></#list></#if>)
+ if _err != nil {
+ return nil, errors.New("Error parsing '${arrayField.name}' field " + _err.Error())
+ }
+ var _item ${helper.getLanguageTypeNameForField(field)}
+ _item, _ok := _message.(${arrayField.type.name})
+ if !_ok {
+ return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_item).Name() + " to ${arrayField.type.name}")
+ }
+ ${arrayField.name} = append(${arrayField.name}, _item)
+ </#if>
<#-- After parsing, update the current position, but only if it's needed -->
- <#if arrayField.loopExpression.contains("curPos")>
+ <#if arrayField.loopExpression.contains("curPos")>
curPos = io.getPos() - startPos;
- </#if>
+ </#if>
}
<#-- A terminated array keeps on reading data as long as the termination expression evaluates to false -->
- <#elseif helper.isTerminatedArrayField(field)>
+ <#elseif helper.isTerminatedArrayField(field)>
// Terminated array
- List<${helper.getLanguageTypeNameForField(arrayField)}> _${arrayField.name}List = new LinkedList<>();
- for ;!((boolean) (${helper.toParseExpression(arrayField, arrayField.loopExpression, type.parserArguments)})); {
- _${arrayField.name}List.add(<#if helper.isSimpleTypeReference(arrayField.type)><#assign simpleTypeReference = arrayField.type>${helper.getReadBufferReadMethodCall(simpleTypeReference)}<#else>${arrayField.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(arrayField.type, parserArgument?index))}) (${helper.toParseExpression(arrayField, parserArgument, type.parserArgum [...]
+ for ;!bool(${helper.toParseExpression(arrayField, arrayField.loopExpression, type.parserArguments)}); {
+ <#if helper.isSimpleTypeReference(arrayField.type)>
+ <#assign simpleTypeReference = arrayField.type>
+ ${arrayField.name} = append(${arrayField.name}, ${helper.getReadBufferReadMethodCall(simpleTypeReference)})
+ <#else>
+ _message, _err := ${arrayField.type.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument>${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(simpleField.type, parserArgument?index))}(${helper.toParseExpression(simpleField, parserArgument, type.parserArguments)})<#sep>, </#sep></#list></#if>)
+ if _err != nil {
+ }
+ var _item ${helper.getLanguageTypeNameForField(field)}
+ _item, _ok := _message.(${arrayField.type.name})
+ if !_ok {
+ return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_item).Name() + " to ${arrayField.type.name}")
+ }
+ ${arrayField.name} = append(${arrayField.name}, _item)
+ </#if>
<#-- After parsing, update the current position, but only if it's needed -->
- <#if arrayField.loopExpression.contains("curPos")>
+ <#if arrayField.loopExpression.contains("curPos")>
curPos = io.getPos() - startPos
- </#if>
- }
</#if>
- <#--
- Convert the list into an array. However if the array is of a primitive
- type we have to iterate over it's elements and explicitly cast them.
- Otherwise a simple toArray call is fine.
- -->
- <#if helper.isSimpleTypeReference(arrayField.type)>
- ${helper.getLanguageTypeNameForField(field)}[] ${arrayField.name} = new ${helper.getLanguageTypeNameForField(field)}[_${arrayField.name}List.size()]
- for i := 0; i < _${arrayField.name}List.size(); i++ {
- ${arrayField.name}[i] = (${helper.getLanguageTypeNameForField(field)}) _${arrayField.name}List.get(i)
}
- <#else>
- ${helper.getLanguageTypeNameForField(field)}[] ${arrayField.name} = _${arrayField.name}List.toArray(new ${helper.getLanguageTypeNameForField(arrayField)}[0])
- </#if>
</#if>
<#break>
<#case "checksum">
@@ -315,7 +323,7 @@ func ${type.name}Parse(io spi.ReadBuffer<#if type.parserArguments?has_content>,
${helper.getLanguageTypeNameForField(field)} checksumRef = ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
checksum = (${helper.getLanguageTypeNameForField(field)}) (${helper.toParseExpression(checksumField, checksumField.checksumExpression, type.parserArguments)})
if checksum != checksumRef {
- throw new ParseException(String.format("Checksum verification failed. Expected %04X but got %04X", checksumRef & 0xFFFF, checksum & 0xFFFF));
+ return nil, errors.New("Checksum verification failed. Expected " + (checksumRef & 0xFFFF) + " but got " + (checksum & 0xFFFF)")
}
}
<#break>
@@ -326,7 +334,7 @@ func ${type.name}Parse(io spi.ReadBuffer<#if type.parserArguments?has_content>,
// Const Field (${constField.name})
var ${constField.name} ${helper.getLanguageTypeNameForField(field)} = ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
if ${constField.name} != ${constField.name?upper_case} {
- throw new ParseException("Expected constant value " + ${type.name}.${constField.name?upper_case} + " but got " + ${constField.name})
+ return nil, errors.New("Expected constant value " + strconv.Itoa(int(${constField.name?upper_case})) + " but got " + strconv.Itoa(int(${constField.name})))
}
<#break>
<#case "discriminator">
@@ -463,15 +471,14 @@ func ${type.name}Parse(io spi.ReadBuffer<#if type.parserArguments?has_content>,
var ${simpleField.name} ${helper.getLanguageTypeNameForField(field)} = ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
<#else>
<#assign complexTypeReference = simpleField.type>
- var _${simpleField.name}Message spi.Message = ${complexTypeReference.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument>${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(simpleField.type, parserArgument?index))}(${helper.toParseExpression(simpleField, parserArgument, type.parserArguments)})<#sep>, </#sep></#list></#if>)
+ _${simpleField.name}Message, _err := ${complexTypeReference.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument>${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(simpleField.type, parserArgument?index))}(${helper.toParseExpression(simpleField, parserArgument, type.parserArguments)})<#sep>, </#sep></#list></#if>)
+ if _err != nil {
+ return nil, errors.New("Error parsing simple field '${simpleField.name}'. " + _err.Error())
+ }
var ${simpleField.name} ${helper.getLanguageTypeNameForField(field)}
${simpleField.name}, _${simpleField.name}Ok := _${simpleField.name}Message.(${helper.getLanguageTypeNameForField(field)})
if !_${simpleField.name}Ok {
- log.WithFields(log.Fields{
- "expected type": "${helper.getLanguageTypeNameForField(field)}",
- "got type": reflect.TypeOf(_${simpleField.name}Message),
- }).Error("Couldn't cast message")
- throw new RuntimeException()
+ return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_${simpleField.name}Message).Name() + " to ${helper.getLanguageTypeNameForField(field)}")
}
</#if>
<#break>
@@ -481,12 +488,16 @@ func ${type.name}Parse(io spi.ReadBuffer<#if type.parserArguments?has_content>,
// Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
var initializer ${type.name}Initializer
+ var typeSwitchError error
switch {
<#list switchField.cases as case>
<#if case.discriminatorValues?has_content>case <#list case.discriminatorValues as discriminatorValue>${helper.toParseExpression(null, switchField.discriminatorExpressions[discriminatorValue?index], type.parserArguments)} == ${discriminatorValue}<#sep> && </#sep></#list></#if>:
- initializer = ${case.name}Parse(io<#if case.parserArguments?has_content>, <#list case.parserArguments as parserArgument>${parserArgument.name}<#sep>, </#sep></#list></#if>)
+ initializer, typeSwitchError = ${case.name}Parse(io<#if case.parserArguments?has_content>, <#list case.parserArguments as parserArgument>${parserArgument.name}<#sep>, </#sep></#list></#if>)
</#list>
}
+ if typeSwitchError != nil {
+ return nil, errors.New("Error parsing sub-type for type-switch. " + typeSwitchError.Error())
+ }
<#break>
<#case "virtual">
@@ -500,9 +511,9 @@ func ${type.name}Parse(io spi.ReadBuffer<#if type.parserArguments?has_content>,
// Create the instance
<#if helper.isDiscriminatedParentTypeDefinition()>
- return initializer.initialize(<#list type.propertyFields as field>${field.name}<#sep>, </#sep></#list>)
+ return initializer.initialize(<#list type.propertyFields as field>${field.name}<#sep>, </#sep></#list>), nil
<#else>
- return New${type.name}(<#list type.propertyFields as field>${field.name}<#sep>, </#sep></#list>)
+ return New${type.name}(<#list type.propertyFields as field>${field.name}<#sep>, </#sep></#list>), nil
</#if>
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusConstants.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusConstants.go
index ac6c3e2..97c13ea 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusConstants.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusConstants.go
@@ -19,47 +19,42 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "errors"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
+ "strconv"
)
// Constant values.
-const MODBUSTCPDEFAULTPORT uint16 = 502;
+const MODBUSTCPDEFAULTPORT uint16 = 502
type ModbusConstants struct {
-
}
-
func NewModbusConstants() spi.Message {
- return &ModbusConstants{}
+ return &ModbusConstants{}
}
func (m ModbusConstants) LengthInBits() uint16 {
- var lengthInBits uint16 = 0
+ var lengthInBits uint16 = 0
- // Const Field (modbusTcpDefaultPort)
- lengthInBits += 16
+ // Const Field (modbusTcpDefaultPort)
+ lengthInBits += 16
- return lengthInBits
+ return lengthInBits
}
func (m ModbusConstants) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusConstantsParse(io spi.ReadBuffer) spi.Message {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusConstantsParse(io spi.ReadBuffer) (spi.Message, error) {
- // Const Field (modbusTcpDefaultPort)
- var modbusTcpDefaultPort uint16 = io.ReadUint16(16)
- if modbusTcpDefaultPort != MODBUSTCPDEFAULTPORT {
- throw new ParseException("Expected constant value " + ModbusConstants.MODBUSTCPDEFAULTPORT + " but got " + modbusTcpDefaultPort)
- }
+ // Const Field (modbusTcpDefaultPort)
+ var modbusTcpDefaultPort uint16 = io.ReadUint16(16)
+ if modbusTcpDefaultPort != MODBUSTCPDEFAULTPORT {
+ return nil, errors.New("Expected constant value " + strconv.Itoa(int(MODBUSTCPDEFAULTPORT)) + " but got " + strconv.Itoa(int(modbusTcpDefaultPort)))
+ }
- // Create the instance
- return NewModbusConstants()
+ // Create the instance
+ return NewModbusConstants(), nil
}
-
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDU.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDU.go
index f651e3f..6963177 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDU.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDU.go
@@ -19,8 +19,7 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
+ "errors"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -34,7 +33,7 @@ type ModbusPDUInitializer interface {
func (m ModbusPDU) LengthInBits() uint16 {
var lengthInBits uint16 = 0
- // Discriminator Field (error)
+ // Discriminator Field (errorFlag)
lengthInBits += 1
// Discriminator Field (function)
@@ -49,93 +48,95 @@ func (m ModbusPDU) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUParse(io spi.ReadBuffer, response bool) spi.Message {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUParse(io spi.ReadBuffer, response bool) (spi.Message, error) {
- // Discriminator Field (error) (Used as input to a switch field)
- var error bool = io.ReadBit()
+ // Discriminator Field (errorFlag) (Used as input to a switch field)
+ var errorFlag bool = io.ReadBit()
// Discriminator Field (function) (Used as input to a switch field)
var function uint8 = io.ReadUint8(7)
// Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
var initializer ModbusPDUInitializer
+ var typeSwitchError error
switch {
- case error == true:
- initializer = ModbusPDUErrorParse(io)
- case error == false && function == 0x02 && response == false:
- initializer = ModbusPDUReadDiscreteInputsRequestParse(io)
- case error == false && function == 0x02 && response == true:
- initializer = ModbusPDUReadDiscreteInputsResponseParse(io)
- case error == false && function == 0x01 && response == false:
- initializer = ModbusPDUReadCoilsRequestParse(io)
- case error == false && function == 0x01 && response == true:
- initializer = ModbusPDUReadCoilsResponseParse(io)
- case error == false && function == 0x05 && response == false:
- initializer = ModbusPDUWriteSingleCoilRequestParse(io)
- case error == false && function == 0x05 && response == true:
- initializer = ModbusPDUWriteSingleCoilResponseParse(io)
- case error == false && function == 0x0F && response == false:
- initializer = ModbusPDUWriteMultipleCoilsRequestParse(io)
- case error == false && function == 0x0F && response == true:
- initializer = ModbusPDUWriteMultipleCoilsResponseParse(io)
- case error == false && function == 0x04 && response == false:
- initializer = ModbusPDUReadInputRegistersRequestParse(io)
- case error == false && function == 0x04 && response == true:
- initializer = ModbusPDUReadInputRegistersResponseParse(io)
- case error == false && function == 0x03 && response == false:
- initializer = ModbusPDUReadHoldingRegistersRequestParse(io)
- case error == false && function == 0x03 && response == true:
- initializer = ModbusPDUReadHoldingRegistersResponseParse(io)
- case error == false && function == 0x06 && response == false:
- initializer = ModbusPDUWriteSingleRegisterRequestParse(io)
- case error == false && function == 0x06 && response == true:
- initializer = ModbusPDUWriteSingleRegisterResponseParse(io)
- case error == false && function == 0x10 && response == false:
- initializer = ModbusPDUWriteMultipleHoldingRegistersRequestParse(io)
- case error == false && function == 0x10 && response == true:
- initializer = ModbusPDUWriteMultipleHoldingRegistersResponseParse(io)
- case error == false && function == 0x17 && response == false:
- initializer = ModbusPDUReadWriteMultipleHoldingRegistersRequestParse(io)
- case error == false && function == 0x17 && response == true:
- initializer = ModbusPDUReadWriteMultipleHoldingRegistersResponseParse(io)
- case error == false && function == 0x16 && response == false:
- initializer = ModbusPDUMaskWriteHoldingRegisterRequestParse(io)
- case error == false && function == 0x16 && response == true:
- initializer = ModbusPDUMaskWriteHoldingRegisterResponseParse(io)
- case error == false && function == 0x18 && response == false:
- initializer = ModbusPDUReadFifoQueueRequestParse(io)
- case error == false && function == 0x18 && response == true:
- initializer = ModbusPDUReadFifoQueueResponseParse(io)
- case error == false && function == 0x14 && response == false:
- initializer = ModbusPDUReadFileRecordRequestParse(io)
- case error == false && function == 0x14 && response == true:
- initializer = ModbusPDUReadFileRecordResponseParse(io)
- case error == false && function == 0x15 && response == false:
- initializer = ModbusPDUWriteFileRecordRequestParse(io)
- case error == false && function == 0x15 && response == true:
- initializer = ModbusPDUWriteFileRecordResponseParse(io)
- case error == false && function == 0x07 && response == false:
- initializer = ModbusPDUReadExceptionStatusRequestParse(io)
- case error == false && function == 0x07 && response == true:
- initializer = ModbusPDUReadExceptionStatusResponseParse(io)
- case error == false && function == 0x08 && response == false:
- initializer = ModbusPDUDiagnosticRequestParse(io)
- case error == false && function == 0x0C && response == false:
- initializer = ModbusPDUGetComEventLogRequestParse(io)
- case error == false && function == 0x0C && response == true:
- initializer = ModbusPDUGetComEventLogResponseParse(io)
- case error == false && function == 0x11 && response == false:
- initializer = ModbusPDUReportServerIdRequestParse(io)
- case error == false && function == 0x11 && response == true:
- initializer = ModbusPDUReportServerIdResponseParse(io)
- case error == false && function == 0x2B && response == false:
- initializer = ModbusPDUReadDeviceIdentificationRequestParse(io)
- case error == false && function == 0x2B && response == true:
- initializer = ModbusPDUReadDeviceIdentificationResponseParse(io)
+ case errorFlag == true:
+ initializer, typeSwitchError = ModbusPDUErrorParse(io)
+ case errorFlag == false && function == 0x02 && response == false:
+ initializer, typeSwitchError = ModbusPDUReadDiscreteInputsRequestParse(io)
+ case errorFlag == false && function == 0x02 && response == true:
+ initializer, typeSwitchError = ModbusPDUReadDiscreteInputsResponseParse(io)
+ case errorFlag == false && function == 0x01 && response == false:
+ initializer, typeSwitchError = ModbusPDUReadCoilsRequestParse(io)
+ case errorFlag == false && function == 0x01 && response == true:
+ initializer, typeSwitchError = ModbusPDUReadCoilsResponseParse(io)
+ case errorFlag == false && function == 0x05 && response == false:
+ initializer, typeSwitchError = ModbusPDUWriteSingleCoilRequestParse(io)
+ case errorFlag == false && function == 0x05 && response == true:
+ initializer, typeSwitchError = ModbusPDUWriteSingleCoilResponseParse(io)
+ case errorFlag == false && function == 0x0F && response == false:
+ initializer, typeSwitchError = ModbusPDUWriteMultipleCoilsRequestParse(io)
+ case errorFlag == false && function == 0x0F && response == true:
+ initializer, typeSwitchError = ModbusPDUWriteMultipleCoilsResponseParse(io)
+ case errorFlag == false && function == 0x04 && response == false:
+ initializer, typeSwitchError = ModbusPDUReadInputRegistersRequestParse(io)
+ case errorFlag == false && function == 0x04 && response == true:
+ initializer, typeSwitchError = ModbusPDUReadInputRegistersResponseParse(io)
+ case errorFlag == false && function == 0x03 && response == false:
+ initializer, typeSwitchError = ModbusPDUReadHoldingRegistersRequestParse(io)
+ case errorFlag == false && function == 0x03 && response == true:
+ initializer, typeSwitchError = ModbusPDUReadHoldingRegistersResponseParse(io)
+ case errorFlag == false && function == 0x06 && response == false:
+ initializer, typeSwitchError = ModbusPDUWriteSingleRegisterRequestParse(io)
+ case errorFlag == false && function == 0x06 && response == true:
+ initializer, typeSwitchError = ModbusPDUWriteSingleRegisterResponseParse(io)
+ case errorFlag == false && function == 0x10 && response == false:
+ initializer, typeSwitchError = ModbusPDUWriteMultipleHoldingRegistersRequestParse(io)
+ case errorFlag == false && function == 0x10 && response == true:
+ initializer, typeSwitchError = ModbusPDUWriteMultipleHoldingRegistersResponseParse(io)
+ case errorFlag == false && function == 0x17 && response == false:
+ initializer, typeSwitchError = ModbusPDUReadWriteMultipleHoldingRegistersRequestParse(io)
+ case errorFlag == false && function == 0x17 && response == true:
+ initializer, typeSwitchError = ModbusPDUReadWriteMultipleHoldingRegistersResponseParse(io)
+ case errorFlag == false && function == 0x16 && response == false:
+ initializer, typeSwitchError = ModbusPDUMaskWriteHoldingRegisterRequestParse(io)
+ case errorFlag == false && function == 0x16 && response == true:
+ initializer, typeSwitchError = ModbusPDUMaskWriteHoldingRegisterResponseParse(io)
+ case errorFlag == false && function == 0x18 && response == false:
+ initializer, typeSwitchError = ModbusPDUReadFifoQueueRequestParse(io)
+ case errorFlag == false && function == 0x18 && response == true:
+ initializer, typeSwitchError = ModbusPDUReadFifoQueueResponseParse(io)
+ case errorFlag == false && function == 0x14 && response == false:
+ initializer, typeSwitchError = ModbusPDUReadFileRecordRequestParse(io)
+ case errorFlag == false && function == 0x14 && response == true:
+ initializer, typeSwitchError = ModbusPDUReadFileRecordResponseParse(io)
+ case errorFlag == false && function == 0x15 && response == false:
+ initializer, typeSwitchError = ModbusPDUWriteFileRecordRequestParse(io)
+ case errorFlag == false && function == 0x15 && response == true:
+ initializer, typeSwitchError = ModbusPDUWriteFileRecordResponseParse(io)
+ case errorFlag == false && function == 0x07 && response == false:
+ initializer, typeSwitchError = ModbusPDUReadExceptionStatusRequestParse(io)
+ case errorFlag == false && function == 0x07 && response == true:
+ initializer, typeSwitchError = ModbusPDUReadExceptionStatusResponseParse(io)
+ case errorFlag == false && function == 0x08 && response == false:
+ initializer, typeSwitchError = ModbusPDUDiagnosticRequestParse(io)
+ case errorFlag == false && function == 0x0C && response == false:
+ initializer, typeSwitchError = ModbusPDUGetComEventLogRequestParse(io)
+ case errorFlag == false && function == 0x0C && response == true:
+ initializer, typeSwitchError = ModbusPDUGetComEventLogResponseParse(io)
+ case errorFlag == false && function == 0x11 && response == false:
+ initializer, typeSwitchError = ModbusPDUReportServerIdRequestParse(io)
+ case errorFlag == false && function == 0x11 && response == true:
+ initializer, typeSwitchError = ModbusPDUReportServerIdResponseParse(io)
+ case errorFlag == false && function == 0x2B && response == false:
+ initializer, typeSwitchError = ModbusPDUReadDeviceIdentificationRequestParse(io)
+ case errorFlag == false && function == 0x2B && response == true:
+ initializer, typeSwitchError = ModbusPDUReadDeviceIdentificationResponseParse(io)
+ }
+ if typeSwitchError != nil {
+ return nil, errors.New("Error parsing sub-type for type-switch. " + typeSwitchError.Error())
}
// Create the instance
- return initializer.initialize()
+ return initializer.initialize(), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUDiagnosticRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUDiagnosticRequest.go
index 6a32f40..1a14750 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUDiagnosticRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUDiagnosticRequest.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -54,9 +52,7 @@ func (m ModbusPDUDiagnosticRequest) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUDiagnosticRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUDiagnosticRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Simple Field (status)
var status uint16 = io.ReadUint16(16)
@@ -65,5 +61,5 @@ func ModbusPDUDiagnosticRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
var eventCount uint16 = io.ReadUint16(16)
// Create the instance
- return NewModbusPDUDiagnosticRequest(status, eventCount)
+ return NewModbusPDUDiagnosticRequest(status, eventCount), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUError.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUError.go
index a8edf1d..bcd6b14 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUError.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUError.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -50,13 +48,11 @@ func (m ModbusPDUError) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUErrorParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUErrorParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Simple Field (exceptionCode)
var exceptionCode uint8 = io.ReadUint8(8)
// Create the instance
- return NewModbusPDUError(exceptionCode)
+ return NewModbusPDUError(exceptionCode), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogRequest.go
index d7ac13b..cc80958 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogRequest.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -46,10 +44,8 @@ func (m ModbusPDUGetComEventLogRequest) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUGetComEventLogRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUGetComEventLogRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Create the instance
- return NewModbusPDUGetComEventLogRequest()
+ return NewModbusPDUGetComEventLogRequest(), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogResponse.go
index 71e1016..f391cea 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogResponse.go
@@ -19,86 +19,77 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
type ModbusPDUGetComEventLogResponse struct {
- status uint16
- eventCount uint16
- messageCount uint16
- events []int8
- ModbusPDU
+ status uint16
+ eventCount uint16
+ messageCount uint16
+ events []int8
+ ModbusPDU
}
func (m ModbusPDUGetComEventLogResponse) initialize() spi.Message {
- return spi.Message(m)
+ return spi.Message(m)
}
func NewModbusPDUGetComEventLogResponse(status uint16, eventCount uint16, messageCount uint16, events []int8) ModbusPDUInitializer {
- return &ModbusPDUGetComEventLogResponse{status: status, eventCount: eventCount, messageCount: messageCount, events: events}
+ return &ModbusPDUGetComEventLogResponse{status: status, eventCount: eventCount, messageCount: messageCount, events: events}
}
func (m ModbusPDUGetComEventLogResponse) LengthInBits() uint16 {
- var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
+ var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
- // Implicit Field (byteCount)
- lengthInBits += 8
+ // Implicit Field (byteCount)
+ lengthInBits += 8
- // Simple field (status)
- lengthInBits += 16
+ // Simple field (status)
+ lengthInBits += 16
- // Simple field (eventCount)
- lengthInBits += 16
+ // Simple field (eventCount)
+ lengthInBits += 16
- // Simple field (messageCount)
- lengthInBits += 16
+ // Simple field (messageCount)
+ lengthInBits += 16
- // Array field
- if len(m.events) > 0 {
- lengthInBits += 8 * uint16(len(m.events))
- }
+ // Array field
+ if len(m.events) > 0 {
+ lengthInBits += 8 * uint16(len(m.events))
+ }
- return lengthInBits
+ return lengthInBits
}
func (m ModbusPDUGetComEventLogResponse) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusPDUGetComEventLogResponseParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
-
- // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var byteCount uint8 = io.ReadUint8(8)
-
- // Simple Field (status)
- var status uint16 = io.ReadUint16(16)
-
- // Simple Field (eventCount)
- var eventCount uint16 = io.ReadUint16(16)
-
- // Simple Field (messageCount)
- var messageCount uint16 = io.ReadUint16(16)
-
- // Array field (events)
- // Count array
- if (byteCount) - (6) > math.MaxUint8 {
- throw new ParseException("Array count of " + ((byteCount) - (6)) + " exceeds the maximum allowed count of " + math.MaxUint8);
- }
- int8[] events;
- {
- var itemCount := (byteCount) - (6)
- events = new int8[itemCount]
- for curItem := 0; curItem < itemCount; curItem++ {
-
- events[curItem] = io.ReadInt8(8)
- }
- }
-
- // Create the instance
- return NewModbusPDUGetComEventLogResponse(status, eventCount, messageCount, events)
-}
+func ModbusPDUGetComEventLogResponseParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
+
+ // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var byteCount uint8 = io.ReadUint8(8)
+
+ // Simple Field (status)
+ var status uint16 = io.ReadUint16(16)
+
+ // Simple Field (eventCount)
+ var eventCount uint16 = io.ReadUint16(16)
+ // Simple Field (messageCount)
+ var messageCount uint16 = io.ReadUint16(16)
+
+ // Array field (events)
+ var events []int8
+ // Count array
+ {
+ events := make([]int8, (byteCount)-(6))
+ for curItem := uint16(0); curItem < uint16((byteCount)-(6)); curItem++ {
+
+ events[curItem] = io.ReadInt8(8)
+ }
+ }
+
+ // Create the instance
+ return NewModbusPDUGetComEventLogResponse(status, eventCount, messageCount, events), nil
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterRequest.go
index 0e17dbb..ac29a11 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterRequest.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -58,9 +56,7 @@ func (m ModbusPDUMaskWriteHoldingRegisterRequest) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUMaskWriteHoldingRegisterRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUMaskWriteHoldingRegisterRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Simple Field (referenceAddress)
var referenceAddress uint16 = io.ReadUint16(16)
@@ -72,5 +68,5 @@ func ModbusPDUMaskWriteHoldingRegisterRequestParse(io spi.ReadBuffer) ModbusPDUI
var orMask uint16 = io.ReadUint16(16)
// Create the instance
- return NewModbusPDUMaskWriteHoldingRegisterRequest(referenceAddress, andMask, orMask)
+ return NewModbusPDUMaskWriteHoldingRegisterRequest(referenceAddress, andMask, orMask), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterResponse.go
index 3e3b8f4..eaf896e 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterResponse.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -58,9 +56,7 @@ func (m ModbusPDUMaskWriteHoldingRegisterResponse) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUMaskWriteHoldingRegisterResponseParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUMaskWriteHoldingRegisterResponseParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Simple Field (referenceAddress)
var referenceAddress uint16 = io.ReadUint16(16)
@@ -72,5 +68,5 @@ func ModbusPDUMaskWriteHoldingRegisterResponseParse(io spi.ReadBuffer) ModbusPDU
var orMask uint16 = io.ReadUint16(16)
// Create the instance
- return NewModbusPDUMaskWriteHoldingRegisterResponse(referenceAddress, andMask, orMask)
+ return NewModbusPDUMaskWriteHoldingRegisterResponse(referenceAddress, andMask, orMask), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsRequest.go
index 6d92d32..9be3ec7 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsRequest.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -54,9 +52,7 @@ func (m ModbusPDUReadCoilsRequest) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUReadCoilsRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReadCoilsRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Simple Field (startingAddress)
var startingAddress uint16 = io.ReadUint16(16)
@@ -65,5 +61,5 @@ func ModbusPDUReadCoilsRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
var quantity uint16 = io.ReadUint16(16)
// Create the instance
- return NewModbusPDUReadCoilsRequest(startingAddress, quantity)
+ return NewModbusPDUReadCoilsRequest(startingAddress, quantity), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsResponse.go
index f805fa6..f4aeb39 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsResponse.go
@@ -19,65 +19,56 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
type ModbusPDUReadCoilsResponse struct {
- value []int8
- ModbusPDU
+ value []int8
+ ModbusPDU
}
func (m ModbusPDUReadCoilsResponse) initialize() spi.Message {
- return spi.Message(m)
+ return spi.Message(m)
}
func NewModbusPDUReadCoilsResponse(value []int8) ModbusPDUInitializer {
- return &ModbusPDUReadCoilsResponse{value: value}
+ return &ModbusPDUReadCoilsResponse{value: value}
}
func (m ModbusPDUReadCoilsResponse) LengthInBits() uint16 {
- var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
+ var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
- // Implicit Field (byteCount)
- lengthInBits += 8
+ // Implicit Field (byteCount)
+ lengthInBits += 8
- // Array field
- if len(m.value) > 0 {
- lengthInBits += 8 * uint16(len(m.value))
- }
+ // Array field
+ if len(m.value) > 0 {
+ lengthInBits += 8 * uint16(len(m.value))
+ }
- return lengthInBits
+ return lengthInBits
}
func (m ModbusPDUReadCoilsResponse) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusPDUReadCoilsResponseParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReadCoilsResponseParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
- // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var byteCount uint8 = io.ReadUint8(8)
+ // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var byteCount uint8 = io.ReadUint8(8)
- // Array field (value)
- // Count array
- if byteCount > math.MaxUint8 {
- throw new ParseException("Array count of " + (byteCount) + " exceeds the maximum allowed count of " + math.MaxUint8);
- }
- int8[] value;
- {
- var itemCount := byteCount
- value = new int8[itemCount]
- for curItem := 0; curItem < itemCount; curItem++ {
-
- value[curItem] = io.ReadInt8(8)
- }
- }
+ // Array field (value)
+ var value []int8
+ // Count array
+ {
+ value := make([]int8, byteCount)
+ for curItem := uint16(0); curItem < uint16(byteCount); curItem++ {
- // Create the instance
- return NewModbusPDUReadCoilsResponse(value)
-}
+ value[curItem] = io.ReadInt8(8)
+ }
+ }
+ // Create the instance
+ return NewModbusPDUReadCoilsResponse(value), nil
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationRequest.go
index 974dca9..1e84908 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationRequest.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -46,10 +44,8 @@ func (m ModbusPDUReadDeviceIdentificationRequest) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUReadDeviceIdentificationRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReadDeviceIdentificationRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Create the instance
- return NewModbusPDUReadDeviceIdentificationRequest()
+ return NewModbusPDUReadDeviceIdentificationRequest(), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationResponse.go
index 00e999e..69b099e 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationResponse.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -46,10 +44,8 @@ func (m ModbusPDUReadDeviceIdentificationResponse) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUReadDeviceIdentificationResponseParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReadDeviceIdentificationResponseParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Create the instance
- return NewModbusPDUReadDeviceIdentificationResponse()
+ return NewModbusPDUReadDeviceIdentificationResponse(), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsRequest.go
index 00f24a0..d85d551 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsRequest.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -54,9 +52,7 @@ func (m ModbusPDUReadDiscreteInputsRequest) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUReadDiscreteInputsRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReadDiscreteInputsRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Simple Field (startingAddress)
var startingAddress uint16 = io.ReadUint16(16)
@@ -65,5 +61,5 @@ func ModbusPDUReadDiscreteInputsRequestParse(io spi.ReadBuffer) ModbusPDUInitial
var quantity uint16 = io.ReadUint16(16)
// Create the instance
- return NewModbusPDUReadDiscreteInputsRequest(startingAddress, quantity)
+ return NewModbusPDUReadDiscreteInputsRequest(startingAddress, quantity), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsResponse.go
index b0b3a78..d1bd499 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsResponse.go
@@ -19,65 +19,56 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
type ModbusPDUReadDiscreteInputsResponse struct {
- value []int8
- ModbusPDU
+ value []int8
+ ModbusPDU
}
func (m ModbusPDUReadDiscreteInputsResponse) initialize() spi.Message {
- return spi.Message(m)
+ return spi.Message(m)
}
func NewModbusPDUReadDiscreteInputsResponse(value []int8) ModbusPDUInitializer {
- return &ModbusPDUReadDiscreteInputsResponse{value: value}
+ return &ModbusPDUReadDiscreteInputsResponse{value: value}
}
func (m ModbusPDUReadDiscreteInputsResponse) LengthInBits() uint16 {
- var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
+ var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
- // Implicit Field (byteCount)
- lengthInBits += 8
+ // Implicit Field (byteCount)
+ lengthInBits += 8
- // Array field
- if len(m.value) > 0 {
- lengthInBits += 8 * uint16(len(m.value))
- }
+ // Array field
+ if len(m.value) > 0 {
+ lengthInBits += 8 * uint16(len(m.value))
+ }
- return lengthInBits
+ return lengthInBits
}
func (m ModbusPDUReadDiscreteInputsResponse) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusPDUReadDiscreteInputsResponseParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReadDiscreteInputsResponseParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
- // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var byteCount uint8 = io.ReadUint8(8)
+ // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var byteCount uint8 = io.ReadUint8(8)
- // Array field (value)
- // Count array
- if byteCount > math.MaxUint8 {
- throw new ParseException("Array count of " + (byteCount) + " exceeds the maximum allowed count of " + math.MaxUint8);
- }
- int8[] value;
- {
- var itemCount := byteCount
- value = new int8[itemCount]
- for curItem := 0; curItem < itemCount; curItem++ {
-
- value[curItem] = io.ReadInt8(8)
- }
- }
+ // Array field (value)
+ var value []int8
+ // Count array
+ {
+ value := make([]int8, byteCount)
+ for curItem := uint16(0); curItem < uint16(byteCount); curItem++ {
- // Create the instance
- return NewModbusPDUReadDiscreteInputsResponse(value)
-}
+ value[curItem] = io.ReadInt8(8)
+ }
+ }
+ // Create the instance
+ return NewModbusPDUReadDiscreteInputsResponse(value), nil
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusRequest.go
index 2151094..f6e37a6 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusRequest.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -46,10 +44,8 @@ func (m ModbusPDUReadExceptionStatusRequest) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUReadExceptionStatusRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReadExceptionStatusRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Create the instance
- return NewModbusPDUReadExceptionStatusRequest()
+ return NewModbusPDUReadExceptionStatusRequest(), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusResponse.go
index ea6477f..ba35c1a 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusResponse.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -50,13 +48,11 @@ func (m ModbusPDUReadExceptionStatusResponse) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUReadExceptionStatusResponseParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReadExceptionStatusResponseParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Simple Field (value)
var value uint8 = io.ReadUint8(8)
// Create the instance
- return NewModbusPDUReadExceptionStatusResponse(value)
+ return NewModbusPDUReadExceptionStatusResponse(value), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueRequest.go
index e033a96..308da82 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueRequest.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -50,13 +48,11 @@ func (m ModbusPDUReadFifoQueueRequest) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUReadFifoQueueRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReadFifoQueueRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Simple Field (fifoPointerAddress)
var fifoPointerAddress uint16 = io.ReadUint16(16)
// Create the instance
- return NewModbusPDUReadFifoQueueRequest(fifoPointerAddress)
+ return NewModbusPDUReadFifoQueueRequest(fifoPointerAddress), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueResponse.go
index c79a244..cb626bb 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueResponse.go
@@ -19,71 +19,62 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
type ModbusPDUReadFifoQueueResponse struct {
- fifoValue []uint16
- ModbusPDU
+ fifoValue []uint16
+ ModbusPDU
}
func (m ModbusPDUReadFifoQueueResponse) initialize() spi.Message {
- return spi.Message(m)
+ return spi.Message(m)
}
func NewModbusPDUReadFifoQueueResponse(fifoValue []uint16) ModbusPDUInitializer {
- return &ModbusPDUReadFifoQueueResponse{fifoValue: fifoValue}
+ return &ModbusPDUReadFifoQueueResponse{fifoValue: fifoValue}
}
func (m ModbusPDUReadFifoQueueResponse) LengthInBits() uint16 {
- var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
+ var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
- // Implicit Field (byteCount)
- lengthInBits += 16
+ // Implicit Field (byteCount)
+ lengthInBits += 16
- // Implicit Field (fifoCount)
- lengthInBits += 16
+ // Implicit Field (fifoCount)
+ lengthInBits += 16
- // Array field
- if len(m.fifoValue) > 0 {
- lengthInBits += 16 * uint16(len(m.fifoValue))
- }
+ // Array field
+ if len(m.fifoValue) > 0 {
+ lengthInBits += 16 * uint16(len(m.fifoValue))
+ }
- return lengthInBits
+ return lengthInBits
}
func (m ModbusPDUReadFifoQueueResponse) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusPDUReadFifoQueueResponseParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
-
- // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var byteCount uint16 = io.ReadUint16(16)
-
- // Implicit Field (fifoCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var fifoCount uint16 = io.ReadUint16(16)
-
- // Array field (fifoValue)
- // Count array
- if fifoCount > math.MaxUint8 {
- throw new ParseException("Array count of " + (fifoCount) + " exceeds the maximum allowed count of " + math.MaxUint8);
- }
- uint16[] fifoValue;
- {
- var itemCount := fifoCount
- fifoValue = new uint16[itemCount]
- for curItem := 0; curItem < itemCount; curItem++ {
-
- fifoValue[curItem] = io.ReadUint16(16)
- }
- }
-
- // Create the instance
- return NewModbusPDUReadFifoQueueResponse(fifoValue)
-}
+func ModbusPDUReadFifoQueueResponseParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
+
+ // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var _ uint16 = io.ReadUint16(16)
+
+ // Implicit Field (fifoCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var fifoCount uint16 = io.ReadUint16(16)
+ // Array field (fifoValue)
+ var fifoValue []uint16
+ // Count array
+ {
+ fifoValue := make([]uint16, fifoCount)
+ for curItem := uint16(0); curItem < uint16(fifoCount); curItem++ {
+
+ fifoValue[curItem] = io.ReadUint16(16)
+ }
+ }
+
+ // Create the instance
+ return NewModbusPDUReadFifoQueueResponse(fifoValue), nil
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequest.go
index 8517314..a33b3b6 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequest.go
@@ -19,62 +19,67 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "errors"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
+ "reflect"
)
type ModbusPDUReadFileRecordRequest struct {
- items []ModbusPDUReadFileRecordRequestItem
- ModbusPDU
+ items []ModbusPDUReadFileRecordRequestItem
+ ModbusPDU
}
func (m ModbusPDUReadFileRecordRequest) initialize() spi.Message {
- return spi.Message(m)
+ return spi.Message(m)
}
func NewModbusPDUReadFileRecordRequest(items []ModbusPDUReadFileRecordRequestItem) ModbusPDUInitializer {
- return &ModbusPDUReadFileRecordRequest{items: items}
+ return &ModbusPDUReadFileRecordRequest{items: items}
}
func (m ModbusPDUReadFileRecordRequest) LengthInBits() uint16 {
- var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
+ var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
- // Implicit Field (byteCount)
- lengthInBits += 8
+ // Implicit Field (byteCount)
+ lengthInBits += 8
- // Array field
- if len(m.items) > 0 {
- for _, element := range m.items {
- lengthInBits += element.LengthInBits()
- }
- }
+ // Array field
+ if len(m.items) > 0 {
+ for _, element := range m.items {
+ lengthInBits += element.LengthInBits()
+ }
+ }
- return lengthInBits
+ return lengthInBits
}
func (m ModbusPDUReadFileRecordRequest) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusPDUReadFileRecordRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReadFileRecordRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
- // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var byteCount uint8 = io.ReadUint8(8)
+ // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var byteCount uint8 = io.ReadUint8(8)
- // Array field (items)
- // Length array
- var _itemsLength := byteCount
- List<ModbusPDUReadFileRecordRequestItem> _itemsList = new LinkedList<>();
- itemsEndPos := io.GetPos() + _itemsLength;
- for ;io.getPos() < itemsEndPos; {
- _itemsList.add(ModbusPDUReadFileRecordRequestItemIO.staticParse(io));
- }
- ModbusPDUReadFileRecordRequestItem[] items = _itemsList.toArray(new ModbusPDUReadFileRecordRequestItem[0])
+ // Array field (items)
+ var items []ModbusPDUReadFileRecordRequestItem
+ // Length array
+ _itemsLength := uint16(byteCount)
+ _itemsEndPos := io.GetPos() + _itemsLength
+ for io.GetPos() < _itemsEndPos {
+ _message, _err := ModbusPDUReadFileRecordRequestItemParse(io)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'items' field " + _err.Error())
+ }
+ var _item ModbusPDUReadFileRecordRequestItem
+ _item, _ok := _message.(ModbusPDUReadFileRecordRequestItem)
+ if !_ok {
+ return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_item).Name() + " to ModbusPDUReadFileRecordRequestItem")
+ }
+ items = append(items, _item)
+ }
- // Create the instance
- return NewModbusPDUReadFileRecordRequest(items)
+ // Create the instance
+ return NewModbusPDUReadFileRecordRequest(items), nil
}
-
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequestItem.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequestItem.go
index 7440503..0fc1b51 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequestItem.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequestItem.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -57,9 +55,7 @@ func (m ModbusPDUReadFileRecordRequestItem) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUReadFileRecordRequestItemParse(io spi.ReadBuffer) spi.Message {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReadFileRecordRequestItemParse(io spi.ReadBuffer) (spi.Message, error) {
// Simple Field (referenceType)
var referenceType uint8 = io.ReadUint8(8)
@@ -74,5 +70,5 @@ func ModbusPDUReadFileRecordRequestItemParse(io spi.ReadBuffer) spi.Message {
var recordLength uint16 = io.ReadUint16(16)
// Create the instance
- return NewModbusPDUReadFileRecordRequestItem(referenceType, fileNumber, recordNumber, recordLength)
+ return NewModbusPDUReadFileRecordRequestItem(referenceType, fileNumber, recordNumber, recordLength), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponse.go
index a0b522e..90548ce 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponse.go
@@ -19,62 +19,67 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "errors"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
+ "reflect"
)
type ModbusPDUReadFileRecordResponse struct {
- items []ModbusPDUReadFileRecordResponseItem
- ModbusPDU
+ items []ModbusPDUReadFileRecordResponseItem
+ ModbusPDU
}
func (m ModbusPDUReadFileRecordResponse) initialize() spi.Message {
- return spi.Message(m)
+ return spi.Message(m)
}
func NewModbusPDUReadFileRecordResponse(items []ModbusPDUReadFileRecordResponseItem) ModbusPDUInitializer {
- return &ModbusPDUReadFileRecordResponse{items: items}
+ return &ModbusPDUReadFileRecordResponse{items: items}
}
func (m ModbusPDUReadFileRecordResponse) LengthInBits() uint16 {
- var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
+ var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
- // Implicit Field (byteCount)
- lengthInBits += 8
+ // Implicit Field (byteCount)
+ lengthInBits += 8
- // Array field
- if len(m.items) > 0 {
- for _, element := range m.items {
- lengthInBits += element.LengthInBits()
- }
- }
+ // Array field
+ if len(m.items) > 0 {
+ for _, element := range m.items {
+ lengthInBits += element.LengthInBits()
+ }
+ }
- return lengthInBits
+ return lengthInBits
}
func (m ModbusPDUReadFileRecordResponse) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusPDUReadFileRecordResponseParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReadFileRecordResponseParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
- // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var byteCount uint8 = io.ReadUint8(8)
+ // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var byteCount uint8 = io.ReadUint8(8)
- // Array field (items)
- // Length array
- var _itemsLength := byteCount
- List<ModbusPDUReadFileRecordResponseItem> _itemsList = new LinkedList<>();
- itemsEndPos := io.GetPos() + _itemsLength;
- for ;io.getPos() < itemsEndPos; {
- _itemsList.add(ModbusPDUReadFileRecordResponseItemIO.staticParse(io));
- }
- ModbusPDUReadFileRecordResponseItem[] items = _itemsList.toArray(new ModbusPDUReadFileRecordResponseItem[0])
+ // Array field (items)
+ var items []ModbusPDUReadFileRecordResponseItem
+ // Length array
+ _itemsLength := uint16(byteCount)
+ _itemsEndPos := io.GetPos() + _itemsLength
+ for io.GetPos() < _itemsEndPos {
+ _message, _err := ModbusPDUReadFileRecordResponseItemParse(io)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'items' field " + _err.Error())
+ }
+ var _item ModbusPDUReadFileRecordResponseItem
+ _item, _ok := _message.(ModbusPDUReadFileRecordResponseItem)
+ if !_ok {
+ return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_item).Name() + " to ModbusPDUReadFileRecordResponseItem")
+ }
+ items = append(items, _item)
+ }
- // Create the instance
- return NewModbusPDUReadFileRecordResponse(items)
+ // Create the instance
+ return NewModbusPDUReadFileRecordResponse(items), nil
}
-
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponseItem.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponseItem.go
index 7ebc23f..aff7e2e 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponseItem.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponseItem.go
@@ -19,67 +19,56 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
type ModbusPDUReadFileRecordResponseItem struct {
- referenceType uint8
- data []int8
-
+ referenceType uint8
+ data []int8
}
-
func NewModbusPDUReadFileRecordResponseItem(referenceType uint8, data []int8) spi.Message {
- return &ModbusPDUReadFileRecordResponseItem{referenceType: referenceType, data: data}
+ return &ModbusPDUReadFileRecordResponseItem{referenceType: referenceType, data: data}
}
func (m ModbusPDUReadFileRecordResponseItem) LengthInBits() uint16 {
- var lengthInBits uint16 = 0
+ var lengthInBits uint16 = 0
- // Implicit Field (dataLength)
- lengthInBits += 8
+ // Implicit Field (dataLength)
+ lengthInBits += 8
- // Simple field (referenceType)
- lengthInBits += 8
+ // Simple field (referenceType)
+ lengthInBits += 8
- // Array field
- if len(m.data) > 0 {
- lengthInBits += 8 * uint16(len(m.data))
- }
+ // Array field
+ if len(m.data) > 0 {
+ lengthInBits += 8 * uint16(len(m.data))
+ }
- return lengthInBits
+ return lengthInBits
}
func (m ModbusPDUReadFileRecordResponseItem) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusPDUReadFileRecordResponseItemParse(io spi.ReadBuffer) spi.Message {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReadFileRecordResponseItemParse(io spi.ReadBuffer) (spi.Message, error) {
- // Implicit Field (dataLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var dataLength uint8 = io.ReadUint8(8)
+ // Implicit Field (dataLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var dataLength uint8 = io.ReadUint8(8)
- // Simple Field (referenceType)
- var referenceType uint8 = io.ReadUint8(8)
+ // Simple Field (referenceType)
+ var referenceType uint8 = io.ReadUint8(8)
- // Array field (data)
- // Length array
- var _dataLength := (dataLength) - (1)
- List<int8> _dataList = new LinkedList<>();
- dataEndPos := io.GetPos() + _dataLength;
- for ;io.getPos() < dataEndPos; {
- _dataList.add(io.ReadInt8(8));
- }
- int8[] data = new int8[_dataList.size()]
- for i := 0; i < _dataList.size(); i++ {
- data[i] = (int8) _dataList.get(i)
- }
+ // Array field (data)
+ var data []int8
+ // Length array
+ _dataLength := uint16((dataLength) - (1))
+ _dataEndPos := io.GetPos() + _dataLength
+ for io.GetPos() < _dataEndPos {
+ data = append(data, io.ReadInt8(8))
+ }
- // Create the instance
- return NewModbusPDUReadFileRecordResponseItem(referenceType, data)
+ // Create the instance
+ return NewModbusPDUReadFileRecordResponseItem(referenceType, data), nil
}
-
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersRequest.go
index 910cb2b..05ccfc6 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersRequest.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -54,9 +52,7 @@ func (m ModbusPDUReadHoldingRegistersRequest) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUReadHoldingRegistersRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReadHoldingRegistersRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Simple Field (startingAddress)
var startingAddress uint16 = io.ReadUint16(16)
@@ -65,5 +61,5 @@ func ModbusPDUReadHoldingRegistersRequestParse(io spi.ReadBuffer) ModbusPDUIniti
var quantity uint16 = io.ReadUint16(16)
// Create the instance
- return NewModbusPDUReadHoldingRegistersRequest(startingAddress, quantity)
+ return NewModbusPDUReadHoldingRegistersRequest(startingAddress, quantity), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersResponse.go
index de21e38..6fcb99e 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersResponse.go
@@ -19,65 +19,56 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
type ModbusPDUReadHoldingRegistersResponse struct {
- value []int8
- ModbusPDU
+ value []int8
+ ModbusPDU
}
func (m ModbusPDUReadHoldingRegistersResponse) initialize() spi.Message {
- return spi.Message(m)
+ return spi.Message(m)
}
func NewModbusPDUReadHoldingRegistersResponse(value []int8) ModbusPDUInitializer {
- return &ModbusPDUReadHoldingRegistersResponse{value: value}
+ return &ModbusPDUReadHoldingRegistersResponse{value: value}
}
func (m ModbusPDUReadHoldingRegistersResponse) LengthInBits() uint16 {
- var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
+ var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
- // Implicit Field (byteCount)
- lengthInBits += 8
+ // Implicit Field (byteCount)
+ lengthInBits += 8
- // Array field
- if len(m.value) > 0 {
- lengthInBits += 8 * uint16(len(m.value))
- }
+ // Array field
+ if len(m.value) > 0 {
+ lengthInBits += 8 * uint16(len(m.value))
+ }
- return lengthInBits
+ return lengthInBits
}
func (m ModbusPDUReadHoldingRegistersResponse) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusPDUReadHoldingRegistersResponseParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReadHoldingRegistersResponseParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
- // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var byteCount uint8 = io.ReadUint8(8)
+ // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var byteCount uint8 = io.ReadUint8(8)
- // Array field (value)
- // Count array
- if byteCount > math.MaxUint8 {
- throw new ParseException("Array count of " + (byteCount) + " exceeds the maximum allowed count of " + math.MaxUint8);
- }
- int8[] value;
- {
- var itemCount := byteCount
- value = new int8[itemCount]
- for curItem := 0; curItem < itemCount; curItem++ {
-
- value[curItem] = io.ReadInt8(8)
- }
- }
+ // Array field (value)
+ var value []int8
+ // Count array
+ {
+ value := make([]int8, byteCount)
+ for curItem := uint16(0); curItem < uint16(byteCount); curItem++ {
- // Create the instance
- return NewModbusPDUReadHoldingRegistersResponse(value)
-}
+ value[curItem] = io.ReadInt8(8)
+ }
+ }
+ // Create the instance
+ return NewModbusPDUReadHoldingRegistersResponse(value), nil
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersRequest.go
index fb1af49..15384d3 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersRequest.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -54,9 +52,7 @@ func (m ModbusPDUReadInputRegistersRequest) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUReadInputRegistersRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReadInputRegistersRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Simple Field (startingAddress)
var startingAddress uint16 = io.ReadUint16(16)
@@ -65,5 +61,5 @@ func ModbusPDUReadInputRegistersRequestParse(io spi.ReadBuffer) ModbusPDUInitial
var quantity uint16 = io.ReadUint16(16)
// Create the instance
- return NewModbusPDUReadInputRegistersRequest(startingAddress, quantity)
+ return NewModbusPDUReadInputRegistersRequest(startingAddress, quantity), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersResponse.go
index 67596f5..ce92920 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersResponse.go
@@ -19,65 +19,56 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
type ModbusPDUReadInputRegistersResponse struct {
- value []int8
- ModbusPDU
+ value []int8
+ ModbusPDU
}
func (m ModbusPDUReadInputRegistersResponse) initialize() spi.Message {
- return spi.Message(m)
+ return spi.Message(m)
}
func NewModbusPDUReadInputRegistersResponse(value []int8) ModbusPDUInitializer {
- return &ModbusPDUReadInputRegistersResponse{value: value}
+ return &ModbusPDUReadInputRegistersResponse{value: value}
}
func (m ModbusPDUReadInputRegistersResponse) LengthInBits() uint16 {
- var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
+ var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
- // Implicit Field (byteCount)
- lengthInBits += 8
+ // Implicit Field (byteCount)
+ lengthInBits += 8
- // Array field
- if len(m.value) > 0 {
- lengthInBits += 8 * uint16(len(m.value))
- }
+ // Array field
+ if len(m.value) > 0 {
+ lengthInBits += 8 * uint16(len(m.value))
+ }
- return lengthInBits
+ return lengthInBits
}
func (m ModbusPDUReadInputRegistersResponse) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusPDUReadInputRegistersResponseParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReadInputRegistersResponseParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
- // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var byteCount uint8 = io.ReadUint8(8)
+ // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var byteCount uint8 = io.ReadUint8(8)
- // Array field (value)
- // Count array
- if byteCount > math.MaxUint8 {
- throw new ParseException("Array count of " + (byteCount) + " exceeds the maximum allowed count of " + math.MaxUint8);
- }
- int8[] value;
- {
- var itemCount := byteCount
- value = new int8[itemCount]
- for curItem := 0; curItem < itemCount; curItem++ {
-
- value[curItem] = io.ReadInt8(8)
- }
- }
+ // Array field (value)
+ var value []int8
+ // Count array
+ {
+ value := make([]int8, byteCount)
+ for curItem := uint16(0); curItem < uint16(byteCount); curItem++ {
- // Create the instance
- return NewModbusPDUReadInputRegistersResponse(value)
-}
+ value[curItem] = io.ReadInt8(8)
+ }
+ }
+ // Create the instance
+ return NewModbusPDUReadInputRegistersResponse(value), nil
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go
index 585f002..b39a4bd 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go
@@ -19,93 +19,84 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
type ModbusPDUReadWriteMultipleHoldingRegistersRequest struct {
- readStartingAddress uint16
- readQuantity uint16
- writeStartingAddress uint16
- writeQuantity uint16
- value []int8
- ModbusPDU
+ readStartingAddress uint16
+ readQuantity uint16
+ writeStartingAddress uint16
+ writeQuantity uint16
+ value []int8
+ ModbusPDU
}
func (m ModbusPDUReadWriteMultipleHoldingRegistersRequest) initialize() spi.Message {
- return spi.Message(m)
+ return spi.Message(m)
}
func NewModbusPDUReadWriteMultipleHoldingRegistersRequest(readStartingAddress uint16, readQuantity uint16, writeStartingAddress uint16, writeQuantity uint16, value []int8) ModbusPDUInitializer {
- return &ModbusPDUReadWriteMultipleHoldingRegistersRequest{readStartingAddress: readStartingAddress, readQuantity: readQuantity, writeStartingAddress: writeStartingAddress, writeQuantity: writeQuantity, value: value}
+ return &ModbusPDUReadWriteMultipleHoldingRegistersRequest{readStartingAddress: readStartingAddress, readQuantity: readQuantity, writeStartingAddress: writeStartingAddress, writeQuantity: writeQuantity, value: value}
}
func (m ModbusPDUReadWriteMultipleHoldingRegistersRequest) LengthInBits() uint16 {
- var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
+ var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
- // Simple field (readStartingAddress)
- lengthInBits += 16
+ // Simple field (readStartingAddress)
+ lengthInBits += 16
- // Simple field (readQuantity)
- lengthInBits += 16
+ // Simple field (readQuantity)
+ lengthInBits += 16
- // Simple field (writeStartingAddress)
- lengthInBits += 16
+ // Simple field (writeStartingAddress)
+ lengthInBits += 16
- // Simple field (writeQuantity)
- lengthInBits += 16
+ // Simple field (writeQuantity)
+ lengthInBits += 16
- // Implicit Field (byteCount)
- lengthInBits += 8
+ // Implicit Field (byteCount)
+ lengthInBits += 8
- // Array field
- if len(m.value) > 0 {
- lengthInBits += 8 * uint16(len(m.value))
- }
+ // Array field
+ if len(m.value) > 0 {
+ lengthInBits += 8 * uint16(len(m.value))
+ }
- return lengthInBits
+ return lengthInBits
}
func (m ModbusPDUReadWriteMultipleHoldingRegistersRequest) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusPDUReadWriteMultipleHoldingRegistersRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
-
- // Simple Field (readStartingAddress)
- var readStartingAddress uint16 = io.ReadUint16(16)
-
- // Simple Field (readQuantity)
- var readQuantity uint16 = io.ReadUint16(16)
-
- // Simple Field (writeStartingAddress)
- var writeStartingAddress uint16 = io.ReadUint16(16)
-
- // Simple Field (writeQuantity)
- var writeQuantity uint16 = io.ReadUint16(16)
-
- // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var byteCount uint8 = io.ReadUint8(8)
-
- // Array field (value)
- // Count array
- if byteCount > math.MaxUint8 {
- throw new ParseException("Array count of " + (byteCount) + " exceeds the maximum allowed count of " + math.MaxUint8);
- }
- int8[] value;
- {
- var itemCount := byteCount
- value = new int8[itemCount]
- for curItem := 0; curItem < itemCount; curItem++ {
-
- value[curItem] = io.ReadInt8(8)
- }
- }
-
- // Create the instance
- return NewModbusPDUReadWriteMultipleHoldingRegistersRequest(readStartingAddress, readQuantity, writeStartingAddress, writeQuantity, value)
-}
+func ModbusPDUReadWriteMultipleHoldingRegistersRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
+
+ // Simple Field (readStartingAddress)
+ var readStartingAddress uint16 = io.ReadUint16(16)
+
+ // Simple Field (readQuantity)
+ var readQuantity uint16 = io.ReadUint16(16)
+
+ // Simple Field (writeStartingAddress)
+ var writeStartingAddress uint16 = io.ReadUint16(16)
+
+ // Simple Field (writeQuantity)
+ var writeQuantity uint16 = io.ReadUint16(16)
+ // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var byteCount uint8 = io.ReadUint8(8)
+
+ // Array field (value)
+ var value []int8
+ // Count array
+ {
+ value := make([]int8, byteCount)
+ for curItem := uint16(0); curItem < uint16(byteCount); curItem++ {
+
+ value[curItem] = io.ReadInt8(8)
+ }
+ }
+
+ // Create the instance
+ return NewModbusPDUReadWriteMultipleHoldingRegistersRequest(readStartingAddress, readQuantity, writeStartingAddress, writeQuantity, value), nil
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go
index 2be4f5a..4fc0393 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go
@@ -19,65 +19,56 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
type ModbusPDUReadWriteMultipleHoldingRegistersResponse struct {
- value []int8
- ModbusPDU
+ value []int8
+ ModbusPDU
}
func (m ModbusPDUReadWriteMultipleHoldingRegistersResponse) initialize() spi.Message {
- return spi.Message(m)
+ return spi.Message(m)
}
func NewModbusPDUReadWriteMultipleHoldingRegistersResponse(value []int8) ModbusPDUInitializer {
- return &ModbusPDUReadWriteMultipleHoldingRegistersResponse{value: value}
+ return &ModbusPDUReadWriteMultipleHoldingRegistersResponse{value: value}
}
func (m ModbusPDUReadWriteMultipleHoldingRegistersResponse) LengthInBits() uint16 {
- var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
+ var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
- // Implicit Field (byteCount)
- lengthInBits += 8
+ // Implicit Field (byteCount)
+ lengthInBits += 8
- // Array field
- if len(m.value) > 0 {
- lengthInBits += 8 * uint16(len(m.value))
- }
+ // Array field
+ if len(m.value) > 0 {
+ lengthInBits += 8 * uint16(len(m.value))
+ }
- return lengthInBits
+ return lengthInBits
}
func (m ModbusPDUReadWriteMultipleHoldingRegistersResponse) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusPDUReadWriteMultipleHoldingRegistersResponseParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReadWriteMultipleHoldingRegistersResponseParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
- // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var byteCount uint8 = io.ReadUint8(8)
+ // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var byteCount uint8 = io.ReadUint8(8)
- // Array field (value)
- // Count array
- if byteCount > math.MaxUint8 {
- throw new ParseException("Array count of " + (byteCount) + " exceeds the maximum allowed count of " + math.MaxUint8);
- }
- int8[] value;
- {
- var itemCount := byteCount
- value = new int8[itemCount]
- for curItem := 0; curItem < itemCount; curItem++ {
-
- value[curItem] = io.ReadInt8(8)
- }
- }
+ // Array field (value)
+ var value []int8
+ // Count array
+ {
+ value := make([]int8, byteCount)
+ for curItem := uint16(0); curItem < uint16(byteCount); curItem++ {
- // Create the instance
- return NewModbusPDUReadWriteMultipleHoldingRegistersResponse(value)
-}
+ value[curItem] = io.ReadInt8(8)
+ }
+ }
+ // Create the instance
+ return NewModbusPDUReadWriteMultipleHoldingRegistersResponse(value), nil
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdRequest.go
index ada56de..07f08f0 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdRequest.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -46,10 +44,8 @@ func (m ModbusPDUReportServerIdRequest) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUReportServerIdRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReportServerIdRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Create the instance
- return NewModbusPDUReportServerIdRequest()
+ return NewModbusPDUReportServerIdRequest(), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdResponse.go
index 22e2ece..8143fbb 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdResponse.go
@@ -19,65 +19,56 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
type ModbusPDUReportServerIdResponse struct {
- value []int8
- ModbusPDU
+ value []int8
+ ModbusPDU
}
func (m ModbusPDUReportServerIdResponse) initialize() spi.Message {
- return spi.Message(m)
+ return spi.Message(m)
}
func NewModbusPDUReportServerIdResponse(value []int8) ModbusPDUInitializer {
- return &ModbusPDUReportServerIdResponse{value: value}
+ return &ModbusPDUReportServerIdResponse{value: value}
}
func (m ModbusPDUReportServerIdResponse) LengthInBits() uint16 {
- var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
+ var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
- // Implicit Field (byteCount)
- lengthInBits += 8
+ // Implicit Field (byteCount)
+ lengthInBits += 8
- // Array field
- if len(m.value) > 0 {
- lengthInBits += 8 * uint16(len(m.value))
- }
+ // Array field
+ if len(m.value) > 0 {
+ lengthInBits += 8 * uint16(len(m.value))
+ }
- return lengthInBits
+ return lengthInBits
}
func (m ModbusPDUReportServerIdResponse) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusPDUReportServerIdResponseParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUReportServerIdResponseParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
- // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var byteCount uint8 = io.ReadUint8(8)
+ // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var byteCount uint8 = io.ReadUint8(8)
- // Array field (value)
- // Count array
- if byteCount > math.MaxUint8 {
- throw new ParseException("Array count of " + (byteCount) + " exceeds the maximum allowed count of " + math.MaxUint8);
- }
- int8[] value;
- {
- var itemCount := byteCount
- value = new int8[itemCount]
- for curItem := 0; curItem < itemCount; curItem++ {
-
- value[curItem] = io.ReadInt8(8)
- }
- }
+ // Array field (value)
+ var value []int8
+ // Count array
+ {
+ value := make([]int8, byteCount)
+ for curItem := uint16(0); curItem < uint16(byteCount); curItem++ {
- // Create the instance
- return NewModbusPDUReportServerIdResponse(value)
-}
+ value[curItem] = io.ReadInt8(8)
+ }
+ }
+ // Create the instance
+ return NewModbusPDUReportServerIdResponse(value), nil
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequest.go
index 484d933..8c7371f 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequest.go
@@ -19,62 +19,67 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "errors"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
+ "reflect"
)
type ModbusPDUWriteFileRecordRequest struct {
- items []ModbusPDUWriteFileRecordRequestItem
- ModbusPDU
+ items []ModbusPDUWriteFileRecordRequestItem
+ ModbusPDU
}
func (m ModbusPDUWriteFileRecordRequest) initialize() spi.Message {
- return spi.Message(m)
+ return spi.Message(m)
}
func NewModbusPDUWriteFileRecordRequest(items []ModbusPDUWriteFileRecordRequestItem) ModbusPDUInitializer {
- return &ModbusPDUWriteFileRecordRequest{items: items}
+ return &ModbusPDUWriteFileRecordRequest{items: items}
}
func (m ModbusPDUWriteFileRecordRequest) LengthInBits() uint16 {
- var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
+ var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
- // Implicit Field (byteCount)
- lengthInBits += 8
+ // Implicit Field (byteCount)
+ lengthInBits += 8
- // Array field
- if len(m.items) > 0 {
- for _, element := range m.items {
- lengthInBits += element.LengthInBits()
- }
- }
+ // Array field
+ if len(m.items) > 0 {
+ for _, element := range m.items {
+ lengthInBits += element.LengthInBits()
+ }
+ }
- return lengthInBits
+ return lengthInBits
}
func (m ModbusPDUWriteFileRecordRequest) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusPDUWriteFileRecordRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUWriteFileRecordRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
- // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var byteCount uint8 = io.ReadUint8(8)
+ // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var byteCount uint8 = io.ReadUint8(8)
- // Array field (items)
- // Length array
- var _itemsLength := byteCount
- List<ModbusPDUWriteFileRecordRequestItem> _itemsList = new LinkedList<>();
- itemsEndPos := io.GetPos() + _itemsLength;
- for ;io.getPos() < itemsEndPos; {
- _itemsList.add(ModbusPDUWriteFileRecordRequestItemIO.staticParse(io));
- }
- ModbusPDUWriteFileRecordRequestItem[] items = _itemsList.toArray(new ModbusPDUWriteFileRecordRequestItem[0])
+ // Array field (items)
+ var items []ModbusPDUWriteFileRecordRequestItem
+ // Length array
+ _itemsLength := uint16(byteCount)
+ _itemsEndPos := io.GetPos() + _itemsLength
+ for io.GetPos() < _itemsEndPos {
+ _message, _err := ModbusPDUWriteFileRecordRequestItemParse(io)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'items' field " + _err.Error())
+ }
+ var _item ModbusPDUWriteFileRecordRequestItem
+ _item, _ok := _message.(ModbusPDUWriteFileRecordRequestItem)
+ if !_ok {
+ return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_item).Name() + " to ModbusPDUWriteFileRecordRequestItem")
+ }
+ items = append(items, _item)
+ }
- // Create the instance
- return NewModbusPDUWriteFileRecordRequest(items)
+ // Create the instance
+ return NewModbusPDUWriteFileRecordRequest(items), nil
}
-
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequestItem.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequestItem.go
index c134a14..fe2496f 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequestItem.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequestItem.go
@@ -19,81 +19,70 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
type ModbusPDUWriteFileRecordRequestItem struct {
- referenceType uint8
- fileNumber uint16
- recordNumber uint16
- recordData []int8
-
+ referenceType uint8
+ fileNumber uint16
+ recordNumber uint16
+ recordData []int8
}
-
func NewModbusPDUWriteFileRecordRequestItem(referenceType uint8, fileNumber uint16, recordNumber uint16, recordData []int8) spi.Message {
- return &ModbusPDUWriteFileRecordRequestItem{referenceType: referenceType, fileNumber: fileNumber, recordNumber: recordNumber, recordData: recordData}
+ return &ModbusPDUWriteFileRecordRequestItem{referenceType: referenceType, fileNumber: fileNumber, recordNumber: recordNumber, recordData: recordData}
}
func (m ModbusPDUWriteFileRecordRequestItem) LengthInBits() uint16 {
- var lengthInBits uint16 = 0
+ var lengthInBits uint16 = 0
- // Simple field (referenceType)
- lengthInBits += 8
+ // Simple field (referenceType)
+ lengthInBits += 8
- // Simple field (fileNumber)
- lengthInBits += 16
+ // Simple field (fileNumber)
+ lengthInBits += 16
- // Simple field (recordNumber)
- lengthInBits += 16
+ // Simple field (recordNumber)
+ lengthInBits += 16
- // Implicit Field (recordLength)
- lengthInBits += 16
+ // Implicit Field (recordLength)
+ lengthInBits += 16
- // Array field
- if len(m.recordData) > 0 {
- lengthInBits += 8 * uint16(len(m.recordData))
- }
+ // Array field
+ if len(m.recordData) > 0 {
+ lengthInBits += 8 * uint16(len(m.recordData))
+ }
- return lengthInBits
+ return lengthInBits
}
func (m ModbusPDUWriteFileRecordRequestItem) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusPDUWriteFileRecordRequestItemParse(io spi.ReadBuffer) spi.Message {
- var startPos = io.GetPos()
- var curPos uint16
-
- // Simple Field (referenceType)
- var referenceType uint8 = io.ReadUint8(8)
-
- // Simple Field (fileNumber)
- var fileNumber uint16 = io.ReadUint16(16)
-
- // Simple Field (recordNumber)
- var recordNumber uint16 = io.ReadUint16(16)
-
- // Implicit Field (recordLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var recordLength uint16 = io.ReadUint16(16)
-
- // Array field (recordData)
- // Length array
- var _recordDataLength := (recordLength) * (2)
- List<int8> _recordDataList = new LinkedList<>();
- recordDataEndPos := io.GetPos() + _recordDataLength;
- for ;io.getPos() < recordDataEndPos; {
- _recordDataList.add(io.ReadInt8(8));
- }
- int8[] recordData = new int8[_recordDataList.size()]
- for i := 0; i < _recordDataList.size(); i++ {
- recordData[i] = (int8) _recordDataList.get(i)
- }
-
- // Create the instance
- return NewModbusPDUWriteFileRecordRequestItem(referenceType, fileNumber, recordNumber, recordData)
-}
+func ModbusPDUWriteFileRecordRequestItemParse(io spi.ReadBuffer) (spi.Message, error) {
+
+ // Simple Field (referenceType)
+ var referenceType uint8 = io.ReadUint8(8)
+
+ // Simple Field (fileNumber)
+ var fileNumber uint16 = io.ReadUint16(16)
+ // Simple Field (recordNumber)
+ var recordNumber uint16 = io.ReadUint16(16)
+
+ // Implicit Field (recordLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var recordLength uint16 = io.ReadUint16(16)
+
+ // Array field (recordData)
+ var recordData []int8
+ // Length array
+ _recordDataLength := uint16((recordLength) * (2))
+ _recordDataEndPos := io.GetPos() + _recordDataLength
+ for io.GetPos() < _recordDataEndPos {
+ recordData = append(recordData, io.ReadInt8(8))
+ }
+
+ // Create the instance
+ return NewModbusPDUWriteFileRecordRequestItem(referenceType, fileNumber, recordNumber, recordData), nil
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponse.go
index f25b5ec..a322714 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponse.go
@@ -19,62 +19,67 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "errors"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
+ "reflect"
)
type ModbusPDUWriteFileRecordResponse struct {
- items []ModbusPDUWriteFileRecordResponseItem
- ModbusPDU
+ items []ModbusPDUWriteFileRecordResponseItem
+ ModbusPDU
}
func (m ModbusPDUWriteFileRecordResponse) initialize() spi.Message {
- return spi.Message(m)
+ return spi.Message(m)
}
func NewModbusPDUWriteFileRecordResponse(items []ModbusPDUWriteFileRecordResponseItem) ModbusPDUInitializer {
- return &ModbusPDUWriteFileRecordResponse{items: items}
+ return &ModbusPDUWriteFileRecordResponse{items: items}
}
func (m ModbusPDUWriteFileRecordResponse) LengthInBits() uint16 {
- var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
+ var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
- // Implicit Field (byteCount)
- lengthInBits += 8
+ // Implicit Field (byteCount)
+ lengthInBits += 8
- // Array field
- if len(m.items) > 0 {
- for _, element := range m.items {
- lengthInBits += element.LengthInBits()
- }
- }
+ // Array field
+ if len(m.items) > 0 {
+ for _, element := range m.items {
+ lengthInBits += element.LengthInBits()
+ }
+ }
- return lengthInBits
+ return lengthInBits
}
func (m ModbusPDUWriteFileRecordResponse) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusPDUWriteFileRecordResponseParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUWriteFileRecordResponseParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
- // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var byteCount uint8 = io.ReadUint8(8)
+ // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var byteCount uint8 = io.ReadUint8(8)
- // Array field (items)
- // Length array
- var _itemsLength := byteCount
- List<ModbusPDUWriteFileRecordResponseItem> _itemsList = new LinkedList<>();
- itemsEndPos := io.GetPos() + _itemsLength;
- for ;io.getPos() < itemsEndPos; {
- _itemsList.add(ModbusPDUWriteFileRecordResponseItemIO.staticParse(io));
- }
- ModbusPDUWriteFileRecordResponseItem[] items = _itemsList.toArray(new ModbusPDUWriteFileRecordResponseItem[0])
+ // Array field (items)
+ var items []ModbusPDUWriteFileRecordResponseItem
+ // Length array
+ _itemsLength := uint16(byteCount)
+ _itemsEndPos := io.GetPos() + _itemsLength
+ for io.GetPos() < _itemsEndPos {
+ _message, _err := ModbusPDUWriteFileRecordResponseItemParse(io)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'items' field " + _err.Error())
+ }
+ var _item ModbusPDUWriteFileRecordResponseItem
+ _item, _ok := _message.(ModbusPDUWriteFileRecordResponseItem)
+ if !_ok {
+ return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_item).Name() + " to ModbusPDUWriteFileRecordResponseItem")
+ }
+ items = append(items, _item)
+ }
- // Create the instance
- return NewModbusPDUWriteFileRecordResponse(items)
+ // Create the instance
+ return NewModbusPDUWriteFileRecordResponse(items), nil
}
-
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponseItem.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponseItem.go
index 7c4848b..c526a49 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponseItem.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponseItem.go
@@ -19,81 +19,70 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
type ModbusPDUWriteFileRecordResponseItem struct {
- referenceType uint8
- fileNumber uint16
- recordNumber uint16
- recordData []int8
-
+ referenceType uint8
+ fileNumber uint16
+ recordNumber uint16
+ recordData []int8
}
-
func NewModbusPDUWriteFileRecordResponseItem(referenceType uint8, fileNumber uint16, recordNumber uint16, recordData []int8) spi.Message {
- return &ModbusPDUWriteFileRecordResponseItem{referenceType: referenceType, fileNumber: fileNumber, recordNumber: recordNumber, recordData: recordData}
+ return &ModbusPDUWriteFileRecordResponseItem{referenceType: referenceType, fileNumber: fileNumber, recordNumber: recordNumber, recordData: recordData}
}
func (m ModbusPDUWriteFileRecordResponseItem) LengthInBits() uint16 {
- var lengthInBits uint16 = 0
+ var lengthInBits uint16 = 0
- // Simple field (referenceType)
- lengthInBits += 8
+ // Simple field (referenceType)
+ lengthInBits += 8
- // Simple field (fileNumber)
- lengthInBits += 16
+ // Simple field (fileNumber)
+ lengthInBits += 16
- // Simple field (recordNumber)
- lengthInBits += 16
+ // Simple field (recordNumber)
+ lengthInBits += 16
- // Implicit Field (recordLength)
- lengthInBits += 16
+ // Implicit Field (recordLength)
+ lengthInBits += 16
- // Array field
- if len(m.recordData) > 0 {
- lengthInBits += 8 * uint16(len(m.recordData))
- }
+ // Array field
+ if len(m.recordData) > 0 {
+ lengthInBits += 8 * uint16(len(m.recordData))
+ }
- return lengthInBits
+ return lengthInBits
}
func (m ModbusPDUWriteFileRecordResponseItem) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusPDUWriteFileRecordResponseItemParse(io spi.ReadBuffer) spi.Message {
- var startPos = io.GetPos()
- var curPos uint16
-
- // Simple Field (referenceType)
- var referenceType uint8 = io.ReadUint8(8)
-
- // Simple Field (fileNumber)
- var fileNumber uint16 = io.ReadUint16(16)
-
- // Simple Field (recordNumber)
- var recordNumber uint16 = io.ReadUint16(16)
-
- // Implicit Field (recordLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var recordLength uint16 = io.ReadUint16(16)
-
- // Array field (recordData)
- // Length array
- var _recordDataLength := recordLength
- List<int8> _recordDataList = new LinkedList<>();
- recordDataEndPos := io.GetPos() + _recordDataLength;
- for ;io.getPos() < recordDataEndPos; {
- _recordDataList.add(io.ReadInt8(8));
- }
- int8[] recordData = new int8[_recordDataList.size()]
- for i := 0; i < _recordDataList.size(); i++ {
- recordData[i] = (int8) _recordDataList.get(i)
- }
-
- // Create the instance
- return NewModbusPDUWriteFileRecordResponseItem(referenceType, fileNumber, recordNumber, recordData)
-}
+func ModbusPDUWriteFileRecordResponseItemParse(io spi.ReadBuffer) (spi.Message, error) {
+
+ // Simple Field (referenceType)
+ var referenceType uint8 = io.ReadUint8(8)
+
+ // Simple Field (fileNumber)
+ var fileNumber uint16 = io.ReadUint16(16)
+ // Simple Field (recordNumber)
+ var recordNumber uint16 = io.ReadUint16(16)
+
+ // Implicit Field (recordLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var recordLength uint16 = io.ReadUint16(16)
+
+ // Array field (recordData)
+ var recordData []int8
+ // Length array
+ _recordDataLength := uint16(recordLength)
+ _recordDataEndPos := io.GetPos() + _recordDataLength
+ for io.GetPos() < _recordDataEndPos {
+ recordData = append(recordData, io.ReadInt8(8))
+ }
+
+ // Create the instance
+ return NewModbusPDUWriteFileRecordResponseItem(referenceType, fileNumber, recordNumber, recordData), nil
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsRequest.go
index 25bf05a..9b2a141 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsRequest.go
@@ -19,79 +19,70 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
type ModbusPDUWriteMultipleCoilsRequest struct {
- startingAddress uint16
- quantity uint16
- value []int8
- ModbusPDU
+ startingAddress uint16
+ quantity uint16
+ value []int8
+ ModbusPDU
}
func (m ModbusPDUWriteMultipleCoilsRequest) initialize() spi.Message {
- return spi.Message(m)
+ return spi.Message(m)
}
func NewModbusPDUWriteMultipleCoilsRequest(startingAddress uint16, quantity uint16, value []int8) ModbusPDUInitializer {
- return &ModbusPDUWriteMultipleCoilsRequest{startingAddress: startingAddress, quantity: quantity, value: value}
+ return &ModbusPDUWriteMultipleCoilsRequest{startingAddress: startingAddress, quantity: quantity, value: value}
}
func (m ModbusPDUWriteMultipleCoilsRequest) LengthInBits() uint16 {
- var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
+ var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
- // Simple field (startingAddress)
- lengthInBits += 16
+ // Simple field (startingAddress)
+ lengthInBits += 16
- // Simple field (quantity)
- lengthInBits += 16
+ // Simple field (quantity)
+ lengthInBits += 16
- // Implicit Field (byteCount)
- lengthInBits += 8
+ // Implicit Field (byteCount)
+ lengthInBits += 8
- // Array field
- if len(m.value) > 0 {
- lengthInBits += 8 * uint16(len(m.value))
- }
+ // Array field
+ if len(m.value) > 0 {
+ lengthInBits += 8 * uint16(len(m.value))
+ }
- return lengthInBits
+ return lengthInBits
}
func (m ModbusPDUWriteMultipleCoilsRequest) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusPDUWriteMultipleCoilsRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
-
- // Simple Field (startingAddress)
- var startingAddress uint16 = io.ReadUint16(16)
-
- // Simple Field (quantity)
- var quantity uint16 = io.ReadUint16(16)
-
- // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var byteCount uint8 = io.ReadUint8(8)
-
- // Array field (value)
- // Count array
- if byteCount > math.MaxUint8 {
- throw new ParseException("Array count of " + (byteCount) + " exceeds the maximum allowed count of " + math.MaxUint8);
- }
- int8[] value;
- {
- var itemCount := byteCount
- value = new int8[itemCount]
- for curItem := 0; curItem < itemCount; curItem++ {
-
- value[curItem] = io.ReadInt8(8)
- }
- }
-
- // Create the instance
- return NewModbusPDUWriteMultipleCoilsRequest(startingAddress, quantity, value)
-}
+func ModbusPDUWriteMultipleCoilsRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
+
+ // Simple Field (startingAddress)
+ var startingAddress uint16 = io.ReadUint16(16)
+
+ // Simple Field (quantity)
+ var quantity uint16 = io.ReadUint16(16)
+
+ // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var byteCount uint8 = io.ReadUint8(8)
+ // Array field (value)
+ var value []int8
+ // Count array
+ {
+ value := make([]int8, byteCount)
+ for curItem := uint16(0); curItem < uint16(byteCount); curItem++ {
+
+ value[curItem] = io.ReadInt8(8)
+ }
+ }
+
+ // Create the instance
+ return NewModbusPDUWriteMultipleCoilsRequest(startingAddress, quantity, value), nil
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsResponse.go
index c4e48a5..a7efa42 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsResponse.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -54,9 +52,7 @@ func (m ModbusPDUWriteMultipleCoilsResponse) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUWriteMultipleCoilsResponseParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUWriteMultipleCoilsResponseParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Simple Field (startingAddress)
var startingAddress uint16 = io.ReadUint16(16)
@@ -65,5 +61,5 @@ func ModbusPDUWriteMultipleCoilsResponseParse(io spi.ReadBuffer) ModbusPDUInitia
var quantity uint16 = io.ReadUint16(16)
// Create the instance
- return NewModbusPDUWriteMultipleCoilsResponse(startingAddress, quantity)
+ return NewModbusPDUWriteMultipleCoilsResponse(startingAddress, quantity), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersRequest.go
index ba8010a..b84def7 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersRequest.go
@@ -19,79 +19,70 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
type ModbusPDUWriteMultipleHoldingRegistersRequest struct {
- startingAddress uint16
- quantity uint16
- value []int8
- ModbusPDU
+ startingAddress uint16
+ quantity uint16
+ value []int8
+ ModbusPDU
}
func (m ModbusPDUWriteMultipleHoldingRegistersRequest) initialize() spi.Message {
- return spi.Message(m)
+ return spi.Message(m)
}
func NewModbusPDUWriteMultipleHoldingRegistersRequest(startingAddress uint16, quantity uint16, value []int8) ModbusPDUInitializer {
- return &ModbusPDUWriteMultipleHoldingRegistersRequest{startingAddress: startingAddress, quantity: quantity, value: value}
+ return &ModbusPDUWriteMultipleHoldingRegistersRequest{startingAddress: startingAddress, quantity: quantity, value: value}
}
func (m ModbusPDUWriteMultipleHoldingRegistersRequest) LengthInBits() uint16 {
- var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
+ var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
- // Simple field (startingAddress)
- lengthInBits += 16
+ // Simple field (startingAddress)
+ lengthInBits += 16
- // Simple field (quantity)
- lengthInBits += 16
+ // Simple field (quantity)
+ lengthInBits += 16
- // Implicit Field (byteCount)
- lengthInBits += 8
+ // Implicit Field (byteCount)
+ lengthInBits += 8
- // Array field
- if len(m.value) > 0 {
- lengthInBits += 8 * uint16(len(m.value))
- }
+ // Array field
+ if len(m.value) > 0 {
+ lengthInBits += 8 * uint16(len(m.value))
+ }
- return lengthInBits
+ return lengthInBits
}
func (m ModbusPDUWriteMultipleHoldingRegistersRequest) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusPDUWriteMultipleHoldingRegistersRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
-
- // Simple Field (startingAddress)
- var startingAddress uint16 = io.ReadUint16(16)
-
- // Simple Field (quantity)
- var quantity uint16 = io.ReadUint16(16)
-
- // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var byteCount uint8 = io.ReadUint8(8)
-
- // Array field (value)
- // Count array
- if byteCount > math.MaxUint8 {
- throw new ParseException("Array count of " + (byteCount) + " exceeds the maximum allowed count of " + math.MaxUint8);
- }
- int8[] value;
- {
- var itemCount := byteCount
- value = new int8[itemCount]
- for curItem := 0; curItem < itemCount; curItem++ {
-
- value[curItem] = io.ReadInt8(8)
- }
- }
-
- // Create the instance
- return NewModbusPDUWriteMultipleHoldingRegistersRequest(startingAddress, quantity, value)
-}
+func ModbusPDUWriteMultipleHoldingRegistersRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
+
+ // Simple Field (startingAddress)
+ var startingAddress uint16 = io.ReadUint16(16)
+
+ // Simple Field (quantity)
+ var quantity uint16 = io.ReadUint16(16)
+
+ // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var byteCount uint8 = io.ReadUint8(8)
+ // Array field (value)
+ var value []int8
+ // Count array
+ {
+ value := make([]int8, byteCount)
+ for curItem := uint16(0); curItem < uint16(byteCount); curItem++ {
+
+ value[curItem] = io.ReadInt8(8)
+ }
+ }
+
+ // Create the instance
+ return NewModbusPDUWriteMultipleHoldingRegistersRequest(startingAddress, quantity, value), nil
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersResponse.go
index 9de42c6..cf96414 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersResponse.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -54,9 +52,7 @@ func (m ModbusPDUWriteMultipleHoldingRegistersResponse) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUWriteMultipleHoldingRegistersResponseParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUWriteMultipleHoldingRegistersResponseParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Simple Field (startingAddress)
var startingAddress uint16 = io.ReadUint16(16)
@@ -65,5 +61,5 @@ func ModbusPDUWriteMultipleHoldingRegistersResponseParse(io spi.ReadBuffer) Modb
var quantity uint16 = io.ReadUint16(16)
// Create the instance
- return NewModbusPDUWriteMultipleHoldingRegistersResponse(startingAddress, quantity)
+ return NewModbusPDUWriteMultipleHoldingRegistersResponse(startingAddress, quantity), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilRequest.go
index 868d22a..76c610e 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilRequest.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -54,9 +52,7 @@ func (m ModbusPDUWriteSingleCoilRequest) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUWriteSingleCoilRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUWriteSingleCoilRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Simple Field (address)
var address uint16 = io.ReadUint16(16)
@@ -65,5 +61,5 @@ func ModbusPDUWriteSingleCoilRequestParse(io spi.ReadBuffer) ModbusPDUInitialize
var value uint16 = io.ReadUint16(16)
// Create the instance
- return NewModbusPDUWriteSingleCoilRequest(address, value)
+ return NewModbusPDUWriteSingleCoilRequest(address, value), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilResponse.go
index 83ad56f..4a8f4aa 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilResponse.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -54,9 +52,7 @@ func (m ModbusPDUWriteSingleCoilResponse) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUWriteSingleCoilResponseParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUWriteSingleCoilResponseParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Simple Field (address)
var address uint16 = io.ReadUint16(16)
@@ -65,5 +61,5 @@ func ModbusPDUWriteSingleCoilResponseParse(io spi.ReadBuffer) ModbusPDUInitializ
var value uint16 = io.ReadUint16(16)
// Create the instance
- return NewModbusPDUWriteSingleCoilResponse(address, value)
+ return NewModbusPDUWriteSingleCoilResponse(address, value), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterRequest.go
index 6ca3bf0..7e66236 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterRequest.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -54,9 +52,7 @@ func (m ModbusPDUWriteSingleRegisterRequest) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUWriteSingleRegisterRequestParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUWriteSingleRegisterRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Simple Field (address)
var address uint16 = io.ReadUint16(16)
@@ -65,5 +61,5 @@ func ModbusPDUWriteSingleRegisterRequestParse(io spi.ReadBuffer) ModbusPDUInitia
var value uint16 = io.ReadUint16(16)
// Create the instance
- return NewModbusPDUWriteSingleRegisterRequest(address, value)
+ return NewModbusPDUWriteSingleRegisterRequest(address, value), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterResponse.go
index 086187f..0786e57 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterResponse.go
@@ -19,8 +19,6 @@
package readwrite
import (
- log "github.com/sirupsen/logrus"
- "math"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)
@@ -54,9 +52,7 @@ func (m ModbusPDUWriteSingleRegisterResponse) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func ModbusPDUWriteSingleRegisterResponseParse(io spi.ReadBuffer) ModbusPDUInitializer {
- var startPos = io.GetPos()
- var curPos uint16
+func ModbusPDUWriteSingleRegisterResponseParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Simple Field (address)
var address uint16 = io.ReadUint16(16)
@@ -65,5 +61,5 @@ func ModbusPDUWriteSingleRegisterResponseParse(io spi.ReadBuffer) ModbusPDUIniti
var value uint16 = io.ReadUint16(16)
// Create the instance
- return NewModbusPDUWriteSingleRegisterResponse(address, value)
+ return NewModbusPDUWriteSingleRegisterResponse(address, value), nil
}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusSerialADU.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusSerialADU.go
index d9ef8c0..f678406 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusSerialADU.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusSerialADU.go
@@ -19,87 +19,81 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
- "reflect"
+ "errors"
+ log "github.com/sirupsen/logrus"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
+ "reflect"
)
type ModbusSerialADU struct {
- transactionId uint16
- length uint16
- address uint8
- pdu ModbusPDU
-
+ transactionId uint16
+ length uint16
+ address uint8
+ pdu ModbusPDU
}
-
func NewModbusSerialADU(transactionId uint16, length uint16, address uint8, pdu ModbusPDU) spi.Message {
- return &ModbusSerialADU{transactionId: transactionId, length: length, address: address, pdu: pdu}
+ return &ModbusSerialADU{transactionId: transactionId, length: length, address: address, pdu: pdu}
}
func (m ModbusSerialADU) LengthInBits() uint16 {
- var lengthInBits uint16 = 0
+ var lengthInBits uint16 = 0
- // Simple field (transactionId)
- lengthInBits += 16
+ // Simple field (transactionId)
+ lengthInBits += 16
- // Reserved Field (reserved)
- lengthInBits += 16
+ // Reserved Field (reserved)
+ lengthInBits += 16
- // Simple field (length)
- lengthInBits += 16
+ // Simple field (length)
+ lengthInBits += 16
- // Simple field (address)
- lengthInBits += 8
+ // Simple field (address)
+ lengthInBits += 8
- // Simple field (pdu)
- lengthInBits += m.pdu.LengthInBits()
+ // Simple field (pdu)
+ lengthInBits += m.pdu.LengthInBits()
- return lengthInBits
+ return lengthInBits
}
func (m ModbusSerialADU) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusSerialADUParse(io spi.ReadBuffer, response bool) spi.Message {
- var startPos = io.GetPos()
- var curPos uint16
-
- // Simple Field (transactionId)
- var transactionId uint16 = io.ReadUint16(16)
-
- // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
- {
- var reserved uint16 = io.ReadUint16(16)
- if reserved != uint16(0x0000) {
- log.WithFields(log.Fields{
- "expected value": uint16(0x0000),
- "got value": reserved,
- }).Info("Got unexpected response.")
- }
- }
-
- // Simple Field (length)
- var length uint16 = io.ReadUint16(16)
-
- // Simple Field (address)
- var address uint8 = io.ReadUint8(8)
-
- // Simple Field (pdu)
- var _pduMessage spi.Message = ModbusPDUParse(io, bool(response))
- var pdu ModbusPDU
- pdu, _pduOk := _pduMessage.(ModbusPDU)
- if !_pduOk {
- log.WithFields(log.Fields{
- "expected type": "ModbusPDU",
- "got type": reflect.TypeOf(_pduMessage),
- }).Error("Couldn't cast message")
- throw new RuntimeException()
- }
-
- // Create the instance
- return NewModbusSerialADU(transactionId, length, address, pdu)
+func ModbusSerialADUParse(io spi.ReadBuffer, response bool) (spi.Message, error) {
+
+ // Simple Field (transactionId)
+ var transactionId uint16 = io.ReadUint16(16)
+
+ // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+ {
+ var reserved uint16 = io.ReadUint16(16)
+ if reserved != uint16(0x0000) {
+ log.WithFields(log.Fields{
+ "expected value": uint16(0x0000),
+ "got value": reserved,
+ }).Info("Got unexpected response.")
+ }
+ }
+
+ // Simple Field (length)
+ var length uint16 = io.ReadUint16(16)
+
+ // Simple Field (address)
+ var address uint8 = io.ReadUint8(8)
+
+ // Simple Field (pdu)
+ _pduMessage, _err := ModbusPDUParse(io, bool(response))
+ if _err != nil {
+ return nil, errors.New("Error parsing simple field 'pdu'. " + _err.Error())
+ }
+ var pdu ModbusPDU
+ pdu, _pduOk := _pduMessage.(ModbusPDU)
+ if !_pduOk {
+ return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_pduMessage).Name() + " to ModbusPDU")
+ }
+
+ // Create the instance
+ return NewModbusSerialADU(transactionId, length, address, pdu), nil
}
-
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusTcpADU.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusTcpADU.go
index 55f212d..4037cab 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusTcpADU.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusTcpADU.go
@@ -19,83 +19,78 @@
package readwrite
import (
- "math"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
- log "github.com/sirupsen/logrus"
+ "errors"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
+ "reflect"
+ "strconv"
)
// Constant values.
-const PROTOCOLIDENTIFIER uint16 = 0x0000;
+const PROTOCOLIDENTIFIER uint16 = 0x0000
type ModbusTcpADU struct {
- transactionIdentifier uint16
- unitIdentifier uint8
- pdu ModbusPDU
-
+ transactionIdentifier uint16
+ unitIdentifier uint8
+ pdu ModbusPDU
}
-
func NewModbusTcpADU(transactionIdentifier uint16, unitIdentifier uint8, pdu ModbusPDU) spi.Message {
- return &ModbusTcpADU{transactionIdentifier: transactionIdentifier, unitIdentifier: unitIdentifier, pdu: pdu}
+ return &ModbusTcpADU{transactionIdentifier: transactionIdentifier, unitIdentifier: unitIdentifier, pdu: pdu}
}
func (m ModbusTcpADU) LengthInBits() uint16 {
- var lengthInBits uint16 = 0
+ var lengthInBits uint16 = 0
- // Simple field (transactionIdentifier)
- lengthInBits += 16
+ // Simple field (transactionIdentifier)
+ lengthInBits += 16
- // Const Field (protocolIdentifier)
- lengthInBits += 16
+ // Const Field (protocolIdentifier)
+ lengthInBits += 16
- // Implicit Field (length)
- lengthInBits += 16
+ // Implicit Field (length)
+ lengthInBits += 16
- // Simple field (unitIdentifier)
- lengthInBits += 8
+ // Simple field (unitIdentifier)
+ lengthInBits += 8
- // Simple field (pdu)
- lengthInBits += m.pdu.LengthInBits()
+ // Simple field (pdu)
+ lengthInBits += m.pdu.LengthInBits()
- return lengthInBits
+ return lengthInBits
}
func (m ModbusTcpADU) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
-func ModbusTcpADUParse(io spi.ReadBuffer, response bool) spi.Message {
- var startPos = io.GetPos()
- var curPos uint16
-
- // Simple Field (transactionIdentifier)
- var transactionIdentifier uint16 = io.ReadUint16(16)
-
- // Const Field (protocolIdentifier)
- var protocolIdentifier uint16 = io.ReadUint16(16)
- if protocolIdentifier != PROTOCOLIDENTIFIER {
- throw new ParseException("Expected constant value " + ModbusTcpADU.PROTOCOLIDENTIFIER + " but got " + protocolIdentifier)
- }
-
- // Implicit Field (length) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- var length uint16 = io.ReadUint16(16)
-
- // Simple Field (unitIdentifier)
- var unitIdentifier uint8 = io.ReadUint8(8)
-
- // Simple Field (pdu)
- var _pduMessage spi.Message = ModbusPDUParse(io, bool(response))
- var pdu ModbusPDU
- pdu, _pduOk := _pduMessage.(ModbusPDU)
- if !_pduOk {
- log.WithFields(log.Fields{
- "expected type": "ModbusPDU",
- "got type": reflect.TypeOf(_pduMessage),
- }).Error("Couldn't cast message")
- throw new RuntimeException()
- }
-
- // Create the instance
- return NewModbusTcpADU(transactionIdentifier, unitIdentifier, pdu)
-}
+func ModbusTcpADUParse(io spi.ReadBuffer, response bool) (spi.Message, error) {
+
+ // Simple Field (transactionIdentifier)
+ var transactionIdentifier uint16 = io.ReadUint16(16)
+
+ // Const Field (protocolIdentifier)
+ var protocolIdentifier uint16 = io.ReadUint16(16)
+ if protocolIdentifier != PROTOCOLIDENTIFIER {
+ return nil, errors.New("Expected constant value " + strconv.Itoa(int(PROTOCOLIDENTIFIER)) + " but got " + strconv.Itoa(int(protocolIdentifier)))
+ }
+ // Implicit Field (length) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ var _ uint16 = io.ReadUint16(16)
+
+ // Simple Field (unitIdentifier)
+ var unitIdentifier uint8 = io.ReadUint8(8)
+
+ // Simple Field (pdu)
+ _pduMessage, _err := ModbusPDUParse(io, bool(response))
+ if _err != nil {
+ return nil, errors.New("Error parsing simple field 'pdu'. " + _err.Error())
+ }
+ var pdu ModbusPDU
+ pdu, _pduOk := _pduMessage.(ModbusPDU)
+ if !_pduOk {
+ return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_pduMessage).Name() + " to ModbusPDU")
+ }
+
+ // Create the instance
+ return NewModbusTcpADU(transactionIdentifier, unitIdentifier, pdu), nil
+}
diff --git a/sandbox/plc4go/src/modbus.go b/sandbox/plc4go/src/main/modbus.go
similarity index 57%
rename from sandbox/plc4go/src/modbus.go
rename to sandbox/plc4go/src/main/modbus.go
index c471e74..4a8f65b 100644
--- a/sandbox/plc4go/src/modbus.go
+++ b/sandbox/plc4go/src/main/modbus.go
@@ -13,4 +13,26 @@
// specific language governing permissions and limitations
// under the License.
//
-package modbus
+package main
+
+import (
+ "encoding/hex"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/generated-sources/plc4go/go/modbus/readwrite"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
+)
+
+func main() {
+ request, err := hex.DecodeString("000a00000006010300000004")
+ if err != nil {
+ // Output an error ...
+ }
+ rb := spi.ReadBufferNew(request)
+ adu, err := readwrite.ModbusTcpADUParse(*rb, false)
+ if err != nil {
+ // Output an error ...
+ }
+ if adu != nil {
+ // Output success ...
+ }
+
+}
diff --git a/sandbox/plc4go/src/plc4go/spi/ReadBuffer.go b/sandbox/plc4go/src/plc4go/spi/ReadBuffer.go
index 37b7996..82999da 100644
--- a/sandbox/plc4go/src/plc4go/spi/ReadBuffer.go
+++ b/sandbox/plc4go/src/plc4go/spi/ReadBuffer.go
@@ -24,6 +24,14 @@ type ReadBuffer struct {
bitPos uint8
}
+func ReadBufferNew(data []uint8) *ReadBuffer {
+ return &ReadBuffer{
+ data: data,
+ bytePos: 0,
+ bitPos: 0,
+ }
+}
+
func (rb ReadBuffer) GetPos() uint16 {
return 0
}