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/09 15:41:12 UTC
[plc4x] branch feature/plc4go updated: - Implemented the
serialization (Note: there is still a problem with the typeSwitch
serialization)
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 76335f8 - Implemented the serialization (Note: there is still a problem with the typeSwitch serialization)
76335f8 is described below
commit 76335f834989e36ccc87bec59ed596e0bd1ba661
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Fri Oct 9 17:41:04 2020 +0200
- Implemented the serialization
(Note: there is still a problem with the typeSwitch serialization)
---
.../language/go/GoLanguageTemplateHelper.java | 275 ++++++++++++--------
.../resources/templates/go/model-template.ftlh | 288 +++++++++++++--------
.../main/resources/protocols/modbus/modbus.mspec | 4 +-
.../plc4go/go/modbus/readwrite/ModbusPDU.go | 142 ----------
.../{go => }/modbus/readwrite/ModbusConstants.go | 11 +
.../{go => }/modbus/readwrite/ModbusDataType.go | 0
.../plc4go/modbus/readwrite/ModbusPDU.go | 264 +++++++++++++++++++
.../modbus/readwrite/ModbusPDUDiagnosticRequest.go | 29 +++
.../{go => }/modbus/readwrite/ModbusPDUError.go | 25 ++
.../readwrite/ModbusPDUGetComEventLogRequest.go | 21 ++
.../readwrite/ModbusPDUGetComEventLogResponse.go | 44 ++++
.../ModbusPDUMaskWriteHoldingRegisterRequest.go | 33 +++
.../ModbusPDUMaskWriteHoldingRegisterResponse.go | 33 +++
.../modbus/readwrite/ModbusPDUReadCoilsRequest.go | 29 +++
.../modbus/readwrite/ModbusPDUReadCoilsResponse.go | 32 +++
.../ModbusPDUReadDeviceIdentificationRequest.go | 21 ++
.../ModbusPDUReadDeviceIdentificationResponse.go | 21 ++
.../ModbusPDUReadDiscreteInputsRequest.go | 29 +++
.../ModbusPDUReadDiscreteInputsResponse.go | 32 +++
.../ModbusPDUReadExceptionStatusRequest.go | 21 ++
.../ModbusPDUReadExceptionStatusResponse.go | 25 ++
.../readwrite/ModbusPDUReadFifoQueueRequest.go | 25 ++
.../readwrite/ModbusPDUReadFifoQueueResponse.go | 36 +++
.../readwrite/ModbusPDUReadFileRecordRequest.go | 39 +++
.../ModbusPDUReadFileRecordRequestItem.go | 24 ++
.../readwrite/ModbusPDUReadFileRecordResponse.go | 39 +++
.../ModbusPDUReadFileRecordResponseItem.go | 23 ++
.../ModbusPDUReadHoldingRegistersRequest.go | 29 +++
.../ModbusPDUReadHoldingRegistersResponse.go | 32 +++
.../ModbusPDUReadInputRegistersRequest.go | 29 +++
.../ModbusPDUReadInputRegistersResponse.go | 32 +++
...sPDUReadWriteMultipleHoldingRegistersRequest.go | 48 ++++
...PDUReadWriteMultipleHoldingRegistersResponse.go | 32 +++
.../readwrite/ModbusPDUReportServerIdRequest.go | 21 ++
.../readwrite/ModbusPDUReportServerIdResponse.go | 32 +++
.../readwrite/ModbusPDUWriteFileRecordRequest.go | 39 +++
.../ModbusPDUWriteFileRecordRequestItem.go | 31 +++
.../readwrite/ModbusPDUWriteFileRecordResponse.go | 39 +++
.../ModbusPDUWriteFileRecordResponseItem.go | 31 +++
.../ModbusPDUWriteMultipleCoilsRequest.go | 40 +++
.../ModbusPDUWriteMultipleCoilsResponse.go | 29 +++
...odbusPDUWriteMultipleHoldingRegistersRequest.go | 40 +++
...dbusPDUWriteMultipleHoldingRegistersResponse.go | 29 +++
.../readwrite/ModbusPDUWriteSingleCoilRequest.go | 29 +++
.../readwrite/ModbusPDUWriteSingleCoilResponse.go | 29 +++
.../ModbusPDUWriteSingleRegisterRequest.go | 29 +++
.../ModbusPDUWriteSingleRegisterResponse.go | 29 +++
.../{go => }/modbus/readwrite/ModbusSerialADU.go | 27 ++
.../{go => }/modbus/readwrite/ModbusTcpADU.go | 27 ++
sandbox/plc4go/src/main/modbus.go | 2 +-
50 files changed, 1901 insertions(+), 369 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 8e2869c..f6fd0c1 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
@@ -20,7 +20,6 @@
package org.apache.plc4x.language.go;
import org.apache.commons.lang3.math.NumberUtils;
-import org.apache.commons.text.WordUtils;
import org.apache.plc4x.plugins.codegenerator.protocol.freemarker.BaseFreemarkerLanguageTemplateHelper;
import org.apache.plc4x.plugins.codegenerator.types.definitions.*;
import org.apache.plc4x.plugins.codegenerator.types.enums.EnumValue;
@@ -28,7 +27,6 @@ import org.apache.plc4x.plugins.codegenerator.types.fields.*;
import org.apache.plc4x.plugins.codegenerator.types.references.*;
import org.apache.plc4x.plugins.codegenerator.types.terms.*;
-import java.lang.reflect.Array;
import java.util.*;
import java.util.function.Function;
@@ -40,8 +38,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
}
public String fileName(String protocolName, String languageName, String languageFlavorName) {
- return "plc4go." + String.join("", languageName.split("\\-")) + "." +
- String.join("", protocolName.split("\\-")) + "." +
+ return "plc4go." + String.join("", protocolName.split("\\-")) + "." +
String.join("", languageFlavorName.split("\\-"));
}
@@ -146,46 +143,19 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
case BIT: {
return "false";
}
- case UINT: {
- IntegerTypeReference integerTypeReference = (IntegerTypeReference) simpleTypeReference;
- if (integerTypeReference.getSizeInBits() <= 16) {
- return "0";
- }
- if (integerTypeReference.getSizeInBits() <= 32) {
- return "0l";
- }
- return "null";
- }
+ case UINT:
case INT: {
- IntegerTypeReference integerTypeReference = (IntegerTypeReference) simpleTypeReference;
- if (integerTypeReference.getSizeInBits() <= 32) {
- return "0";
- }
- if (integerTypeReference.getSizeInBits() <= 64) {
- return "0l";
- }
- return "null";
+ return "0";
}
case FLOAT: {
- FloatTypeReference floatTypeReference = (FloatTypeReference) simpleTypeReference;
- int sizeInBits = ((floatTypeReference.getBaseType() == SimpleTypeReference.SimpleBaseType.FLOAT) ? 1 : 0) +
- floatTypeReference.getExponent() + floatTypeReference.getMantissa();
- if (sizeInBits <= 32) {
- return "0.0f";
- }
- if (sizeInBits <= 64) {
- return "0.0";
- }
- return "null";
+ return "0.0";
}
case STRING: {
- return "null";
+ return "";
}
}
- return "Hurz";
- } else {
- return "null";
}
+ return "null";
}
public int getNumBits(SimpleTypeReference simpleTypeReference) {
@@ -273,39 +243,37 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
public String getWriteBufferWriteMethodCall(SimpleTypeReference simpleTypeReference, String fieldName) {
switch (simpleTypeReference.getBaseType()) {
case BIT: {
- return "io.writeBit((bool) " + fieldName + ")";
+ return "io.WriteBit((bool) " + fieldName + ")";
}
case UINT: {
IntegerTypeReference integerTypeReference = (IntegerTypeReference) simpleTypeReference;
- if (integerTypeReference.getSizeInBits() <= 4) {
- return "io.writeUnsignedByte(" + integerTypeReference.getSizeInBits() + ", ((Number) " + fieldName + ").byteValue())";
- }
if (integerTypeReference.getSizeInBits() <= 8) {
- return "io.writeUnsignedShort(" + integerTypeReference.getSizeInBits() + ", ((Number) " + fieldName + ").shortValue())";
+ return "io.WriteUint8(" + integerTypeReference.getSizeInBits() + ", " + fieldName + ")";
}
if (integerTypeReference.getSizeInBits() <= 16) {
- return "io.writeUnsignedInt(" + integerTypeReference.getSizeInBits() + ", ((Number) " + fieldName + ").intValue())";
+ return "io.WriteUint16(" + integerTypeReference.getSizeInBits() + ", " + fieldName + ")";
}
if (integerTypeReference.getSizeInBits() <= 32) {
- return "io.writeUnsignedLong(" + integerTypeReference.getSizeInBits() + ", ((Number) " + fieldName + ").longValue())";
+ return "io.WriteUint32(" + integerTypeReference.getSizeInBits() + ", " + fieldName + ")";
+ }
+ if (integerTypeReference.getSizeInBits() <= 64) {
+ return "io.WriteUint64(" + integerTypeReference.getSizeInBits() + ", " + fieldName + ")";
}
- return "io.writeUnsignedBigInteger(" + integerTypeReference.getSizeInBits() + ", (BigInteger) " + fieldName + ")";
}
case INT: {
IntegerTypeReference integerTypeReference = (IntegerTypeReference) simpleTypeReference;
if (integerTypeReference.getSizeInBits() <= 8) {
- return "io.writeByte(" + integerTypeReference.getSizeInBits() + ", ((Number) " + fieldName + ").byteValue())";
+ return "io.WriteInt8(" + integerTypeReference.getSizeInBits() + ", " + fieldName + ")";
}
if (integerTypeReference.getSizeInBits() <= 16) {
- return "io.writeShort(" + integerTypeReference.getSizeInBits() + ", ((Number) " + fieldName + ").shortValue())";
+ return "io.WriteInt16(" + integerTypeReference.getSizeInBits() + ", " + fieldName + ")";
}
if (integerTypeReference.getSizeInBits() <= 32) {
- return "io.writeInt(" + integerTypeReference.getSizeInBits() + ", ((Number) " + fieldName + ").intValue())";
+ return "io.WriteInt32(" + integerTypeReference.getSizeInBits() + ", " + fieldName + ")";
}
if (integerTypeReference.getSizeInBits() <= 64) {
- return "io.writeLong(" + integerTypeReference.getSizeInBits() + ", ((Number) " + fieldName + ").longValue())";
+ return "io.WriteInt64(" + integerTypeReference.getSizeInBits() + ", " + fieldName + ")";
}
- return "io.writeBigInteger(" + integerTypeReference.getSizeInBits() + ", BigInteger.valueOf( " + fieldName + "))";
}
case FLOAT:
case UFLOAT: {
@@ -323,8 +291,8 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
}
case STRING: {
StringTypeReference stringTypeReference = (StringTypeReference) simpleTypeReference;
- return "io.writeString(" + stringTypeReference.getSizeInBits() + ", \"" +
- stringTypeReference.getEncoding() + "\", (String) " + fieldName + ")";
+ return "io.WriteString(" + stringTypeReference.getSizeInBits() + ", \"" +
+ stringTypeReference.getEncoding() + "\", " + fieldName + ")";
}
}
return "Hurz";
@@ -422,7 +390,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
}
else if("STATIC_CALL".equals(vl.getName())) {
StringBuilder sb = new StringBuilder();
- if(!(vl.getArgs().get(0) instanceof StringLiteral)) {
+ if (!(vl.getArgs().get(0) instanceof StringLiteral)) {
throw new RuntimeException("Expecting the first argument of a 'STATIC_CALL' to be a StringLiteral");
}
// Get the class and method name
@@ -430,17 +398,17 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
// Cut off the double-quptes
methodName = methodName.substring(1, methodName.length() - 1);
sb.append(methodName).append("(");
- for(int i = 1; i < vl.getArgs().size(); i++) {
+ for (int i = 1; i < vl.getArgs().size(); i++) {
Term arg = vl.getArgs().get(i);
- if(i > 1) {
+ if (i > 1) {
sb.append(", ");
}
- if(arg instanceof VariableLiteral) {
+ if (arg instanceof VariableLiteral) {
VariableLiteral va = (VariableLiteral) arg;
// "io" is the default name of the reader argument which is always available.
boolean isParserArg = "io".equals(va.getName());
boolean isTypeArg = "_type".equals(va.getName());
- if(!isParserArg && !isTypeArg && parserArguments != null) {
+ if (!isParserArg && !isTypeArg && parserArguments != null) {
for (Argument parserArgument : parserArguments) {
if (parserArgument.getName().equals(va.getName())) {
isParserArg = true;
@@ -448,11 +416,11 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
}
}
}
- if(isParserArg) {
+ if (isParserArg) {
sb.append(va.getName() + ((va.getChild() != null) ? "." + toVariableExpressionRest(va.getChild()) : ""));
}
// We have to manually evaluate the type information at code-generation time.
- else if(isTypeArg) {
+ else if (isTypeArg) {
String part = va.getChild().getName();
switch (part) {
case "name":
@@ -471,13 +439,16 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
} else {
sb.append(toVariableParseExpression(field, va, null));
}
- } else if(arg instanceof StringLiteral) {
+ } else if (arg instanceof StringLiteral) {
sb.append(((StringLiteral) arg).getValue());
}
}
sb.append(")");
return sb.toString();
}
+ else if("COUNT".equals(vl.getName())) {
+ return "uint8(len(" + vl.getName() + ((vl.getChild() != null) ? "." + toVariableExpressionRest(vl.getChild()) : "") + "))";
+ }
// All uppercase names are not fields, but utility methods.
else if(vl.getName().equals(vl.getName().toUpperCase())) {
StringBuilder sb = new StringBuilder(vl.getName());
@@ -518,8 +489,8 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
}
if(arg instanceof VariableLiteral) {
VariableLiteral va = (VariableLiteral) arg;
- // "io" and "_value" are always available in every parser.
- boolean isSerializerArg = "io".equals(va.getName()) || "_value".equals(va.getName()) || "element".equals(va.getName());
+ // "io" and "m" are always available in every parser.
+ boolean isSerializerArg = "io".equals(va.getName()) || "m".equals(va.getName()) || "element".equals(va.getName());
boolean isTypeArg = "_type".equals(va.getName());
if(!isSerializerArg && !isTypeArg && serialzerArguments != null) {
for (Argument serializerArgument : serialzerArguments) {
@@ -557,58 +528,45 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
sb.append(")");
return sb.toString();
}
- // All uppercase names are not fields, but utility methods.
- else if(vl.getName().equals(vl.getName().toUpperCase())) {
- StringBuilder sb = new StringBuilder(vl.getName());
- if(vl.getArgs() != null) {
- sb.append("(");
- boolean firstArg = true;
- for(Term arg : vl.getArgs()) {
- if(!firstArg) {
- sb.append(", ");
+ else if("COUNT".equals(vl.getName())) {
+ VariableLiteral va = (VariableLiteral) vl.getArgs().get(0);
+ // "io" and "m" are always available in every parser.
+ boolean isSerializerArg = "io".equals(va.getName()) || "m".equals(va.getName()) || "element".equals(va.getName());
+ if(!isSerializerArg && serialzerArguments != null) {
+ for (Argument serializerArgument : serialzerArguments) {
+ if (serializerArgument.getName().equals(va.getName())) {
+ isSerializerArg = true;
+ break;
}
-
- if(arg instanceof VariableLiteral) {
- VariableLiteral va = (VariableLiteral) arg;
- boolean isSerializerArg = "io".equals(va.getName());
- boolean isTypeArg = "_type".equals(va.getName());
- if(!isSerializerArg && !isTypeArg && serialzerArguments != null) {
- for (Argument serializerArgument : serialzerArguments) {
- if (serializerArgument.getName().equals(va.getName())) {
- isSerializerArg = true;
- break;
- }
- }
- }
- if(isSerializerArg) {
- sb.append(va.getName() + ((va.getChild() != null) ? "." + toVariableExpressionRest(va.getChild()) : ""));
- } else if(isTypeArg) {
- String part = va.getChild().getName();
- switch (part) {
- case "name":
- sb.append("\"").append(field.getTypeName()).append("\"");
- break;
- case "length":
- sb.append("\"").append(((SimpleTypeReference) field).getSizeInBits()).append("\"");
- break;
- case "encoding":
- String encoding = ((StringTypeReference) field.getType()).getEncoding();
- // Cut off the single quotes.
- encoding = encoding.substring(1, encoding.length() - 1);
- sb.append("\"").append(encoding).append("\"");
- break;
- }
- } else {
- sb.append(toVariableSerializationExpression(field, va, null));
- }
- } else if(arg instanceof StringLiteral) {
- sb.append(((StringLiteral) arg).getValue());
+ }
+ }
+ StringBuilder sb = new StringBuilder();
+ if(isSerializerArg) {
+ sb.append(va.getName() + ((va.getChild() != null) ? "." + toVariableExpressionRest(va.getChild()) : ""));
+ } else {
+ sb.append(toVariableSerializationExpression(field, va, null));
+ }
+ return getLanguageTypeNameForField(field) + "(len(" + sb.toString() + "))";
+ }
+ else if("ARRAY_SIZE_IN_BYTES".equals(vl.getName())) {
+ VariableLiteral va = (VariableLiteral) vl.getArgs().get(0);
+ // "io" and "m" are always available in every parser.
+ boolean isSerializerArg = "io".equals(va.getName()) || "m".equals(va.getName()) || "element".equals(va.getName());
+ if(!isSerializerArg && serialzerArguments != null) {
+ for (Argument serializerArgument : serialzerArguments) {
+ if (serializerArgument.getName().equals(va.getName())) {
+ isSerializerArg = true;
+ break;
}
- firstArg = false;
}
- sb.append(")");
}
- return sb.toString();
+ StringBuilder sb = new StringBuilder();
+ if(isSerializerArg) {
+ sb.append(va.getName()).append(((va.getChild() != null) ? "." + toVariableExpressionRest(va.getChild()) : ""));
+ } else {
+ sb.append(toVariableSerializationExpression(field, va, null));
+ }
+ return getLanguageTypeNameForField(field) + "(" + ((VariableLiteral) vl.getArgs().get(0)).getName() + "ArraySizeInBytes(" + sb.toString() + "))";
}
// The synthetic checksumRawData is a local field and should not be accessed as bean property.
boolean isSerializerArg = "checksumRawData".equals(vl.getName()) || "_value".equals(vl.getName()) || "element".equals(vl.getName());
@@ -639,12 +597,17 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
return "";
}
} else {
- return "_value." + toVariableExpressionRest(vl);
+ return "m." + toVariableExpressionRest(vl);
}
}
private String toVariableExpressionRest(VariableLiteral vl) {
- return "get" + WordUtils.capitalize(vl.getName()) + "()" + ((vl.isIndexed() ? "[" + vl.getIndex() + "]" : "") +
+ if("lengthInBytes".equals(vl.getName())) {
+ return "LengthInBytes()";
+ } else if("lengthInBits".equals(vl.getName())) {
+ return "LengthInBits()";
+ }
+ return vl.getName() + ((vl.isIndexed() ? "[" + vl.getIndex() + "]" : "") +
((vl.getChild() != null) ? "." + toVariableExpressionRest(vl.getChild()) : ""));
}
@@ -835,5 +798,95 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
return "_";
}
+ public boolean needsVariable(ArrayField field, String variableName, boolean serialization) {
+ if(!serialization) {
+ if (field.getLoopExpression().contains(variableName)) {
+ return true;
+ }
+ }
+ if((field.getParams() != null) && (field.getParams().length > 0)){
+ for (Term param : field.getParams()) {
+ if(param.contains(variableName)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Right now only the ARRAY_SIZE_IN_BYTES requires helpers to be generated.
+ * Also right now only the Modbus protocol requires this and here the referenced
+ * properties are all also members of the current complex type,
+ * so we'll simplify things here for now.
+ *
+ * @param functionName name of the
+ * @return
+ */
+ public Map<String, String> requiresHelperFunctions(String functionName) {
+ Map<String, String> result = new HashMap<>();
+ // Search for array fields ...
+ for (Field curField : ((ComplexTypeDefinition) getThisTypeDefinition()).getFields()) {
+ if(curField instanceof ArrayField) {
+ ArrayField arrayField = (ArrayField) curField;
+ if(arrayField.getType() instanceof ComplexTypeReference) {
+ result.put(arrayField.getName(), getLanguageTypeNameForField(arrayField));
+ }
+ }
+ }
+ return result;
+ }
+
+ public Term findTerm(Term baseTerm, String name) {
+ if(baseTerm instanceof VariableLiteral) {
+ VariableLiteral variableLiteral = (VariableLiteral) baseTerm;
+ if(variableLiteral.getName().equals(name)) {
+ return variableLiteral;
+ }
+ if(variableLiteral.getChild() != null) {
+ Term found = findTerm(variableLiteral.getChild(), name);
+ if(found != null) {
+ return found;
+ }
+ }
+ for (Term arg : variableLiteral.getArgs()) {
+ Term found = findTerm(arg, name);
+ if(found != null) {
+ return found;
+ }
+ }
+ } else if(baseTerm instanceof UnaryTerm) {
+ UnaryTerm unaryTerm = (UnaryTerm) baseTerm;
+ Term found = findTerm(unaryTerm.getA(), name);
+ if(found != null) {
+ return found;
+ }
+ } else if(baseTerm instanceof BinaryTerm) {
+ BinaryTerm binaryTerm = (BinaryTerm) baseTerm;
+ Term found = findTerm(binaryTerm.getA(), name);
+ if(found != null) {
+ return found;
+ }
+ found = findTerm(binaryTerm.getB(), name);
+ if(found != null) {
+ return found;
+ }
+ } else if(baseTerm instanceof TernaryTerm) {
+ TernaryTerm ternaryTerm = (TernaryTerm) baseTerm;
+ Term found = findTerm(ternaryTerm.getA(), name);
+ if(found != null) {
+ return found;
+ }
+ found = findTerm(ternaryTerm.getB(), name);
+ if(found != null) {
+ return found;
+ }
+ found = findTerm(ternaryTerm.getC(), name);
+ if(found != null) {
+ return found;
+ }
+ }
+ return null;
+ }
}
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 6c799cb..ccc862d 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
@@ -92,10 +92,56 @@ type ${type.name} struct {
<#if type.parentType??> ${type.parentType.name}</#if>
}
+type I${type.name} interface {
+<#if helper.isDiscriminatedChildTypeDefinition()>
+ I${type.parentType.name}
+<#else>
+ spi.Message
+</#if>
+<#if helper.isDiscriminatedParentTypeDefinition()>
+ <#list helper.getDiscriminatorTypes() as discriminatorName, discriminatorType>
+ <#-- If the discriminator name matches that of another field, suppress the methods generation -->
+ <#if !helper.isNonDiscriminatorField(discriminatorName)>
+ ${discriminatorName?cap_first}() ${helper.getLanguageTypeNameForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])}
+ </#if>
+ </#list>
+</#if>
+ Serialize(io spi.WriteBuffer)
+}
+
+<#if helper.isDiscriminatedChildTypeDefinition()>
+ <#assign discriminatedChildType = type>
+ <#-- @ftlvariable name="discriminatedChildType" type="org.apache.plc4x.plugins.codegenerator.types.definitions.DiscriminatedComplexTypeDefinition" -->
+// Accessors for discriminator values.
+ <#list helper.getDiscriminatorValues(discriminatedChildType) as discriminatorName, discriminatorValue>
+ <#-- If the discriminator name matches that of another field, suppress the methods generation -->
+ <#if !helper.isNonDiscriminatorField(discriminatorName)>
+func (m ${type.name}) ${discriminatorName?cap_first}() ${helper.getLanguageTypeNameForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])} {
+ return <#if discriminatorValue??>${discriminatorValue}<#else>${helper.getNullValueForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])}</#if>
+}
+
+ </#if>
+ </#list>
+</#if>
<#if helper.isDiscriminatedParentTypeDefinition()>
type ${type.name}Initializer interface {
initialize(<#list type.getAllPropertyFields() as field>${field.name}: ${field.name}<#sep>, </#sep></#list>) spi.Message
}
+
+ <#list helper.getDiscriminatorTypes() as discriminatorName, discriminatorType>
+ <#-- If the discriminator name matches that of another field, suppress the methods generation -->
+ <#if !helper.isNonDiscriminatorField(discriminatorName)>
+// Dummy implementation ...
+func (m ${type.name}) ${discriminatorName?cap_first}() ${helper.getLanguageTypeNameForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])} {
+ return ${helper.getNullValueForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])}
+}
+
+func ${type.name}${discriminatorName?cap_first}(m I${type.name}) ${helper.getLanguageTypeNameForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])} {
+ return m.${discriminatorName?cap_first}()
+}
+
+ </#if>
+ </#list>
<#else>
<#if type.parentType??>func (m ${type.name}) initialize(<#list type.parentType.getAllPropertyFields() as field>${field.name}: ${field.name}<#sep>, </#sep></#list>) spi.Message {
return spi.Message(m)
@@ -517,155 +563,171 @@ func ${type.name}Parse(io spi.ReadBuffer<#if type.parserArguments?has_content>,
</#if>
}
- <#--if outputFlavor != "passive">
func (m ${type.name}) Serialize(io spi.WriteBuffer) {
- int startPos = io.getPos();
-
- <#list type.fields as field>
- <#switch field.typeName>
- <#case "array">
- <#assign arrayField = field>
- <#assign simpleTypeReference = arrayField.type>
+ <#assign arraySizeInBytesHelpers=helper.requiresHelperFunctions("ARRAY_SIZE_IN_BYTES")>
+ <#if arraySizeInBytesHelpers?has_content>
+ <#list arraySizeInBytesHelpers?keys as key>
+ <#assign typeName=arraySizeInBytesHelpers[key]>
+ ${key}ArraySizeInBytes := func(items []${typeName}) uint32 {
+ var sizeInBytes uint32 = 0
+ for _, v := range items {
+ sizeInBytes += uint32(v.LengthInBytes())
+ }
+ return sizeInBytes
+ }
+ </#list>
+ </#if>
+ <#list type.fields as field>
+ <#switch field.typeName>
+ <#case "array">
+ <#assign arrayField = field>
+ <#assign simpleTypeReference = arrayField.type>
// Array Field (${arrayField.name})
- if(_value.get${arrayField.name?cap_first}() != null) {
- int itemCount = (int) _value.get${arrayField.name?cap_first}().length;
- int curItem = 0;
- for(${helper.getLanguageTypeNameForField(field)} element : _value.get${arrayField.name?cap_first}()) {
- <#if helper.isSimpleTypeReference(arrayField.type)>
- <#assign simpleTypeReference = arrayField.type>
- ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "element")};
- <#else>
- <#assign complexTypeReference = arrayField.type>
- boolean lastItem = curItem == (itemCount - 1);
- ${complexTypeReference.name}IO.staticSerialize(io, element<#if helper.getSerializerTerms(field.params)?has_content>, <#list helper.getSerializerTerms(field.params) as parserArgument>${parserArgument.name}<#sep>, </#sep></#list></#if>);
+ if m.${arrayField.name} != nil {
+ <#if helper.isComplexTypeReference(arrayField.type) && helper.needsVariable(arrayField, "curItem", true)>
+ itemCount := len(m.${arrayField.name})
+ var curItem uint16 = 0
+ </#if>
+ for _, _element := range m.${arrayField.name} {
+ <#if helper.isSimpleTypeReference(arrayField.type)>
+ <#assign simpleTypeReference = arrayField.type>
+ ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "_element")}
+ <#else>
+ <#assign complexTypeReference = arrayField.type>
+ <#if helper.needsVariable(arrayField, "curItem", true)>
+ var lastItem bool = curItem == (itemCount - 1)
+ </#if>
+ _element.Serialize(io<#if helper.getSerializerTerms(field.params)?has_content>, <#list helper.getSerializerTerms(field.params) as parserArgument>${parserArgument.name}<#sep>, </#sep></#list></#if>)
+ </#if>
+ <#if helper.needsVariable(arrayField, "curItem", true)>
+ curItem++
</#if>
- curItem++;
}
}
- <#break>
- <#case "checksum">
- <#assign checksumField = field>
- <#assign simpleTypeReference = checksumField.type>
+ <#break>
+ <#case "checksum">
+ <#assign checksumField = field>
+ <#assign simpleTypeReference = checksumField.type>
// Checksum Field (checksum) (Calculated)
{
- ${helper.getLanguageTypeNameForField(field)} _checksum = ${helper.getNullValueForTypeReference(checksumField.type)};
+ _checksum := ${helper.getNullValueForTypeReference(checksumField.type)}
// Create an array of all the bytes written in this message element so far.
- byte[] checksumRawData = io.getBytes(startPos, io.getPos());
- _checksum = (${helper.getLanguageTypeNameForField(field)}) (${helper.toSerializationExpression(checksumField, checksumField.checksumExpression, type.parserArguments)});
- ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(_checksum)")};
+ checksumRawData []uint8 = io.getBytes(startPos, io.getPos())
+ _checksum = (${helper.getLanguageTypeNameForField(field)}) (${helper.toSerializationExpression(checksumField, checksumField.checksumExpression, type.parserArguments)})
+ ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(_checksum)")}
}
- <#break>
- <#case "const">
- <#assign constField = field>
- <#assign simpleTypeReference = constField.type>
+ <#break>
+ <#case "const">
+ <#assign constField = field>
+ <#assign simpleTypeReference = constField.type>
// Const Field (${constField.name})
- ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, constField.referenceValue)};
- <#break>
- <#case "discriminator">
- <#assign discriminatorField = field>
- <#assign simpleTypeReference = discriminatorField.type>
+ ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, constField.referenceValue)}
+ <#break>
+ <#case "discriminator">
+ <#assign discriminatorField = field>
+ <#assign simpleTypeReference = discriminatorField.type>
// Discriminator Field (${discriminatorField.name}) (Used as input to a switch field)
- ${helper.getLanguageTypeNameForField(field)} ${discriminatorField.name} = (${helper.getLanguageTypeNameForField(field)}) _value.get${discriminatorField.name?cap_first}();
- ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + discriminatorField.name + ")")};
- <#break>
- <#case "enum">
- <#assign enumField = field>
+ ${discriminatorField.name} := ${type.name}${discriminatorField.name?cap_first}(m)
+ ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + discriminatorField.name + ")")}
+ <#break>
+ <#case "enum">
+ <#assign enumField = field>
// Enum field (${enumField.name})
- ${helper.getLanguageTypeNameForField(field)} ${enumField.name} = (${helper.getLanguageTypeNameForField(field)}) _value.get${enumField.name?cap_first}();
- ${helper.getWriteBufferWriteMethodCall(helper.getEnumBaseTypeReference(enumField.type), "(" + enumField.name + ".getValue())")};
- <#break>
- <#case "implicit">
- <#assign implicitField = field>
- <#assign simpleTypeReference = implicitField.type>
+ ${enumField.name} := m.${enumField.name}
+ ${helper.getWriteBufferWriteMethodCall(helper.getEnumBaseTypeReference(enumField.type), "(" + enumField.name + ".getValue())")}
+ <#break>
+ <#case "implicit">
+ <#assign implicitField = field>
+ <#assign simpleTypeReference = implicitField.type>
// Implicit Field (${implicitField.name}) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
- ${helper.getLanguageTypeNameForField(field)} ${implicitField.name} = (${helper.getLanguageTypeNameForField(field)}) (${helper.toSerializationExpression(implicitField, implicitField.serializeExpression, type.parserArguments)});
- ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + implicitField.name + ")")};
- <#break>
- <#case "manualArray">
- <#assign manualArrayField = field>
+ var ${implicitField.name} ${helper.getLanguageTypeNameForField(field)} = (${helper.toSerializationExpression(implicitField, implicitField.serializeExpression, type.parserArguments)})
+ ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + implicitField.name + ")")}
+ <#break>
+ <#case "manualArray">
+ <#assign manualArrayField = field>
// Manual Array Field (${manualArrayField.name})
- if(_value.get${manualArrayField.name?cap_first}() != null) {
- for(${helper.getLanguageTypeNameForField(field)} element : _value.get${manualArrayField.name?cap_first}()) {
- ${helper.toSerializationExpression(manualArrayField, manualArrayField.serializeExpression, type.parserArguments)};
+ if m.${manualArrayField.name} != nil {
+ for(${helper.getLanguageTypeNameForField(field)} element : m.${manualArrayField.name}) {
+ ${helper.toSerializationExpression(manualArrayField, manualArrayField.serializeExpression, type.parserArguments)}
}
}
- <#break>
- <#case "manual">
- <#assign manualField = field>
+ <#break>
+ <#case "manual">
+ <#assign manualField = field>
// Manual Field (${manualField.name})
- ${helper.toSerializationExpression(manualField, manualField.serializeExpression, type.parserArguments)};
- <#break>
- <#case "optional">
- <#assign optionalField = field>
+ ${helper.toSerializationExpression(manualField, manualField.serializeExpression, type.parserArguments)}
+ <#break>
+ <#case "optional">
+ <#assign optionalField = field>
// Optional Field (${optionalField.name}) (Can be skipped, if the value is null)
- ${helper.getLanguageTypeNameForField(field)} ${optionalField.name} = null;
- if(_value.get${optionalField.name?cap_first}() != null) {
- ${optionalField.name} = (${helper.getLanguageTypeNameForField(field)}) _value.get${optionalField.name?cap_first}();
- <#if helper.isSimpleTypeReference(optionalField.type)>
- <#assign simpleTypeReference = optionalField.type>
- ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + optionalField.name + ")")};
- <#else>
- <#assign complexTypeReference = optionalField.type>
- ${complexTypeReference.name}IO.staticSerialize(io, ${optionalField.name});
- </#if>
+ var ${optionalField.name} ${helper.getLanguageTypeNameForField(field)} = nil
+ if m.${optionalField.name} != nil {
+ ${optionalField.name} = m.${optionalField.name}
+ <#if helper.isSimpleTypeReference(optionalField.type)>
+ <#assign simpleTypeReference = optionalField.type>
+ ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + optionalField.name + ")")}
+ <#else>
+ <#assign complexTypeReference = optionalField.type>
+ ${complexTypeReference.name}IO.staticSerialize(io, ${optionalField.name})
+ </#if>
}
- <#break>
- <#case "padding">
- <#assign paddingField = field>
- <#assign simpleTypeReference = paddingField.type>
+ <#break>
+ <#case "padding">
+ <#assign paddingField = field>
+ <#assign simpleTypeReference = paddingField.type>
// Padding Field (padding)
{
- int _timesPadding = (int) (${helper.toSerializationExpression(paddingField, paddingField.paddingCondition, type.parserArguments)});
- while (_timesPadding-- > 0) {
- ${helper.getLanguageTypeNameForField(field)} _paddingValue = (${helper.getLanguageTypeNameForField(field)}) (${helper.toSerializationExpression(paddingField, paddingField.paddingValue, type.parserArguments)});
- ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(_paddingValue)")};
+ int _timesPadding = (int) (${helper.toSerializationExpression(paddingField, paddingField.paddingCondition, type.parserArguments)})
+ for ;_timesPadding > 0; _timesPadding-- {
+ ${helper.getLanguageTypeNameForField(field)} _paddingValue = (${helper.getLanguageTypeNameForField(field)}) (${helper.toSerializationExpression(paddingField, paddingField.paddingValue, type.parserArguments)})
+ ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(_paddingValue)")}
}
}
- <#break>
- <#case "reserved">
- <#assign reservedField = field>
- <#assign simpleTypeReference = reservedField.type>
+ <#break>
+ <#case "reserved">
+ <#assign reservedField = field>
+ <#assign simpleTypeReference = reservedField.type>
// Reserved Field (reserved)
- ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, helper.getReservedValue(field))};
- <#break>
- <#case "simple">
- <#assign simpleField = field>
+ ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, helper.getReservedValue(field))}
+ <#break>
+ <#case "simple">
+ <#assign simpleField = field>
// Simple Field (${simpleField.name})
- ${helper.getLanguageTypeNameForField(field)} ${simpleField.name} = (${helper.getLanguageTypeNameForField(field)}) _value.get${simpleField.name?cap_first}();
- <#if helper.isSimpleTypeReference(simpleField.type)>
- <#assign simpleTypeReference = simpleField.type>
- ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + simpleField.name + ")")};
- <#else>
- <#assign complexTypeReference = simpleField.type>
- ${complexTypeReference.name}IO.staticSerialize(io, ${simpleField.name});
- </#if>
- <#break>
- <#case "switch">
- <#assign switchField = field>
-
- // Switch field (Depending on the discriminator values, passes the instantiation to a sub-type)
- <#list switchField.cases as case>
- if(_value instanceof ${case.name}) {
- ${case.name}IO.staticSerialize(io, (${case.name}) _value);
- }<#sep> else </#sep>
- </#list>
- <#break>
- <#case "virtual">
- <#break>
- </#switch>
- </#list>
+ var ${simpleField.name} ${helper.getLanguageTypeNameForField(field)} = m.${simpleField.name}
+ <#if helper.isSimpleTypeReference(simpleField.type)>
+ <#assign simpleTypeReference = simpleField.type>
+ ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + simpleField.name + ")")}
+ <#else>
+ <#assign complexTypeReference = simpleField.type>
+ ${simpleField.name}.Serialize(io)
+ </#if>
+ <#break>
+ <#case "switch">
+ <#assign switchField = field>
+
+ // Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
+ switch m.(type) {
+ <#list switchField.cases as case>
+ case I${case.name}:
+ I${case.name}(m).Serialize(io)
+ </#list>
+ }
+ <#break>
+ <#case "virtual">
+ <#break>
+ </#switch>
+ </#list>
}
- </#if-->
</#outputformat>
\ No newline at end of file
diff --git a/protocols/modbus/src/main/resources/protocols/modbus/modbus.mspec b/protocols/modbus/src/main/resources/protocols/modbus/modbus.mspec
index a3f3f55..4e72019 100644
--- a/protocols/modbus/src/main/resources/protocols/modbus/modbus.mspec
+++ b/protocols/modbus/src/main/resources/protocols/modbus/modbus.mspec
@@ -57,8 +57,8 @@
[discriminatedType 'ModbusPDU' [bit 'response']
[discriminator bit 'errorFlag']
- [discriminator uint 7 'function']
- [typeSwitch 'errorFlag','function','response'
+ [discriminator uint 7 'functionFlag']
+ [typeSwitch 'errorFlag','functionFlag','response'
['true' ModbusPDUError
[simple uint 8 'exceptionCode']
]
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDU.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDU.go
deleted file mode 100644
index 6963177..0000000
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDU.go
+++ /dev/null
@@ -1,142 +0,0 @@
-//
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-//
-package readwrite
-
-import (
- "errors"
- "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
-)
-
-type ModbusPDU struct {
-}
-
-type ModbusPDUInitializer interface {
- initialize() spi.Message
-}
-
-func (m ModbusPDU) LengthInBits() uint16 {
- var lengthInBits uint16 = 0
-
- // Discriminator Field (errorFlag)
- lengthInBits += 1
-
- // Discriminator Field (function)
- lengthInBits += 7
-
- // Length of sub-type elements will be added by sub-type...
-
- return lengthInBits
-}
-
-func (m ModbusPDU) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
-}
-
-func ModbusPDUParse(io spi.ReadBuffer, response bool) (spi.Message, error) {
-
- // 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 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(), nil
-}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusConstants.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusConstants.go
similarity index 89%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusConstants.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusConstants.go
index 97c13ea..e2bb66e 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusConstants.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusConstants.go
@@ -30,6 +30,11 @@ const MODBUSTCPDEFAULTPORT uint16 = 502
type ModbusConstants struct {
}
+type IModbusConstants interface {
+ spi.Message
+ Serialize(io spi.WriteBuffer)
+}
+
func NewModbusConstants() spi.Message {
return &ModbusConstants{}
}
@@ -58,3 +63,9 @@ func ModbusConstantsParse(io spi.ReadBuffer) (spi.Message, error) {
// Create the instance
return NewModbusConstants(), nil
}
+
+func (m ModbusConstants) Serialize(io spi.WriteBuffer) {
+
+ // Const Field (modbusTcpDefaultPort)
+ io.WriteUint16(16, 502)
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusDataType.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusDataType.go
similarity index 100%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusDataType.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusDataType.go
diff --git a/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDU.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDU.go
new file mode 100644
index 0000000..e230cf2
--- /dev/null
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDU.go
@@ -0,0 +1,264 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+package readwrite
+
+import (
+ "errors"
+ "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
+)
+
+type ModbusPDU struct {
+}
+
+type IModbusPDU interface {
+ spi.Message
+ ErrorFlag() bool
+ FunctionFlag() uint8
+ Response() bool
+ Serialize(io spi.WriteBuffer)
+}
+
+type ModbusPDUInitializer interface {
+ initialize() spi.Message
+}
+
+// Dummy implementation ...
+func (m ModbusPDU) ErrorFlag() bool {
+ return false
+}
+
+func ModbusPDUErrorFlag(m IModbusPDU) bool {
+ return m.ErrorFlag()
+}
+
+// Dummy implementation ...
+func (m ModbusPDU) FunctionFlag() uint8 {
+ return 0
+}
+
+func ModbusPDUFunctionFlag(m IModbusPDU) uint8 {
+ return m.FunctionFlag()
+}
+
+// Dummy implementation ...
+func (m ModbusPDU) Response() bool {
+ return false
+}
+
+func ModbusPDUResponse(m IModbusPDU) bool {
+ return m.Response()
+}
+
+func (m ModbusPDU) LengthInBits() uint16 {
+ var lengthInBits uint16 = 0
+
+ // Discriminator Field (errorFlag)
+ lengthInBits += 1
+
+ // Discriminator Field (functionFlag)
+ lengthInBits += 7
+
+ // Length of sub-type elements will be added by sub-type...
+
+ return lengthInBits
+}
+
+func (m ModbusPDU) LengthInBytes() uint16 {
+ return m.LengthInBits() / 8
+}
+
+func ModbusPDUParse(io spi.ReadBuffer, response bool) (spi.Message, error) {
+
+ // Discriminator Field (errorFlag) (Used as input to a switch field)
+ var errorFlag bool = io.ReadBit()
+
+ // Discriminator Field (functionFlag) (Used as input to a switch field)
+ var functionFlag 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 errorFlag == true:
+ initializer, typeSwitchError = ModbusPDUErrorParse(io)
+ case errorFlag == false && functionFlag == 0x02 && response == false:
+ initializer, typeSwitchError = ModbusPDUReadDiscreteInputsRequestParse(io)
+ case errorFlag == false && functionFlag == 0x02 && response == true:
+ initializer, typeSwitchError = ModbusPDUReadDiscreteInputsResponseParse(io)
+ case errorFlag == false && functionFlag == 0x01 && response == false:
+ initializer, typeSwitchError = ModbusPDUReadCoilsRequestParse(io)
+ case errorFlag == false && functionFlag == 0x01 && response == true:
+ initializer, typeSwitchError = ModbusPDUReadCoilsResponseParse(io)
+ case errorFlag == false && functionFlag == 0x05 && response == false:
+ initializer, typeSwitchError = ModbusPDUWriteSingleCoilRequestParse(io)
+ case errorFlag == false && functionFlag == 0x05 && response == true:
+ initializer, typeSwitchError = ModbusPDUWriteSingleCoilResponseParse(io)
+ case errorFlag == false && functionFlag == 0x0F && response == false:
+ initializer, typeSwitchError = ModbusPDUWriteMultipleCoilsRequestParse(io)
+ case errorFlag == false && functionFlag == 0x0F && response == true:
+ initializer, typeSwitchError = ModbusPDUWriteMultipleCoilsResponseParse(io)
+ case errorFlag == false && functionFlag == 0x04 && response == false:
+ initializer, typeSwitchError = ModbusPDUReadInputRegistersRequestParse(io)
+ case errorFlag == false && functionFlag == 0x04 && response == true:
+ initializer, typeSwitchError = ModbusPDUReadInputRegistersResponseParse(io)
+ case errorFlag == false && functionFlag == 0x03 && response == false:
+ initializer, typeSwitchError = ModbusPDUReadHoldingRegistersRequestParse(io)
+ case errorFlag == false && functionFlag == 0x03 && response == true:
+ initializer, typeSwitchError = ModbusPDUReadHoldingRegistersResponseParse(io)
+ case errorFlag == false && functionFlag == 0x06 && response == false:
+ initializer, typeSwitchError = ModbusPDUWriteSingleRegisterRequestParse(io)
+ case errorFlag == false && functionFlag == 0x06 && response == true:
+ initializer, typeSwitchError = ModbusPDUWriteSingleRegisterResponseParse(io)
+ case errorFlag == false && functionFlag == 0x10 && response == false:
+ initializer, typeSwitchError = ModbusPDUWriteMultipleHoldingRegistersRequestParse(io)
+ case errorFlag == false && functionFlag == 0x10 && response == true:
+ initializer, typeSwitchError = ModbusPDUWriteMultipleHoldingRegistersResponseParse(io)
+ case errorFlag == false && functionFlag == 0x17 && response == false:
+ initializer, typeSwitchError = ModbusPDUReadWriteMultipleHoldingRegistersRequestParse(io)
+ case errorFlag == false && functionFlag == 0x17 && response == true:
+ initializer, typeSwitchError = ModbusPDUReadWriteMultipleHoldingRegistersResponseParse(io)
+ case errorFlag == false && functionFlag == 0x16 && response == false:
+ initializer, typeSwitchError = ModbusPDUMaskWriteHoldingRegisterRequestParse(io)
+ case errorFlag == false && functionFlag == 0x16 && response == true:
+ initializer, typeSwitchError = ModbusPDUMaskWriteHoldingRegisterResponseParse(io)
+ case errorFlag == false && functionFlag == 0x18 && response == false:
+ initializer, typeSwitchError = ModbusPDUReadFifoQueueRequestParse(io)
+ case errorFlag == false && functionFlag == 0x18 && response == true:
+ initializer, typeSwitchError = ModbusPDUReadFifoQueueResponseParse(io)
+ case errorFlag == false && functionFlag == 0x14 && response == false:
+ initializer, typeSwitchError = ModbusPDUReadFileRecordRequestParse(io)
+ case errorFlag == false && functionFlag == 0x14 && response == true:
+ initializer, typeSwitchError = ModbusPDUReadFileRecordResponseParse(io)
+ case errorFlag == false && functionFlag == 0x15 && response == false:
+ initializer, typeSwitchError = ModbusPDUWriteFileRecordRequestParse(io)
+ case errorFlag == false && functionFlag == 0x15 && response == true:
+ initializer, typeSwitchError = ModbusPDUWriteFileRecordResponseParse(io)
+ case errorFlag == false && functionFlag == 0x07 && response == false:
+ initializer, typeSwitchError = ModbusPDUReadExceptionStatusRequestParse(io)
+ case errorFlag == false && functionFlag == 0x07 && response == true:
+ initializer, typeSwitchError = ModbusPDUReadExceptionStatusResponseParse(io)
+ case errorFlag == false && functionFlag == 0x08 && response == false:
+ initializer, typeSwitchError = ModbusPDUDiagnosticRequestParse(io)
+ case errorFlag == false && functionFlag == 0x0C && response == false:
+ initializer, typeSwitchError = ModbusPDUGetComEventLogRequestParse(io)
+ case errorFlag == false && functionFlag == 0x0C && response == true:
+ initializer, typeSwitchError = ModbusPDUGetComEventLogResponseParse(io)
+ case errorFlag == false && functionFlag == 0x11 && response == false:
+ initializer, typeSwitchError = ModbusPDUReportServerIdRequestParse(io)
+ case errorFlag == false && functionFlag == 0x11 && response == true:
+ initializer, typeSwitchError = ModbusPDUReportServerIdResponseParse(io)
+ case errorFlag == false && functionFlag == 0x2B && response == false:
+ initializer, typeSwitchError = ModbusPDUReadDeviceIdentificationRequestParse(io)
+ case errorFlag == false && functionFlag == 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(), nil
+}
+
+func (m ModbusPDU) Serialize(io spi.WriteBuffer) {
+
+ // Discriminator Field (errorFlag) (Used as input to a switch field)
+ errorFlag := ModbusPDUErrorFlag(m)
+ io.WriteBit((bool)(errorFlag))
+
+ // Discriminator Field (functionFlag) (Used as input to a switch field)
+ functionFlag := ModbusPDUFunctionFlag(m)
+ io.WriteUint8(7, (functionFlag))
+
+ // Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
+ switch m.(type) {
+ case IModbusPDUError:
+ IModbusPDUError(m).Serialize(io)
+ case IModbusPDUReadDiscreteInputsRequest:
+ IModbusPDUReadDiscreteInputsRequest(m).Serialize(io)
+ case IModbusPDUReadDiscreteInputsResponse:
+ IModbusPDUReadDiscreteInputsResponse(m).Serialize(io)
+ case IModbusPDUReadCoilsRequest:
+ IModbusPDUReadCoilsRequest(m).Serialize(io)
+ case IModbusPDUReadCoilsResponse:
+ IModbusPDUReadCoilsResponse(m).Serialize(io)
+ case IModbusPDUWriteSingleCoilRequest:
+ IModbusPDUWriteSingleCoilRequest(m).Serialize(io)
+ case IModbusPDUWriteSingleCoilResponse:
+ IModbusPDUWriteSingleCoilResponse(m).Serialize(io)
+ case IModbusPDUWriteMultipleCoilsRequest:
+ IModbusPDUWriteMultipleCoilsRequest(m).Serialize(io)
+ case IModbusPDUWriteMultipleCoilsResponse:
+ IModbusPDUWriteMultipleCoilsResponse(m).Serialize(io)
+ case IModbusPDUReadInputRegistersRequest:
+ IModbusPDUReadInputRegistersRequest(m).Serialize(io)
+ case IModbusPDUReadInputRegistersResponse:
+ IModbusPDUReadInputRegistersResponse(m).Serialize(io)
+ case IModbusPDUReadHoldingRegistersRequest:
+ IModbusPDUReadHoldingRegistersRequest(m).Serialize(io)
+ case IModbusPDUReadHoldingRegistersResponse:
+ IModbusPDUReadHoldingRegistersResponse(m).Serialize(io)
+ case IModbusPDUWriteSingleRegisterRequest:
+ IModbusPDUWriteSingleRegisterRequest(m).Serialize(io)
+ case IModbusPDUWriteSingleRegisterResponse:
+ IModbusPDUWriteSingleRegisterResponse(m).Serialize(io)
+ case IModbusPDUWriteMultipleHoldingRegistersRequest:
+ IModbusPDUWriteMultipleHoldingRegistersRequest(m).Serialize(io)
+ case IModbusPDUWriteMultipleHoldingRegistersResponse:
+ IModbusPDUWriteMultipleHoldingRegistersResponse(m).Serialize(io)
+ case IModbusPDUReadWriteMultipleHoldingRegistersRequest:
+ IModbusPDUReadWriteMultipleHoldingRegistersRequest(m).Serialize(io)
+ case IModbusPDUReadWriteMultipleHoldingRegistersResponse:
+ IModbusPDUReadWriteMultipleHoldingRegistersResponse(m).Serialize(io)
+ case IModbusPDUMaskWriteHoldingRegisterRequest:
+ IModbusPDUMaskWriteHoldingRegisterRequest(m).Serialize(io)
+ case IModbusPDUMaskWriteHoldingRegisterResponse:
+ IModbusPDUMaskWriteHoldingRegisterResponse(m).Serialize(io)
+ case IModbusPDUReadFifoQueueRequest:
+ IModbusPDUReadFifoQueueRequest(m).Serialize(io)
+ case IModbusPDUReadFifoQueueResponse:
+ IModbusPDUReadFifoQueueResponse(m).Serialize(io)
+ case IModbusPDUReadFileRecordRequest:
+ IModbusPDUReadFileRecordRequest(m).Serialize(io)
+ case IModbusPDUReadFileRecordResponse:
+ IModbusPDUReadFileRecordResponse(m).Serialize(io)
+ case IModbusPDUWriteFileRecordRequest:
+ IModbusPDUWriteFileRecordRequest(m).Serialize(io)
+ case IModbusPDUWriteFileRecordResponse:
+ IModbusPDUWriteFileRecordResponse(m).Serialize(io)
+ case IModbusPDUReadExceptionStatusRequest:
+ IModbusPDUReadExceptionStatusRequest(m).Serialize(io)
+ case IModbusPDUReadExceptionStatusResponse:
+ IModbusPDUReadExceptionStatusResponse(m).Serialize(io)
+ case IModbusPDUDiagnosticRequest:
+ IModbusPDUDiagnosticRequest(m).Serialize(io)
+ case IModbusPDUGetComEventLogRequest:
+ IModbusPDUGetComEventLogRequest(m).Serialize(io)
+ case IModbusPDUGetComEventLogResponse:
+ IModbusPDUGetComEventLogResponse(m).Serialize(io)
+ case IModbusPDUReportServerIdRequest:
+ IModbusPDUReportServerIdRequest(m).Serialize(io)
+ case IModbusPDUReportServerIdResponse:
+ IModbusPDUReportServerIdResponse(m).Serialize(io)
+ case IModbusPDUReadDeviceIdentificationRequest:
+ IModbusPDUReadDeviceIdentificationRequest(m).Serialize(io)
+ case IModbusPDUReadDeviceIdentificationResponse:
+ IModbusPDUReadDeviceIdentificationResponse(m).Serialize(io)
+ }
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUDiagnosticRequest.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUDiagnosticRequest.go
similarity index 75%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUDiagnosticRequest.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUDiagnosticRequest.go
index 1a14750..d9564a8 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUDiagnosticRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUDiagnosticRequest.go
@@ -28,6 +28,24 @@ type ModbusPDUDiagnosticRequest struct {
ModbusPDU
}
+type IModbusPDUDiagnosticRequest interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUDiagnosticRequest) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUDiagnosticRequest) FunctionFlag() uint8 {
+ return 0x08
+}
+
+func (m ModbusPDUDiagnosticRequest) Response() bool {
+ return false
+}
+
func (m ModbusPDUDiagnosticRequest) initialize() spi.Message {
return spi.Message(m)
}
@@ -63,3 +81,14 @@ func ModbusPDUDiagnosticRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, e
// Create the instance
return NewModbusPDUDiagnosticRequest(status, eventCount), nil
}
+
+func (m ModbusPDUDiagnosticRequest) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (status)
+ var status uint16 = m.status
+ io.WriteUint16(16, (status))
+
+ // Simple Field (eventCount)
+ var eventCount uint16 = m.eventCount
+ io.WriteUint16(16, (eventCount))
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUError.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUError.go
similarity index 77%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUError.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUError.go
index bcd6b14..253bdd2 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUError.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUError.go
@@ -27,6 +27,24 @@ type ModbusPDUError struct {
ModbusPDU
}
+type IModbusPDUError interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUError) ErrorFlag() bool {
+ return true
+}
+
+func (m ModbusPDUError) FunctionFlag() uint8 {
+ return 0
+}
+
+func (m ModbusPDUError) Response() bool {
+ return false
+}
+
func (m ModbusPDUError) initialize() spi.Message {
return spi.Message(m)
}
@@ -56,3 +74,10 @@ func ModbusPDUErrorParse(io spi.ReadBuffer) (ModbusPDUInitializer, error) {
// Create the instance
return NewModbusPDUError(exceptionCode), nil
}
+
+func (m ModbusPDUError) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (exceptionCode)
+ var exceptionCode uint8 = m.exceptionCode
+ io.WriteUint8(8, (exceptionCode))
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogRequest.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUGetComEventLogRequest.go
similarity index 78%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogRequest.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUGetComEventLogRequest.go
index cc80958..476c3af 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUGetComEventLogRequest.go
@@ -26,6 +26,24 @@ type ModbusPDUGetComEventLogRequest struct {
ModbusPDU
}
+type IModbusPDUGetComEventLogRequest interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUGetComEventLogRequest) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUGetComEventLogRequest) FunctionFlag() uint8 {
+ return 0x0C
+}
+
+func (m ModbusPDUGetComEventLogRequest) Response() bool {
+ return false
+}
+
func (m ModbusPDUGetComEventLogRequest) initialize() spi.Message {
return spi.Message(m)
}
@@ -49,3 +67,6 @@ func ModbusPDUGetComEventLogRequestParse(io spi.ReadBuffer) (ModbusPDUInitialize
// Create the instance
return NewModbusPDUGetComEventLogRequest(), nil
}
+
+func (m ModbusPDUGetComEventLogRequest) Serialize(io spi.WriteBuffer) {
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogResponse.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUGetComEventLogResponse.go
similarity index 71%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogResponse.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUGetComEventLogResponse.go
index f391cea..26354c7 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUGetComEventLogResponse.go
@@ -30,6 +30,24 @@ type ModbusPDUGetComEventLogResponse struct {
ModbusPDU
}
+type IModbusPDUGetComEventLogResponse interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUGetComEventLogResponse) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUGetComEventLogResponse) FunctionFlag() uint8 {
+ return 0x0C
+}
+
+func (m ModbusPDUGetComEventLogResponse) Response() bool {
+ return true
+}
+
func (m ModbusPDUGetComEventLogResponse) initialize() spi.Message {
return spi.Message(m)
}
@@ -93,3 +111,29 @@ func ModbusPDUGetComEventLogResponseParse(io spi.ReadBuffer) (ModbusPDUInitializ
// Create the instance
return NewModbusPDUGetComEventLogResponse(status, eventCount, messageCount, events), nil
}
+
+func (m ModbusPDUGetComEventLogResponse) Serialize(io spi.WriteBuffer) {
+
+ // 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 = ((uint8(len(m.events))) + (6))
+ io.WriteUint8(8, (byteCount))
+
+ // Simple Field (status)
+ var status uint16 = m.status
+ io.WriteUint16(16, (status))
+
+ // Simple Field (eventCount)
+ var eventCount uint16 = m.eventCount
+ io.WriteUint16(16, (eventCount))
+
+ // Simple Field (messageCount)
+ var messageCount uint16 = m.messageCount
+ io.WriteUint16(16, (messageCount))
+
+ // Array Field (events)
+ if m.events != nil {
+ for _, _element := range m.events {
+ io.WriteInt8(8, _element)
+ }
+ }
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterRequest.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterRequest.go
similarity index 73%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterRequest.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterRequest.go
index ac29a11..a4f6a57 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterRequest.go
@@ -29,6 +29,24 @@ type ModbusPDUMaskWriteHoldingRegisterRequest struct {
ModbusPDU
}
+type IModbusPDUMaskWriteHoldingRegisterRequest interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUMaskWriteHoldingRegisterRequest) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUMaskWriteHoldingRegisterRequest) FunctionFlag() uint8 {
+ return 0x16
+}
+
+func (m ModbusPDUMaskWriteHoldingRegisterRequest) Response() bool {
+ return false
+}
+
func (m ModbusPDUMaskWriteHoldingRegisterRequest) initialize() spi.Message {
return spi.Message(m)
}
@@ -70,3 +88,18 @@ func ModbusPDUMaskWriteHoldingRegisterRequestParse(io spi.ReadBuffer) (ModbusPDU
// Create the instance
return NewModbusPDUMaskWriteHoldingRegisterRequest(referenceAddress, andMask, orMask), nil
}
+
+func (m ModbusPDUMaskWriteHoldingRegisterRequest) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (referenceAddress)
+ var referenceAddress uint16 = m.referenceAddress
+ io.WriteUint16(16, (referenceAddress))
+
+ // Simple Field (andMask)
+ var andMask uint16 = m.andMask
+ io.WriteUint16(16, (andMask))
+
+ // Simple Field (orMask)
+ var orMask uint16 = m.orMask
+ io.WriteUint16(16, (orMask))
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterResponse.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterResponse.go
similarity index 73%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterResponse.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterResponse.go
index eaf896e..76561a2 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterResponse.go
@@ -29,6 +29,24 @@ type ModbusPDUMaskWriteHoldingRegisterResponse struct {
ModbusPDU
}
+type IModbusPDUMaskWriteHoldingRegisterResponse interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUMaskWriteHoldingRegisterResponse) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUMaskWriteHoldingRegisterResponse) FunctionFlag() uint8 {
+ return 0x16
+}
+
+func (m ModbusPDUMaskWriteHoldingRegisterResponse) Response() bool {
+ return true
+}
+
func (m ModbusPDUMaskWriteHoldingRegisterResponse) initialize() spi.Message {
return spi.Message(m)
}
@@ -70,3 +88,18 @@ func ModbusPDUMaskWriteHoldingRegisterResponseParse(io spi.ReadBuffer) (ModbusPD
// Create the instance
return NewModbusPDUMaskWriteHoldingRegisterResponse(referenceAddress, andMask, orMask), nil
}
+
+func (m ModbusPDUMaskWriteHoldingRegisterResponse) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (referenceAddress)
+ var referenceAddress uint16 = m.referenceAddress
+ io.WriteUint16(16, (referenceAddress))
+
+ // Simple Field (andMask)
+ var andMask uint16 = m.andMask
+ io.WriteUint16(16, (andMask))
+
+ // Simple Field (orMask)
+ var orMask uint16 = m.orMask
+ io.WriteUint16(16, (orMask))
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsRequest.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadCoilsRequest.go
similarity index 75%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsRequest.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadCoilsRequest.go
index 9be3ec7..8bef98b 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadCoilsRequest.go
@@ -28,6 +28,24 @@ type ModbusPDUReadCoilsRequest struct {
ModbusPDU
}
+type IModbusPDUReadCoilsRequest interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReadCoilsRequest) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReadCoilsRequest) FunctionFlag() uint8 {
+ return 0x01
+}
+
+func (m ModbusPDUReadCoilsRequest) Response() bool {
+ return false
+}
+
func (m ModbusPDUReadCoilsRequest) initialize() spi.Message {
return spi.Message(m)
}
@@ -63,3 +81,14 @@ func ModbusPDUReadCoilsRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer, er
// Create the instance
return NewModbusPDUReadCoilsRequest(startingAddress, quantity), nil
}
+
+func (m ModbusPDUReadCoilsRequest) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (startingAddress)
+ var startingAddress uint16 = m.startingAddress
+ io.WriteUint16(16, (startingAddress))
+
+ // Simple Field (quantity)
+ var quantity uint16 = m.quantity
+ io.WriteUint16(16, (quantity))
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsResponse.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadCoilsResponse.go
similarity index 73%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsResponse.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadCoilsResponse.go
index f4aeb39..aecc563 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadCoilsResponse.go
@@ -27,6 +27,24 @@ type ModbusPDUReadCoilsResponse struct {
ModbusPDU
}
+type IModbusPDUReadCoilsResponse interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReadCoilsResponse) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReadCoilsResponse) FunctionFlag() uint8 {
+ return 0x01
+}
+
+func (m ModbusPDUReadCoilsResponse) Response() bool {
+ return true
+}
+
func (m ModbusPDUReadCoilsResponse) initialize() spi.Message {
return spi.Message(m)
}
@@ -72,3 +90,17 @@ func ModbusPDUReadCoilsResponseParse(io spi.ReadBuffer) (ModbusPDUInitializer, e
// Create the instance
return NewModbusPDUReadCoilsResponse(value), nil
}
+
+func (m ModbusPDUReadCoilsResponse) Serialize(io spi.WriteBuffer) {
+
+ // 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 = (uint8(len(m.value)))
+ io.WriteUint8(8, (byteCount))
+
+ // Array Field (value)
+ if m.value != nil {
+ for _, _element := range m.value {
+ io.WriteInt8(8, _element)
+ }
+ }
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationRequest.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadDeviceIdentificationRequest.go
similarity index 77%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationRequest.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadDeviceIdentificationRequest.go
index 1e84908..1eae221 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadDeviceIdentificationRequest.go
@@ -26,6 +26,24 @@ type ModbusPDUReadDeviceIdentificationRequest struct {
ModbusPDU
}
+type IModbusPDUReadDeviceIdentificationRequest interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReadDeviceIdentificationRequest) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReadDeviceIdentificationRequest) FunctionFlag() uint8 {
+ return 0x2B
+}
+
+func (m ModbusPDUReadDeviceIdentificationRequest) Response() bool {
+ return false
+}
+
func (m ModbusPDUReadDeviceIdentificationRequest) initialize() spi.Message {
return spi.Message(m)
}
@@ -49,3 +67,6 @@ func ModbusPDUReadDeviceIdentificationRequestParse(io spi.ReadBuffer) (ModbusPDU
// Create the instance
return NewModbusPDUReadDeviceIdentificationRequest(), nil
}
+
+func (m ModbusPDUReadDeviceIdentificationRequest) Serialize(io spi.WriteBuffer) {
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationResponse.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadDeviceIdentificationResponse.go
similarity index 77%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationResponse.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadDeviceIdentificationResponse.go
index 69b099e..225655d 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadDeviceIdentificationResponse.go
@@ -26,6 +26,24 @@ type ModbusPDUReadDeviceIdentificationResponse struct {
ModbusPDU
}
+type IModbusPDUReadDeviceIdentificationResponse interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReadDeviceIdentificationResponse) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReadDeviceIdentificationResponse) FunctionFlag() uint8 {
+ return 0x2B
+}
+
+func (m ModbusPDUReadDeviceIdentificationResponse) Response() bool {
+ return true
+}
+
func (m ModbusPDUReadDeviceIdentificationResponse) initialize() spi.Message {
return spi.Message(m)
}
@@ -49,3 +67,6 @@ func ModbusPDUReadDeviceIdentificationResponseParse(io spi.ReadBuffer) (ModbusPD
// Create the instance
return NewModbusPDUReadDeviceIdentificationResponse(), nil
}
+
+func (m ModbusPDUReadDeviceIdentificationResponse) Serialize(io spi.WriteBuffer) {
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsRequest.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadDiscreteInputsRequest.go
similarity index 74%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsRequest.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadDiscreteInputsRequest.go
index d85d551..db40260 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadDiscreteInputsRequest.go
@@ -28,6 +28,24 @@ type ModbusPDUReadDiscreteInputsRequest struct {
ModbusPDU
}
+type IModbusPDUReadDiscreteInputsRequest interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReadDiscreteInputsRequest) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReadDiscreteInputsRequest) FunctionFlag() uint8 {
+ return 0x02
+}
+
+func (m ModbusPDUReadDiscreteInputsRequest) Response() bool {
+ return false
+}
+
func (m ModbusPDUReadDiscreteInputsRequest) initialize() spi.Message {
return spi.Message(m)
}
@@ -63,3 +81,14 @@ func ModbusPDUReadDiscreteInputsRequestParse(io spi.ReadBuffer) (ModbusPDUInitia
// Create the instance
return NewModbusPDUReadDiscreteInputsRequest(startingAddress, quantity), nil
}
+
+func (m ModbusPDUReadDiscreteInputsRequest) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (startingAddress)
+ var startingAddress uint16 = m.startingAddress
+ io.WriteUint16(16, (startingAddress))
+
+ // Simple Field (quantity)
+ var quantity uint16 = m.quantity
+ io.WriteUint16(16, (quantity))
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsResponse.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadDiscreteInputsResponse.go
similarity index 73%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsResponse.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadDiscreteInputsResponse.go
index d1bd499..db6fa41 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadDiscreteInputsResponse.go
@@ -27,6 +27,24 @@ type ModbusPDUReadDiscreteInputsResponse struct {
ModbusPDU
}
+type IModbusPDUReadDiscreteInputsResponse interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReadDiscreteInputsResponse) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReadDiscreteInputsResponse) FunctionFlag() uint8 {
+ return 0x02
+}
+
+func (m ModbusPDUReadDiscreteInputsResponse) Response() bool {
+ return true
+}
+
func (m ModbusPDUReadDiscreteInputsResponse) initialize() spi.Message {
return spi.Message(m)
}
@@ -72,3 +90,17 @@ func ModbusPDUReadDiscreteInputsResponseParse(io spi.ReadBuffer) (ModbusPDUIniti
// Create the instance
return NewModbusPDUReadDiscreteInputsResponse(value), nil
}
+
+func (m ModbusPDUReadDiscreteInputsResponse) Serialize(io spi.WriteBuffer) {
+
+ // 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 = (uint8(len(m.value)))
+ io.WriteUint8(8, (byteCount))
+
+ // Array Field (value)
+ if m.value != nil {
+ for _, _element := range m.value {
+ io.WriteInt8(8, _element)
+ }
+ }
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusRequest.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadExceptionStatusRequest.go
similarity index 77%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusRequest.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadExceptionStatusRequest.go
index f6e37a6..d8c0cdb 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadExceptionStatusRequest.go
@@ -26,6 +26,24 @@ type ModbusPDUReadExceptionStatusRequest struct {
ModbusPDU
}
+type IModbusPDUReadExceptionStatusRequest interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReadExceptionStatusRequest) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReadExceptionStatusRequest) FunctionFlag() uint8 {
+ return 0x07
+}
+
+func (m ModbusPDUReadExceptionStatusRequest) Response() bool {
+ return false
+}
+
func (m ModbusPDUReadExceptionStatusRequest) initialize() spi.Message {
return spi.Message(m)
}
@@ -49,3 +67,6 @@ func ModbusPDUReadExceptionStatusRequestParse(io spi.ReadBuffer) (ModbusPDUIniti
// Create the instance
return NewModbusPDUReadExceptionStatusRequest(), nil
}
+
+func (m ModbusPDUReadExceptionStatusRequest) Serialize(io spi.WriteBuffer) {
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusResponse.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadExceptionStatusResponse.go
similarity index 76%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusResponse.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadExceptionStatusResponse.go
index ba35c1a..63127af 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadExceptionStatusResponse.go
@@ -27,6 +27,24 @@ type ModbusPDUReadExceptionStatusResponse struct {
ModbusPDU
}
+type IModbusPDUReadExceptionStatusResponse interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReadExceptionStatusResponse) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReadExceptionStatusResponse) FunctionFlag() uint8 {
+ return 0x07
+}
+
+func (m ModbusPDUReadExceptionStatusResponse) Response() bool {
+ return true
+}
+
func (m ModbusPDUReadExceptionStatusResponse) initialize() spi.Message {
return spi.Message(m)
}
@@ -56,3 +74,10 @@ func ModbusPDUReadExceptionStatusResponseParse(io spi.ReadBuffer) (ModbusPDUInit
// Create the instance
return NewModbusPDUReadExceptionStatusResponse(value), nil
}
+
+func (m ModbusPDUReadExceptionStatusResponse) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (value)
+ var value uint8 = m.value
+ io.WriteUint8(8, (value))
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueRequest.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadFifoQueueRequest.go
similarity index 76%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueRequest.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadFifoQueueRequest.go
index 308da82..4d4f482 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadFifoQueueRequest.go
@@ -27,6 +27,24 @@ type ModbusPDUReadFifoQueueRequest struct {
ModbusPDU
}
+type IModbusPDUReadFifoQueueRequest interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReadFifoQueueRequest) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReadFifoQueueRequest) FunctionFlag() uint8 {
+ return 0x18
+}
+
+func (m ModbusPDUReadFifoQueueRequest) Response() bool {
+ return false
+}
+
func (m ModbusPDUReadFifoQueueRequest) initialize() spi.Message {
return spi.Message(m)
}
@@ -56,3 +74,10 @@ func ModbusPDUReadFifoQueueRequestParse(io spi.ReadBuffer) (ModbusPDUInitializer
// Create the instance
return NewModbusPDUReadFifoQueueRequest(fifoPointerAddress), nil
}
+
+func (m ModbusPDUReadFifoQueueRequest) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (fifoPointerAddress)
+ var fifoPointerAddress uint16 = m.fifoPointerAddress
+ io.WriteUint16(16, (fifoPointerAddress))
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueResponse.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadFifoQueueResponse.go
similarity index 70%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueResponse.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadFifoQueueResponse.go
index cb626bb..e4d8f0a 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadFifoQueueResponse.go
@@ -27,6 +27,24 @@ type ModbusPDUReadFifoQueueResponse struct {
ModbusPDU
}
+type IModbusPDUReadFifoQueueResponse interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReadFifoQueueResponse) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReadFifoQueueResponse) FunctionFlag() uint8 {
+ return 0x18
+}
+
+func (m ModbusPDUReadFifoQueueResponse) Response() bool {
+ return true
+}
+
func (m ModbusPDUReadFifoQueueResponse) initialize() spi.Message {
return spi.Message(m)
}
@@ -78,3 +96,21 @@ func ModbusPDUReadFifoQueueResponseParse(io spi.ReadBuffer) (ModbusPDUInitialize
// Create the instance
return NewModbusPDUReadFifoQueueResponse(fifoValue), nil
}
+
+func (m ModbusPDUReadFifoQueueResponse) Serialize(io spi.WriteBuffer) {
+
+ // 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 = (((uint16(len(m.fifoValue))) * (2)) + (2))
+ io.WriteUint16(16, (byteCount))
+
+ // 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 = (((uint16(len(m.fifoValue))) * (2)) / (2))
+ io.WriteUint16(16, (fifoCount))
+
+ // Array Field (fifoValue)
+ if m.fifoValue != nil {
+ for _, _element := range m.fifoValue {
+ io.WriteUint16(16, _element)
+ }
+ }
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequest.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadFileRecordRequest.go
similarity index 73%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequest.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadFileRecordRequest.go
index a33b3b6..6edde89 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadFileRecordRequest.go
@@ -29,6 +29,24 @@ type ModbusPDUReadFileRecordRequest struct {
ModbusPDU
}
+type IModbusPDUReadFileRecordRequest interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReadFileRecordRequest) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReadFileRecordRequest) FunctionFlag() uint8 {
+ return 0x14
+}
+
+func (m ModbusPDUReadFileRecordRequest) Response() bool {
+ return false
+}
+
func (m ModbusPDUReadFileRecordRequest) initialize() spi.Message {
return spi.Message(m)
}
@@ -83,3 +101,24 @@ func ModbusPDUReadFileRecordRequestParse(io spi.ReadBuffer) (ModbusPDUInitialize
// Create the instance
return NewModbusPDUReadFileRecordRequest(items), nil
}
+
+func (m ModbusPDUReadFileRecordRequest) Serialize(io spi.WriteBuffer) {
+ itemsArraySizeInBytes := func(items []ModbusPDUReadFileRecordRequestItem) uint32 {
+ var sizeInBytes uint32 = 0
+ for _, v := range items {
+ sizeInBytes += uint32(v.LengthInBytes())
+ }
+ return sizeInBytes
+ }
+
+ // 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 = (uint8(itemsArraySizeInBytes(m.items)))
+ io.WriteUint8(8, (byteCount))
+
+ // Array Field (items)
+ if m.items != nil {
+ for _, _element := range m.items {
+ _element.Serialize(io)
+ }
+ }
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequestItem.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadFileRecordRequestItem.go
similarity index 78%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequestItem.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadFileRecordRequestItem.go
index 0fc1b51..3ec37d7 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequestItem.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadFileRecordRequestItem.go
@@ -29,6 +29,11 @@ type ModbusPDUReadFileRecordRequestItem struct {
recordLength uint16
}
+type IModbusPDUReadFileRecordRequestItem interface {
+ spi.Message
+ Serialize(io spi.WriteBuffer)
+}
+
func NewModbusPDUReadFileRecordRequestItem(referenceType uint8, fileNumber uint16, recordNumber uint16, recordLength uint16) spi.Message {
return &ModbusPDUReadFileRecordRequestItem{referenceType: referenceType, fileNumber: fileNumber, recordNumber: recordNumber, recordLength: recordLength}
}
@@ -72,3 +77,22 @@ func ModbusPDUReadFileRecordRequestItemParse(io spi.ReadBuffer) (spi.Message, er
// Create the instance
return NewModbusPDUReadFileRecordRequestItem(referenceType, fileNumber, recordNumber, recordLength), nil
}
+
+func (m ModbusPDUReadFileRecordRequestItem) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (referenceType)
+ var referenceType uint8 = m.referenceType
+ io.WriteUint8(8, (referenceType))
+
+ // Simple Field (fileNumber)
+ var fileNumber uint16 = m.fileNumber
+ io.WriteUint16(16, (fileNumber))
+
+ // Simple Field (recordNumber)
+ var recordNumber uint16 = m.recordNumber
+ io.WriteUint16(16, (recordNumber))
+
+ // Simple Field (recordLength)
+ var recordLength uint16 = m.recordLength
+ io.WriteUint16(16, (recordLength))
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponse.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadFileRecordResponse.go
similarity index 73%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponse.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadFileRecordResponse.go
index 90548ce..e995698 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadFileRecordResponse.go
@@ -29,6 +29,24 @@ type ModbusPDUReadFileRecordResponse struct {
ModbusPDU
}
+type IModbusPDUReadFileRecordResponse interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReadFileRecordResponse) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReadFileRecordResponse) FunctionFlag() uint8 {
+ return 0x14
+}
+
+func (m ModbusPDUReadFileRecordResponse) Response() bool {
+ return true
+}
+
func (m ModbusPDUReadFileRecordResponse) initialize() spi.Message {
return spi.Message(m)
}
@@ -83,3 +101,24 @@ func ModbusPDUReadFileRecordResponseParse(io spi.ReadBuffer) (ModbusPDUInitializ
// Create the instance
return NewModbusPDUReadFileRecordResponse(items), nil
}
+
+func (m ModbusPDUReadFileRecordResponse) Serialize(io spi.WriteBuffer) {
+ itemsArraySizeInBytes := func(items []ModbusPDUReadFileRecordResponseItem) uint32 {
+ var sizeInBytes uint32 = 0
+ for _, v := range items {
+ sizeInBytes += uint32(v.LengthInBytes())
+ }
+ return sizeInBytes
+ }
+
+ // 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 = (uint8(itemsArraySizeInBytes(m.items)))
+ io.WriteUint8(8, (byteCount))
+
+ // Array Field (items)
+ if m.items != nil {
+ for _, _element := range m.items {
+ _element.Serialize(io)
+ }
+ }
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponseItem.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadFileRecordResponseItem.go
similarity index 78%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponseItem.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadFileRecordResponseItem.go
index aff7e2e..2e5f746 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponseItem.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadFileRecordResponseItem.go
@@ -27,6 +27,11 @@ type ModbusPDUReadFileRecordResponseItem struct {
data []int8
}
+type IModbusPDUReadFileRecordResponseItem interface {
+ spi.Message
+ Serialize(io spi.WriteBuffer)
+}
+
func NewModbusPDUReadFileRecordResponseItem(referenceType uint8, data []int8) spi.Message {
return &ModbusPDUReadFileRecordResponseItem{referenceType: referenceType, data: data}
}
@@ -72,3 +77,21 @@ func ModbusPDUReadFileRecordResponseItemParse(io spi.ReadBuffer) (spi.Message, e
// Create the instance
return NewModbusPDUReadFileRecordResponseItem(referenceType, data), nil
}
+
+func (m ModbusPDUReadFileRecordResponseItem) Serialize(io spi.WriteBuffer) {
+
+ // 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 = ((uint8(len(m.data))) + (1))
+ io.WriteUint8(8, (dataLength))
+
+ // Simple Field (referenceType)
+ var referenceType uint8 = m.referenceType
+ io.WriteUint8(8, (referenceType))
+
+ // Array Field (data)
+ if m.data != nil {
+ for _, _element := range m.data {
+ io.WriteInt8(8, _element)
+ }
+ }
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersRequest.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadHoldingRegistersRequest.go
similarity index 74%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersRequest.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadHoldingRegistersRequest.go
index 05ccfc6..863a562 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadHoldingRegistersRequest.go
@@ -28,6 +28,24 @@ type ModbusPDUReadHoldingRegistersRequest struct {
ModbusPDU
}
+type IModbusPDUReadHoldingRegistersRequest interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReadHoldingRegistersRequest) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReadHoldingRegistersRequest) FunctionFlag() uint8 {
+ return 0x03
+}
+
+func (m ModbusPDUReadHoldingRegistersRequest) Response() bool {
+ return false
+}
+
func (m ModbusPDUReadHoldingRegistersRequest) initialize() spi.Message {
return spi.Message(m)
}
@@ -63,3 +81,14 @@ func ModbusPDUReadHoldingRegistersRequestParse(io spi.ReadBuffer) (ModbusPDUInit
// Create the instance
return NewModbusPDUReadHoldingRegistersRequest(startingAddress, quantity), nil
}
+
+func (m ModbusPDUReadHoldingRegistersRequest) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (startingAddress)
+ var startingAddress uint16 = m.startingAddress
+ io.WriteUint16(16, (startingAddress))
+
+ // Simple Field (quantity)
+ var quantity uint16 = m.quantity
+ io.WriteUint16(16, (quantity))
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersResponse.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadHoldingRegistersResponse.go
similarity index 73%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersResponse.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadHoldingRegistersResponse.go
index 6fcb99e..bf98a55 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadHoldingRegistersResponse.go
@@ -27,6 +27,24 @@ type ModbusPDUReadHoldingRegistersResponse struct {
ModbusPDU
}
+type IModbusPDUReadHoldingRegistersResponse interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReadHoldingRegistersResponse) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReadHoldingRegistersResponse) FunctionFlag() uint8 {
+ return 0x03
+}
+
+func (m ModbusPDUReadHoldingRegistersResponse) Response() bool {
+ return true
+}
+
func (m ModbusPDUReadHoldingRegistersResponse) initialize() spi.Message {
return spi.Message(m)
}
@@ -72,3 +90,17 @@ func ModbusPDUReadHoldingRegistersResponseParse(io spi.ReadBuffer) (ModbusPDUIni
// Create the instance
return NewModbusPDUReadHoldingRegistersResponse(value), nil
}
+
+func (m ModbusPDUReadHoldingRegistersResponse) Serialize(io spi.WriteBuffer) {
+
+ // 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 = (uint8(len(m.value)))
+ io.WriteUint8(8, (byteCount))
+
+ // Array Field (value)
+ if m.value != nil {
+ for _, _element := range m.value {
+ io.WriteInt8(8, _element)
+ }
+ }
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersRequest.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadInputRegistersRequest.go
similarity index 74%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersRequest.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadInputRegistersRequest.go
index 15384d3..70ca4b6 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadInputRegistersRequest.go
@@ -28,6 +28,24 @@ type ModbusPDUReadInputRegistersRequest struct {
ModbusPDU
}
+type IModbusPDUReadInputRegistersRequest interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReadInputRegistersRequest) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReadInputRegistersRequest) FunctionFlag() uint8 {
+ return 0x04
+}
+
+func (m ModbusPDUReadInputRegistersRequest) Response() bool {
+ return false
+}
+
func (m ModbusPDUReadInputRegistersRequest) initialize() spi.Message {
return spi.Message(m)
}
@@ -63,3 +81,14 @@ func ModbusPDUReadInputRegistersRequestParse(io spi.ReadBuffer) (ModbusPDUInitia
// Create the instance
return NewModbusPDUReadInputRegistersRequest(startingAddress, quantity), nil
}
+
+func (m ModbusPDUReadInputRegistersRequest) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (startingAddress)
+ var startingAddress uint16 = m.startingAddress
+ io.WriteUint16(16, (startingAddress))
+
+ // Simple Field (quantity)
+ var quantity uint16 = m.quantity
+ io.WriteUint16(16, (quantity))
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersResponse.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadInputRegistersResponse.go
similarity index 73%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersResponse.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadInputRegistersResponse.go
index ce92920..a2ba0ae 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadInputRegistersResponse.go
@@ -27,6 +27,24 @@ type ModbusPDUReadInputRegistersResponse struct {
ModbusPDU
}
+type IModbusPDUReadInputRegistersResponse interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReadInputRegistersResponse) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReadInputRegistersResponse) FunctionFlag() uint8 {
+ return 0x04
+}
+
+func (m ModbusPDUReadInputRegistersResponse) Response() bool {
+ return true
+}
+
func (m ModbusPDUReadInputRegistersResponse) initialize() spi.Message {
return spi.Message(m)
}
@@ -72,3 +90,17 @@ func ModbusPDUReadInputRegistersResponseParse(io spi.ReadBuffer) (ModbusPDUIniti
// Create the instance
return NewModbusPDUReadInputRegistersResponse(value), nil
}
+
+func (m ModbusPDUReadInputRegistersResponse) Serialize(io spi.WriteBuffer) {
+
+ // 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 = (uint8(len(m.value)))
+ io.WriteUint8(8, (byteCount))
+
+ // Array Field (value)
+ if m.value != nil {
+ for _, _element := range m.value {
+ io.WriteInt8(8, _element)
+ }
+ }
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go
similarity index 70%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go
index b39a4bd..bff2785 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go
@@ -31,6 +31,24 @@ type ModbusPDUReadWriteMultipleHoldingRegistersRequest struct {
ModbusPDU
}
+type IModbusPDUReadWriteMultipleHoldingRegistersRequest interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReadWriteMultipleHoldingRegistersRequest) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReadWriteMultipleHoldingRegistersRequest) FunctionFlag() uint8 {
+ return 0x17
+}
+
+func (m ModbusPDUReadWriteMultipleHoldingRegistersRequest) Response() bool {
+ return false
+}
+
func (m ModbusPDUReadWriteMultipleHoldingRegistersRequest) initialize() spi.Message {
return spi.Message(m)
}
@@ -100,3 +118,33 @@ func ModbusPDUReadWriteMultipleHoldingRegistersRequestParse(io spi.ReadBuffer) (
// Create the instance
return NewModbusPDUReadWriteMultipleHoldingRegistersRequest(readStartingAddress, readQuantity, writeStartingAddress, writeQuantity, value), nil
}
+
+func (m ModbusPDUReadWriteMultipleHoldingRegistersRequest) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (readStartingAddress)
+ var readStartingAddress uint16 = m.readStartingAddress
+ io.WriteUint16(16, (readStartingAddress))
+
+ // Simple Field (readQuantity)
+ var readQuantity uint16 = m.readQuantity
+ io.WriteUint16(16, (readQuantity))
+
+ // Simple Field (writeStartingAddress)
+ var writeStartingAddress uint16 = m.writeStartingAddress
+ io.WriteUint16(16, (writeStartingAddress))
+
+ // Simple Field (writeQuantity)
+ var writeQuantity uint16 = m.writeQuantity
+ io.WriteUint16(16, (writeQuantity))
+
+ // 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 = (uint8(len(m.value)))
+ io.WriteUint8(8, (byteCount))
+
+ // Array Field (value)
+ if m.value != nil {
+ for _, _element := range m.value {
+ io.WriteInt8(8, _element)
+ }
+ }
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go
similarity index 72%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go
index 4fc0393..9734878 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go
@@ -27,6 +27,24 @@ type ModbusPDUReadWriteMultipleHoldingRegistersResponse struct {
ModbusPDU
}
+type IModbusPDUReadWriteMultipleHoldingRegistersResponse interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReadWriteMultipleHoldingRegistersResponse) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReadWriteMultipleHoldingRegistersResponse) FunctionFlag() uint8 {
+ return 0x17
+}
+
+func (m ModbusPDUReadWriteMultipleHoldingRegistersResponse) Response() bool {
+ return true
+}
+
func (m ModbusPDUReadWriteMultipleHoldingRegistersResponse) initialize() spi.Message {
return spi.Message(m)
}
@@ -72,3 +90,17 @@ func ModbusPDUReadWriteMultipleHoldingRegistersResponseParse(io spi.ReadBuffer)
// Create the instance
return NewModbusPDUReadWriteMultipleHoldingRegistersResponse(value), nil
}
+
+func (m ModbusPDUReadWriteMultipleHoldingRegistersResponse) Serialize(io spi.WriteBuffer) {
+
+ // 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 = (uint8(len(m.value)))
+ io.WriteUint8(8, (byteCount))
+
+ // Array Field (value)
+ if m.value != nil {
+ for _, _element := range m.value {
+ io.WriteInt8(8, _element)
+ }
+ }
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdRequest.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReportServerIdRequest.go
similarity index 78%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdRequest.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReportServerIdRequest.go
index 07f08f0..cbdb441 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReportServerIdRequest.go
@@ -26,6 +26,24 @@ type ModbusPDUReportServerIdRequest struct {
ModbusPDU
}
+type IModbusPDUReportServerIdRequest interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReportServerIdRequest) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReportServerIdRequest) FunctionFlag() uint8 {
+ return 0x11
+}
+
+func (m ModbusPDUReportServerIdRequest) Response() bool {
+ return false
+}
+
func (m ModbusPDUReportServerIdRequest) initialize() spi.Message {
return spi.Message(m)
}
@@ -49,3 +67,6 @@ func ModbusPDUReportServerIdRequestParse(io spi.ReadBuffer) (ModbusPDUInitialize
// Create the instance
return NewModbusPDUReportServerIdRequest(), nil
}
+
+func (m ModbusPDUReportServerIdRequest) Serialize(io spi.WriteBuffer) {
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdResponse.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReportServerIdResponse.go
similarity index 73%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdResponse.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReportServerIdResponse.go
index 8143fbb..731d27f 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUReportServerIdResponse.go
@@ -27,6 +27,24 @@ type ModbusPDUReportServerIdResponse struct {
ModbusPDU
}
+type IModbusPDUReportServerIdResponse interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUReportServerIdResponse) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUReportServerIdResponse) FunctionFlag() uint8 {
+ return 0x11
+}
+
+func (m ModbusPDUReportServerIdResponse) Response() bool {
+ return true
+}
+
func (m ModbusPDUReportServerIdResponse) initialize() spi.Message {
return spi.Message(m)
}
@@ -72,3 +90,17 @@ func ModbusPDUReportServerIdResponseParse(io spi.ReadBuffer) (ModbusPDUInitializ
// Create the instance
return NewModbusPDUReportServerIdResponse(value), nil
}
+
+func (m ModbusPDUReportServerIdResponse) Serialize(io spi.WriteBuffer) {
+
+ // 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 = (uint8(len(m.value)))
+ io.WriteUint8(8, (byteCount))
+
+ // Array Field (value)
+ if m.value != nil {
+ for _, _element := range m.value {
+ io.WriteInt8(8, _element)
+ }
+ }
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequest.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteFileRecordRequest.go
similarity index 73%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequest.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteFileRecordRequest.go
index 8c7371f..e3c7a74 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteFileRecordRequest.go
@@ -29,6 +29,24 @@ type ModbusPDUWriteFileRecordRequest struct {
ModbusPDU
}
+type IModbusPDUWriteFileRecordRequest interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUWriteFileRecordRequest) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUWriteFileRecordRequest) FunctionFlag() uint8 {
+ return 0x15
+}
+
+func (m ModbusPDUWriteFileRecordRequest) Response() bool {
+ return false
+}
+
func (m ModbusPDUWriteFileRecordRequest) initialize() spi.Message {
return spi.Message(m)
}
@@ -83,3 +101,24 @@ func ModbusPDUWriteFileRecordRequestParse(io spi.ReadBuffer) (ModbusPDUInitializ
// Create the instance
return NewModbusPDUWriteFileRecordRequest(items), nil
}
+
+func (m ModbusPDUWriteFileRecordRequest) Serialize(io spi.WriteBuffer) {
+ itemsArraySizeInBytes := func(items []ModbusPDUWriteFileRecordRequestItem) uint32 {
+ var sizeInBytes uint32 = 0
+ for _, v := range items {
+ sizeInBytes += uint32(v.LengthInBytes())
+ }
+ return sizeInBytes
+ }
+
+ // 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 = (uint8(itemsArraySizeInBytes(m.items)))
+ io.WriteUint8(8, (byteCount))
+
+ // Array Field (items)
+ if m.items != nil {
+ for _, _element := range m.items {
+ _element.Serialize(io)
+ }
+ }
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequestItem.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteFileRecordRequestItem.go
similarity index 75%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequestItem.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteFileRecordRequestItem.go
index fe2496f..2137397 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequestItem.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteFileRecordRequestItem.go
@@ -29,6 +29,11 @@ type ModbusPDUWriteFileRecordRequestItem struct {
recordData []int8
}
+type IModbusPDUWriteFileRecordRequestItem interface {
+ spi.Message
+ Serialize(io spi.WriteBuffer)
+}
+
func NewModbusPDUWriteFileRecordRequestItem(referenceType uint8, fileNumber uint16, recordNumber uint16, recordData []int8) spi.Message {
return &ModbusPDUWriteFileRecordRequestItem{referenceType: referenceType, fileNumber: fileNumber, recordNumber: recordNumber, recordData: recordData}
}
@@ -86,3 +91,29 @@ func ModbusPDUWriteFileRecordRequestItemParse(io spi.ReadBuffer) (spi.Message, e
// Create the instance
return NewModbusPDUWriteFileRecordRequestItem(referenceType, fileNumber, recordNumber, recordData), nil
}
+
+func (m ModbusPDUWriteFileRecordRequestItem) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (referenceType)
+ var referenceType uint8 = m.referenceType
+ io.WriteUint8(8, (referenceType))
+
+ // Simple Field (fileNumber)
+ var fileNumber uint16 = m.fileNumber
+ io.WriteUint16(16, (fileNumber))
+
+ // Simple Field (recordNumber)
+ var recordNumber uint16 = m.recordNumber
+ io.WriteUint16(16, (recordNumber))
+
+ // 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 = ((uint16(len(m.recordData))) / (2))
+ io.WriteUint16(16, (recordLength))
+
+ // Array Field (recordData)
+ if m.recordData != nil {
+ for _, _element := range m.recordData {
+ io.WriteInt8(8, _element)
+ }
+ }
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponse.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteFileRecordResponse.go
similarity index 73%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponse.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteFileRecordResponse.go
index a322714..387ba1d 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteFileRecordResponse.go
@@ -29,6 +29,24 @@ type ModbusPDUWriteFileRecordResponse struct {
ModbusPDU
}
+type IModbusPDUWriteFileRecordResponse interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUWriteFileRecordResponse) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUWriteFileRecordResponse) FunctionFlag() uint8 {
+ return 0x15
+}
+
+func (m ModbusPDUWriteFileRecordResponse) Response() bool {
+ return true
+}
+
func (m ModbusPDUWriteFileRecordResponse) initialize() spi.Message {
return spi.Message(m)
}
@@ -83,3 +101,24 @@ func ModbusPDUWriteFileRecordResponseParse(io spi.ReadBuffer) (ModbusPDUInitiali
// Create the instance
return NewModbusPDUWriteFileRecordResponse(items), nil
}
+
+func (m ModbusPDUWriteFileRecordResponse) Serialize(io spi.WriteBuffer) {
+ itemsArraySizeInBytes := func(items []ModbusPDUWriteFileRecordResponseItem) uint32 {
+ var sizeInBytes uint32 = 0
+ for _, v := range items {
+ sizeInBytes += uint32(v.LengthInBytes())
+ }
+ return sizeInBytes
+ }
+
+ // 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 = (uint8(itemsArraySizeInBytes(m.items)))
+ io.WriteUint8(8, (byteCount))
+
+ // Array Field (items)
+ if m.items != nil {
+ for _, _element := range m.items {
+ _element.Serialize(io)
+ }
+ }
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponseItem.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteFileRecordResponseItem.go
similarity index 75%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponseItem.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteFileRecordResponseItem.go
index c526a49..703f6e5 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponseItem.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteFileRecordResponseItem.go
@@ -29,6 +29,11 @@ type ModbusPDUWriteFileRecordResponseItem struct {
recordData []int8
}
+type IModbusPDUWriteFileRecordResponseItem interface {
+ spi.Message
+ Serialize(io spi.WriteBuffer)
+}
+
func NewModbusPDUWriteFileRecordResponseItem(referenceType uint8, fileNumber uint16, recordNumber uint16, recordData []int8) spi.Message {
return &ModbusPDUWriteFileRecordResponseItem{referenceType: referenceType, fileNumber: fileNumber, recordNumber: recordNumber, recordData: recordData}
}
@@ -86,3 +91,29 @@ func ModbusPDUWriteFileRecordResponseItemParse(io spi.ReadBuffer) (spi.Message,
// Create the instance
return NewModbusPDUWriteFileRecordResponseItem(referenceType, fileNumber, recordNumber, recordData), nil
}
+
+func (m ModbusPDUWriteFileRecordResponseItem) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (referenceType)
+ var referenceType uint8 = m.referenceType
+ io.WriteUint8(8, (referenceType))
+
+ // Simple Field (fileNumber)
+ var fileNumber uint16 = m.fileNumber
+ io.WriteUint16(16, (fileNumber))
+
+ // Simple Field (recordNumber)
+ var recordNumber uint16 = m.recordNumber
+ io.WriteUint16(16, (recordNumber))
+
+ // 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 = ((uint16(len(m.recordData))) / (2))
+ io.WriteUint16(16, (recordLength))
+
+ // Array Field (recordData)
+ if m.recordData != nil {
+ for _, _element := range m.recordData {
+ io.WriteInt8(8, _element)
+ }
+ }
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsRequest.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteMultipleCoilsRequest.go
similarity index 72%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsRequest.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteMultipleCoilsRequest.go
index 9b2a141..49c3abf 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteMultipleCoilsRequest.go
@@ -29,6 +29,24 @@ type ModbusPDUWriteMultipleCoilsRequest struct {
ModbusPDU
}
+type IModbusPDUWriteMultipleCoilsRequest interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUWriteMultipleCoilsRequest) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUWriteMultipleCoilsRequest) FunctionFlag() uint8 {
+ return 0x0F
+}
+
+func (m ModbusPDUWriteMultipleCoilsRequest) Response() bool {
+ return false
+}
+
func (m ModbusPDUWriteMultipleCoilsRequest) initialize() spi.Message {
return spi.Message(m)
}
@@ -86,3 +104,25 @@ func ModbusPDUWriteMultipleCoilsRequestParse(io spi.ReadBuffer) (ModbusPDUInitia
// Create the instance
return NewModbusPDUWriteMultipleCoilsRequest(startingAddress, quantity, value), nil
}
+
+func (m ModbusPDUWriteMultipleCoilsRequest) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (startingAddress)
+ var startingAddress uint16 = m.startingAddress
+ io.WriteUint16(16, (startingAddress))
+
+ // Simple Field (quantity)
+ var quantity uint16 = m.quantity
+ io.WriteUint16(16, (quantity))
+
+ // 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 = (uint8(len(m.value)))
+ io.WriteUint8(8, (byteCount))
+
+ // Array Field (value)
+ if m.value != nil {
+ for _, _element := range m.value {
+ io.WriteInt8(8, _element)
+ }
+ }
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsResponse.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteMultipleCoilsResponse.go
similarity index 74%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsResponse.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteMultipleCoilsResponse.go
index a7efa42..28806fe 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteMultipleCoilsResponse.go
@@ -28,6 +28,24 @@ type ModbusPDUWriteMultipleCoilsResponse struct {
ModbusPDU
}
+type IModbusPDUWriteMultipleCoilsResponse interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUWriteMultipleCoilsResponse) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUWriteMultipleCoilsResponse) FunctionFlag() uint8 {
+ return 0x0F
+}
+
+func (m ModbusPDUWriteMultipleCoilsResponse) Response() bool {
+ return true
+}
+
func (m ModbusPDUWriteMultipleCoilsResponse) initialize() spi.Message {
return spi.Message(m)
}
@@ -63,3 +81,14 @@ func ModbusPDUWriteMultipleCoilsResponseParse(io spi.ReadBuffer) (ModbusPDUIniti
// Create the instance
return NewModbusPDUWriteMultipleCoilsResponse(startingAddress, quantity), nil
}
+
+func (m ModbusPDUWriteMultipleCoilsResponse) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (startingAddress)
+ var startingAddress uint16 = m.startingAddress
+ io.WriteUint16(16, (startingAddress))
+
+ // Simple Field (quantity)
+ var quantity uint16 = m.quantity
+ io.WriteUint16(16, (quantity))
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersRequest.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersRequest.go
similarity index 71%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersRequest.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersRequest.go
index b84def7..a775c14 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersRequest.go
@@ -29,6 +29,24 @@ type ModbusPDUWriteMultipleHoldingRegistersRequest struct {
ModbusPDU
}
+type IModbusPDUWriteMultipleHoldingRegistersRequest interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUWriteMultipleHoldingRegistersRequest) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUWriteMultipleHoldingRegistersRequest) FunctionFlag() uint8 {
+ return 0x10
+}
+
+func (m ModbusPDUWriteMultipleHoldingRegistersRequest) Response() bool {
+ return false
+}
+
func (m ModbusPDUWriteMultipleHoldingRegistersRequest) initialize() spi.Message {
return spi.Message(m)
}
@@ -86,3 +104,25 @@ func ModbusPDUWriteMultipleHoldingRegistersRequestParse(io spi.ReadBuffer) (Modb
// Create the instance
return NewModbusPDUWriteMultipleHoldingRegistersRequest(startingAddress, quantity, value), nil
}
+
+func (m ModbusPDUWriteMultipleHoldingRegistersRequest) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (startingAddress)
+ var startingAddress uint16 = m.startingAddress
+ io.WriteUint16(16, (startingAddress))
+
+ // Simple Field (quantity)
+ var quantity uint16 = m.quantity
+ io.WriteUint16(16, (quantity))
+
+ // 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 = (uint8(len(m.value)))
+ io.WriteUint8(8, (byteCount))
+
+ // Array Field (value)
+ if m.value != nil {
+ for _, _element := range m.value {
+ io.WriteInt8(8, _element)
+ }
+ }
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersResponse.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersResponse.go
similarity index 74%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersResponse.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersResponse.go
index cf96414..914260d 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersResponse.go
@@ -28,6 +28,24 @@ type ModbusPDUWriteMultipleHoldingRegistersResponse struct {
ModbusPDU
}
+type IModbusPDUWriteMultipleHoldingRegistersResponse interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUWriteMultipleHoldingRegistersResponse) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUWriteMultipleHoldingRegistersResponse) FunctionFlag() uint8 {
+ return 0x10
+}
+
+func (m ModbusPDUWriteMultipleHoldingRegistersResponse) Response() bool {
+ return true
+}
+
func (m ModbusPDUWriteMultipleHoldingRegistersResponse) initialize() spi.Message {
return spi.Message(m)
}
@@ -63,3 +81,14 @@ func ModbusPDUWriteMultipleHoldingRegistersResponseParse(io spi.ReadBuffer) (Mod
// Create the instance
return NewModbusPDUWriteMultipleHoldingRegistersResponse(startingAddress, quantity), nil
}
+
+func (m ModbusPDUWriteMultipleHoldingRegistersResponse) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (startingAddress)
+ var startingAddress uint16 = m.startingAddress
+ io.WriteUint16(16, (startingAddress))
+
+ // Simple Field (quantity)
+ var quantity uint16 = m.quantity
+ io.WriteUint16(16, (quantity))
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilRequest.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteSingleCoilRequest.go
similarity index 75%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilRequest.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteSingleCoilRequest.go
index 76c610e..e18173e 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteSingleCoilRequest.go
@@ -28,6 +28,24 @@ type ModbusPDUWriteSingleCoilRequest struct {
ModbusPDU
}
+type IModbusPDUWriteSingleCoilRequest interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUWriteSingleCoilRequest) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUWriteSingleCoilRequest) FunctionFlag() uint8 {
+ return 0x05
+}
+
+func (m ModbusPDUWriteSingleCoilRequest) Response() bool {
+ return false
+}
+
func (m ModbusPDUWriteSingleCoilRequest) initialize() spi.Message {
return spi.Message(m)
}
@@ -63,3 +81,14 @@ func ModbusPDUWriteSingleCoilRequestParse(io spi.ReadBuffer) (ModbusPDUInitializ
// Create the instance
return NewModbusPDUWriteSingleCoilRequest(address, value), nil
}
+
+func (m ModbusPDUWriteSingleCoilRequest) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (address)
+ var address uint16 = m.address
+ io.WriteUint16(16, (address))
+
+ // Simple Field (value)
+ var value uint16 = m.value
+ io.WriteUint16(16, (value))
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilResponse.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteSingleCoilResponse.go
similarity index 75%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilResponse.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteSingleCoilResponse.go
index 4a8f4aa..e519cf1 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteSingleCoilResponse.go
@@ -28,6 +28,24 @@ type ModbusPDUWriteSingleCoilResponse struct {
ModbusPDU
}
+type IModbusPDUWriteSingleCoilResponse interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUWriteSingleCoilResponse) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUWriteSingleCoilResponse) FunctionFlag() uint8 {
+ return 0x05
+}
+
+func (m ModbusPDUWriteSingleCoilResponse) Response() bool {
+ return true
+}
+
func (m ModbusPDUWriteSingleCoilResponse) initialize() spi.Message {
return spi.Message(m)
}
@@ -63,3 +81,14 @@ func ModbusPDUWriteSingleCoilResponseParse(io spi.ReadBuffer) (ModbusPDUInitiali
// Create the instance
return NewModbusPDUWriteSingleCoilResponse(address, value), nil
}
+
+func (m ModbusPDUWriteSingleCoilResponse) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (address)
+ var address uint16 = m.address
+ io.WriteUint16(16, (address))
+
+ // Simple Field (value)
+ var value uint16 = m.value
+ io.WriteUint16(16, (value))
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterRequest.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteSingleRegisterRequest.go
similarity index 75%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterRequest.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteSingleRegisterRequest.go
index 7e66236..a7d8231 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteSingleRegisterRequest.go
@@ -28,6 +28,24 @@ type ModbusPDUWriteSingleRegisterRequest struct {
ModbusPDU
}
+type IModbusPDUWriteSingleRegisterRequest interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUWriteSingleRegisterRequest) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUWriteSingleRegisterRequest) FunctionFlag() uint8 {
+ return 0x06
+}
+
+func (m ModbusPDUWriteSingleRegisterRequest) Response() bool {
+ return false
+}
+
func (m ModbusPDUWriteSingleRegisterRequest) initialize() spi.Message {
return spi.Message(m)
}
@@ -63,3 +81,14 @@ func ModbusPDUWriteSingleRegisterRequestParse(io spi.ReadBuffer) (ModbusPDUIniti
// Create the instance
return NewModbusPDUWriteSingleRegisterRequest(address, value), nil
}
+
+func (m ModbusPDUWriteSingleRegisterRequest) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (address)
+ var address uint16 = m.address
+ io.WriteUint16(16, (address))
+
+ // Simple Field (value)
+ var value uint16 = m.value
+ io.WriteUint16(16, (value))
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterResponse.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteSingleRegisterResponse.go
similarity index 75%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterResponse.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteSingleRegisterResponse.go
index 0786e57..54f07cc 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusPDUWriteSingleRegisterResponse.go
@@ -28,6 +28,24 @@ type ModbusPDUWriteSingleRegisterResponse struct {
ModbusPDU
}
+type IModbusPDUWriteSingleRegisterResponse interface {
+ IModbusPDU
+ Serialize(io spi.WriteBuffer)
+}
+
+// Accessors for discriminator values.
+func (m ModbusPDUWriteSingleRegisterResponse) ErrorFlag() bool {
+ return false
+}
+
+func (m ModbusPDUWriteSingleRegisterResponse) FunctionFlag() uint8 {
+ return 0x06
+}
+
+func (m ModbusPDUWriteSingleRegisterResponse) Response() bool {
+ return true
+}
+
func (m ModbusPDUWriteSingleRegisterResponse) initialize() spi.Message {
return spi.Message(m)
}
@@ -63,3 +81,14 @@ func ModbusPDUWriteSingleRegisterResponseParse(io spi.ReadBuffer) (ModbusPDUInit
// Create the instance
return NewModbusPDUWriteSingleRegisterResponse(address, value), nil
}
+
+func (m ModbusPDUWriteSingleRegisterResponse) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (address)
+ var address uint16 = m.address
+ io.WriteUint16(16, (address))
+
+ // Simple Field (value)
+ var value uint16 = m.value
+ io.WriteUint16(16, (value))
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusSerialADU.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusSerialADU.go
similarity index 83%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusSerialADU.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusSerialADU.go
index f678406..18713e3 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusSerialADU.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusSerialADU.go
@@ -32,6 +32,11 @@ type ModbusSerialADU struct {
pdu ModbusPDU
}
+type IModbusSerialADU interface {
+ spi.Message
+ Serialize(io spi.WriteBuffer)
+}
+
func NewModbusSerialADU(transactionId uint16, length uint16, address uint8, pdu ModbusPDU) spi.Message {
return &ModbusSerialADU{transactionId: transactionId, length: length, address: address, pdu: pdu}
}
@@ -97,3 +102,25 @@ func ModbusSerialADUParse(io spi.ReadBuffer, response bool) (spi.Message, error)
// Create the instance
return NewModbusSerialADU(transactionId, length, address, pdu), nil
}
+
+func (m ModbusSerialADU) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (transactionId)
+ var transactionId uint16 = m.transactionId
+ io.WriteUint16(16, (transactionId))
+
+ // Reserved Field (reserved)
+ io.WriteUint16(16, uint16(0x0000))
+
+ // Simple Field (length)
+ var length uint16 = m.length
+ io.WriteUint16(16, (length))
+
+ // Simple Field (address)
+ var address uint8 = m.address
+ io.WriteUint8(8, (address))
+
+ // Simple Field (pdu)
+ var pdu ModbusPDU = m.pdu
+ pdu.Serialize(io)
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusTcpADU.go b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusTcpADU.go
similarity index 79%
rename from sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusTcpADU.go
rename to sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusTcpADU.go
index 4037cab..b4e91f8 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusTcpADU.go
+++ b/sandbox/plc4go/generated-sources/plc4go/modbus/readwrite/ModbusTcpADU.go
@@ -34,6 +34,11 @@ type ModbusTcpADU struct {
pdu ModbusPDU
}
+type IModbusTcpADU interface {
+ spi.Message
+ Serialize(io spi.WriteBuffer)
+}
+
func NewModbusTcpADU(transactionIdentifier uint16, unitIdentifier uint8, pdu ModbusPDU) spi.Message {
return &ModbusTcpADU{transactionIdentifier: transactionIdentifier, unitIdentifier: unitIdentifier, pdu: pdu}
}
@@ -94,3 +99,25 @@ func ModbusTcpADUParse(io spi.ReadBuffer, response bool) (spi.Message, error) {
// Create the instance
return NewModbusTcpADU(transactionIdentifier, unitIdentifier, pdu), nil
}
+
+func (m ModbusTcpADU) Serialize(io spi.WriteBuffer) {
+
+ // Simple Field (transactionIdentifier)
+ var transactionIdentifier uint16 = m.transactionIdentifier
+ io.WriteUint16(16, (transactionIdentifier))
+
+ // Const Field (protocolIdentifier)
+ io.WriteUint16(16, 0x0000)
+
+ // 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 = ((m.pdu.LengthInBytes()) + (1))
+ io.WriteUint16(16, (length))
+
+ // Simple Field (unitIdentifier)
+ var unitIdentifier uint8 = m.unitIdentifier
+ io.WriteUint8(8, (unitIdentifier))
+
+ // Simple Field (pdu)
+ var pdu ModbusPDU = m.pdu
+ pdu.Serialize(io)
+}
diff --git a/sandbox/plc4go/src/main/modbus.go b/sandbox/plc4go/src/main/modbus.go
index 4a8f65b..73d26b2 100644
--- a/sandbox/plc4go/src/main/modbus.go
+++ b/sandbox/plc4go/src/main/modbus.go
@@ -17,7 +17,7 @@ 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/generated-sources/plc4go/modbus/readwrite"
"plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
)