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/11/02 16:37:18 UTC
[plc4x] branch feature/plc4go updated: - Implemented the write
support in PLC4Go Modbus
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 46a4dc2 - Implemented the write support in PLC4Go Modbus
46a4dc2 is described below
commit 46a4dc2d779c169cf6d5270b520f30f80dee8468
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Mon Nov 2 17:37:09 2020 +0100
- Implemented the write support in PLC4Go Modbus
---
.../language/go/GoLanguageTemplateHelper.java | 13 +-
.../resources/templates/go/data-io-template.ftlh | 61 +-
.../java/modbus/protocol/ModbusProtocolLogic.java | 23 +-
.../java/spi/messages/DefaultPlcWriteRequest.java | 31 +-
.../java/spi/messages/DefaultPlcWriteResponse.java | 19 +-
.../plc4x/test/driver/DriverTestsuiteRunner.java | 63 +-
.../plc4x/test/driver/model/api/TestField.java | 8 +-
.../api/{TestField.java => TestValueField.java} | 25 +-
.../resources/protocols/modbus/DriverTestsuite.xml | 222 +--
.../generated-sources/modbus/include/modbus_pdu.h | 3 +-
.../generated-sources/modbus/src/modbus_pdu.c | 8 +-
.../testing/protocols/modbus/DriverTestsuite.xml | 144 +-
sandbox/plc4go/cmd/main/drivers/bacnetip_test.go | 2 +-
sandbox/plc4go/cmd/main/drivers/knxnetip_test.go | 10 +-
sandbox/plc4go/cmd/main/drivers/modbus_test.go | 42 +-
sandbox/plc4go/cmd/main/drivers/s7_test.go | 10 +-
.../plc4go/bacnetip/readwrite/model/APDUAbort.go | 325 ++--
.../bacnetip/readwrite/model/APDUComplexAck.go | 689 +++++----
.../readwrite/model/APDUConfirmedRequest.go | 1043 +++++++------
.../bacnetip/readwrite/model/APDUSegmentAck.go | 425 +++---
.../BACnetConfirmedServiceRequestSubscribeCOV.go | 635 ++++----
.../plc4go/bacnetip/readwrite/model/NPDU.go | 1295 ++++++++--------
.../CEMIAdditionalInformationBusmonitorInfo.go | 461 +++---
.../knxnetip/readwrite/model/CEMIDataFrame.go | 1099 +++++++-------
.../plc4go/knxnetip/readwrite/model/CEMIFrame.go | 467 +++---
.../knxnetip/readwrite/model/CEMIFrameData.go | 773 +++++-----
.../knxnetip/readwrite/model/CEMIFrameDataExt.go | 823 +++++-----
.../knxnetip/readwrite/model/DeviceStatus.go | 213 ++-
.../knxnetip/readwrite/model/KnxDatapoint.go | 1596 +++++++++++++-------
.../internal/plc4go/modbus/ModbusConnection.go | 44 +-
.../plc4go/internal/plc4go/modbus/ModbusDriver.go | 16 +-
.../plc4go/internal/plc4go/modbus/ModbusField.go | 6 +-
.../internal/plc4go/modbus/ModbusMessageCodec.go | 210 +--
.../plc4go/internal/plc4go/modbus/ModbusReader.go | 36 +-
.../internal/plc4go/modbus/ModbusValueHandler.go | 4 +-
.../plc4go/internal/plc4go/modbus/ModbusWriter.go | 190 ++-
.../plc4go/modbus/readwrite/model/DataItem.go | 970 +++++++-----
.../plc4go/modbus/readwrite/model/ModbusPDU.go | 361 +++--
.../plc4go/model/DefaultPlcWriteRequest.go | 53 +-
.../plc4go/model/DefaultPlcWriteResponse.go | 86 ++
.../plc4go/internal/plc4go/model/values/BOOL.go | 26 +-
.../plc4go/internal/plc4go/model/values/BYTE.go | 29 +-
.../plc4go/internal/plc4go/model/values/DINT.go | 5 +
.../plc4go/internal/plc4go/model/values/DWORD.go | 29 +-
.../plc4go/model/values/IEC61131ValueHandler.go | 377 +++--
sandbox/plc4go/internal/plc4go/model/values/INT.go | 5 +
.../plc4go/internal/plc4go/model/values/LINT.go | 5 +
.../plc4go/internal/plc4go/model/values/LREAL.go | 9 +
.../plc4go/internal/plc4go/model/values/LWORD.go | 29 +-
.../plc4go/internal/plc4go/model/values/PlcList.go | 12 +-
.../plc4go/model/values/PlcSimpleValueAdapter.go | 6 +-
.../plc4go/model/values/PlcValueAdapter.go | 12 +-
.../plc4go/internal/plc4go/model/values/REAL.go | 9 +
.../plc4go/internal/plc4go/model/values/SINT.go | 9 +-
.../plc4go/internal/plc4go/model/values/UDINT.go | 5 +
.../plc4go/internal/plc4go/model/values/UINT.go | 5 +
.../plc4go/internal/plc4go/model/values/ULINT.go | 5 +
.../plc4go/internal/plc4go/model/values/USINT.go | 5 +
.../plc4go/internal/plc4go/model/values/WORD.go | 29 +-
.../plc4go/s7/readwrite/model/COTPPacketData.go | 225 ++-
.../internal/plc4go/s7/readwrite/model/DataItem.go | 190 ++-
.../plc4go/s7/readwrite/model/S7StaticHelper.go | 160 +-
.../plc4go/spi/HandlerExposer.go} | 7 +-
.../plc4go/internal/plc4go/spi/PlcValueHandler.go | 7 +-
.../internal/plc4go/testutils/DriverTestRunner.go | 32 +-
.../plc4go/testutils/ParserSerializerTestRunner.go | 4 +-
.../plc4go/transports/TransportInstance.go | 1 +
.../plc4go/transports/test/TestTransport.go | 4 +
sandbox/plc4go/internal/plc4go/utils/CastUtils.go | 68 +-
sandbox/plc4go/internal/plc4go/utils/ReadBuffer.go | 8 +-
.../plc4go/internal/plc4go/utils/WriteBuffer.go | 9 +-
sandbox/plc4go/pkg/plc4go/model/plc_field.go | 1 +
.../plc4go/pkg/plc4go/model/plc_write_request.go | 5 +
sandbox/plc4go/pkg/plc4go/values/plc_value.go | 10 +-
74 files changed, 7924 insertions(+), 5922 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 f59e51e..602403e 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
@@ -244,7 +244,7 @@ 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(" + fieldName + ")";
}
case UINT: {
IntegerTypeReference integerTypeReference = (IntegerTypeReference) simpleTypeReference;
@@ -477,7 +477,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
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 isParserArg = "io".equals(va.getName()) || ((getThisTypeDefinition() instanceof DataIoTypeDefinition) && "_value".equals(va.getName()));
boolean isTypeArg = "_type".equals(va.getName());
if (!isParserArg && !isTypeArg && parserArguments != null) {
for (Argument parserArgument : parserArguments) {
@@ -488,8 +488,13 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
}
}
if (isParserArg) {
- sb.append(va.getName() + ((va.getChild() != null) ?
- "." + toVariableExpression(typeReference, vl.getChild(), parserArguments, serializerArguments, false, suppressPointerAccess) : ""));
+ if(va.getName().equals("_value")) {
+ sb.append(va.getName().substring(1) + ((va.getChild() != null) ?
+ "." + toVariableExpression(typeReference, vl.getChild(), parserArguments, serializerArguments, false, suppressPointerAccess) : ""));
+ } else {
+ sb.append(va.getName() + ((va.getChild() != null) ?
+ "." + toVariableExpression(typeReference, vl.getChild(), parserArguments, serializerArguments, false, suppressPointerAccess) : ""));
+ }
}
// We have to manually evaluate the type information at code-generation time.
else if (isTypeArg) {
diff --git a/build-utils/language-go/src/main/resources/templates/go/data-io-template.ftlh b/build-utils/language-go/src/main/resources/templates/go/data-io-template.ftlh
index f52ea05..2f03720 100644
--- a/build-utils/language-go/src/main/resources/templates/go/data-io-template.ftlh
+++ b/build-utils/language-go/src/main/resources/templates/go/data-io-template.ftlh
@@ -111,13 +111,15 @@ func ${type.name}Parse(io *utils.ReadBuffer<#if type.parserArguments?has_content
<#assign reservedField = field>
// Reserved Field (Just skip the bytes)
- ${helper.getReadBufferReadMethodCall(field.type)}
+ if _, _err := ${helper.getReadBufferReadMethodCall(field.type)}; _err != nil {
+ return nil, errors.New("Error parsing reserved field " + _err.Error())
+ }
<#break>
<#case "simple">
<#assign simpleField = field>
// Simple Field (${field.name})
- <#if case.name == "Struct" || field.name == "value">${field.name}<#else>_</#if>, _${field.name}Err := <#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(field, parserArgument, type.par [...]
+ <#if case.name == "Struct" || field.name == "value">${field.name}<#else>_</#if>, _${field.name}Err := <#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(field, parserArgument, type.parserArgume [...]
if _${field.name}Err != nil {
return nil, errors.New("Error parsing '${field.name}' field " + _${field.name}Err.Error())
}
@@ -164,4 +166,59 @@ func ${type.name}Parse(io *utils.ReadBuffer<#if type.parserArguments?has_content
return nil, errors.New("unsupported type")
}
+func ${type.name}Serialize(io *utils.WriteBuffer, value api.PlcValue<#if type.parserArguments?has_content>, <#list type.parserArguments as parserArgument>${parserArgument.name} <#if helper.isComplexTypeReference(parserArgument.type)>I</#if>${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) error {
+ switch {
+ <#list type.switchField.cases as case>
+ case <#if case.discriminatorValues?has_content><#list case.discriminatorValues as discriminatorValue>${helper.toParseExpression(null, type.switchField.discriminatorExpressions[discriminatorValue?index], type.parserArguments)} == <#if helper.discriminatorValueNeedsStringEqualityCheck(type.switchField.discriminatorExpressions[discriminatorValue?index])>"${discriminatorValue}"<#else>${discriminatorValue}</#if><#sep> && </#sep></#list></#if>: // ${case.name}
+ <#if case.name == "Struct">
+ _map := map[string]interface{}{}
+ </#if>
+ <#list case.fields as field>
+ <#switch field.typeName>
+ <#case "array">
+ <#assign arrayField = field>
+
+ // Array Field (${field.name})
+ for i := uint32(0); i < uint32(${helper.toSerializationExpression(null, field.loopExpression, type.parserArguments)}); i++ {
+ _itemErr := DataItemSerialize(io, value.GetIndex(i), ${type.parserArguments[0].name}, ${helper.getLanguageTypeNameForTypeReference(type.parserArguments[1].type)}(1))
+ if _itemErr != nil {
+ return errors.New("Error serializing 'value' field " + _itemErr.Error())
+ }
+ }
+ <#break>
+ <#case "manual">
+ <#assign manualField = field>
+
+ // Manual Field (${field.name})
+ _${field.name}Err := ${helper.toSerializationExpression(field, manualField.serializeExpression, type.parserArguments)}
+ if _${field.name}Err != nil {
+ return errors.New("Error serializing '${field.name}' field " + _${field.name}Err.Error())
+ }
+ <#break>
+ <#case "reserved">
+ <#assign reservedField = field>
+
+ // Reserved Field (Just skip the bytes)
+ if _err := ${helper.getWriteBufferWriteMethodCall(field.type, helper.getReservedValue(field))}; _err != nil {
+ return errors.New("Error serializing reserved field " + _err.Error())
+ }
+ <#break>
+ <#case "simple">
+ <#assign simpleField = field>
+
+ // Simple Field (${field.name})
+ if _err := <#if helper.isSimpleTypeReference(field.type)>${helper.getWriteBufferWriteMethodCall(field.type, "value.Get" + helper.getLanguageTypeNameForTypeReference(field.type)?cap_first + "()")}<#else>${field.type.name}Serialize(io, <#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(field, parserArgument, type.parserAr [...]
+ return errors.New("Error serializing '${field.name}' field " + _err.Error())
+ }
+ <#break>
+ </#switch>
+ </#list>
+ </#list>
+ default:
+
+ return errors.New("unsupported type")
+ }
+ return nil
+}
+
</#outputformat>
diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
index 0b20229..6be50c8 100644
--- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
+++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
@@ -147,19 +147,28 @@ public class ModbusProtocolLogic extends Plc4xProtocolBase<ModbusTcpADU> impleme
private PlcResponseCode getErrorCode(ModbusPDUError errorResponse) {
switch (errorResponse.getExceptionCode()) {
- case 1:
- // This implies the received function code is not supported.
+ case ILLEGAL_FUNCTION:
return PlcResponseCode.UNSUPPORTED;
- case 2:
+ case ILLEGAL_DATA_ADDRESS:
return PlcResponseCode.INVALID_ADDRESS;
- case 3:
+ case ILLEGAL_DATA_VALUE:
return PlcResponseCode.INVALID_DATA;
- case 4:
+ case SLAVE_DEVICE_FAILURE:
return PlcResponseCode.REMOTE_ERROR;
- case 6:
+ case ACKNOWLEDGE:
+ return PlcResponseCode.OK;
+ case SLAVE_DEVICE_BUSY:
return PlcResponseCode.REMOTE_BUSY;
+ case NEGATIVE_ACKNOWLEDGE:
+ return PlcResponseCode.REMOTE_ERROR;
+ case MEMORY_PARITY_ERROR:
+ return PlcResponseCode.INTERNAL_ERROR;
+ case GATEWAY_PATH_UNAVAILABLE:
+ return PlcResponseCode.INTERNAL_ERROR;
+ case GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND:
+ return PlcResponseCode.REMOTE_ERROR;
default:
- // This generally implies that something wen't wrong which we didn't anticipate.
+ // This generally implies that something went wrong which we didn't anticipate.
return PlcResponseCode.INTERNAL_ERROR;
}
}
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteRequest.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteRequest.java
index 34b7ac7..c010ff0 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteRequest.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteRequest.java
@@ -34,6 +34,7 @@ import org.apache.plc4x.java.api.value.PlcValue;
import org.apache.plc4x.java.api.value.PlcValueHandler;
import org.apache.plc4x.java.spi.connection.PlcFieldHandler;
import org.apache.plc4x.java.spi.messages.utils.FieldValueItem;
+import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.LinkedHashMap;
@@ -142,7 +143,35 @@ public class DefaultPlcWriteRequest implements PlcWriteRequest, XmlSerializable
@Override
public void xmlSerialize(Element parent) {
- // TODO: Implement
+ Document doc = parent.getOwnerDocument();
+ Element messageElement = doc.createElement("PlcWriteRequest");
+ Element fieldsElement = doc.createElement("fields");
+ messageElement.appendChild(fieldsElement);
+ for (Map.Entry<String, FieldValueItem> fieldEntry : fields.entrySet()) {
+ FieldValueItem fieldValueItem = fieldEntry.getValue();
+ String fieldName = fieldEntry.getKey();
+ Element fieldNameElement = doc.createElement(fieldName);
+ fieldsElement.appendChild(fieldNameElement);
+ PlcField field = fieldValueItem.getField();
+ if(!(field instanceof XmlSerializable)) {
+ throw new RuntimeException("Error serializing. Field doesn't implement XmlSerializable");
+ }
+ ((XmlSerializable) field).xmlSerialize(fieldNameElement);
+ final PlcValue value = fieldValueItem.getValue();
+ if(value instanceof PlcList) {
+ PlcList list = (PlcList) value;
+ for (PlcValue plcValue : list.getList()) {
+ Element fieldValueElement = doc.createElement("value");
+ fieldValueElement.setTextContent(plcValue.getString());
+ fieldNameElement.appendChild(fieldValueElement);
+ }
+ } else {
+ Element fieldValueElement = doc.createElement("value");
+ fieldValueElement.setTextContent(value.getString());
+ fieldNameElement.appendChild(fieldValueElement);
+ }
+ }
+ parent.appendChild(messageElement);
}
public static class Builder implements PlcWriteRequest.Builder {
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteResponse.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteResponse.java
index 9ea0807..6d8f3d7 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteResponse.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteResponse.java
@@ -26,7 +26,10 @@ import org.apache.plc4x.java.api.messages.PlcWriteRequest;
import org.apache.plc4x.java.api.messages.PlcWriteResponse;
import org.apache.plc4x.java.api.model.PlcField;
import org.apache.plc4x.java.api.types.PlcResponseCode;
+import org.apache.plc4x.java.api.value.PlcValue;
+import org.apache.plc4x.java.spi.messages.utils.ResponseItem;
import org.apache.plc4x.java.spi.utils.XmlSerializable;
+import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.Collection;
@@ -70,7 +73,21 @@ public class DefaultPlcWriteResponse implements PlcWriteResponse, XmlSerializabl
@Override
public void xmlSerialize(Element parent) {
- // TODO: Implement
+ Document doc = parent.getOwnerDocument();
+ Element messageElement = doc.createElement("PlcWriteResponse");
+ if(request instanceof XmlSerializable) {
+ ((XmlSerializable) request).xmlSerialize(messageElement);
+ }
+ Element fieldsElement = doc.createElement("fields");
+ messageElement.appendChild(fieldsElement);
+ for (Map.Entry<String, PlcResponseCode> fieldEntry : values.entrySet()) {
+ String fieldName = fieldEntry.getKey();
+ final PlcResponseCode fieldResponseCode = fieldEntry.getValue();
+ Element fieldNameElement = doc.createElement(fieldName);
+ fieldNameElement.setAttribute("result", fieldResponseCode.name());
+ fieldsElement.appendChild(fieldNameElement);
+ }
+ parent.appendChild(messageElement);
}
}
diff --git a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/DriverTestsuiteRunner.java b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/DriverTestsuiteRunner.java
index b4fce42..a4dfe57 100644
--- a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/DriverTestsuiteRunner.java
+++ b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/DriverTestsuiteRunner.java
@@ -32,6 +32,7 @@ import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
import org.apache.plc4x.java.api.messages.PlcReadRequest;
import org.apache.plc4x.java.api.messages.PlcResponse;
+import org.apache.plc4x.java.api.messages.PlcWriteRequest;
import org.apache.plc4x.java.spi.connection.ChannelExposingConnection;
import org.apache.plc4x.java.spi.connection.GeneratedDriverBase;
import org.apache.plc4x.java.spi.generation.*;
@@ -211,7 +212,6 @@ public class DriverTestsuiteRunner {
private void executeStep(TestStep testStep, PlcConnection plcConnection, Plc4xEmbeddedChannel embeddedChannel, boolean bigEndian) throws DriverTestsuiteException {
LOGGER.info(String.format(" - Running step: '%s' - %s", testStep.getName(), testStep.getType()));
- final ObjectMapper mapper = new XmlMapper().enableDefaultTyping();
final Element payload = testStep.getPayload();
try {
switch (testStep.getType()) {
@@ -245,26 +245,49 @@ public class DriverTestsuiteRunner {
break;
}
case API_REQUEST: {
- final String referenceXml = payload.asXML();
- final TestRequest request = mapper.readValue(referenceXml, TestRequest.class);
- if(request instanceof TestReadRequest) {
- final TestReadRequest readRequest = (TestReadRequest) request;
- final PlcReadRequest.Builder builder = plcConnection.readRequestBuilder();
- for (TestField testField : readRequest.getFields()) {
- builder.addItem(testField.getName(), testField.getAddress());
+ switch(payload.attributeValue("className")) {
+ case "org.apache.plc4x.test.driver.model.api.TestReadRequest": {
+ final PlcReadRequest.Builder builder = plcConnection.readRequestBuilder();
+ if(payload.element("fields") != null) {
+ for (Element fieldElement : payload.element("fields").elements("field")) {
+ builder.addItem(fieldElement.elementText("name"), fieldElement.elementText("address"));
+ }
+ }
+ final PlcReadRequest plc4xRequest = builder.build();
+ // Currently we can only process one response at at time, throw an error if more
+ // are submitted.
+ if (responseFuture != null) {
+ throw new DriverTestsuiteException("Previous response not handled.");
+ }
+ // Save the response for being used later on.
+ responseFuture = plc4xRequest.execute();
+ break;
}
- final PlcReadRequest plc4xRequest = builder.build();
- // Currently we can only process one response at at time, throw an error if more
- // are submitted.
- if(responseFuture != null) {
- throw new DriverTestsuiteException("Previous response not handled.");
+ case "org.apache.plc4x.test.driver.model.api.TestWriteRequest": {
+ final PlcWriteRequest.Builder builder = plcConnection.writeRequestBuilder();
+ if(payload.element("fields") != null) {
+ for (Element fieldElement : payload.element("fields").elements("field")) {
+ List<Element> valueElements = fieldElement.elements("value");
+ List<String> valueStrings = new ArrayList<>(valueElements.size());
+ for (Element valueElement : valueElements) {
+ valueStrings.add(valueElement.getTextTrim());
+ }
+ builder.addItem(fieldElement.elementText("name"),
+ fieldElement.elementText("address"), valueStrings.toArray(new Object[0]));
+ }
+ }
+ final PlcWriteRequest plc4xRequest = builder.build();
+ // Currently we can only process one response at at time, throw an error if more
+ // are submitted.
+ if (responseFuture != null) {
+ throw new DriverTestsuiteException("Previous response not handled.");
+ }
+ // Save the response for being used later on.
+ responseFuture = plc4xRequest.execute();
+ break;
}
- // Save the response for being used later on.
- responseFuture = plc4xRequest.execute();
- } else if(request instanceof TestWriteRequest) {
- // TODO: Implement ...
- throw new NotImplementedException("api-write-request not implemented yet");
}
+
break;
}
case API_RESPONSE: {
@@ -293,7 +316,7 @@ public class DriverTestsuiteRunner {
embeddedChannel.close();
}
}
- } catch (IOException e) {
+ } catch (Exception e) {
throw new DriverTestsuiteException("Error processing the xml", e);
}
LOGGER.info(" Done");
@@ -479,4 +502,6 @@ public class DriverTestsuiteRunner {
}
}
+
+
}
diff --git a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestField.java b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestField.java
index 2bd1c06..3dd0cfb 100644
--- a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestField.java
+++ b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestField.java
@@ -18,18 +18,12 @@ under the License.
*/
package org.apache.plc4x.test.driver.model.api;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-
-@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "className")
public class TestField {
private final String name;
private final String address;
- @JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
- public TestField(@JsonProperty("name") String name, @JsonProperty("address") String address) {
+ public TestField(String name, String address) {
this.name = name;
this.address = address;
}
diff --git a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestField.java b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestValueField.java
similarity index 56%
copy from plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestField.java
copy to plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestValueField.java
index 2bd1c06..6ca866d 100644
--- a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestField.java
+++ b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestValueField.java
@@ -18,28 +18,17 @@ under the License.
*/
package org.apache.plc4x.test.driver.model.api;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
+public class TestValueField extends TestField {
-@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "className")
-public class TestField {
+ private final String[] values;
- private final String name;
- private final String address;
-
- @JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
- public TestField(@JsonProperty("name") String name, @JsonProperty("address") String address) {
- this.name = name;
- this.address = address;
- }
-
- public String getName() {
- return name;
+ public TestValueField(String name, String address, String[] values) {
+ super(name, address);
+ this.values = values;
}
- public String getAddress() {
- return address;
+ public String[] getValues() {
+ return values;
}
}
diff --git a/protocols/modbus/src/test/resources/protocols/modbus/DriverTestsuite.xml b/protocols/modbus/src/test/resources/protocols/modbus/DriverTestsuite.xml
index 4d8f8cb..ed35a3f 100644
--- a/protocols/modbus/src/test/resources/protocols/modbus/DriverTestsuite.xml
+++ b/protocols/modbus/src/test/resources/protocols/modbus/DriverTestsuite.xml
@@ -26,80 +26,6 @@
<driver-name>modbus</driver-name>
- <!-- Single element read BOOL (Coil) -->
-
-
- <!--testcase>
- <name>Single element read BOOL</name>
- <steps>
- <api-request name="Receive Read Request from application">
- <TestReadRequest className="org.apache.plc4x.test.driver.model.api.TestReadRequest">
- <fields>
- <field className="org.apache.plc4x.test.driver.model.api.TestField">
- <name>hurz</name>
- <address>holding-register:1:BOOL</address>
- </field>
- </fields>
- </TestReadRequest>
- </api-request>
- <outgoing-plc-message name="Send Modbus Input-Register Read Request">
- <parser-arguments>
- <response>false</response>
- </parser-arguments>
- <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
- <transactionIdentifier>10</transactionIdentifier>
- <unitIdentifier>1</unitIdentifier>
- <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersRequest">
- <startingAddress>0</startingAddress>
- <quantity>4</quantity>
- </pdu>
- </ModbusTcpADU>
- </outgoing-plc-message>
- <incoming-plc-message name="Receive Modbus Input-Register Read Response">
- <parser-arguments>
- <response>true</response>
- </parser-arguments>
- <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
- <transactionIdentifier>10</transactionIdentifier>
- <unitIdentifier>1</unitIdentifier>
- <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersResponse">
- <value>QEkP20BJD9s=</value>
- </pdu>
- </ModbusTcpADU>
- </incoming-plc-message>
- <api-response name="Report Read Response to application">
- <DefaultPlcReadResponse className="org.apache.plc4x.java.spi.messages.DefaultPlcReadResponse">
- <request className="org.apache.plc4x.java.spi.messages.DefaultPlcReadRequest">
- <hurz className="org.apache.plc4x.java.modbus.field.ModbusFieldHoldingRegister">
- <address>0</address>
- <dataType>IEC61131_REAL</dataType>
- <lengthBytes>8</lengthBytes>
- <lengthWords>4</lengthWords>
- <dataTypeSize>4</dataTypeSize>
- </hurz>
- </request>
- <hurz>
- <code>OK</code>
- <value className="org.apache.plc4x.java.api.value.PlcList">
- <object>java.util.Collections..UnmodifiableRandomAccessList</object>
- <object>org.apache.plc4x.java.api.value.PlcREAL</object>
- <object>
- <object>java.lang.Float</object>
- <object>3.1415927</object>
- </object>
- <object>org.apache.plc4x.java.api.value.PlcREAL</object>
- <object>
- <object>java.lang.Float</object>
- <object>3.1415927</object>
- </object>
- </value>
- </hurz>
- </DefaultPlcReadResponse>
- </api-response>
- </steps>
- </testcase-->
-
-
<testcase>
<name>Single element read request</name>
<steps>
@@ -114,7 +40,6 @@
</TestReadRequest>
</api-request>
<outgoing-plc-message name="Send Modbus Input-Register Read Request">
- <!-- 000a00000006010300000004 -->
<parser-arguments>
<response>false</response>
</parser-arguments>
@@ -128,7 +53,6 @@
</ModbusTcpADU>
</outgoing-plc-message>
<incoming-plc-message name="Receive Modbus Input-Register Read Response">
- <!-- 000b0000000b0103080000000000000000 -->
<parser-arguments>
<response>true</response>
</parser-arguments>
@@ -136,7 +60,7 @@
<transactionIdentifier>1</transactionIdentifier>
<unitIdentifier>1</unitIdentifier>
<pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersResponse">
- <value>QEkP20BJD9s=</value>
+ <value>QEkP2w==</value>
</pdu>
</ModbusTcpADU>
</incoming-plc-message>
@@ -177,7 +101,6 @@
</TestReadRequest>
</api-request>
<outgoing-plc-message name="Send Modbus Input-Register Read Request">
- <!-- 000a00000006010300000004 -->
<parser-arguments>
<response>false</response>
</parser-arguments>
@@ -191,7 +114,6 @@
</ModbusTcpADU>
</outgoing-plc-message>
<incoming-plc-message name="Receive Modbus Input-Register Read Response">
- <!-- 000b0000000b0103080000000000000000 -->
<parser-arguments>
<response>true</response>
</parser-arguments>
@@ -247,7 +169,6 @@
</TestReadRequest>
</api-request>
<outgoing-plc-message name="Send First Item Modbus Input-Register Read Request">
- <!-- 000a00000006010300000004 -->
<parser-arguments>
<response>false</response>
</parser-arguments>
@@ -261,7 +182,6 @@
</ModbusTcpADU>
</outgoing-plc-message>
<incoming-plc-message name="Receive First Item Modbus Input-Register Read Response">
- <!-- 000b0000000b0103080000000000000000 -->
<parser-arguments>
<response>true</response>
</parser-arguments>
@@ -269,7 +189,7 @@
<transactionIdentifier>1</transactionIdentifier>
<unitIdentifier>1</unitIdentifier>
<pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersResponse">
- <value>QEkP20BJD9s=</value>
+ <value>QEkP2w==</value>
</pdu>
</ModbusTcpADU>
</incoming-plc-message>
@@ -278,8 +198,8 @@
<response>false</response>
</parser-arguments>
<ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
- <transactionIdentifier>1</transactionIdentifier>
- <unitIdentifier>2</unitIdentifier>
+ <transactionIdentifier>2</transactionIdentifier>
+ <unitIdentifier>1</unitIdentifier>
<pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersRequest">
<startingAddress>2</startingAddress>
<quantity>2</quantity>
@@ -291,10 +211,10 @@
<response>true</response>
</parser-arguments>
<ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
- <transactionIdentifier>1</transactionIdentifier>
- <unitIdentifier>2</unitIdentifier>
+ <transactionIdentifier>2</transactionIdentifier>
+ <unitIdentifier>1</unitIdentifier>
<pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersResponse">
- <value>QEkP20BJD9s=</value>
+ <value>QEkP2w==</value>
</pdu>
</ModbusTcpADU>
</incoming-plc-message>
@@ -331,4 +251,132 @@
</steps>
</testcase>
+ <testcase>
+ <name>Single element write request</name>
+ <steps>
+ <api-request name="Receive Write Request from application">
+ <TestWriteRequest className="org.apache.plc4x.test.driver.model.api.TestWriteRequest">
+ <fields>
+ <field className="org.apache.plc4x.test.driver.model.api.TestValueField">
+ <name>hurz</name>
+ <address>holding-register:1:REAL</address>
+ <value>3.1415927</value>
+ </field>
+ </fields>
+ </TestWriteRequest>
+ </api-request>
+ <outgoing-plc-message name="Send Modbus Input-Register Write Request">
+ <parser-arguments>
+ <response>false</response>
+ </parser-arguments>
+ <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
+ <transactionIdentifier>1</transactionIdentifier>
+ <unitIdentifier>1</unitIdentifier>
+ <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUWriteMultipleHoldingRegistersRequest">
+ <startingAddress>0</startingAddress>
+ <quantity>2</quantity>
+ <value>QEkP2w==</value>
+ </pdu>
+ </ModbusTcpADU>
+ </outgoing-plc-message>
+ <incoming-plc-message name="Receive Modbus Input-Register Write Response">
+ <parser-arguments>
+ <response>true</response>
+ </parser-arguments>
+ <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
+ <transactionIdentifier>1</transactionIdentifier>
+ <unitIdentifier>1</unitIdentifier>
+ <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUWriteMultipleHoldingRegistersResponse">
+ <startingAddress>0</startingAddress>
+ <quantity>2</quantity>
+ </pdu>
+ </ModbusTcpADU>
+ </incoming-plc-message>
+ <api-response name="Report Write Response to application">
+ <PlcWriteResponse>
+ <PlcWriteRequest>
+ <fields>
+ <hurz>
+ <ModbusFieldHoldingRegister>
+ <address>0</address>
+ <numberOfElements>1</numberOfElements>
+ <dataType>IEC61131_REAL</dataType>
+ </ModbusFieldHoldingRegister>
+ <value>3.1415927</value>
+ </hurz>
+ </fields>
+ </PlcWriteRequest>
+ <fields>
+ <hurz result="OK"/>
+ </fields>
+ </PlcWriteResponse>
+ </api-response>
+ </steps>
+ </testcase>
+
+ <testcase>
+ <name>Array element write request</name>
+ <steps>
+ <api-request name="Receive Write Request from application">
+ <TestWriteRequest className="org.apache.plc4x.test.driver.model.api.TestWriteRequest">
+ <fields>
+ <field className="org.apache.plc4x.test.driver.model.api.TestValueField">
+ <name>hurz</name>
+ <address>holding-register:1:REAL[2]</address>
+ <value>3.1415927</value>
+ <value>3.1415927</value>
+ </field>
+ </fields>
+ </TestWriteRequest>
+ </api-request>
+ <outgoing-plc-message name="Send Modbus Input-Register Write Request">
+ <parser-arguments>
+ <response>false</response>
+ </parser-arguments>
+ <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
+ <transactionIdentifier>1</transactionIdentifier>
+ <unitIdentifier>1</unitIdentifier>
+ <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUWriteMultipleHoldingRegistersRequest">
+ <startingAddress>0</startingAddress>
+ <quantity>4</quantity>
+ <value>QEkP20BJD9s=</value>
+ </pdu>
+ </ModbusTcpADU>
+ </outgoing-plc-message>
+ <incoming-plc-message name="Receive Modbus Input-Register Write Response">
+ <parser-arguments>
+ <response>true</response>
+ </parser-arguments>
+ <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
+ <transactionIdentifier>1</transactionIdentifier>
+ <unitIdentifier>1</unitIdentifier>
+ <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUWriteMultipleHoldingRegistersResponse">
+ <startingAddress>0</startingAddress>
+ <quantity>4</quantity>
+ </pdu>
+ </ModbusTcpADU>
+ </incoming-plc-message>
+ <api-response name="Report Write Response to application">
+ <PlcWriteResponse>
+ <PlcWriteRequest>
+ <fields>
+ <hurz>
+ <ModbusFieldHoldingRegister>
+ <address>0</address>
+ <numberOfElements>2</numberOfElements>
+ <dataType>IEC61131_REAL</dataType>
+ </ModbusFieldHoldingRegister>
+ <value>3.1415927</value>
+ <value>3.1415927</value>
+ </hurz>
+ </fields>
+ </PlcWriteRequest>
+ <fields>
+ <hurz result="OK"/>
+ </fields>
+ </PlcWriteResponse>
+ </api-response>
+ </steps>
+ </testcase>
+
</test:driver-testsuite>
diff --git a/sandbox/plc4c/generated-sources/modbus/include/modbus_pdu.h b/sandbox/plc4c/generated-sources/modbus/include/modbus_pdu.h
index 1ba9881..46fdefc 100644
--- a/sandbox/plc4c/generated-sources/modbus/include/modbus_pdu.h
+++ b/sandbox/plc4c/generated-sources/modbus/include/modbus_pdu.h
@@ -29,6 +29,7 @@
#include "modbus_pdu_read_file_record_response_item.h"
#include "modbus_pdu_write_file_record_response_item.h"
#include "modbus_pdu.h"
+#include "modbus_error_code.h"
#ifdef __cplusplus
extern "C" {
@@ -95,7 +96,7 @@ struct plc4c_modbus_read_write_modbus_pdu {
/* Properties */
union {
struct { /* ModbusPDUError */
- uint8_t modbus_pdu_error_exception_code;
+ plc4c_modbus_read_write_modbus_error_code modbus_pdu_error_exception_code;
};
struct { /* ModbusPDUReadDiscreteInputsRequest */
uint16_t modbus_pdu_read_discrete_inputs_request_starting_address;
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c
index c6daca6..31789e5 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c
@@ -148,8 +148,8 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
if(errorFlag == true) { /* ModbusPDUError */
(*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_error;
- // Simple Field (exceptionCode)
- uint8_t exceptionCode = 0;
+ // Enum field (exceptionCode)
+ plc4c_modbus_read_write_modbus_error_code exceptionCode = plc4c_modbus_read_write_modbus_error_code_null();
_res = plc4c_spi_read_unsigned_byte(io, 8, (uint8_t*) &exceptionCode);
if(_res != OK) {
return _res;
@@ -1195,7 +1195,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_serialize(plc4c_spi_write_b
switch(_message->_type) {
case plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_error: {
- // Simple Field (exceptionCode)
+ // Enum field (exceptionCode)
_res = plc4c_spi_write_unsigned_byte(io, 8, _message->modbus_pdu_error_exception_code);
if(_res != OK) {
return _res;
@@ -1905,7 +1905,7 @@ uint16_t plc4c_modbus_read_write_modbus_pdu_length_in_bits(plc4c_modbus_read_wri
switch(_message->_type) {
case plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_error: {
- // Simple field (exceptionCode)
+ // Enum Field (exceptionCode)
lengthInBits += 8;
break;
diff --git a/sandbox/plc4go/assets/testing/protocols/modbus/DriverTestsuite.xml b/sandbox/plc4go/assets/testing/protocols/modbus/DriverTestsuite.xml
index afd165f..ec63d64 100644
--- a/sandbox/plc4go/assets/testing/protocols/modbus/DriverTestsuite.xml
+++ b/sandbox/plc4go/assets/testing/protocols/modbus/DriverTestsuite.xml
@@ -60,7 +60,7 @@
<transactionIdentifier>1</transactionIdentifier>
<unitIdentifier>1</unitIdentifier>
<pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersResponse">
- <value>QEkP20BJD9s=</value>
+ <value>QEkP2w==</value>
</pdu>
</ModbusTcpADU>
</incoming-plc-message>
@@ -169,7 +169,6 @@
</TestReadRequest>
</api-request>
<outgoing-plc-message name="Send First Item Modbus Input-Register Read Request">
- <!-- 000a00000006010300000004 -->
<parser-arguments>
<response>false</response>
</parser-arguments>
@@ -183,7 +182,6 @@
</ModbusTcpADU>
</outgoing-plc-message>
<incoming-plc-message name="Receive First Item Modbus Input-Register Read Response">
- <!-- 000b0000000b0103080000000000000000 -->
<parser-arguments>
<response>true</response>
</parser-arguments>
@@ -191,7 +189,7 @@
<transactionIdentifier>1</transactionIdentifier>
<unitIdentifier>1</unitIdentifier>
<pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersResponse">
- <value>QEkP20BJD9s=</value>
+ <value>QEkP2w==</value>
</pdu>
</ModbusTcpADU>
</incoming-plc-message>
@@ -200,8 +198,8 @@
<response>false</response>
</parser-arguments>
<ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
- <transactionIdentifier>1</transactionIdentifier>
- <unitIdentifier>2</unitIdentifier>
+ <transactionIdentifier>2</transactionIdentifier>
+ <unitIdentifier>1</unitIdentifier>
<pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersRequest">
<startingAddress>2</startingAddress>
<quantity>2</quantity>
@@ -213,10 +211,10 @@
<response>true</response>
</parser-arguments>
<ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
- <transactionIdentifier>1</transactionIdentifier>
- <unitIdentifier>2</unitIdentifier>
+ <transactionIdentifier>2</transactionIdentifier>
+ <unitIdentifier>1</unitIdentifier>
<pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersResponse">
- <value>QEkP20BJD9s=</value>
+ <value>QEkP2w==</value>
</pdu>
</ModbusTcpADU>
</incoming-plc-message>
@@ -253,4 +251,132 @@
</steps>
</testcase>
+ <testcase>
+ <name>Single element write request</name>
+ <steps>
+ <api-request name="Receive Write Request from application">
+ <TestWriteRequest className="org.apache.plc4x.test.driver.model.api.TestWriteRequest">
+ <fields>
+ <field className="org.apache.plc4x.test.driver.model.api.TestValueField">
+ <name>hurz</name>
+ <address>holding-register:1:REAL</address>
+ <value>3.1415927</value>
+ </field>
+ </fields>
+ </TestWriteRequest>
+ </api-request>
+ <outgoing-plc-message name="Send Modbus Input-Register Write Request">
+ <parser-arguments>
+ <response>false</response>
+ </parser-arguments>
+ <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
+ <transactionIdentifier>1</transactionIdentifier>
+ <unitIdentifier>1</unitIdentifier>
+ <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUWriteMultipleHoldingRegistersRequest">
+ <startingAddress>0</startingAddress>
+ <quantity>2</quantity>
+ <value>QEkP2w==</value>
+ </pdu>
+ </ModbusTcpADU>
+ </outgoing-plc-message>
+ <incoming-plc-message name="Receive Modbus Input-Register Write Response">
+ <parser-arguments>
+ <response>true</response>
+ </parser-arguments>
+ <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
+ <transactionIdentifier>1</transactionIdentifier>
+ <unitIdentifier>1</unitIdentifier>
+ <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUWriteMultipleHoldingRegistersResponse">
+ <startingAddress>0</startingAddress>
+ <quantity>2</quantity>
+ </pdu>
+ </ModbusTcpADU>
+ </incoming-plc-message>
+ <api-response name="Report Write Response to application">
+ <PlcWriteResponse>
+ <PlcWriteRequest>
+ <fields>
+ <hurz>
+ <ModbusFieldHoldingRegister>
+ <address>0</address>
+ <numberOfElements>1</numberOfElements>
+ <dataType>IEC61131_REAL</dataType>
+ </ModbusFieldHoldingRegister>
+ <value>3.141593</value>
+ </hurz>
+ </fields>
+ </PlcWriteRequest>
+ <fields>
+ <hurz result="OK"/>
+ </fields>
+ </PlcWriteResponse>
+ </api-response>
+ </steps>
+ </testcase>
+
+ <testcase>
+ <name>Array element write request</name>
+ <steps>
+ <api-request name="Receive Write Request from application">
+ <TestWriteRequest className="org.apache.plc4x.test.driver.model.api.TestWriteRequest">
+ <fields>
+ <field className="org.apache.plc4x.test.driver.model.api.TestValueField">
+ <name>hurz</name>
+ <address>holding-register:1:REAL[2]</address>
+ <value>3.1415927</value>
+ <value>3.1415927</value>
+ </field>
+ </fields>
+ </TestWriteRequest>
+ </api-request>
+ <outgoing-plc-message name="Send Modbus Input-Register Write Request">
+ <parser-arguments>
+ <response>false</response>
+ </parser-arguments>
+ <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
+ <transactionIdentifier>1</transactionIdentifier>
+ <unitIdentifier>1</unitIdentifier>
+ <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUWriteMultipleHoldingRegistersRequest">
+ <startingAddress>0</startingAddress>
+ <quantity>4</quantity>
+ <value>QEkP20BJD9s=</value>
+ </pdu>
+ </ModbusTcpADU>
+ </outgoing-plc-message>
+ <incoming-plc-message name="Receive Modbus Input-Register Write Response">
+ <parser-arguments>
+ <response>true</response>
+ </parser-arguments>
+ <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
+ <transactionIdentifier>1</transactionIdentifier>
+ <unitIdentifier>1</unitIdentifier>
+ <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUWriteMultipleHoldingRegistersResponse">
+ <startingAddress>0</startingAddress>
+ <quantity>4</quantity>
+ </pdu>
+ </ModbusTcpADU>
+ </incoming-plc-message>
+ <api-response name="Report Write Response to application">
+ <PlcWriteResponse>
+ <PlcWriteRequest>
+ <fields>
+ <hurz>
+ <ModbusFieldHoldingRegister>
+ <address>0</address>
+ <numberOfElements>2</numberOfElements>
+ <dataType>IEC61131_REAL</dataType>
+ </ModbusFieldHoldingRegister>
+ <value>3.141593</value>
+ <value>3.141593</value>
+ </hurz>
+ </fields>
+ </PlcWriteRequest>
+ <fields>
+ <hurz result="OK"/>
+ </fields>
+ </PlcWriteResponse>
+ </api-response>
+ </steps>
+ </testcase>
+
</test:driver-testsuite>
diff --git a/sandbox/plc4go/cmd/main/drivers/bacnetip_test.go b/sandbox/plc4go/cmd/main/drivers/bacnetip_test.go
index b9073e4..b7b9441 100644
--- a/sandbox/plc4go/cmd/main/drivers/bacnetip_test.go
+++ b/sandbox/plc4go/cmd/main/drivers/bacnetip_test.go
@@ -31,7 +31,7 @@ func TestBacnetIp(t *testing.T) {
if err != nil {
t.Errorf("Error decoding test input")
}
- rb := utils.ReadBufferNew(request)
+ rb := utils.NewReadBuffer(request)
adu, err := model.BVLCParse(rb)
if err != nil {
t.Errorf("Error parsing: %s", err)
diff --git a/sandbox/plc4go/cmd/main/drivers/knxnetip_test.go b/sandbox/plc4go/cmd/main/drivers/knxnetip_test.go
index e00fd0a..15549cf 100644
--- a/sandbox/plc4go/cmd/main/drivers/knxnetip_test.go
+++ b/sandbox/plc4go/cmd/main/drivers/knxnetip_test.go
@@ -19,10 +19,10 @@
package drivers
import (
- "encoding/hex"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/knxnetip/readwrite/model"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
- "testing"
+ "encoding/hex"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/knxnetip/readwrite/model"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+ "testing"
)
func TestKnxNetIp(t *testing.T) {
@@ -31,7 +31,7 @@ func TestKnxNetIp(t *testing.T) {
if err != nil {
t.Errorf("Error decoding test input")
}
- rb := utils.ReadBufferNew(request)
+ rb := utils.NewReadBuffer(request)
adu, err := model.KNXNetIPMessageParse(rb)
if err != nil {
t.Errorf("Error parsing: %s", err)
diff --git a/sandbox/plc4go/cmd/main/drivers/modbus_test.go b/sandbox/plc4go/cmd/main/drivers/modbus_test.go
index b85b7c2..0e13563 100644
--- a/sandbox/plc4go/cmd/main/drivers/modbus_test.go
+++ b/sandbox/plc4go/cmd/main/drivers/modbus_test.go
@@ -49,7 +49,7 @@ func test(t *testing.T, rawMessage string, response bool) {
if err != nil {
t.Errorf("Error decoding test input")
}
- rb := utils.ReadBufferNew(request)
+ rb := utils.NewReadBuffer(request)
adu, err := model.ModbusTcpADUParse(rb, response)
if err != nil {
t.Errorf("Error parsing: %s", err)
@@ -64,7 +64,7 @@ func test(t *testing.T, rawMessage string, response bool) {
var deserializedAdu *model.ModbusTcpADU
xml.Unmarshal(serialized, &deserializedAdu)
- wb := utils.WriteBufferNew()
+ wb := utils.NewWriteBuffer()
val := model.CastIModbusTcpADU(deserializedAdu)
val.Serialize(*wb)
serializedMessage := hex.EncodeToString(wb.GetBytes())
@@ -88,7 +88,7 @@ func Connection(t *testing.T) {
Pdu: &pdu,
}
- wb := utils.WriteBufferNew()
+ wb := utils.NewWriteBuffer()
adu.Serialize(*wb)
servAddr := "192.168.23.30:502"
@@ -118,7 +118,7 @@ func Connection(t *testing.T) {
os.Exit(1)
}
- rb := utils.ReadBufferNew(buffer[0:numBytes])
+ rb := utils.NewReadBuffer(buffer[0:numBytes])
response, err := model.ModbusTcpADUParse(rb, true)
if err != nil {
println("Parsing response failed:", err.Error())
@@ -142,6 +142,7 @@ func TestPlc4goDriver(t *testing.T) {
connectionResult := <-crc
if connectionResult.Err != nil {
t.Errorf("error connecting to PLC: %s", connectionResult.Err.Error())
+ t.Fail()
return
}
connection := connectionResult.Connection
@@ -151,6 +152,7 @@ func TestPlc4goDriver(t *testing.T) {
pingResult := <-pingResultChannel
if pingResult.Err != nil {
t.Errorf("couldn't ping device: %s", pingResult.Err.Error())
+ t.Fail()
return
}
@@ -164,6 +166,7 @@ func TestPlc4goDriver(t *testing.T) {
readRequest, err := rrb.Build()
if err != nil {
t.Errorf("error preparing read-request: %s", connectionResult.Err.Error())
+ t.Fail()
return
}
@@ -174,11 +177,38 @@ func TestPlc4goDriver(t *testing.T) {
rrr := <-rrc
if rrr.Err != nil {
t.Errorf("error executing read-request: %s", rrr.Err.Error())
+ t.Fail()
return
}
// Do something with the response
- value := rrr.Response.GetValue("field")
+ value1 := rrr.Response.GetValue("field1")
+ value2 := rrr.Response.GetValue("field2")
+ fmt.Printf("\n\nResult field1: %f\n", value1.GetFloat32())
+ fmt.Printf("\n\nResult field1: %f\n", value2.GetFloat32())
+
+ // Prepare a write-request
+ wrb := connection.WriteRequestBuilder()
+ wrb.AddItem("field1", "holding-register:1:REAL", 1.2345)
+ wrb.AddItem("field2", "holding-register:3:REAL", 2.3456)
+ writeRequest, err := rrb.Build()
+ if err != nil {
+ t.Errorf("error preparing read-request: %s", connectionResult.Err.Error())
+ t.Fail()
+ return
+ }
+
+ // Execute a write-request
+ wrc := writeRequest.Execute()
+
+ // Wait for the response to finish
+ wrr := <-wrc
+ if wrr.Err != nil {
+ t.Errorf("error executing read-request: %s", rrr.Err.Error())
+ t.Fail()
+ return
+ }
- fmt.Printf("\n\nResult: %f\n", value)
+ fmt.Printf("\n\nResult field1: %d\n", wrr.Response.GetResponseCode("field1"))
+ fmt.Printf("\n\nResult field2: %d\n", wrr.Response.GetResponseCode("field2"))
}
diff --git a/sandbox/plc4go/cmd/main/drivers/s7_test.go b/sandbox/plc4go/cmd/main/drivers/s7_test.go
index 6ce57fb..8856f9e 100644
--- a/sandbox/plc4go/cmd/main/drivers/s7_test.go
+++ b/sandbox/plc4go/cmd/main/drivers/s7_test.go
@@ -19,10 +19,10 @@
package drivers
import (
- "encoding/hex"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/s7/readwrite/model"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
- "testing"
+ "encoding/hex"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/s7/readwrite/model"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+ "testing"
)
func TestS7(t *testing.T) {
@@ -31,7 +31,7 @@ func TestS7(t *testing.T) {
if err != nil {
// Output an error ...
}
- rb := utils.ReadBufferNew(request)
+ rb := utils.NewReadBuffer(request)
adu, err := model.TPKTPacketParse(rb)
if err != nil {
t.Errorf("Error parsing: %s", err)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
index 3778a5d..28f52fd 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
@@ -19,215 +19,214 @@
package model
import (
- "encoding/xml"
- "errors"
- "io"
- log "github.com/sirupsen/logrus"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+ "encoding/xml"
+ "errors"
+ log "github.com/sirupsen/logrus"
+ "io"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
)
// The data-structure of this message
type APDUAbort struct {
- Server bool
- OriginalInvokeId uint8
- AbortReason uint8
- APDU
+ Server bool
+ OriginalInvokeId uint8
+ AbortReason uint8
+ APDU
}
// The corresponding interface
type IAPDUAbort interface {
- IAPDU
- Serialize(io utils.WriteBuffer) error
+ IAPDU
+ Serialize(io utils.WriteBuffer) error
}
// Accessors for discriminator values.
func (m APDUAbort) ApduType() uint8 {
- return 0x7
+ return 0x7
}
func (m APDUAbort) initialize() spi.Message {
- return m
+ return m
}
func NewAPDUAbort(server bool, originalInvokeId uint8, abortReason uint8) APDUInitializer {
- return &APDUAbort{Server: server, OriginalInvokeId: originalInvokeId, AbortReason: abortReason}
+ return &APDUAbort{Server: server, OriginalInvokeId: originalInvokeId, AbortReason: abortReason}
}
func CastIAPDUAbort(structType interface{}) IAPDUAbort {
- castFunc := func(typ interface{}) IAPDUAbort {
- if iAPDUAbort, ok := typ.(IAPDUAbort); ok {
- return iAPDUAbort
- }
- return nil
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) IAPDUAbort {
+ if iAPDUAbort, ok := typ.(IAPDUAbort); ok {
+ return iAPDUAbort
+ }
+ return nil
+ }
+ return castFunc(structType)
}
func CastAPDUAbort(structType interface{}) APDUAbort {
- castFunc := func(typ interface{}) APDUAbort {
- if sAPDUAbort, ok := typ.(APDUAbort); ok {
- return sAPDUAbort
- }
- if sAPDUAbort, ok := typ.(*APDUAbort); ok {
- return *sAPDUAbort
- }
- return APDUAbort{}
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) APDUAbort {
+ if sAPDUAbort, ok := typ.(APDUAbort); ok {
+ return sAPDUAbort
+ }
+ if sAPDUAbort, ok := typ.(*APDUAbort); ok {
+ return *sAPDUAbort
+ }
+ return APDUAbort{}
+ }
+ return castFunc(structType)
}
func (m APDUAbort) LengthInBits() uint16 {
- var lengthInBits uint16 = m.APDU.LengthInBits()
+ var lengthInBits uint16 = m.APDU.LengthInBits()
- // Reserved Field (reserved)
- lengthInBits += 3
+ // Reserved Field (reserved)
+ lengthInBits += 3
- // Simple field (server)
- lengthInBits += 1
+ // Simple field (server)
+ lengthInBits += 1
- // Simple field (originalInvokeId)
- lengthInBits += 8
+ // Simple field (originalInvokeId)
+ lengthInBits += 8
- // Simple field (abortReason)
- lengthInBits += 8
+ // Simple field (abortReason)
+ lengthInBits += 8
- return lengthInBits
+ return lengthInBits
}
func (m APDUAbort) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
func APDUAbortParse(io *utils.ReadBuffer) (APDUInitializer, error) {
- // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
- {
- reserved, _err := io.ReadUint8(3)
- if _err != nil {
- return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
- }
- if reserved != uint8(0x00) {
- log.WithFields(log.Fields{
- "expected value": uint8(0x00),
- "got value": reserved,
- }).Info("Got unexpected response.")
- }
- }
-
- // Simple Field (server)
- server, _serverErr := io.ReadBit()
- if _serverErr != nil {
- return nil, errors.New("Error parsing 'server' field " + _serverErr.Error())
- }
-
- // Simple Field (originalInvokeId)
- originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
- if _originalInvokeIdErr != nil {
- return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
- }
-
- // Simple Field (abortReason)
- abortReason, _abortReasonErr := io.ReadUint8(8)
- if _abortReasonErr != nil {
- return nil, errors.New("Error parsing 'abortReason' field " + _abortReasonErr.Error())
- }
-
- // Create the instance
- return NewAPDUAbort(server, originalInvokeId, abortReason), nil
+ // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+ {
+ reserved, _err := io.ReadUint8(3)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+ }
+ if reserved != uint8(0x00) {
+ log.WithFields(log.Fields{
+ "expected value": uint8(0x00),
+ "got value": reserved,
+ }).Info("Got unexpected response.")
+ }
+ }
+
+ // Simple Field (server)
+ server, _serverErr := io.ReadBit()
+ if _serverErr != nil {
+ return nil, errors.New("Error parsing 'server' field " + _serverErr.Error())
+ }
+
+ // Simple Field (originalInvokeId)
+ originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
+ if _originalInvokeIdErr != nil {
+ return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+ }
+
+ // Simple Field (abortReason)
+ abortReason, _abortReasonErr := io.ReadUint8(8)
+ if _abortReasonErr != nil {
+ return nil, errors.New("Error parsing 'abortReason' field " + _abortReasonErr.Error())
+ }
+
+ // Create the instance
+ return NewAPDUAbort(server, originalInvokeId, abortReason), nil
}
func (m APDUAbort) Serialize(io utils.WriteBuffer) error {
- ser := func() error {
-
- // Reserved Field (reserved)
- {
- _err := io.WriteUint8(3, uint8(0x00))
- if _err != nil {
- return errors.New("Error serializing 'reserved' field " + _err.Error())
- }
- }
-
- // Simple Field (server)
- server := bool(m.Server)
- _serverErr := io.WriteBit((bool) (server))
- if _serverErr != nil {
- return errors.New("Error serializing 'server' field " + _serverErr.Error())
- }
-
- // Simple Field (originalInvokeId)
- originalInvokeId := uint8(m.OriginalInvokeId)
- _originalInvokeIdErr := io.WriteUint8(8, (originalInvokeId))
- if _originalInvokeIdErr != nil {
- return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
- }
-
- // Simple Field (abortReason)
- abortReason := uint8(m.AbortReason)
- _abortReasonErr := io.WriteUint8(8, (abortReason))
- if _abortReasonErr != nil {
- return errors.New("Error serializing 'abortReason' field " + _abortReasonErr.Error())
- }
-
- return nil
- }
- return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+ ser := func() error {
+
+ // Reserved Field (reserved)
+ {
+ _err := io.WriteUint8(3, uint8(0x00))
+ if _err != nil {
+ return errors.New("Error serializing 'reserved' field " + _err.Error())
+ }
+ }
+
+ // Simple Field (server)
+ server := bool(m.Server)
+ _serverErr := io.WriteBit((server))
+ if _serverErr != nil {
+ return errors.New("Error serializing 'server' field " + _serverErr.Error())
+ }
+
+ // Simple Field (originalInvokeId)
+ originalInvokeId := uint8(m.OriginalInvokeId)
+ _originalInvokeIdErr := io.WriteUint8(8, (originalInvokeId))
+ if _originalInvokeIdErr != nil {
+ return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+ }
+
+ // Simple Field (abortReason)
+ abortReason := uint8(m.AbortReason)
+ _abortReasonErr := io.WriteUint8(8, (abortReason))
+ if _abortReasonErr != nil {
+ return errors.New("Error serializing 'abortReason' field " + _abortReasonErr.Error())
+ }
+
+ return nil
+ }
+ return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
}
func (m *APDUAbort) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
- for {
- token, err := d.Token()
- if err != nil {
- if err == io.EOF {
- return nil
- }
- return err
- }
- switch token.(type) {
- case xml.StartElement:
- tok := token.(xml.StartElement)
- switch tok.Name.Local {
- case "server":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.Server = data
- case "originalInvokeId":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.OriginalInvokeId = data
- case "abortReason":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.AbortReason = data
- }
- }
- }
+ for {
+ token, err := d.Token()
+ if err != nil {
+ if err == io.EOF {
+ return nil
+ }
+ return err
+ }
+ switch token.(type) {
+ case xml.StartElement:
+ tok := token.(xml.StartElement)
+ switch tok.Name.Local {
+ case "server":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.Server = data
+ case "originalInvokeId":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.OriginalInvokeId = data
+ case "abortReason":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.AbortReason = data
+ }
+ }
+ }
}
func (m APDUAbort) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
- if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
- {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.APDUAbort"},
- }}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.Server, xml.StartElement{Name: xml.Name{Local: "server"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.OriginalInvokeId, xml.StartElement{Name: xml.Name{Local: "originalInvokeId"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.AbortReason, xml.StartElement{Name: xml.Name{Local: "abortReason"}}); err != nil {
- return err
- }
- if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
- return err
- }
- return nil
+ if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+ {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.APDUAbort"},
+ }}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.Server, xml.StartElement{Name: xml.Name{Local: "server"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.OriginalInvokeId, xml.StartElement{Name: xml.Name{Local: "originalInvokeId"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.AbortReason, xml.StartElement{Name: xml.Name{Local: "abortReason"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+ return err
+ }
+ return nil
}
-
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
index 9c91eb0..5a002f4 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
@@ -19,400 +19,399 @@
package model
import (
- "encoding/xml"
- "errors"
- "io"
- log "github.com/sirupsen/logrus"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
- "reflect"
+ "encoding/xml"
+ "errors"
+ log "github.com/sirupsen/logrus"
+ "io"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+ "reflect"
)
// The data-structure of this message
type APDUComplexAck struct {
- SegmentedMessage bool
- MoreFollows bool
- OriginalInvokeId uint8
- SequenceNumber *uint8
- ProposedWindowSize *uint8
- ServiceAck IBACnetServiceAck
- APDU
+ SegmentedMessage bool
+ MoreFollows bool
+ OriginalInvokeId uint8
+ SequenceNumber *uint8
+ ProposedWindowSize *uint8
+ ServiceAck IBACnetServiceAck
+ APDU
}
// The corresponding interface
type IAPDUComplexAck interface {
- IAPDU
- Serialize(io utils.WriteBuffer) error
+ IAPDU
+ Serialize(io utils.WriteBuffer) error
}
// Accessors for discriminator values.
func (m APDUComplexAck) ApduType() uint8 {
- return 0x3
+ return 0x3
}
func (m APDUComplexAck) initialize() spi.Message {
- return m
+ return m
}
func NewAPDUComplexAck(segmentedMessage bool, moreFollows bool, originalInvokeId uint8, sequenceNumber *uint8, proposedWindowSize *uint8, serviceAck IBACnetServiceAck) APDUInitializer {
- return &APDUComplexAck{SegmentedMessage: segmentedMessage, MoreFollows: moreFollows, OriginalInvokeId: originalInvokeId, SequenceNumber: sequenceNumber, ProposedWindowSize: proposedWindowSize, ServiceAck: serviceAck}
+ return &APDUComplexAck{SegmentedMessage: segmentedMessage, MoreFollows: moreFollows, OriginalInvokeId: originalInvokeId, SequenceNumber: sequenceNumber, ProposedWindowSize: proposedWindowSize, ServiceAck: serviceAck}
}
func CastIAPDUComplexAck(structType interface{}) IAPDUComplexAck {
- castFunc := func(typ interface{}) IAPDUComplexAck {
- if iAPDUComplexAck, ok := typ.(IAPDUComplexAck); ok {
- return iAPDUComplexAck
- }
- return nil
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) IAPDUComplexAck {
+ if iAPDUComplexAck, ok := typ.(IAPDUComplexAck); ok {
+ return iAPDUComplexAck
+ }
+ return nil
+ }
+ return castFunc(structType)
}
func CastAPDUComplexAck(structType interface{}) APDUComplexAck {
- castFunc := func(typ interface{}) APDUComplexAck {
- if sAPDUComplexAck, ok := typ.(APDUComplexAck); ok {
- return sAPDUComplexAck
- }
- if sAPDUComplexAck, ok := typ.(*APDUComplexAck); ok {
- return *sAPDUComplexAck
- }
- return APDUComplexAck{}
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) APDUComplexAck {
+ if sAPDUComplexAck, ok := typ.(APDUComplexAck); ok {
+ return sAPDUComplexAck
+ }
+ if sAPDUComplexAck, ok := typ.(*APDUComplexAck); ok {
+ return *sAPDUComplexAck
+ }
+ return APDUComplexAck{}
+ }
+ return castFunc(structType)
}
func (m APDUComplexAck) LengthInBits() uint16 {
- var lengthInBits uint16 = m.APDU.LengthInBits()
+ var lengthInBits uint16 = m.APDU.LengthInBits()
- // Simple field (segmentedMessage)
- lengthInBits += 1
+ // Simple field (segmentedMessage)
+ lengthInBits += 1
- // Simple field (moreFollows)
- lengthInBits += 1
+ // Simple field (moreFollows)
+ lengthInBits += 1
- // Reserved Field (reserved)
- lengthInBits += 2
+ // Reserved Field (reserved)
+ lengthInBits += 2
- // Simple field (originalInvokeId)
- lengthInBits += 8
+ // Simple field (originalInvokeId)
+ lengthInBits += 8
- // Optional Field (sequenceNumber)
- if m.SequenceNumber != nil {
- lengthInBits += 8
- }
+ // Optional Field (sequenceNumber)
+ if m.SequenceNumber != nil {
+ lengthInBits += 8
+ }
- // Optional Field (proposedWindowSize)
- if m.ProposedWindowSize != nil {
- lengthInBits += 8
- }
+ // Optional Field (proposedWindowSize)
+ if m.ProposedWindowSize != nil {
+ lengthInBits += 8
+ }
- // Simple field (serviceAck)
- lengthInBits += m.ServiceAck.LengthInBits()
+ // Simple field (serviceAck)
+ lengthInBits += m.ServiceAck.LengthInBits()
- return lengthInBits
+ return lengthInBits
}
func (m APDUComplexAck) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
func APDUComplexAckParse(io *utils.ReadBuffer) (APDUInitializer, error) {
- // Simple Field (segmentedMessage)
- segmentedMessage, _segmentedMessageErr := io.ReadBit()
- if _segmentedMessageErr != nil {
- return nil, errors.New("Error parsing 'segmentedMessage' field " + _segmentedMessageErr.Error())
- }
-
- // Simple Field (moreFollows)
- moreFollows, _moreFollowsErr := io.ReadBit()
- if _moreFollowsErr != nil {
- return nil, errors.New("Error parsing 'moreFollows' field " + _moreFollowsErr.Error())
- }
-
- // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
- {
- reserved, _err := io.ReadUint8(2)
- if _err != nil {
- return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
- }
- if reserved != uint8(0) {
- log.WithFields(log.Fields{
- "expected value": uint8(0),
- "got value": reserved,
- }).Info("Got unexpected response.")
- }
- }
-
- // Simple Field (originalInvokeId)
- originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
- if _originalInvokeIdErr != nil {
- return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
- }
-
- // Optional Field (sequenceNumber) (Can be skipped, if a given expression evaluates to false)
- var sequenceNumber *uint8 = nil
- if segmentedMessage {
- _val, _err := io.ReadUint8(8)
- if _err != nil {
- return nil, errors.New("Error parsing 'sequenceNumber' field " + _err.Error())
- }
-
- sequenceNumber = &_val
- }
-
- // Optional Field (proposedWindowSize) (Can be skipped, if a given expression evaluates to false)
- var proposedWindowSize *uint8 = nil
- if segmentedMessage {
- _val, _err := io.ReadUint8(8)
- if _err != nil {
- return nil, errors.New("Error parsing 'proposedWindowSize' field " + _err.Error())
- }
-
- proposedWindowSize = &_val
- }
-
- // Simple Field (serviceAck)
- _serviceAckMessage, _err := BACnetServiceAckParse(io)
- if _err != nil {
- return nil, errors.New("Error parsing simple field 'serviceAck'. " + _err.Error())
- }
- var serviceAck IBACnetServiceAck
- serviceAck, _serviceAckOk := _serviceAckMessage.(IBACnetServiceAck)
- if !_serviceAckOk {
- return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_serviceAckMessage).Name() + " to IBACnetServiceAck")
- }
-
- // Create the instance
- return NewAPDUComplexAck(segmentedMessage, moreFollows, originalInvokeId, sequenceNumber, proposedWindowSize, serviceAck), nil
+ // Simple Field (segmentedMessage)
+ segmentedMessage, _segmentedMessageErr := io.ReadBit()
+ if _segmentedMessageErr != nil {
+ return nil, errors.New("Error parsing 'segmentedMessage' field " + _segmentedMessageErr.Error())
+ }
+
+ // Simple Field (moreFollows)
+ moreFollows, _moreFollowsErr := io.ReadBit()
+ if _moreFollowsErr != nil {
+ return nil, errors.New("Error parsing 'moreFollows' field " + _moreFollowsErr.Error())
+ }
+
+ // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+ {
+ reserved, _err := io.ReadUint8(2)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+ }
+ if reserved != uint8(0) {
+ log.WithFields(log.Fields{
+ "expected value": uint8(0),
+ "got value": reserved,
+ }).Info("Got unexpected response.")
+ }
+ }
+
+ // Simple Field (originalInvokeId)
+ originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
+ if _originalInvokeIdErr != nil {
+ return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+ }
+
+ // Optional Field (sequenceNumber) (Can be skipped, if a given expression evaluates to false)
+ var sequenceNumber *uint8 = nil
+ if segmentedMessage {
+ _val, _err := io.ReadUint8(8)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'sequenceNumber' field " + _err.Error())
+ }
+
+ sequenceNumber = &_val
+ }
+
+ // Optional Field (proposedWindowSize) (Can be skipped, if a given expression evaluates to false)
+ var proposedWindowSize *uint8 = nil
+ if segmentedMessage {
+ _val, _err := io.ReadUint8(8)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'proposedWindowSize' field " + _err.Error())
+ }
+
+ proposedWindowSize = &_val
+ }
+
+ // Simple Field (serviceAck)
+ _serviceAckMessage, _err := BACnetServiceAckParse(io)
+ if _err != nil {
+ return nil, errors.New("Error parsing simple field 'serviceAck'. " + _err.Error())
+ }
+ var serviceAck IBACnetServiceAck
+ serviceAck, _serviceAckOk := _serviceAckMessage.(IBACnetServiceAck)
+ if !_serviceAckOk {
+ return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_serviceAckMessage).Name() + " to IBACnetServiceAck")
+ }
+
+ // Create the instance
+ return NewAPDUComplexAck(segmentedMessage, moreFollows, originalInvokeId, sequenceNumber, proposedWindowSize, serviceAck), nil
}
func (m APDUComplexAck) Serialize(io utils.WriteBuffer) error {
- ser := func() error {
-
- // Simple Field (segmentedMessage)
- segmentedMessage := bool(m.SegmentedMessage)
- _segmentedMessageErr := io.WriteBit((bool) (segmentedMessage))
- if _segmentedMessageErr != nil {
- return errors.New("Error serializing 'segmentedMessage' field " + _segmentedMessageErr.Error())
- }
-
- // Simple Field (moreFollows)
- moreFollows := bool(m.MoreFollows)
- _moreFollowsErr := io.WriteBit((bool) (moreFollows))
- if _moreFollowsErr != nil {
- return errors.New("Error serializing 'moreFollows' field " + _moreFollowsErr.Error())
- }
-
- // Reserved Field (reserved)
- {
- _err := io.WriteUint8(2, uint8(0))
- if _err != nil {
- return errors.New("Error serializing 'reserved' field " + _err.Error())
- }
- }
-
- // Simple Field (originalInvokeId)
- originalInvokeId := uint8(m.OriginalInvokeId)
- _originalInvokeIdErr := io.WriteUint8(8, (originalInvokeId))
- if _originalInvokeIdErr != nil {
- return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
- }
-
- // Optional Field (sequenceNumber) (Can be skipped, if the value is null)
- var sequenceNumber *uint8 = nil
- if m.SequenceNumber != nil {
- sequenceNumber = m.SequenceNumber
- _sequenceNumberErr := io.WriteUint8(8, *(sequenceNumber))
- if _sequenceNumberErr != nil {
- return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
- }
- }
-
- // Optional Field (proposedWindowSize) (Can be skipped, if the value is null)
- var proposedWindowSize *uint8 = nil
- if m.ProposedWindowSize != nil {
- proposedWindowSize = m.ProposedWindowSize
- _proposedWindowSizeErr := io.WriteUint8(8, *(proposedWindowSize))
- if _proposedWindowSizeErr != nil {
- return errors.New("Error serializing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
- }
- }
-
- // Simple Field (serviceAck)
- serviceAck := CastIBACnetServiceAck(m.ServiceAck)
- _serviceAckErr := serviceAck.Serialize(io)
- if _serviceAckErr != nil {
- return errors.New("Error serializing 'serviceAck' field " + _serviceAckErr.Error())
- }
-
- return nil
- }
- return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+ ser := func() error {
+
+ // Simple Field (segmentedMessage)
+ segmentedMessage := bool(m.SegmentedMessage)
+ _segmentedMessageErr := io.WriteBit((segmentedMessage))
+ if _segmentedMessageErr != nil {
+ return errors.New("Error serializing 'segmentedMessage' field " + _segmentedMessageErr.Error())
+ }
+
+ // Simple Field (moreFollows)
+ moreFollows := bool(m.MoreFollows)
+ _moreFollowsErr := io.WriteBit((moreFollows))
+ if _moreFollowsErr != nil {
+ return errors.New("Error serializing 'moreFollows' field " + _moreFollowsErr.Error())
+ }
+
+ // Reserved Field (reserved)
+ {
+ _err := io.WriteUint8(2, uint8(0))
+ if _err != nil {
+ return errors.New("Error serializing 'reserved' field " + _err.Error())
+ }
+ }
+
+ // Simple Field (originalInvokeId)
+ originalInvokeId := uint8(m.OriginalInvokeId)
+ _originalInvokeIdErr := io.WriteUint8(8, (originalInvokeId))
+ if _originalInvokeIdErr != nil {
+ return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+ }
+
+ // Optional Field (sequenceNumber) (Can be skipped, if the value is null)
+ var sequenceNumber *uint8 = nil
+ if m.SequenceNumber != nil {
+ sequenceNumber = m.SequenceNumber
+ _sequenceNumberErr := io.WriteUint8(8, *(sequenceNumber))
+ if _sequenceNumberErr != nil {
+ return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
+ }
+ }
+
+ // Optional Field (proposedWindowSize) (Can be skipped, if the value is null)
+ var proposedWindowSize *uint8 = nil
+ if m.ProposedWindowSize != nil {
+ proposedWindowSize = m.ProposedWindowSize
+ _proposedWindowSizeErr := io.WriteUint8(8, *(proposedWindowSize))
+ if _proposedWindowSizeErr != nil {
+ return errors.New("Error serializing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
+ }
+ }
+
+ // Simple Field (serviceAck)
+ serviceAck := CastIBACnetServiceAck(m.ServiceAck)
+ _serviceAckErr := serviceAck.Serialize(io)
+ if _serviceAckErr != nil {
+ return errors.New("Error serializing 'serviceAck' field " + _serviceAckErr.Error())
+ }
+
+ return nil
+ }
+ return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
}
func (m *APDUComplexAck) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
- for {
- token, err := d.Token()
- if err != nil {
- if err == io.EOF {
- return nil
- }
- return err
- }
- switch token.(type) {
- case xml.StartElement:
- tok := token.(xml.StartElement)
- switch tok.Name.Local {
- case "segmentedMessage":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.SegmentedMessage = data
- case "moreFollows":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.MoreFollows = data
- case "originalInvokeId":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.OriginalInvokeId = data
- case "sequenceNumber":
- var data *uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.SequenceNumber = data
- case "proposedWindowSize":
- var data *uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.ProposedWindowSize = data
- case "serviceAck":
- switch tok.Attr[0].Value {
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckGetAlarmSummary":
- var dt *BACnetServiceAckGetAlarmSummary
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceAck = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckGetEnrollmentSummary":
- var dt *BACnetServiceAckGetEnrollmentSummary
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceAck = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckGetEventInformation":
- var dt *BACnetServiceAckGetEventInformation
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceAck = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckAtomicReadFile":
- var dt *BACnetServiceAckAtomicReadFile
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceAck = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckAtomicWriteFile":
- var dt *BACnetServiceAckAtomicWriteFile
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceAck = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckCreateObject":
- var dt *BACnetServiceAckCreateObject
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceAck = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckReadProperty":
- var dt *BACnetServiceAckReadProperty
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceAck = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckReadPropertyMultiple":
- var dt *BACnetServiceAckReadPropertyMultiple
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceAck = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckReadRange":
- var dt *BACnetServiceAckReadRange
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceAck = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckConfirmedPrivateTransfer":
- var dt *BACnetServiceAckConfirmedPrivateTransfer
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceAck = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckVTOpen":
- var dt *BACnetServiceAckVTOpen
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceAck = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckVTData":
- var dt *BACnetServiceAckVTData
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceAck = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckRemovedAuthenticate":
- var dt *BACnetServiceAckRemovedAuthenticate
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceAck = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckRemovedReadPropertyConditional":
- var dt *BACnetServiceAckRemovedReadPropertyConditional
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceAck = dt
- }
- }
- }
- }
+ for {
+ token, err := d.Token()
+ if err != nil {
+ if err == io.EOF {
+ return nil
+ }
+ return err
+ }
+ switch token.(type) {
+ case xml.StartElement:
+ tok := token.(xml.StartElement)
+ switch tok.Name.Local {
+ case "segmentedMessage":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.SegmentedMessage = data
+ case "moreFollows":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.MoreFollows = data
+ case "originalInvokeId":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.OriginalInvokeId = data
+ case "sequenceNumber":
+ var data *uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.SequenceNumber = data
+ case "proposedWindowSize":
+ var data *uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.ProposedWindowSize = data
+ case "serviceAck":
+ switch tok.Attr[0].Value {
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckGetAlarmSummary":
+ var dt *BACnetServiceAckGetAlarmSummary
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceAck = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckGetEnrollmentSummary":
+ var dt *BACnetServiceAckGetEnrollmentSummary
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceAck = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckGetEventInformation":
+ var dt *BACnetServiceAckGetEventInformation
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceAck = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckAtomicReadFile":
+ var dt *BACnetServiceAckAtomicReadFile
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceAck = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckAtomicWriteFile":
+ var dt *BACnetServiceAckAtomicWriteFile
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceAck = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckCreateObject":
+ var dt *BACnetServiceAckCreateObject
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceAck = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckReadProperty":
+ var dt *BACnetServiceAckReadProperty
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceAck = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckReadPropertyMultiple":
+ var dt *BACnetServiceAckReadPropertyMultiple
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceAck = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckReadRange":
+ var dt *BACnetServiceAckReadRange
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceAck = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckConfirmedPrivateTransfer":
+ var dt *BACnetServiceAckConfirmedPrivateTransfer
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceAck = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckVTOpen":
+ var dt *BACnetServiceAckVTOpen
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceAck = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckVTData":
+ var dt *BACnetServiceAckVTData
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceAck = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckRemovedAuthenticate":
+ var dt *BACnetServiceAckRemovedAuthenticate
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceAck = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckRemovedReadPropertyConditional":
+ var dt *BACnetServiceAckRemovedReadPropertyConditional
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceAck = dt
+ }
+ }
+ }
+ }
}
func (m APDUComplexAck) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
- if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
- {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.APDUComplexAck"},
- }}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.SegmentedMessage, xml.StartElement{Name: xml.Name{Local: "segmentedMessage"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.MoreFollows, xml.StartElement{Name: xml.Name{Local: "moreFollows"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.OriginalInvokeId, xml.StartElement{Name: xml.Name{Local: "originalInvokeId"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.SequenceNumber, xml.StartElement{Name: xml.Name{Local: "sequenceNumber"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.ProposedWindowSize, xml.StartElement{Name: xml.Name{Local: "proposedWindowSize"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.ServiceAck, xml.StartElement{Name: xml.Name{Local: "serviceAck"}}); err != nil {
- return err
- }
- if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
- return err
- }
- return nil
+ if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+ {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.APDUComplexAck"},
+ }}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.SegmentedMessage, xml.StartElement{Name: xml.Name{Local: "segmentedMessage"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.MoreFollows, xml.StartElement{Name: xml.Name{Local: "moreFollows"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.OriginalInvokeId, xml.StartElement{Name: xml.Name{Local: "originalInvokeId"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.SequenceNumber, xml.StartElement{Name: xml.Name{Local: "sequenceNumber"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.ProposedWindowSize, xml.StartElement{Name: xml.Name{Local: "proposedWindowSize"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.ServiceAck, xml.StartElement{Name: xml.Name{Local: "serviceAck"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+ return err
+ }
+ return nil
}
-
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
index 2de7871..ae23051 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
@@ -19,580 +19,579 @@
package model
import (
- "encoding/xml"
- "errors"
- "io"
- log "github.com/sirupsen/logrus"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
- "reflect"
+ "encoding/xml"
+ "errors"
+ log "github.com/sirupsen/logrus"
+ "io"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+ "reflect"
)
// The data-structure of this message
type APDUConfirmedRequest struct {
- SegmentedMessage bool
- MoreFollows bool
- SegmentedResponseAccepted bool
- MaxSegmentsAccepted uint8
- MaxApduLengthAccepted uint8
- InvokeId uint8
- SequenceNumber *uint8
- ProposedWindowSize *uint8
- ServiceRequest IBACnetConfirmedServiceRequest
- APDU
+ SegmentedMessage bool
+ MoreFollows bool
+ SegmentedResponseAccepted bool
+ MaxSegmentsAccepted uint8
+ MaxApduLengthAccepted uint8
+ InvokeId uint8
+ SequenceNumber *uint8
+ ProposedWindowSize *uint8
+ ServiceRequest IBACnetConfirmedServiceRequest
+ APDU
}
// The corresponding interface
type IAPDUConfirmedRequest interface {
- IAPDU
- Serialize(io utils.WriteBuffer) error
+ IAPDU
+ Serialize(io utils.WriteBuffer) error
}
// Accessors for discriminator values.
func (m APDUConfirmedRequest) ApduType() uint8 {
- return 0x0
+ return 0x0
}
func (m APDUConfirmedRequest) initialize() spi.Message {
- return m
+ return m
}
func NewAPDUConfirmedRequest(segmentedMessage bool, moreFollows bool, segmentedResponseAccepted bool, maxSegmentsAccepted uint8, maxApduLengthAccepted uint8, invokeId uint8, sequenceNumber *uint8, proposedWindowSize *uint8, serviceRequest IBACnetConfirmedServiceRequest) APDUInitializer {
- return &APDUConfirmedRequest{SegmentedMessage: segmentedMessage, MoreFollows: moreFollows, SegmentedResponseAccepted: segmentedResponseAccepted, MaxSegmentsAccepted: maxSegmentsAccepted, MaxApduLengthAccepted: maxApduLengthAccepted, InvokeId: invokeId, SequenceNumber: sequenceNumber, ProposedWindowSize: proposedWindowSize, ServiceRequest: serviceRequest}
+ return &APDUConfirmedRequest{SegmentedMessage: segmentedMessage, MoreFollows: moreFollows, SegmentedResponseAccepted: segmentedResponseAccepted, MaxSegmentsAccepted: maxSegmentsAccepted, MaxApduLengthAccepted: maxApduLengthAccepted, InvokeId: invokeId, SequenceNumber: sequenceNumber, ProposedWindowSize: proposedWindowSize, ServiceRequest: serviceRequest}
}
func CastIAPDUConfirmedRequest(structType interface{}) IAPDUConfirmedRequest {
- castFunc := func(typ interface{}) IAPDUConfirmedRequest {
- if iAPDUConfirmedRequest, ok := typ.(IAPDUConfirmedRequest); ok {
- return iAPDUConfirmedRequest
- }
- return nil
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) IAPDUConfirmedRequest {
+ if iAPDUConfirmedRequest, ok := typ.(IAPDUConfirmedRequest); ok {
+ return iAPDUConfirmedRequest
+ }
+ return nil
+ }
+ return castFunc(structType)
}
func CastAPDUConfirmedRequest(structType interface{}) APDUConfirmedRequest {
- castFunc := func(typ interface{}) APDUConfirmedRequest {
- if sAPDUConfirmedRequest, ok := typ.(APDUConfirmedRequest); ok {
- return sAPDUConfirmedRequest
- }
- if sAPDUConfirmedRequest, ok := typ.(*APDUConfirmedRequest); ok {
- return *sAPDUConfirmedRequest
- }
- return APDUConfirmedRequest{}
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) APDUConfirmedRequest {
+ if sAPDUConfirmedRequest, ok := typ.(APDUConfirmedRequest); ok {
+ return sAPDUConfirmedRequest
+ }
+ if sAPDUConfirmedRequest, ok := typ.(*APDUConfirmedRequest); ok {
+ return *sAPDUConfirmedRequest
+ }
+ return APDUConfirmedRequest{}
+ }
+ return castFunc(structType)
}
func (m APDUConfirmedRequest) LengthInBits() uint16 {
- var lengthInBits uint16 = m.APDU.LengthInBits()
+ var lengthInBits uint16 = m.APDU.LengthInBits()
- // Simple field (segmentedMessage)
- lengthInBits += 1
+ // Simple field (segmentedMessage)
+ lengthInBits += 1
- // Simple field (moreFollows)
- lengthInBits += 1
+ // Simple field (moreFollows)
+ lengthInBits += 1
- // Simple field (segmentedResponseAccepted)
- lengthInBits += 1
+ // Simple field (segmentedResponseAccepted)
+ lengthInBits += 1
- // Reserved Field (reserved)
- lengthInBits += 2
+ // Reserved Field (reserved)
+ lengthInBits += 2
- // Simple field (maxSegmentsAccepted)
- lengthInBits += 3
+ // Simple field (maxSegmentsAccepted)
+ lengthInBits += 3
- // Simple field (maxApduLengthAccepted)
- lengthInBits += 4
+ // Simple field (maxApduLengthAccepted)
+ lengthInBits += 4
- // Simple field (invokeId)
- lengthInBits += 8
+ // Simple field (invokeId)
+ lengthInBits += 8
- // Optional Field (sequenceNumber)
- if m.SequenceNumber != nil {
- lengthInBits += 8
- }
+ // Optional Field (sequenceNumber)
+ if m.SequenceNumber != nil {
+ lengthInBits += 8
+ }
- // Optional Field (proposedWindowSize)
- if m.ProposedWindowSize != nil {
- lengthInBits += 8
- }
+ // Optional Field (proposedWindowSize)
+ if m.ProposedWindowSize != nil {
+ lengthInBits += 8
+ }
- // Simple field (serviceRequest)
- lengthInBits += m.ServiceRequest.LengthInBits()
+ // Simple field (serviceRequest)
+ lengthInBits += m.ServiceRequest.LengthInBits()
- return lengthInBits
+ return lengthInBits
}
func (m APDUConfirmedRequest) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
func APDUConfirmedRequestParse(io *utils.ReadBuffer, apduLength uint16) (APDUInitializer, error) {
- // Simple Field (segmentedMessage)
- segmentedMessage, _segmentedMessageErr := io.ReadBit()
- if _segmentedMessageErr != nil {
- return nil, errors.New("Error parsing 'segmentedMessage' field " + _segmentedMessageErr.Error())
- }
-
- // Simple Field (moreFollows)
- moreFollows, _moreFollowsErr := io.ReadBit()
- if _moreFollowsErr != nil {
- return nil, errors.New("Error parsing 'moreFollows' field " + _moreFollowsErr.Error())
- }
-
- // Simple Field (segmentedResponseAccepted)
- segmentedResponseAccepted, _segmentedResponseAcceptedErr := io.ReadBit()
- if _segmentedResponseAcceptedErr != nil {
- return nil, errors.New("Error parsing 'segmentedResponseAccepted' field " + _segmentedResponseAcceptedErr.Error())
- }
-
- // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
- {
- reserved, _err := io.ReadUint8(2)
- if _err != nil {
- return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
- }
- if reserved != uint8(0) {
- log.WithFields(log.Fields{
- "expected value": uint8(0),
- "got value": reserved,
- }).Info("Got unexpected response.")
- }
- }
-
- // Simple Field (maxSegmentsAccepted)
- maxSegmentsAccepted, _maxSegmentsAcceptedErr := io.ReadUint8(3)
- if _maxSegmentsAcceptedErr != nil {
- return nil, errors.New("Error parsing 'maxSegmentsAccepted' field " + _maxSegmentsAcceptedErr.Error())
- }
-
- // Simple Field (maxApduLengthAccepted)
- maxApduLengthAccepted, _maxApduLengthAcceptedErr := io.ReadUint8(4)
- if _maxApduLengthAcceptedErr != nil {
- return nil, errors.New("Error parsing 'maxApduLengthAccepted' field " + _maxApduLengthAcceptedErr.Error())
- }
-
- // Simple Field (invokeId)
- invokeId, _invokeIdErr := io.ReadUint8(8)
- if _invokeIdErr != nil {
- return nil, errors.New("Error parsing 'invokeId' field " + _invokeIdErr.Error())
- }
-
- // Optional Field (sequenceNumber) (Can be skipped, if a given expression evaluates to false)
- var sequenceNumber *uint8 = nil
- if segmentedMessage {
- _val, _err := io.ReadUint8(8)
- if _err != nil {
- return nil, errors.New("Error parsing 'sequenceNumber' field " + _err.Error())
- }
-
- sequenceNumber = &_val
- }
-
- // Optional Field (proposedWindowSize) (Can be skipped, if a given expression evaluates to false)
- var proposedWindowSize *uint8 = nil
- if segmentedMessage {
- _val, _err := io.ReadUint8(8)
- if _err != nil {
- return nil, errors.New("Error parsing 'proposedWindowSize' field " + _err.Error())
- }
-
- proposedWindowSize = &_val
- }
-
- // Simple Field (serviceRequest)
- _serviceRequestMessage, _err := BACnetConfirmedServiceRequestParse(io, uint16(apduLength) - uint16(uint16(uint16(uint16(3)) + uint16(uint16(utils.InlineIf(segmentedMessage, uint16(uint16(2)), uint16(uint16(0))))))))
- if _err != nil {
- return nil, errors.New("Error parsing simple field 'serviceRequest'. " + _err.Error())
- }
- var serviceRequest IBACnetConfirmedServiceRequest
- serviceRequest, _serviceRequestOk := _serviceRequestMessage.(IBACnetConfirmedServiceRequest)
- if !_serviceRequestOk {
- return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_serviceRequestMessage).Name() + " to IBACnetConfirmedServiceRequest")
- }
-
- // Create the instance
- return NewAPDUConfirmedRequest(segmentedMessage, moreFollows, segmentedResponseAccepted, maxSegmentsAccepted, maxApduLengthAccepted, invokeId, sequenceNumber, proposedWindowSize, serviceRequest), nil
+ // Simple Field (segmentedMessage)
+ segmentedMessage, _segmentedMessageErr := io.ReadBit()
+ if _segmentedMessageErr != nil {
+ return nil, errors.New("Error parsing 'segmentedMessage' field " + _segmentedMessageErr.Error())
+ }
+
+ // Simple Field (moreFollows)
+ moreFollows, _moreFollowsErr := io.ReadBit()
+ if _moreFollowsErr != nil {
+ return nil, errors.New("Error parsing 'moreFollows' field " + _moreFollowsErr.Error())
+ }
+
+ // Simple Field (segmentedResponseAccepted)
+ segmentedResponseAccepted, _segmentedResponseAcceptedErr := io.ReadBit()
+ if _segmentedResponseAcceptedErr != nil {
+ return nil, errors.New("Error parsing 'segmentedResponseAccepted' field " + _segmentedResponseAcceptedErr.Error())
+ }
+
+ // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+ {
+ reserved, _err := io.ReadUint8(2)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+ }
+ if reserved != uint8(0) {
+ log.WithFields(log.Fields{
+ "expected value": uint8(0),
+ "got value": reserved,
+ }).Info("Got unexpected response.")
+ }
+ }
+
+ // Simple Field (maxSegmentsAccepted)
+ maxSegmentsAccepted, _maxSegmentsAcceptedErr := io.ReadUint8(3)
+ if _maxSegmentsAcceptedErr != nil {
+ return nil, errors.New("Error parsing 'maxSegmentsAccepted' field " + _maxSegmentsAcceptedErr.Error())
+ }
+
+ // Simple Field (maxApduLengthAccepted)
+ maxApduLengthAccepted, _maxApduLengthAcceptedErr := io.ReadUint8(4)
+ if _maxApduLengthAcceptedErr != nil {
+ return nil, errors.New("Error parsing 'maxApduLengthAccepted' field " + _maxApduLengthAcceptedErr.Error())
+ }
+
+ // Simple Field (invokeId)
+ invokeId, _invokeIdErr := io.ReadUint8(8)
+ if _invokeIdErr != nil {
+ return nil, errors.New("Error parsing 'invokeId' field " + _invokeIdErr.Error())
+ }
+
+ // Optional Field (sequenceNumber) (Can be skipped, if a given expression evaluates to false)
+ var sequenceNumber *uint8 = nil
+ if segmentedMessage {
+ _val, _err := io.ReadUint8(8)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'sequenceNumber' field " + _err.Error())
+ }
+
+ sequenceNumber = &_val
+ }
+
+ // Optional Field (proposedWindowSize) (Can be skipped, if a given expression evaluates to false)
+ var proposedWindowSize *uint8 = nil
+ if segmentedMessage {
+ _val, _err := io.ReadUint8(8)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'proposedWindowSize' field " + _err.Error())
+ }
+
+ proposedWindowSize = &_val
+ }
+
+ // Simple Field (serviceRequest)
+ _serviceRequestMessage, _err := BACnetConfirmedServiceRequestParse(io, uint16(apduLength)-uint16(uint16(uint16(uint16(3))+uint16(uint16(utils.InlineIf(segmentedMessage, uint16(uint16(2)), uint16(uint16(0))))))))
+ if _err != nil {
+ return nil, errors.New("Error parsing simple field 'serviceRequest'. " + _err.Error())
+ }
+ var serviceRequest IBACnetConfirmedServiceRequest
+ serviceRequest, _serviceRequestOk := _serviceRequestMessage.(IBACnetConfirmedServiceRequest)
+ if !_serviceRequestOk {
+ return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_serviceRequestMessage).Name() + " to IBACnetConfirmedServiceRequest")
+ }
+
+ // Create the instance
+ return NewAPDUConfirmedRequest(segmentedMessage, moreFollows, segmentedResponseAccepted, maxSegmentsAccepted, maxApduLengthAccepted, invokeId, sequenceNumber, proposedWindowSize, serviceRequest), nil
}
func (m APDUConfirmedRequest) Serialize(io utils.WriteBuffer) error {
- ser := func() error {
-
- // Simple Field (segmentedMessage)
- segmentedMessage := bool(m.SegmentedMessage)
- _segmentedMessageErr := io.WriteBit((bool) (segmentedMessage))
- if _segmentedMessageErr != nil {
- return errors.New("Error serializing 'segmentedMessage' field " + _segmentedMessageErr.Error())
- }
-
- // Simple Field (moreFollows)
- moreFollows := bool(m.MoreFollows)
- _moreFollowsErr := io.WriteBit((bool) (moreFollows))
- if _moreFollowsErr != nil {
- return errors.New("Error serializing 'moreFollows' field " + _moreFollowsErr.Error())
- }
-
- // Simple Field (segmentedResponseAccepted)
- segmentedResponseAccepted := bool(m.SegmentedResponseAccepted)
- _segmentedResponseAcceptedErr := io.WriteBit((bool) (segmentedResponseAccepted))
- if _segmentedResponseAcceptedErr != nil {
- return errors.New("Error serializing 'segmentedResponseAccepted' field " + _segmentedResponseAcceptedErr.Error())
- }
-
- // Reserved Field (reserved)
- {
- _err := io.WriteUint8(2, uint8(0))
- if _err != nil {
- return errors.New("Error serializing 'reserved' field " + _err.Error())
- }
- }
-
- // Simple Field (maxSegmentsAccepted)
- maxSegmentsAccepted := uint8(m.MaxSegmentsAccepted)
- _maxSegmentsAcceptedErr := io.WriteUint8(3, (maxSegmentsAccepted))
- if _maxSegmentsAcceptedErr != nil {
- return errors.New("Error serializing 'maxSegmentsAccepted' field " + _maxSegmentsAcceptedErr.Error())
- }
-
- // Simple Field (maxApduLengthAccepted)
- maxApduLengthAccepted := uint8(m.MaxApduLengthAccepted)
- _maxApduLengthAcceptedErr := io.WriteUint8(4, (maxApduLengthAccepted))
- if _maxApduLengthAcceptedErr != nil {
- return errors.New("Error serializing 'maxApduLengthAccepted' field " + _maxApduLengthAcceptedErr.Error())
- }
-
- // Simple Field (invokeId)
- invokeId := uint8(m.InvokeId)
- _invokeIdErr := io.WriteUint8(8, (invokeId))
- if _invokeIdErr != nil {
- return errors.New("Error serializing 'invokeId' field " + _invokeIdErr.Error())
- }
-
- // Optional Field (sequenceNumber) (Can be skipped, if the value is null)
- var sequenceNumber *uint8 = nil
- if m.SequenceNumber != nil {
- sequenceNumber = m.SequenceNumber
- _sequenceNumberErr := io.WriteUint8(8, *(sequenceNumber))
- if _sequenceNumberErr != nil {
- return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
- }
- }
-
- // Optional Field (proposedWindowSize) (Can be skipped, if the value is null)
- var proposedWindowSize *uint8 = nil
- if m.ProposedWindowSize != nil {
- proposedWindowSize = m.ProposedWindowSize
- _proposedWindowSizeErr := io.WriteUint8(8, *(proposedWindowSize))
- if _proposedWindowSizeErr != nil {
- return errors.New("Error serializing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
- }
- }
-
- // Simple Field (serviceRequest)
- serviceRequest := CastIBACnetConfirmedServiceRequest(m.ServiceRequest)
- _serviceRequestErr := serviceRequest.Serialize(io)
- if _serviceRequestErr != nil {
- return errors.New("Error serializing 'serviceRequest' field " + _serviceRequestErr.Error())
- }
-
- return nil
- }
- return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+ ser := func() error {
+
+ // Simple Field (segmentedMessage)
+ segmentedMessage := bool(m.SegmentedMessage)
+ _segmentedMessageErr := io.WriteBit((segmentedMessage))
+ if _segmentedMessageErr != nil {
+ return errors.New("Error serializing 'segmentedMessage' field " + _segmentedMessageErr.Error())
+ }
+
+ // Simple Field (moreFollows)
+ moreFollows := bool(m.MoreFollows)
+ _moreFollowsErr := io.WriteBit((moreFollows))
+ if _moreFollowsErr != nil {
+ return errors.New("Error serializing 'moreFollows' field " + _moreFollowsErr.Error())
+ }
+
+ // Simple Field (segmentedResponseAccepted)
+ segmentedResponseAccepted := bool(m.SegmentedResponseAccepted)
+ _segmentedResponseAcceptedErr := io.WriteBit((segmentedResponseAccepted))
+ if _segmentedResponseAcceptedErr != nil {
+ return errors.New("Error serializing 'segmentedResponseAccepted' field " + _segmentedResponseAcceptedErr.Error())
+ }
+
+ // Reserved Field (reserved)
+ {
+ _err := io.WriteUint8(2, uint8(0))
+ if _err != nil {
+ return errors.New("Error serializing 'reserved' field " + _err.Error())
+ }
+ }
+
+ // Simple Field (maxSegmentsAccepted)
+ maxSegmentsAccepted := uint8(m.MaxSegmentsAccepted)
+ _maxSegmentsAcceptedErr := io.WriteUint8(3, (maxSegmentsAccepted))
+ if _maxSegmentsAcceptedErr != nil {
+ return errors.New("Error serializing 'maxSegmentsAccepted' field " + _maxSegmentsAcceptedErr.Error())
+ }
+
+ // Simple Field (maxApduLengthAccepted)
+ maxApduLengthAccepted := uint8(m.MaxApduLengthAccepted)
+ _maxApduLengthAcceptedErr := io.WriteUint8(4, (maxApduLengthAccepted))
+ if _maxApduLengthAcceptedErr != nil {
+ return errors.New("Error serializing 'maxApduLengthAccepted' field " + _maxApduLengthAcceptedErr.Error())
+ }
+
+ // Simple Field (invokeId)
+ invokeId := uint8(m.InvokeId)
+ _invokeIdErr := io.WriteUint8(8, (invokeId))
+ if _invokeIdErr != nil {
+ return errors.New("Error serializing 'invokeId' field " + _invokeIdErr.Error())
+ }
+
+ // Optional Field (sequenceNumber) (Can be skipped, if the value is null)
+ var sequenceNumber *uint8 = nil
+ if m.SequenceNumber != nil {
+ sequenceNumber = m.SequenceNumber
+ _sequenceNumberErr := io.WriteUint8(8, *(sequenceNumber))
+ if _sequenceNumberErr != nil {
+ return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
+ }
+ }
+
+ // Optional Field (proposedWindowSize) (Can be skipped, if the value is null)
+ var proposedWindowSize *uint8 = nil
+ if m.ProposedWindowSize != nil {
+ proposedWindowSize = m.ProposedWindowSize
+ _proposedWindowSizeErr := io.WriteUint8(8, *(proposedWindowSize))
+ if _proposedWindowSizeErr != nil {
+ return errors.New("Error serializing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
+ }
+ }
+
+ // Simple Field (serviceRequest)
+ serviceRequest := CastIBACnetConfirmedServiceRequest(m.ServiceRequest)
+ _serviceRequestErr := serviceRequest.Serialize(io)
+ if _serviceRequestErr != nil {
+ return errors.New("Error serializing 'serviceRequest' field " + _serviceRequestErr.Error())
+ }
+
+ return nil
+ }
+ return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
}
func (m *APDUConfirmedRequest) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
- for {
- token, err := d.Token()
- if err != nil {
- if err == io.EOF {
- return nil
- }
- return err
- }
- switch token.(type) {
- case xml.StartElement:
- tok := token.(xml.StartElement)
- switch tok.Name.Local {
- case "segmentedMessage":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.SegmentedMessage = data
- case "moreFollows":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.MoreFollows = data
- case "segmentedResponseAccepted":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.SegmentedResponseAccepted = data
- case "maxSegmentsAccepted":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.MaxSegmentsAccepted = data
- case "maxApduLengthAccepted":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.MaxApduLengthAccepted = data
- case "invokeId":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.InvokeId = data
- case "sequenceNumber":
- var data *uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.SequenceNumber = data
- case "proposedWindowSize":
- var data *uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.ProposedWindowSize = data
- case "serviceRequest":
- switch tok.Attr[0].Value {
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestAcknowledgeAlarm":
- var dt *BACnetConfirmedServiceRequestAcknowledgeAlarm
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedCOVNotification":
- var dt *BACnetConfirmedServiceRequestConfirmedCOVNotification
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedEventNotification":
- var dt *BACnetConfirmedServiceRequestConfirmedEventNotification
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestGetEnrollmentSummary":
- var dt *BACnetConfirmedServiceRequestGetEnrollmentSummary
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestSubscribeCOV":
- var dt *BACnetConfirmedServiceRequestSubscribeCOV
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestAtomicReadFile":
- var dt *BACnetConfirmedServiceRequestAtomicReadFile
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestAtomicWriteFile":
- var dt *BACnetConfirmedServiceRequestAtomicWriteFile
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestAddListElement":
- var dt *BACnetConfirmedServiceRequestAddListElement
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestRemoveListElement":
- var dt *BACnetConfirmedServiceRequestRemoveListElement
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestCreateObject":
- var dt *BACnetConfirmedServiceRequestCreateObject
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestDeleteObject":
- var dt *BACnetConfirmedServiceRequestDeleteObject
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestReadProperty":
- var dt *BACnetConfirmedServiceRequestReadProperty
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestReadPropertyMultiple":
- var dt *BACnetConfirmedServiceRequestReadPropertyMultiple
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestWriteProperty":
- var dt *BACnetConfirmedServiceRequestWriteProperty
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestWritePropertyMultiple":
- var dt *BACnetConfirmedServiceRequestWritePropertyMultiple
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestDeviceCommunicationControl":
- var dt *BACnetConfirmedServiceRequestDeviceCommunicationControl
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedPrivateTransfer":
- var dt *BACnetConfirmedServiceRequestConfirmedPrivateTransfer
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedTextMessage":
- var dt *BACnetConfirmedServiceRequestConfirmedTextMessage
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestReinitializeDevice":
- var dt *BACnetConfirmedServiceRequestReinitializeDevice
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestVTOpen":
- var dt *BACnetConfirmedServiceRequestVTOpen
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestVTClose":
- var dt *BACnetConfirmedServiceRequestVTClose
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestVTData":
- var dt *BACnetConfirmedServiceRequestVTData
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestRemovedAuthenticate":
- var dt *BACnetConfirmedServiceRequestRemovedAuthenticate
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestRemovedRequestKey":
- var dt *BACnetConfirmedServiceRequestRemovedRequestKey
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestRemovedReadPropertyConditional":
- var dt *BACnetConfirmedServiceRequestRemovedReadPropertyConditional
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestReadRange":
- var dt *BACnetConfirmedServiceRequestReadRange
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestLifeSafetyOperation":
- var dt *BACnetConfirmedServiceRequestLifeSafetyOperation
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestSubscribeCOVProperty":
- var dt *BACnetConfirmedServiceRequestSubscribeCOVProperty
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestGetEventInformation":
- var dt *BACnetConfirmedServiceRequestGetEventInformation
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple":
- var dt *BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple":
- var dt *BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- m.ServiceRequest = dt
- }
- }
- }
- }
+ for {
+ token, err := d.Token()
+ if err != nil {
+ if err == io.EOF {
+ return nil
+ }
+ return err
+ }
+ switch token.(type) {
+ case xml.StartElement:
+ tok := token.(xml.StartElement)
+ switch tok.Name.Local {
+ case "segmentedMessage":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.SegmentedMessage = data
+ case "moreFollows":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.MoreFollows = data
+ case "segmentedResponseAccepted":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.SegmentedResponseAccepted = data
+ case "maxSegmentsAccepted":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.MaxSegmentsAccepted = data
+ case "maxApduLengthAccepted":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.MaxApduLengthAccepted = data
+ case "invokeId":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.InvokeId = data
+ case "sequenceNumber":
+ var data *uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.SequenceNumber = data
+ case "proposedWindowSize":
+ var data *uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.ProposedWindowSize = data
+ case "serviceRequest":
+ switch tok.Attr[0].Value {
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestAcknowledgeAlarm":
+ var dt *BACnetConfirmedServiceRequestAcknowledgeAlarm
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedCOVNotification":
+ var dt *BACnetConfirmedServiceRequestConfirmedCOVNotification
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedEventNotification":
+ var dt *BACnetConfirmedServiceRequestConfirmedEventNotification
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestGetEnrollmentSummary":
+ var dt *BACnetConfirmedServiceRequestGetEnrollmentSummary
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestSubscribeCOV":
+ var dt *BACnetConfirmedServiceRequestSubscribeCOV
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestAtomicReadFile":
+ var dt *BACnetConfirmedServiceRequestAtomicReadFile
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestAtomicWriteFile":
+ var dt *BACnetConfirmedServiceRequestAtomicWriteFile
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestAddListElement":
+ var dt *BACnetConfirmedServiceRequestAddListElement
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestRemoveListElement":
+ var dt *BACnetConfirmedServiceRequestRemoveListElement
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestCreateObject":
+ var dt *BACnetConfirmedServiceRequestCreateObject
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestDeleteObject":
+ var dt *BACnetConfirmedServiceRequestDeleteObject
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestReadProperty":
+ var dt *BACnetConfirmedServiceRequestReadProperty
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestReadPropertyMultiple":
+ var dt *BACnetConfirmedServiceRequestReadPropertyMultiple
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestWriteProperty":
+ var dt *BACnetConfirmedServiceRequestWriteProperty
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestWritePropertyMultiple":
+ var dt *BACnetConfirmedServiceRequestWritePropertyMultiple
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestDeviceCommunicationControl":
+ var dt *BACnetConfirmedServiceRequestDeviceCommunicationControl
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedPrivateTransfer":
+ var dt *BACnetConfirmedServiceRequestConfirmedPrivateTransfer
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedTextMessage":
+ var dt *BACnetConfirmedServiceRequestConfirmedTextMessage
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestReinitializeDevice":
+ var dt *BACnetConfirmedServiceRequestReinitializeDevice
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestVTOpen":
+ var dt *BACnetConfirmedServiceRequestVTOpen
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestVTClose":
+ var dt *BACnetConfirmedServiceRequestVTClose
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestVTData":
+ var dt *BACnetConfirmedServiceRequestVTData
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestRemovedAuthenticate":
+ var dt *BACnetConfirmedServiceRequestRemovedAuthenticate
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestRemovedRequestKey":
+ var dt *BACnetConfirmedServiceRequestRemovedRequestKey
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestRemovedReadPropertyConditional":
+ var dt *BACnetConfirmedServiceRequestRemovedReadPropertyConditional
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestReadRange":
+ var dt *BACnetConfirmedServiceRequestReadRange
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestLifeSafetyOperation":
+ var dt *BACnetConfirmedServiceRequestLifeSafetyOperation
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestSubscribeCOVProperty":
+ var dt *BACnetConfirmedServiceRequestSubscribeCOVProperty
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestGetEventInformation":
+ var dt *BACnetConfirmedServiceRequestGetEventInformation
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple":
+ var dt *BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple":
+ var dt *BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ m.ServiceRequest = dt
+ }
+ }
+ }
+ }
}
func (m APDUConfirmedRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
- if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
- {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.APDUConfirmedRequest"},
- }}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.SegmentedMessage, xml.StartElement{Name: xml.Name{Local: "segmentedMessage"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.MoreFollows, xml.StartElement{Name: xml.Name{Local: "moreFollows"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.SegmentedResponseAccepted, xml.StartElement{Name: xml.Name{Local: "segmentedResponseAccepted"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.MaxSegmentsAccepted, xml.StartElement{Name: xml.Name{Local: "maxSegmentsAccepted"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.MaxApduLengthAccepted, xml.StartElement{Name: xml.Name{Local: "maxApduLengthAccepted"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.InvokeId, xml.StartElement{Name: xml.Name{Local: "invokeId"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.SequenceNumber, xml.StartElement{Name: xml.Name{Local: "sequenceNumber"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.ProposedWindowSize, xml.StartElement{Name: xml.Name{Local: "proposedWindowSize"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.ServiceRequest, xml.StartElement{Name: xml.Name{Local: "serviceRequest"}}); err != nil {
- return err
- }
- if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
- return err
- }
- return nil
+ if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+ {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.APDUConfirmedRequest"},
+ }}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.SegmentedMessage, xml.StartElement{Name: xml.Name{Local: "segmentedMessage"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.MoreFollows, xml.StartElement{Name: xml.Name{Local: "moreFollows"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.SegmentedResponseAccepted, xml.StartElement{Name: xml.Name{Local: "segmentedResponseAccepted"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.MaxSegmentsAccepted, xml.StartElement{Name: xml.Name{Local: "maxSegmentsAccepted"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.MaxApduLengthAccepted, xml.StartElement{Name: xml.Name{Local: "maxApduLengthAccepted"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.InvokeId, xml.StartElement{Name: xml.Name{Local: "invokeId"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.SequenceNumber, xml.StartElement{Name: xml.Name{Local: "sequenceNumber"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.ProposedWindowSize, xml.StartElement{Name: xml.Name{Local: "proposedWindowSize"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.ServiceRequest, xml.StartElement{Name: xml.Name{Local: "serviceRequest"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+ return err
+ }
+ return nil
}
-
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
index 64403b2..a00c50a 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
@@ -19,267 +19,266 @@
package model
import (
- "encoding/xml"
- "errors"
- "io"
- log "github.com/sirupsen/logrus"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+ "encoding/xml"
+ "errors"
+ log "github.com/sirupsen/logrus"
+ "io"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
)
// The data-structure of this message
type APDUSegmentAck struct {
- NegativeAck bool
- Server bool
- OriginalInvokeId uint8
- SequenceNumber uint8
- ProposedWindowSize uint8
- APDU
+ NegativeAck bool
+ Server bool
+ OriginalInvokeId uint8
+ SequenceNumber uint8
+ ProposedWindowSize uint8
+ APDU
}
// The corresponding interface
type IAPDUSegmentAck interface {
- IAPDU
- Serialize(io utils.WriteBuffer) error
+ IAPDU
+ Serialize(io utils.WriteBuffer) error
}
// Accessors for discriminator values.
func (m APDUSegmentAck) ApduType() uint8 {
- return 0x4
+ return 0x4
}
func (m APDUSegmentAck) initialize() spi.Message {
- return m
+ return m
}
func NewAPDUSegmentAck(negativeAck bool, server bool, originalInvokeId uint8, sequenceNumber uint8, proposedWindowSize uint8) APDUInitializer {
- return &APDUSegmentAck{NegativeAck: negativeAck, Server: server, OriginalInvokeId: originalInvokeId, SequenceNumber: sequenceNumber, ProposedWindowSize: proposedWindowSize}
+ return &APDUSegmentAck{NegativeAck: negativeAck, Server: server, OriginalInvokeId: originalInvokeId, SequenceNumber: sequenceNumber, ProposedWindowSize: proposedWindowSize}
}
func CastIAPDUSegmentAck(structType interface{}) IAPDUSegmentAck {
- castFunc := func(typ interface{}) IAPDUSegmentAck {
- if iAPDUSegmentAck, ok := typ.(IAPDUSegmentAck); ok {
- return iAPDUSegmentAck
- }
- return nil
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) IAPDUSegmentAck {
+ if iAPDUSegmentAck, ok := typ.(IAPDUSegmentAck); ok {
+ return iAPDUSegmentAck
+ }
+ return nil
+ }
+ return castFunc(structType)
}
func CastAPDUSegmentAck(structType interface{}) APDUSegmentAck {
- castFunc := func(typ interface{}) APDUSegmentAck {
- if sAPDUSegmentAck, ok := typ.(APDUSegmentAck); ok {
- return sAPDUSegmentAck
- }
- if sAPDUSegmentAck, ok := typ.(*APDUSegmentAck); ok {
- return *sAPDUSegmentAck
- }
- return APDUSegmentAck{}
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) APDUSegmentAck {
+ if sAPDUSegmentAck, ok := typ.(APDUSegmentAck); ok {
+ return sAPDUSegmentAck
+ }
+ if sAPDUSegmentAck, ok := typ.(*APDUSegmentAck); ok {
+ return *sAPDUSegmentAck
+ }
+ return APDUSegmentAck{}
+ }
+ return castFunc(structType)
}
func (m APDUSegmentAck) LengthInBits() uint16 {
- var lengthInBits uint16 = m.APDU.LengthInBits()
+ var lengthInBits uint16 = m.APDU.LengthInBits()
- // Reserved Field (reserved)
- lengthInBits += 2
+ // Reserved Field (reserved)
+ lengthInBits += 2
- // Simple field (negativeAck)
- lengthInBits += 1
+ // Simple field (negativeAck)
+ lengthInBits += 1
- // Simple field (server)
- lengthInBits += 1
+ // Simple field (server)
+ lengthInBits += 1
- // Simple field (originalInvokeId)
- lengthInBits += 8
+ // Simple field (originalInvokeId)
+ lengthInBits += 8
- // Simple field (sequenceNumber)
- lengthInBits += 8
+ // Simple field (sequenceNumber)
+ lengthInBits += 8
- // Simple field (proposedWindowSize)
- lengthInBits += 8
+ // Simple field (proposedWindowSize)
+ lengthInBits += 8
- return lengthInBits
+ return lengthInBits
}
func (m APDUSegmentAck) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
func APDUSegmentAckParse(io *utils.ReadBuffer) (APDUInitializer, error) {
- // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
- {
- reserved, _err := io.ReadUint8(2)
- if _err != nil {
- return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
- }
- if reserved != uint8(0x00) {
- log.WithFields(log.Fields{
- "expected value": uint8(0x00),
- "got value": reserved,
- }).Info("Got unexpected response.")
- }
- }
-
- // Simple Field (negativeAck)
- negativeAck, _negativeAckErr := io.ReadBit()
- if _negativeAckErr != nil {
- return nil, errors.New("Error parsing 'negativeAck' field " + _negativeAckErr.Error())
- }
-
- // Simple Field (server)
- server, _serverErr := io.ReadBit()
- if _serverErr != nil {
- return nil, errors.New("Error parsing 'server' field " + _serverErr.Error())
- }
-
- // Simple Field (originalInvokeId)
- originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
- if _originalInvokeIdErr != nil {
- return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
- }
-
- // Simple Field (sequenceNumber)
- sequenceNumber, _sequenceNumberErr := io.ReadUint8(8)
- if _sequenceNumberErr != nil {
- return nil, errors.New("Error parsing 'sequenceNumber' field " + _sequenceNumberErr.Error())
- }
-
- // Simple Field (proposedWindowSize)
- proposedWindowSize, _proposedWindowSizeErr := io.ReadUint8(8)
- if _proposedWindowSizeErr != nil {
- return nil, errors.New("Error parsing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
- }
-
- // Create the instance
- return NewAPDUSegmentAck(negativeAck, server, originalInvokeId, sequenceNumber, proposedWindowSize), nil
+ // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+ {
+ reserved, _err := io.ReadUint8(2)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+ }
+ if reserved != uint8(0x00) {
+ log.WithFields(log.Fields{
+ "expected value": uint8(0x00),
+ "got value": reserved,
+ }).Info("Got unexpected response.")
+ }
+ }
+
+ // Simple Field (negativeAck)
+ negativeAck, _negativeAckErr := io.ReadBit()
+ if _negativeAckErr != nil {
+ return nil, errors.New("Error parsing 'negativeAck' field " + _negativeAckErr.Error())
+ }
+
+ // Simple Field (server)
+ server, _serverErr := io.ReadBit()
+ if _serverErr != nil {
+ return nil, errors.New("Error parsing 'server' field " + _serverErr.Error())
+ }
+
+ // Simple Field (originalInvokeId)
+ originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
+ if _originalInvokeIdErr != nil {
+ return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+ }
+
+ // Simple Field (sequenceNumber)
+ sequenceNumber, _sequenceNumberErr := io.ReadUint8(8)
+ if _sequenceNumberErr != nil {
+ return nil, errors.New("Error parsing 'sequenceNumber' field " + _sequenceNumberErr.Error())
+ }
+
+ // Simple Field (proposedWindowSize)
+ proposedWindowSize, _proposedWindowSizeErr := io.ReadUint8(8)
+ if _proposedWindowSizeErr != nil {
+ return nil, errors.New("Error parsing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
+ }
+
+ // Create the instance
+ return NewAPDUSegmentAck(negativeAck, server, originalInvokeId, sequenceNumber, proposedWindowSize), nil
}
func (m APDUSegmentAck) Serialize(io utils.WriteBuffer) error {
- ser := func() error {
-
- // Reserved Field (reserved)
- {
- _err := io.WriteUint8(2, uint8(0x00))
- if _err != nil {
- return errors.New("Error serializing 'reserved' field " + _err.Error())
- }
- }
-
- // Simple Field (negativeAck)
- negativeAck := bool(m.NegativeAck)
- _negativeAckErr := io.WriteBit((bool) (negativeAck))
- if _negativeAckErr != nil {
- return errors.New("Error serializing 'negativeAck' field " + _negativeAckErr.Error())
- }
-
- // Simple Field (server)
- server := bool(m.Server)
- _serverErr := io.WriteBit((bool) (server))
- if _serverErr != nil {
- return errors.New("Error serializing 'server' field " + _serverErr.Error())
- }
-
- // Simple Field (originalInvokeId)
- originalInvokeId := uint8(m.OriginalInvokeId)
- _originalInvokeIdErr := io.WriteUint8(8, (originalInvokeId))
- if _originalInvokeIdErr != nil {
- return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
- }
-
- // Simple Field (sequenceNumber)
- sequenceNumber := uint8(m.SequenceNumber)
- _sequenceNumberErr := io.WriteUint8(8, (sequenceNumber))
- if _sequenceNumberErr != nil {
- return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
- }
-
- // Simple Field (proposedWindowSize)
- proposedWindowSize := uint8(m.ProposedWindowSize)
- _proposedWindowSizeErr := io.WriteUint8(8, (proposedWindowSize))
- if _proposedWindowSizeErr != nil {
- return errors.New("Error serializing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
- }
-
- return nil
- }
- return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+ ser := func() error {
+
+ // Reserved Field (reserved)
+ {
+ _err := io.WriteUint8(2, uint8(0x00))
+ if _err != nil {
+ return errors.New("Error serializing 'reserved' field " + _err.Error())
+ }
+ }
+
+ // Simple Field (negativeAck)
+ negativeAck := bool(m.NegativeAck)
+ _negativeAckErr := io.WriteBit((negativeAck))
+ if _negativeAckErr != nil {
+ return errors.New("Error serializing 'negativeAck' field " + _negativeAckErr.Error())
+ }
+
+ // Simple Field (server)
+ server := bool(m.Server)
+ _serverErr := io.WriteBit((server))
+ if _serverErr != nil {
+ return errors.New("Error serializing 'server' field " + _serverErr.Error())
+ }
+
+ // Simple Field (originalInvokeId)
+ originalInvokeId := uint8(m.OriginalInvokeId)
+ _originalInvokeIdErr := io.WriteUint8(8, (originalInvokeId))
+ if _originalInvokeIdErr != nil {
+ return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+ }
+
+ // Simple Field (sequenceNumber)
+ sequenceNumber := uint8(m.SequenceNumber)
+ _sequenceNumberErr := io.WriteUint8(8, (sequenceNumber))
+ if _sequenceNumberErr != nil {
+ return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
+ }
+
+ // Simple Field (proposedWindowSize)
+ proposedWindowSize := uint8(m.ProposedWindowSize)
+ _proposedWindowSizeErr := io.WriteUint8(8, (proposedWindowSize))
+ if _proposedWindowSizeErr != nil {
+ return errors.New("Error serializing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
+ }
+
+ return nil
+ }
+ return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
}
func (m *APDUSegmentAck) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
- for {
- token, err := d.Token()
- if err != nil {
- if err == io.EOF {
- return nil
- }
- return err
- }
- switch token.(type) {
- case xml.StartElement:
- tok := token.(xml.StartElement)
- switch tok.Name.Local {
- case "negativeAck":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.NegativeAck = data
- case "server":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.Server = data
- case "originalInvokeId":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.OriginalInvokeId = data
- case "sequenceNumber":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.SequenceNumber = data
- case "proposedWindowSize":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.ProposedWindowSize = data
- }
- }
- }
+ for {
+ token, err := d.Token()
+ if err != nil {
+ if err == io.EOF {
+ return nil
+ }
+ return err
+ }
+ switch token.(type) {
+ case xml.StartElement:
+ tok := token.(xml.StartElement)
+ switch tok.Name.Local {
+ case "negativeAck":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.NegativeAck = data
+ case "server":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.Server = data
+ case "originalInvokeId":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.OriginalInvokeId = data
+ case "sequenceNumber":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.SequenceNumber = data
+ case "proposedWindowSize":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.ProposedWindowSize = data
+ }
+ }
+ }
}
func (m APDUSegmentAck) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
- if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
- {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.APDUSegmentAck"},
- }}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.NegativeAck, xml.StartElement{Name: xml.Name{Local: "negativeAck"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.Server, xml.StartElement{Name: xml.Name{Local: "server"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.OriginalInvokeId, xml.StartElement{Name: xml.Name{Local: "originalInvokeId"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.SequenceNumber, xml.StartElement{Name: xml.Name{Local: "sequenceNumber"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.ProposedWindowSize, xml.StartElement{Name: xml.Name{Local: "proposedWindowSize"}}); err != nil {
- return err
- }
- if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
- return err
- }
- return nil
+ if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+ {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.APDUSegmentAck"},
+ }}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.NegativeAck, xml.StartElement{Name: xml.Name{Local: "negativeAck"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.Server, xml.StartElement{Name: xml.Name{Local: "server"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.OriginalInvokeId, xml.StartElement{Name: xml.Name{Local: "originalInvokeId"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.SequenceNumber, xml.StartElement{Name: xml.Name{Local: "sequenceNumber"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.ProposedWindowSize, xml.StartElement{Name: xml.Name{Local: "proposedWindowSize"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+ return err
+ }
+ return nil
}
-
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
index e910164..075d177 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
@@ -19,13 +19,13 @@
package model
import (
- "encoding/base64"
- "encoding/xml"
- "errors"
- "io"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
- "strconv"
+ "encoding/base64"
+ "encoding/xml"
+ "errors"
+ "io"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+ "strconv"
)
// Constant values.
@@ -37,366 +37,365 @@ const BACnetConfirmedServiceRequestSubscribeCOV_LIFETIMEHEADER uint8 = 0x07
// The data-structure of this message
type BACnetConfirmedServiceRequestSubscribeCOV struct {
- SubscriberProcessIdentifier uint8
- MonitoredObjectType uint16
- MonitoredObjectInstanceNumber uint32
- IssueConfirmedNotifications bool
- LifetimeLength uint8
- LifetimeSeconds []int8
- BACnetConfirmedServiceRequest
+ SubscriberProcessIdentifier uint8
+ MonitoredObjectType uint16
+ MonitoredObjectInstanceNumber uint32
+ IssueConfirmedNotifications bool
+ LifetimeLength uint8
+ LifetimeSeconds []int8
+ BACnetConfirmedServiceRequest
}
// The corresponding interface
type IBACnetConfirmedServiceRequestSubscribeCOV interface {
- IBACnetConfirmedServiceRequest
- Serialize(io utils.WriteBuffer) error
+ IBACnetConfirmedServiceRequest
+ Serialize(io utils.WriteBuffer) error
}
// Accessors for discriminator values.
func (m BACnetConfirmedServiceRequestSubscribeCOV) ServiceChoice() uint8 {
- return 0x05
+ return 0x05
}
func (m BACnetConfirmedServiceRequestSubscribeCOV) initialize() spi.Message {
- return m
+ return m
}
func NewBACnetConfirmedServiceRequestSubscribeCOV(subscriberProcessIdentifier uint8, monitoredObjectType uint16, monitoredObjectInstanceNumber uint32, issueConfirmedNotifications bool, lifetimeLength uint8, lifetimeSeconds []int8) BACnetConfirmedServiceRequestInitializer {
- return &BACnetConfirmedServiceRequestSubscribeCOV{SubscriberProcessIdentifier: subscriberProcessIdentifier, MonitoredObjectType: monitoredObjectType, MonitoredObjectInstanceNumber: monitoredObjectInstanceNumber, IssueConfirmedNotifications: issueConfirmedNotifications, LifetimeLength: lifetimeLength, LifetimeSeconds: lifetimeSeconds}
+ return &BACnetConfirmedServiceRequestSubscribeCOV{SubscriberProcessIdentifier: subscriberProcessIdentifier, MonitoredObjectType: monitoredObjectType, MonitoredObjectInstanceNumber: monitoredObjectInstanceNumber, IssueConfirmedNotifications: issueConfirmedNotifications, LifetimeLength: lifetimeLength, LifetimeSeconds: lifetimeSeconds}
}
func CastIBACnetConfirmedServiceRequestSubscribeCOV(structType interface{}) IBACnetConfirmedServiceRequestSubscribeCOV {
- castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestSubscribeCOV {
- if iBACnetConfirmedServiceRequestSubscribeCOV, ok := typ.(IBACnetConfirmedServiceRequestSubscribeCOV); ok {
- return iBACnetConfirmedServiceRequestSubscribeCOV
- }
- return nil
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestSubscribeCOV {
+ if iBACnetConfirmedServiceRequestSubscribeCOV, ok := typ.(IBACnetConfirmedServiceRequestSubscribeCOV); ok {
+ return iBACnetConfirmedServiceRequestSubscribeCOV
+ }
+ return nil
+ }
+ return castFunc(structType)
}
func CastBACnetConfirmedServiceRequestSubscribeCOV(structType interface{}) BACnetConfirmedServiceRequestSubscribeCOV {
- castFunc := func(typ interface{}) BACnetConfirmedServiceRequestSubscribeCOV {
- if sBACnetConfirmedServiceRequestSubscribeCOV, ok := typ.(BACnetConfirmedServiceRequestSubscribeCOV); ok {
- return sBACnetConfirmedServiceRequestSubscribeCOV
- }
- if sBACnetConfirmedServiceRequestSubscribeCOV, ok := typ.(*BACnetConfirmedServiceRequestSubscribeCOV); ok {
- return *sBACnetConfirmedServiceRequestSubscribeCOV
- }
- return BACnetConfirmedServiceRequestSubscribeCOV{}
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) BACnetConfirmedServiceRequestSubscribeCOV {
+ if sBACnetConfirmedServiceRequestSubscribeCOV, ok := typ.(BACnetConfirmedServiceRequestSubscribeCOV); ok {
+ return sBACnetConfirmedServiceRequestSubscribeCOV
+ }
+ if sBACnetConfirmedServiceRequestSubscribeCOV, ok := typ.(*BACnetConfirmedServiceRequestSubscribeCOV); ok {
+ return *sBACnetConfirmedServiceRequestSubscribeCOV
+ }
+ return BACnetConfirmedServiceRequestSubscribeCOV{}
+ }
+ return castFunc(structType)
}
func (m BACnetConfirmedServiceRequestSubscribeCOV) LengthInBits() uint16 {
- var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
+ var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
- // Const Field (subscriberProcessIdentifierHeader)
- lengthInBits += 8
+ // Const Field (subscriberProcessIdentifierHeader)
+ lengthInBits += 8
- // Simple field (subscriberProcessIdentifier)
- lengthInBits += 8
+ // Simple field (subscriberProcessIdentifier)
+ lengthInBits += 8
- // Const Field (monitoredObjectIdentifierHeader)
- lengthInBits += 8
+ // Const Field (monitoredObjectIdentifierHeader)
+ lengthInBits += 8
- // Simple field (monitoredObjectType)
- lengthInBits += 10
+ // Simple field (monitoredObjectType)
+ lengthInBits += 10
- // Simple field (monitoredObjectInstanceNumber)
- lengthInBits += 22
+ // Simple field (monitoredObjectInstanceNumber)
+ lengthInBits += 22
- // Const Field (issueConfirmedNotificationsHeader)
- lengthInBits += 8
+ // Const Field (issueConfirmedNotificationsHeader)
+ lengthInBits += 8
- // Const Field (issueConfirmedNotificationsSkipBits)
- lengthInBits += 7
+ // Const Field (issueConfirmedNotificationsSkipBits)
+ lengthInBits += 7
- // Simple field (issueConfirmedNotifications)
- lengthInBits += 1
+ // Simple field (issueConfirmedNotifications)
+ lengthInBits += 1
- // Const Field (lifetimeHeader)
- lengthInBits += 5
+ // Const Field (lifetimeHeader)
+ lengthInBits += 5
- // Simple field (lifetimeLength)
- lengthInBits += 3
+ // Simple field (lifetimeLength)
+ lengthInBits += 3
- // Array field
- if len(m.LifetimeSeconds) > 0 {
- lengthInBits += 8 * uint16(len(m.LifetimeSeconds))
- }
+ // Array field
+ if len(m.LifetimeSeconds) > 0 {
+ lengthInBits += 8 * uint16(len(m.LifetimeSeconds))
+ }
- return lengthInBits
+ return lengthInBits
}
func (m BACnetConfirmedServiceRequestSubscribeCOV) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
func BACnetConfirmedServiceRequestSubscribeCOVParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
- // Const Field (subscriberProcessIdentifierHeader)
- subscriberProcessIdentifierHeader, _subscriberProcessIdentifierHeaderErr := io.ReadUint8(8)
- if _subscriberProcessIdentifierHeaderErr != nil {
- return nil, errors.New("Error parsing 'subscriberProcessIdentifierHeader' field " + _subscriberProcessIdentifierHeaderErr.Error())
- }
- if subscriberProcessIdentifierHeader != BACnetConfirmedServiceRequestSubscribeCOV_SUBSCRIBERPROCESSIDENTIFIERHEADER {
- return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_SUBSCRIBERPROCESSIDENTIFIERHEADER)) + " but got " + strconv.Itoa(int(subscriberProcessIdentifierHeader)))
- }
-
- // Simple Field (subscriberProcessIdentifier)
- subscriberProcessIdentifier, _subscriberProcessIdentifierErr := io.ReadUint8(8)
- if _subscriberProcessIdentifierErr != nil {
- return nil, errors.New("Error parsing 'subscriberProcessIdentifier' field " + _subscriberProcessIdentifierErr.Error())
- }
-
- // Const Field (monitoredObjectIdentifierHeader)
- monitoredObjectIdentifierHeader, _monitoredObjectIdentifierHeaderErr := io.ReadUint8(8)
- if _monitoredObjectIdentifierHeaderErr != nil {
- return nil, errors.New("Error parsing 'monitoredObjectIdentifierHeader' field " + _monitoredObjectIdentifierHeaderErr.Error())
- }
- if monitoredObjectIdentifierHeader != BACnetConfirmedServiceRequestSubscribeCOV_MONITOREDOBJECTIDENTIFIERHEADER {
- return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_MONITOREDOBJECTIDENTIFIERHEADER)) + " but got " + strconv.Itoa(int(monitoredObjectIdentifierHeader)))
- }
-
- // Simple Field (monitoredObjectType)
- monitoredObjectType, _monitoredObjectTypeErr := io.ReadUint16(10)
- if _monitoredObjectTypeErr != nil {
- return nil, errors.New("Error parsing 'monitoredObjectType' field " + _monitoredObjectTypeErr.Error())
- }
-
- // Simple Field (monitoredObjectInstanceNumber)
- monitoredObjectInstanceNumber, _monitoredObjectInstanceNumberErr := io.ReadUint32(22)
- if _monitoredObjectInstanceNumberErr != nil {
- return nil, errors.New("Error parsing 'monitoredObjectInstanceNumber' field " + _monitoredObjectInstanceNumberErr.Error())
- }
-
- // Const Field (issueConfirmedNotificationsHeader)
- issueConfirmedNotificationsHeader, _issueConfirmedNotificationsHeaderErr := io.ReadUint8(8)
- if _issueConfirmedNotificationsHeaderErr != nil {
- return nil, errors.New("Error parsing 'issueConfirmedNotificationsHeader' field " + _issueConfirmedNotificationsHeaderErr.Error())
- }
- if issueConfirmedNotificationsHeader != BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSHEADER {
- return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSHEADER)) + " but got " + strconv.Itoa(int(issueConfirmedNotificationsHeader)))
- }
-
- // Const Field (issueConfirmedNotificationsSkipBits)
- issueConfirmedNotificationsSkipBits, _issueConfirmedNotificationsSkipBitsErr := io.ReadUint8(7)
- if _issueConfirmedNotificationsSkipBitsErr != nil {
- return nil, errors.New("Error parsing 'issueConfirmedNotificationsSkipBits' field " + _issueConfirmedNotificationsSkipBitsErr.Error())
- }
- if issueConfirmedNotificationsSkipBits != BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSSKIPBITS {
- return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSSKIPBITS)) + " but got " + strconv.Itoa(int(issueConfirmedNotificationsSkipBits)))
- }
-
- // Simple Field (issueConfirmedNotifications)
- issueConfirmedNotifications, _issueConfirmedNotificationsErr := io.ReadBit()
- if _issueConfirmedNotificationsErr != nil {
- return nil, errors.New("Error parsing 'issueConfirmedNotifications' field " + _issueConfirmedNotificationsErr.Error())
- }
-
- // Const Field (lifetimeHeader)
- lifetimeHeader, _lifetimeHeaderErr := io.ReadUint8(5)
- if _lifetimeHeaderErr != nil {
- return nil, errors.New("Error parsing 'lifetimeHeader' field " + _lifetimeHeaderErr.Error())
- }
- if lifetimeHeader != BACnetConfirmedServiceRequestSubscribeCOV_LIFETIMEHEADER {
- return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_LIFETIMEHEADER)) + " but got " + strconv.Itoa(int(lifetimeHeader)))
- }
-
- // Simple Field (lifetimeLength)
- lifetimeLength, _lifetimeLengthErr := io.ReadUint8(3)
- if _lifetimeLengthErr != nil {
- return nil, errors.New("Error parsing 'lifetimeLength' field " + _lifetimeLengthErr.Error())
- }
-
- // Array field (lifetimeSeconds)
- // Count array
- lifetimeSeconds := make([]int8, lifetimeLength)
- for curItem := uint16(0); curItem < uint16(lifetimeLength); curItem++ {
-
- _item, _err := io.ReadInt8(8)
- if _err != nil {
- return nil, errors.New("Error parsing 'lifetimeSeconds' field " + _err.Error())
- }
- lifetimeSeconds[curItem] = _item
- }
-
- // Create the instance
- return NewBACnetConfirmedServiceRequestSubscribeCOV(subscriberProcessIdentifier, monitoredObjectType, monitoredObjectInstanceNumber, issueConfirmedNotifications, lifetimeLength, lifetimeSeconds), nil
+ // Const Field (subscriberProcessIdentifierHeader)
+ subscriberProcessIdentifierHeader, _subscriberProcessIdentifierHeaderErr := io.ReadUint8(8)
+ if _subscriberProcessIdentifierHeaderErr != nil {
+ return nil, errors.New("Error parsing 'subscriberProcessIdentifierHeader' field " + _subscriberProcessIdentifierHeaderErr.Error())
+ }
+ if subscriberProcessIdentifierHeader != BACnetConfirmedServiceRequestSubscribeCOV_SUBSCRIBERPROCESSIDENTIFIERHEADER {
+ return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_SUBSCRIBERPROCESSIDENTIFIERHEADER)) + " but got " + strconv.Itoa(int(subscriberProcessIdentifierHeader)))
+ }
+
+ // Simple Field (subscriberProcessIdentifier)
+ subscriberProcessIdentifier, _subscriberProcessIdentifierErr := io.ReadUint8(8)
+ if _subscriberProcessIdentifierErr != nil {
+ return nil, errors.New("Error parsing 'subscriberProcessIdentifier' field " + _subscriberProcessIdentifierErr.Error())
+ }
+
+ // Const Field (monitoredObjectIdentifierHeader)
+ monitoredObjectIdentifierHeader, _monitoredObjectIdentifierHeaderErr := io.ReadUint8(8)
+ if _monitoredObjectIdentifierHeaderErr != nil {
+ return nil, errors.New("Error parsing 'monitoredObjectIdentifierHeader' field " + _monitoredObjectIdentifierHeaderErr.Error())
+ }
+ if monitoredObjectIdentifierHeader != BACnetConfirmedServiceRequestSubscribeCOV_MONITOREDOBJECTIDENTIFIERHEADER {
+ return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_MONITOREDOBJECTIDENTIFIERHEADER)) + " but got " + strconv.Itoa(int(monitoredObjectIdentifierHeader)))
+ }
+
+ // Simple Field (monitoredObjectType)
+ monitoredObjectType, _monitoredObjectTypeErr := io.ReadUint16(10)
+ if _monitoredObjectTypeErr != nil {
+ return nil, errors.New("Error parsing 'monitoredObjectType' field " + _monitoredObjectTypeErr.Error())
+ }
+
+ // Simple Field (monitoredObjectInstanceNumber)
+ monitoredObjectInstanceNumber, _monitoredObjectInstanceNumberErr := io.ReadUint32(22)
+ if _monitoredObjectInstanceNumberErr != nil {
+ return nil, errors.New("Error parsing 'monitoredObjectInstanceNumber' field " + _monitoredObjectInstanceNumberErr.Error())
+ }
+
+ // Const Field (issueConfirmedNotificationsHeader)
+ issueConfirmedNotificationsHeader, _issueConfirmedNotificationsHeaderErr := io.ReadUint8(8)
+ if _issueConfirmedNotificationsHeaderErr != nil {
+ return nil, errors.New("Error parsing 'issueConfirmedNotificationsHeader' field " + _issueConfirmedNotificationsHeaderErr.Error())
+ }
+ if issueConfirmedNotificationsHeader != BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSHEADER {
+ return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSHEADER)) + " but got " + strconv.Itoa(int(issueConfirmedNotificationsHeader)))
+ }
+
+ // Const Field (issueConfirmedNotificationsSkipBits)
+ issueConfirmedNotificationsSkipBits, _issueConfirmedNotificationsSkipBitsErr := io.ReadUint8(7)
+ if _issueConfirmedNotificationsSkipBitsErr != nil {
+ return nil, errors.New("Error parsing 'issueConfirmedNotificationsSkipBits' field " + _issueConfirmedNotificationsSkipBitsErr.Error())
+ }
+ if issueConfirmedNotificationsSkipBits != BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSSKIPBITS {
+ return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSSKIPBITS)) + " but got " + strconv.Itoa(int(issueConfirmedNotificationsSkipBits)))
+ }
+
+ // Simple Field (issueConfirmedNotifications)
+ issueConfirmedNotifications, _issueConfirmedNotificationsErr := io.ReadBit()
+ if _issueConfirmedNotificationsErr != nil {
+ return nil, errors.New("Error parsing 'issueConfirmedNotifications' field " + _issueConfirmedNotificationsErr.Error())
+ }
+
+ // Const Field (lifetimeHeader)
+ lifetimeHeader, _lifetimeHeaderErr := io.ReadUint8(5)
+ if _lifetimeHeaderErr != nil {
+ return nil, errors.New("Error parsing 'lifetimeHeader' field " + _lifetimeHeaderErr.Error())
+ }
+ if lifetimeHeader != BACnetConfirmedServiceRequestSubscribeCOV_LIFETIMEHEADER {
+ return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_LIFETIMEHEADER)) + " but got " + strconv.Itoa(int(lifetimeHeader)))
+ }
+
+ // Simple Field (lifetimeLength)
+ lifetimeLength, _lifetimeLengthErr := io.ReadUint8(3)
+ if _lifetimeLengthErr != nil {
+ return nil, errors.New("Error parsing 'lifetimeLength' field " + _lifetimeLengthErr.Error())
+ }
+
+ // Array field (lifetimeSeconds)
+ // Count array
+ lifetimeSeconds := make([]int8, lifetimeLength)
+ for curItem := uint16(0); curItem < uint16(lifetimeLength); curItem++ {
+
+ _item, _err := io.ReadInt8(8)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'lifetimeSeconds' field " + _err.Error())
+ }
+ lifetimeSeconds[curItem] = _item
+ }
+
+ // Create the instance
+ return NewBACnetConfirmedServiceRequestSubscribeCOV(subscriberProcessIdentifier, monitoredObjectType, monitoredObjectInstanceNumber, issueConfirmedNotifications, lifetimeLength, lifetimeSeconds), nil
}
func (m BACnetConfirmedServiceRequestSubscribeCOV) Serialize(io utils.WriteBuffer) error {
- ser := func() error {
-
- // Const Field (subscriberProcessIdentifierHeader)
- _subscriberProcessIdentifierHeaderErr := io.WriteUint8(8, 0x09)
- if _subscriberProcessIdentifierHeaderErr != nil {
- return errors.New("Error serializing 'subscriberProcessIdentifierHeader' field " + _subscriberProcessIdentifierHeaderErr.Error())
- }
-
- // Simple Field (subscriberProcessIdentifier)
- subscriberProcessIdentifier := uint8(m.SubscriberProcessIdentifier)
- _subscriberProcessIdentifierErr := io.WriteUint8(8, (subscriberProcessIdentifier))
- if _subscriberProcessIdentifierErr != nil {
- return errors.New("Error serializing 'subscriberProcessIdentifier' field " + _subscriberProcessIdentifierErr.Error())
- }
-
- // Const Field (monitoredObjectIdentifierHeader)
- _monitoredObjectIdentifierHeaderErr := io.WriteUint8(8, 0x1C)
- if _monitoredObjectIdentifierHeaderErr != nil {
- return errors.New("Error serializing 'monitoredObjectIdentifierHeader' field " + _monitoredObjectIdentifierHeaderErr.Error())
- }
-
- // Simple Field (monitoredObjectType)
- monitoredObjectType := uint16(m.MonitoredObjectType)
- _monitoredObjectTypeErr := io.WriteUint16(10, (monitoredObjectType))
- if _monitoredObjectTypeErr != nil {
- return errors.New("Error serializing 'monitoredObjectType' field " + _monitoredObjectTypeErr.Error())
- }
-
- // Simple Field (monitoredObjectInstanceNumber)
- monitoredObjectInstanceNumber := uint32(m.MonitoredObjectInstanceNumber)
- _monitoredObjectInstanceNumberErr := io.WriteUint32(22, (monitoredObjectInstanceNumber))
- if _monitoredObjectInstanceNumberErr != nil {
- return errors.New("Error serializing 'monitoredObjectInstanceNumber' field " + _monitoredObjectInstanceNumberErr.Error())
- }
-
- // Const Field (issueConfirmedNotificationsHeader)
- _issueConfirmedNotificationsHeaderErr := io.WriteUint8(8, 0x29)
- if _issueConfirmedNotificationsHeaderErr != nil {
- return errors.New("Error serializing 'issueConfirmedNotificationsHeader' field " + _issueConfirmedNotificationsHeaderErr.Error())
- }
-
- // Const Field (issueConfirmedNotificationsSkipBits)
- _issueConfirmedNotificationsSkipBitsErr := io.WriteUint8(7, 0x00)
- if _issueConfirmedNotificationsSkipBitsErr != nil {
- return errors.New("Error serializing 'issueConfirmedNotificationsSkipBits' field " + _issueConfirmedNotificationsSkipBitsErr.Error())
- }
-
- // Simple Field (issueConfirmedNotifications)
- issueConfirmedNotifications := bool(m.IssueConfirmedNotifications)
- _issueConfirmedNotificationsErr := io.WriteBit((bool) (issueConfirmedNotifications))
- if _issueConfirmedNotificationsErr != nil {
- return errors.New("Error serializing 'issueConfirmedNotifications' field " + _issueConfirmedNotificationsErr.Error())
- }
-
- // Const Field (lifetimeHeader)
- _lifetimeHeaderErr := io.WriteUint8(5, 0x07)
- if _lifetimeHeaderErr != nil {
- return errors.New("Error serializing 'lifetimeHeader' field " + _lifetimeHeaderErr.Error())
- }
-
- // Simple Field (lifetimeLength)
- lifetimeLength := uint8(m.LifetimeLength)
- _lifetimeLengthErr := io.WriteUint8(3, (lifetimeLength))
- if _lifetimeLengthErr != nil {
- return errors.New("Error serializing 'lifetimeLength' field " + _lifetimeLengthErr.Error())
- }
-
- // Array Field (lifetimeSeconds)
- if m.LifetimeSeconds != nil {
- for _, _element := range m.LifetimeSeconds {
- _elementErr := io.WriteInt8(8, _element)
- if _elementErr != nil {
- return errors.New("Error serializing 'lifetimeSeconds' field " + _elementErr.Error())
- }
- }
- }
-
- return nil
- }
- return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+ ser := func() error {
+
+ // Const Field (subscriberProcessIdentifierHeader)
+ _subscriberProcessIdentifierHeaderErr := io.WriteUint8(8, 0x09)
+ if _subscriberProcessIdentifierHeaderErr != nil {
+ return errors.New("Error serializing 'subscriberProcessIdentifierHeader' field " + _subscriberProcessIdentifierHeaderErr.Error())
+ }
+
+ // Simple Field (subscriberProcessIdentifier)
+ subscriberProcessIdentifier := uint8(m.SubscriberProcessIdentifier)
+ _subscriberProcessIdentifierErr := io.WriteUint8(8, (subscriberProcessIdentifier))
+ if _subscriberProcessIdentifierErr != nil {
+ return errors.New("Error serializing 'subscriberProcessIdentifier' field " + _subscriberProcessIdentifierErr.Error())
+ }
+
+ // Const Field (monitoredObjectIdentifierHeader)
+ _monitoredObjectIdentifierHeaderErr := io.WriteUint8(8, 0x1C)
+ if _monitoredObjectIdentifierHeaderErr != nil {
+ return errors.New("Error serializing 'monitoredObjectIdentifierHeader' field " + _monitoredObjectIdentifierHeaderErr.Error())
+ }
+
+ // Simple Field (monitoredObjectType)
+ monitoredObjectType := uint16(m.MonitoredObjectType)
+ _monitoredObjectTypeErr := io.WriteUint16(10, (monitoredObjectType))
+ if _monitoredObjectTypeErr != nil {
+ return errors.New("Error serializing 'monitoredObjectType' field " + _monitoredObjectTypeErr.Error())
+ }
+
+ // Simple Field (monitoredObjectInstanceNumber)
+ monitoredObjectInstanceNumber := uint32(m.MonitoredObjectInstanceNumber)
+ _monitoredObjectInstanceNumberErr := io.WriteUint32(22, (monitoredObjectInstanceNumber))
+ if _monitoredObjectInstanceNumberErr != nil {
+ return errors.New("Error serializing 'monitoredObjectInstanceNumber' field " + _monitoredObjectInstanceNumberErr.Error())
+ }
+
+ // Const Field (issueConfirmedNotificationsHeader)
+ _issueConfirmedNotificationsHeaderErr := io.WriteUint8(8, 0x29)
+ if _issueConfirmedNotificationsHeaderErr != nil {
+ return errors.New("Error serializing 'issueConfirmedNotificationsHeader' field " + _issueConfirmedNotificationsHeaderErr.Error())
+ }
+
+ // Const Field (issueConfirmedNotificationsSkipBits)
+ _issueConfirmedNotificationsSkipBitsErr := io.WriteUint8(7, 0x00)
+ if _issueConfirmedNotificationsSkipBitsErr != nil {
+ return errors.New("Error serializing 'issueConfirmedNotificationsSkipBits' field " + _issueConfirmedNotificationsSkipBitsErr.Error())
+ }
+
+ // Simple Field (issueConfirmedNotifications)
+ issueConfirmedNotifications := bool(m.IssueConfirmedNotifications)
+ _issueConfirmedNotificationsErr := io.WriteBit((issueConfirmedNotifications))
+ if _issueConfirmedNotificationsErr != nil {
+ return errors.New("Error serializing 'issueConfirmedNotifications' field " + _issueConfirmedNotificationsErr.Error())
+ }
+
+ // Const Field (lifetimeHeader)
+ _lifetimeHeaderErr := io.WriteUint8(5, 0x07)
+ if _lifetimeHeaderErr != nil {
+ return errors.New("Error serializing 'lifetimeHeader' field " + _lifetimeHeaderErr.Error())
+ }
+
+ // Simple Field (lifetimeLength)
+ lifetimeLength := uint8(m.LifetimeLength)
+ _lifetimeLengthErr := io.WriteUint8(3, (lifetimeLength))
+ if _lifetimeLengthErr != nil {
+ return errors.New("Error serializing 'lifetimeLength' field " + _lifetimeLengthErr.Error())
+ }
+
+ // Array Field (lifetimeSeconds)
+ if m.LifetimeSeconds != nil {
+ for _, _element := range m.LifetimeSeconds {
+ _elementErr := io.WriteInt8(8, _element)
+ if _elementErr != nil {
+ return errors.New("Error serializing 'lifetimeSeconds' field " + _elementErr.Error())
+ }
+ }
+ }
+
+ return nil
+ }
+ return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
}
func (m *BACnetConfirmedServiceRequestSubscribeCOV) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
- for {
- token, err := d.Token()
- if err != nil {
- if err == io.EOF {
- return nil
- }
- return err
- }
- switch token.(type) {
- case xml.StartElement:
- tok := token.(xml.StartElement)
- switch tok.Name.Local {
- case "subscriberProcessIdentifier":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.SubscriberProcessIdentifier = data
- case "monitoredObjectType":
- var data uint16
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.MonitoredObjectType = data
- case "monitoredObjectInstanceNumber":
- var data uint32
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.MonitoredObjectInstanceNumber = data
- case "issueConfirmedNotifications":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.IssueConfirmedNotifications = data
- case "lifetimeLength":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.LifetimeLength = data
- case "lifetimeSeconds":
- var _encoded string
- if err := d.DecodeElement(&_encoded, &tok); err != nil {
- return err
- }
- _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
- _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
- if err != nil {
- return err
- }
- m.LifetimeSeconds = utils.ByteToInt8(_decoded[0:_len])
- }
- }
- }
+ for {
+ token, err := d.Token()
+ if err != nil {
+ if err == io.EOF {
+ return nil
+ }
+ return err
+ }
+ switch token.(type) {
+ case xml.StartElement:
+ tok := token.(xml.StartElement)
+ switch tok.Name.Local {
+ case "subscriberProcessIdentifier":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.SubscriberProcessIdentifier = data
+ case "monitoredObjectType":
+ var data uint16
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.MonitoredObjectType = data
+ case "monitoredObjectInstanceNumber":
+ var data uint32
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.MonitoredObjectInstanceNumber = data
+ case "issueConfirmedNotifications":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.IssueConfirmedNotifications = data
+ case "lifetimeLength":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.LifetimeLength = data
+ case "lifetimeSeconds":
+ var _encoded string
+ if err := d.DecodeElement(&_encoded, &tok); err != nil {
+ return err
+ }
+ _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
+ _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
+ if err != nil {
+ return err
+ }
+ m.LifetimeSeconds = utils.ByteToInt8(_decoded[0:_len])
+ }
+ }
+ }
}
func (m BACnetConfirmedServiceRequestSubscribeCOV) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
- if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
- {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestSubscribeCOV"},
- }}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.SubscriberProcessIdentifier, xml.StartElement{Name: xml.Name{Local: "subscriberProcessIdentifier"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.MonitoredObjectType, xml.StartElement{Name: xml.Name{Local: "monitoredObjectType"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.MonitoredObjectInstanceNumber, xml.StartElement{Name: xml.Name{Local: "monitoredObjectInstanceNumber"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.IssueConfirmedNotifications, xml.StartElement{Name: xml.Name{Local: "issueConfirmedNotifications"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.LifetimeLength, xml.StartElement{Name: xml.Name{Local: "lifetimeLength"}}); err != nil {
- return err
- }
- _encodedLifetimeSeconds := make([]byte, base64.StdEncoding.EncodedLen(len(m.LifetimeSeconds)))
- base64.StdEncoding.Encode(_encodedLifetimeSeconds, utils.Int8ToByte(m.LifetimeSeconds))
- if err := e.EncodeElement(_encodedLifetimeSeconds, xml.StartElement{Name: xml.Name{Local: "lifetimeSeconds"}}); err != nil {
- return err
- }
- if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
- return err
- }
- return nil
+ if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+ {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestSubscribeCOV"},
+ }}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.SubscriberProcessIdentifier, xml.StartElement{Name: xml.Name{Local: "subscriberProcessIdentifier"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.MonitoredObjectType, xml.StartElement{Name: xml.Name{Local: "monitoredObjectType"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.MonitoredObjectInstanceNumber, xml.StartElement{Name: xml.Name{Local: "monitoredObjectInstanceNumber"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.IssueConfirmedNotifications, xml.StartElement{Name: xml.Name{Local: "issueConfirmedNotifications"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.LifetimeLength, xml.StartElement{Name: xml.Name{Local: "lifetimeLength"}}); err != nil {
+ return err
+ }
+ _encodedLifetimeSeconds := make([]byte, base64.StdEncoding.EncodedLen(len(m.LifetimeSeconds)))
+ base64.StdEncoding.Encode(_encodedLifetimeSeconds, utils.Int8ToByte(m.LifetimeSeconds))
+ if err := e.EncodeElement(_encodedLifetimeSeconds, xml.StartElement{Name: xml.Name{Local: "lifetimeSeconds"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+ return err
+ }
+ return nil
}
-
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go
index a3b8f3a..18c2751 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go
@@ -19,708 +19,705 @@
package model
import (
- "encoding/xml"
- "errors"
- "io"
- log "github.com/sirupsen/logrus"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
- "reflect"
+ "encoding/xml"
+ "errors"
+ log "github.com/sirupsen/logrus"
+ "io"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+ "reflect"
)
// The data-structure of this message
type NPDU struct {
- ProtocolVersionNumber uint8
- MessageTypeFieldPresent bool
- DestinationSpecified bool
- SourceSpecified bool
- ExpectingReply bool
- NetworkPriority uint8
- DestinationNetworkAddress *uint16
- DestinationLength *uint8
- DestinationAddress []uint8
- SourceNetworkAddress *uint16
- SourceLength *uint8
- SourceAddress []uint8
- HopCount *uint8
- Nlm *INLM
- Apdu *IAPDU
-
+ ProtocolVersionNumber uint8
+ MessageTypeFieldPresent bool
+ DestinationSpecified bool
+ SourceSpecified bool
+ ExpectingReply bool
+ NetworkPriority uint8
+ DestinationNetworkAddress *uint16
+ DestinationLength *uint8
+ DestinationAddress []uint8
+ SourceNetworkAddress *uint16
+ SourceLength *uint8
+ SourceAddress []uint8
+ HopCount *uint8
+ Nlm *INLM
+ Apdu *IAPDU
}
// The corresponding interface
type INPDU interface {
- spi.Message
- Serialize(io utils.WriteBuffer) error
+ spi.Message
+ Serialize(io utils.WriteBuffer) error
}
-
func NewNPDU(protocolVersionNumber uint8, messageTypeFieldPresent bool, destinationSpecified bool, sourceSpecified bool, expectingReply bool, networkPriority uint8, destinationNetworkAddress *uint16, destinationLength *uint8, destinationAddress []uint8, sourceNetworkAddress *uint16, sourceLength *uint8, sourceAddress []uint8, hopCount *uint8, nlm *INLM, apdu *IAPDU) spi.Message {
- return &NPDU{ProtocolVersionNumber: protocolVersionNumber, MessageTypeFieldPresent: messageTypeFieldPresent, DestinationSpecified: destinationSpecified, SourceSpecified: sourceSpecified, ExpectingReply: expectingReply, NetworkPriority: networkPriority, DestinationNetworkAddress: destinationNetworkAddress, DestinationLength: destinationLength, DestinationAddress: destinationAddress, SourceNetworkAddress: sourceNetworkAddress, SourceLength: sourceLength, SourceAddress: sourceAddress, H [...]
+ return &NPDU{ProtocolVersionNumber: protocolVersionNumber, MessageTypeFieldPresent: messageTypeFieldPresent, DestinationSpecified: destinationSpecified, SourceSpecified: sourceSpecified, ExpectingReply: expectingReply, NetworkPriority: networkPriority, DestinationNetworkAddress: destinationNetworkAddress, DestinationLength: destinationLength, DestinationAddress: destinationAddress, SourceNetworkAddress: sourceNetworkAddress, SourceLength: sourceLength, SourceAddress: sourceAddress, HopC [...]
}
func CastINPDU(structType interface{}) INPDU {
- castFunc := func(typ interface{}) INPDU {
- if iNPDU, ok := typ.(INPDU); ok {
- return iNPDU
- }
- return nil
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) INPDU {
+ if iNPDU, ok := typ.(INPDU); ok {
+ return iNPDU
+ }
+ return nil
+ }
+ return castFunc(structType)
}
func CastNPDU(structType interface{}) NPDU {
- castFunc := func(typ interface{}) NPDU {
- if sNPDU, ok := typ.(NPDU); ok {
- return sNPDU
- }
- if sNPDU, ok := typ.(*NPDU); ok {
- return *sNPDU
- }
- return NPDU{}
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) NPDU {
+ if sNPDU, ok := typ.(NPDU); ok {
+ return sNPDU
+ }
+ if sNPDU, ok := typ.(*NPDU); ok {
+ return *sNPDU
+ }
+ return NPDU{}
+ }
+ return castFunc(structType)
}
func (m NPDU) LengthInBits() uint16 {
- var lengthInBits uint16 = 0
+ var lengthInBits uint16 = 0
- // Simple field (protocolVersionNumber)
- lengthInBits += 8
+ // Simple field (protocolVersionNumber)
+ lengthInBits += 8
- // Simple field (messageTypeFieldPresent)
- lengthInBits += 1
+ // Simple field (messageTypeFieldPresent)
+ lengthInBits += 1
- // Reserved Field (reserved)
- lengthInBits += 1
+ // Reserved Field (reserved)
+ lengthInBits += 1
- // Simple field (destinationSpecified)
- lengthInBits += 1
+ // Simple field (destinationSpecified)
+ lengthInBits += 1
- // Reserved Field (reserved)
- lengthInBits += 1
+ // Reserved Field (reserved)
+ lengthInBits += 1
- // Simple field (sourceSpecified)
- lengthInBits += 1
+ // Simple field (sourceSpecified)
+ lengthInBits += 1
- // Simple field (expectingReply)
- lengthInBits += 1
+ // Simple field (expectingReply)
+ lengthInBits += 1
- // Simple field (networkPriority)
- lengthInBits += 2
+ // Simple field (networkPriority)
+ lengthInBits += 2
- // Optional Field (destinationNetworkAddress)
- if m.DestinationNetworkAddress != nil {
- lengthInBits += 16
- }
+ // Optional Field (destinationNetworkAddress)
+ if m.DestinationNetworkAddress != nil {
+ lengthInBits += 16
+ }
- // Optional Field (destinationLength)
- if m.DestinationLength != nil {
- lengthInBits += 8
- }
+ // Optional Field (destinationLength)
+ if m.DestinationLength != nil {
+ lengthInBits += 8
+ }
- // Array field
- if len(m.DestinationAddress) > 0 {
- lengthInBits += 8 * uint16(len(m.DestinationAddress))
- }
+ // Array field
+ if len(m.DestinationAddress) > 0 {
+ lengthInBits += 8 * uint16(len(m.DestinationAddress))
+ }
- // Optional Field (sourceNetworkAddress)
- if m.SourceNetworkAddress != nil {
- lengthInBits += 16
- }
+ // Optional Field (sourceNetworkAddress)
+ if m.SourceNetworkAddress != nil {
+ lengthInBits += 16
+ }
- // Optional Field (sourceLength)
- if m.SourceLength != nil {
- lengthInBits += 8
- }
+ // Optional Field (sourceLength)
+ if m.SourceLength != nil {
+ lengthInBits += 8
+ }
- // Array field
- if len(m.SourceAddress) > 0 {
- lengthInBits += 8 * uint16(len(m.SourceAddress))
- }
+ // Array field
+ if len(m.SourceAddress) > 0 {
+ lengthInBits += 8 * uint16(len(m.SourceAddress))
+ }
- // Optional Field (hopCount)
- if m.HopCount != nil {
- lengthInBits += 8
- }
+ // Optional Field (hopCount)
+ if m.HopCount != nil {
+ lengthInBits += 8
+ }
- // Optional Field (nlm)
- if m.Nlm != nil {
- lengthInBits += (*m.Nlm).LengthInBits()
- }
+ // Optional Field (nlm)
+ if m.Nlm != nil {
+ lengthInBits += (*m.Nlm).LengthInBits()
+ }
- // Optional Field (apdu)
- if m.Apdu != nil {
- lengthInBits += (*m.Apdu).LengthInBits()
- }
+ // Optional Field (apdu)
+ if m.Apdu != nil {
+ lengthInBits += (*m.Apdu).LengthInBits()
+ }
- return lengthInBits
+ return lengthInBits
}
func (m NPDU) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
func NPDUParse(io *utils.ReadBuffer, npduLength uint16) (spi.Message, error) {
- // Simple Field (protocolVersionNumber)
- protocolVersionNumber, _protocolVersionNumberErr := io.ReadUint8(8)
- if _protocolVersionNumberErr != nil {
- return nil, errors.New("Error parsing 'protocolVersionNumber' field " + _protocolVersionNumberErr.Error())
- }
-
- // Simple Field (messageTypeFieldPresent)
- messageTypeFieldPresent, _messageTypeFieldPresentErr := io.ReadBit()
- if _messageTypeFieldPresentErr != nil {
- return nil, errors.New("Error parsing 'messageTypeFieldPresent' field " + _messageTypeFieldPresentErr.Error())
- }
-
- // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
- {
- reserved, _err := io.ReadUint8(1)
- if _err != nil {
- return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
- }
- if reserved != uint8(0) {
- log.WithFields(log.Fields{
- "expected value": uint8(0),
- "got value": reserved,
- }).Info("Got unexpected response.")
- }
- }
-
- // Simple Field (destinationSpecified)
- destinationSpecified, _destinationSpecifiedErr := io.ReadBit()
- if _destinationSpecifiedErr != nil {
- return nil, errors.New("Error parsing 'destinationSpecified' field " + _destinationSpecifiedErr.Error())
- }
-
- // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
- {
- reserved, _err := io.ReadUint8(1)
- if _err != nil {
- return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
- }
- if reserved != uint8(0) {
- log.WithFields(log.Fields{
- "expected value": uint8(0),
- "got value": reserved,
- }).Info("Got unexpected response.")
- }
- }
-
- // Simple Field (sourceSpecified)
- sourceSpecified, _sourceSpecifiedErr := io.ReadBit()
- if _sourceSpecifiedErr != nil {
- return nil, errors.New("Error parsing 'sourceSpecified' field " + _sourceSpecifiedErr.Error())
- }
-
- // Simple Field (expectingReply)
- expectingReply, _expectingReplyErr := io.ReadBit()
- if _expectingReplyErr != nil {
- return nil, errors.New("Error parsing 'expectingReply' field " + _expectingReplyErr.Error())
- }
-
- // Simple Field (networkPriority)
- networkPriority, _networkPriorityErr := io.ReadUint8(2)
- if _networkPriorityErr != nil {
- return nil, errors.New("Error parsing 'networkPriority' field " + _networkPriorityErr.Error())
- }
-
- // Optional Field (destinationNetworkAddress) (Can be skipped, if a given expression evaluates to false)
- var destinationNetworkAddress *uint16 = nil
- if destinationSpecified {
- _val, _err := io.ReadUint16(16)
- if _err != nil {
- return nil, errors.New("Error parsing 'destinationNetworkAddress' field " + _err.Error())
- }
-
- destinationNetworkAddress = &_val
- }
-
- // Optional Field (destinationLength) (Can be skipped, if a given expression evaluates to false)
- var destinationLength *uint8 = nil
- if destinationSpecified {
- _val, _err := io.ReadUint8(8)
- if _err != nil {
- return nil, errors.New("Error parsing 'destinationLength' field " + _err.Error())
- }
-
- destinationLength = &_val
- }
-
- // Array field (destinationAddress)
- // Count array
- destinationAddress := make([]uint8, utils.InlineIf(destinationSpecified, uint16((*destinationLength)), uint16(uint16(0))))
- for curItem := uint16(0); curItem < uint16(utils.InlineIf(destinationSpecified, uint16((*destinationLength)), uint16(uint16(0)))); curItem++ {
-
- _item, _err := io.ReadUint8(8)
- if _err != nil {
- return nil, errors.New("Error parsing 'destinationAddress' field " + _err.Error())
- }
- destinationAddress[curItem] = _item
- }
-
- // Optional Field (sourceNetworkAddress) (Can be skipped, if a given expression evaluates to false)
- var sourceNetworkAddress *uint16 = nil
- if sourceSpecified {
- _val, _err := io.ReadUint16(16)
- if _err != nil {
- return nil, errors.New("Error parsing 'sourceNetworkAddress' field " + _err.Error())
- }
-
- sourceNetworkAddress = &_val
- }
-
- // Optional Field (sourceLength) (Can be skipped, if a given expression evaluates to false)
- var sourceLength *uint8 = nil
- if sourceSpecified {
- _val, _err := io.ReadUint8(8)
- if _err != nil {
- return nil, errors.New("Error parsing 'sourceLength' field " + _err.Error())
- }
-
- sourceLength = &_val
- }
-
- // Array field (sourceAddress)
- // Count array
- sourceAddress := make([]uint8, utils.InlineIf(sourceSpecified, uint16((*sourceLength)), uint16(uint16(0))))
- for curItem := uint16(0); curItem < uint16(utils.InlineIf(sourceSpecified, uint16((*sourceLength)), uint16(uint16(0)))); curItem++ {
-
- _item, _err := io.ReadUint8(8)
- if _err != nil {
- return nil, errors.New("Error parsing 'sourceAddress' field " + _err.Error())
- }
- sourceAddress[curItem] = _item
- }
-
- // Optional Field (hopCount) (Can be skipped, if a given expression evaluates to false)
- var hopCount *uint8 = nil
- if destinationSpecified {
- _val, _err := io.ReadUint8(8)
- if _err != nil {
- return nil, errors.New("Error parsing 'hopCount' field " + _err.Error())
- }
-
- hopCount = &_val
- }
-
- // Optional Field (nlm) (Can be skipped, if a given expression evaluates to false)
- var nlm *INLM = nil
- if messageTypeFieldPresent {
- _message, _err := NLMParse(io, uint16(npduLength) - uint16(uint16(uint16(uint16(uint16(uint16(2)) + uint16(uint16(utils.InlineIf(sourceSpecified, uint16(uint16(uint16(3)) + uint16((*sourceLength))), uint16(uint16(0)))))) + uint16(uint16(utils.InlineIf(destinationSpecified, uint16(uint16(uint16(3)) + uint16((*destinationLength))), uint16(uint16(0)))))) + uint16(uint16(utils.InlineIf(bool(bool(destinationSpecified) || bool(sourceSpecified)), uint16(uint16(1)), uint16(uint16(0))))))))
- if _err != nil {
- return nil, errors.New("Error parsing 'nlm' field " + _err.Error())
- }
- var _item INLM
- _item, _ok := _message.(INLM)
- if !_ok {
- return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_item).Name() + " to INLM")
- }
- nlm = &_item
- }
-
- // Optional Field (apdu) (Can be skipped, if a given expression evaluates to false)
- var apdu *IAPDU = nil
- if !(messageTypeFieldPresent) {
- _message, _err := APDUParse(io, uint16(npduLength) - uint16(uint16(uint16(uint16(uint16(uint16(2)) + uint16(uint16(utils.InlineIf(sourceSpecified, uint16(uint16(uint16(3)) + uint16((*sourceLength))), uint16(uint16(0)))))) + uint16(uint16(utils.InlineIf(destinationSpecified, uint16(uint16(uint16(3)) + uint16((*destinationLength))), uint16(uint16(0)))))) + uint16(uint16(utils.InlineIf(bool(bool(destinationSpecified) || bool(sourceSpecified)), uint16(uint16(1)), uint16(uint16(0))))))))
- if _err != nil {
- return nil, errors.New("Error parsing 'apdu' field " + _err.Error())
- }
- var _item IAPDU
- _item, _ok := _message.(IAPDU)
- if !_ok {
- return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_item).Name() + " to IAPDU")
- }
- apdu = &_item
- }
-
- // Create the instance
- return NewNPDU(protocolVersionNumber, messageTypeFieldPresent, destinationSpecified, sourceSpecified, expectingReply, networkPriority, destinationNetworkAddress, destinationLength, destinationAddress, sourceNetworkAddress, sourceLength, sourceAddress, hopCount, nlm, apdu), nil
+ // Simple Field (protocolVersionNumber)
+ protocolVersionNumber, _protocolVersionNumberErr := io.ReadUint8(8)
+ if _protocolVersionNumberErr != nil {
+ return nil, errors.New("Error parsing 'protocolVersionNumber' field " + _protocolVersionNumberErr.Error())
+ }
+
+ // Simple Field (messageTypeFieldPresent)
+ messageTypeFieldPresent, _messageTypeFieldPresentErr := io.ReadBit()
+ if _messageTypeFieldPresentErr != nil {
+ return nil, errors.New("Error parsing 'messageTypeFieldPresent' field " + _messageTypeFieldPresentErr.Error())
+ }
+
+ // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+ {
+ reserved, _err := io.ReadUint8(1)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+ }
+ if reserved != uint8(0) {
+ log.WithFields(log.Fields{
+ "expected value": uint8(0),
+ "got value": reserved,
+ }).Info("Got unexpected response.")
+ }
+ }
+
+ // Simple Field (destinationSpecified)
+ destinationSpecified, _destinationSpecifiedErr := io.ReadBit()
+ if _destinationSpecifiedErr != nil {
+ return nil, errors.New("Error parsing 'destinationSpecified' field " + _destinationSpecifiedErr.Error())
+ }
+
+ // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+ {
+ reserved, _err := io.ReadUint8(1)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+ }
+ if reserved != uint8(0) {
+ log.WithFields(log.Fields{
+ "expected value": uint8(0),
+ "got value": reserved,
+ }).Info("Got unexpected response.")
+ }
+ }
+
+ // Simple Field (sourceSpecified)
+ sourceSpecified, _sourceSpecifiedErr := io.ReadBit()
+ if _sourceSpecifiedErr != nil {
+ return nil, errors.New("Error parsing 'sourceSpecified' field " + _sourceSpecifiedErr.Error())
+ }
+
+ // Simple Field (expectingReply)
+ expectingReply, _expectingReplyErr := io.ReadBit()
+ if _expectingReplyErr != nil {
+ return nil, errors.New("Error parsing 'expectingReply' field " + _expectingReplyErr.Error())
+ }
+
+ // Simple Field (networkPriority)
+ networkPriority, _networkPriorityErr := io.ReadUint8(2)
+ if _networkPriorityErr != nil {
+ return nil, errors.New("Error parsing 'networkPriority' field " + _networkPriorityErr.Error())
+ }
+
+ // Optional Field (destinationNetworkAddress) (Can be skipped, if a given expression evaluates to false)
+ var destinationNetworkAddress *uint16 = nil
+ if destinationSpecified {
+ _val, _err := io.ReadUint16(16)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'destinationNetworkAddress' field " + _err.Error())
+ }
+
+ destinationNetworkAddress = &_val
+ }
+
+ // Optional Field (destinationLength) (Can be skipped, if a given expression evaluates to false)
+ var destinationLength *uint8 = nil
+ if destinationSpecified {
+ _val, _err := io.ReadUint8(8)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'destinationLength' field " + _err.Error())
+ }
+
+ destinationLength = &_val
+ }
+
+ // Array field (destinationAddress)
+ // Count array
+ destinationAddress := make([]uint8, utils.InlineIf(destinationSpecified, uint16((*destinationLength)), uint16(uint16(0))))
+ for curItem := uint16(0); curItem < uint16(utils.InlineIf(destinationSpecified, uint16((*destinationLength)), uint16(uint16(0)))); curItem++ {
+
+ _item, _err := io.ReadUint8(8)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'destinationAddress' field " + _err.Error())
+ }
+ destinationAddress[curItem] = _item
+ }
+
+ // Optional Field (sourceNetworkAddress) (Can be skipped, if a given expression evaluates to false)
+ var sourceNetworkAddress *uint16 = nil
+ if sourceSpecified {
+ _val, _err := io.ReadUint16(16)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'sourceNetworkAddress' field " + _err.Error())
+ }
+
+ sourceNetworkAddress = &_val
+ }
+
+ // Optional Field (sourceLength) (Can be skipped, if a given expression evaluates to false)
+ var sourceLength *uint8 = nil
+ if sourceSpecified {
+ _val, _err := io.ReadUint8(8)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'sourceLength' field " + _err.Error())
+ }
+
+ sourceLength = &_val
+ }
+
+ // Array field (sourceAddress)
+ // Count array
+ sourceAddress := make([]uint8, utils.InlineIf(sourceSpecified, uint16((*sourceLength)), uint16(uint16(0))))
+ for curItem := uint16(0); curItem < uint16(utils.InlineIf(sourceSpecified, uint16((*sourceLength)), uint16(uint16(0)))); curItem++ {
+
+ _item, _err := io.ReadUint8(8)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'sourceAddress' field " + _err.Error())
+ }
+ sourceAddress[curItem] = _item
+ }
+
+ // Optional Field (hopCount) (Can be skipped, if a given expression evaluates to false)
+ var hopCount *uint8 = nil
+ if destinationSpecified {
+ _val, _err := io.ReadUint8(8)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'hopCount' field " + _err.Error())
+ }
+
+ hopCount = &_val
+ }
+
+ // Optional Field (nlm) (Can be skipped, if a given expression evaluates to false)
+ var nlm *INLM = nil
+ if messageTypeFieldPresent {
+ _message, _err := NLMParse(io, uint16(npduLength)-uint16(uint16(uint16(uint16(uint16(uint16(2))+uint16(uint16(utils.InlineIf(sourceSpecified, uint16(uint16(uint16(3))+uint16((*sourceLength))), uint16(uint16(0))))))+uint16(uint16(utils.InlineIf(destinationSpecified, uint16(uint16(uint16(3))+uint16((*destinationLength))), uint16(uint16(0))))))+uint16(uint16(utils.InlineIf(bool(bool(destinationSpecified) || bool(sourceSpecified)), uint16(uint16(1)), uint16(uint16(0))))))))
+ if _err != nil {
+ return nil, errors.New("Error parsing 'nlm' field " + _err.Error())
+ }
+ var _item INLM
+ _item, _ok := _message.(INLM)
+ if !_ok {
+ return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_item).Name() + " to INLM")
+ }
+ nlm = &_item
+ }
+
+ // Optional Field (apdu) (Can be skipped, if a given expression evaluates to false)
+ var apdu *IAPDU = nil
+ if !(messageTypeFieldPresent) {
+ _message, _err := APDUParse(io, uint16(npduLength)-uint16(uint16(uint16(uint16(uint16(uint16(2))+uint16(uint16(utils.InlineIf(sourceSpecified, uint16(uint16(uint16(3))+uint16((*sourceLength))), uint16(uint16(0))))))+uint16(uint16(utils.InlineIf(destinationSpecified, uint16(uint16(uint16(3))+uint16((*destinationLength))), uint16(uint16(0))))))+uint16(uint16(utils.InlineIf(bool(bool(destinationSpecified) || bool(sourceSpecified)), uint16(uint16(1)), uint16(uint16(0))))))))
+ if _err != nil {
+ return nil, errors.New("Error parsing 'apdu' field " + _err.Error())
+ }
+ var _item IAPDU
+ _item, _ok := _message.(IAPDU)
+ if !_ok {
+ return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_item).Name() + " to IAPDU")
+ }
+ apdu = &_item
+ }
+
+ // Create the instance
+ return NewNPDU(protocolVersionNumber, messageTypeFieldPresent, destinationSpecified, sourceSpecified, expectingReply, networkPriority, destinationNetworkAddress, destinationLength, destinationAddress, sourceNetworkAddress, sourceLength, sourceAddress, hopCount, nlm, apdu), nil
}
func (m NPDU) Serialize(io utils.WriteBuffer) error {
- // Simple Field (protocolVersionNumber)
- protocolVersionNumber := uint8(m.ProtocolVersionNumber)
- _protocolVersionNumberErr := io.WriteUint8(8, (protocolVersionNumber))
- if _protocolVersionNumberErr != nil {
- return errors.New("Error serializing 'protocolVersionNumber' field " + _protocolVersionNumberErr.Error())
- }
-
- // Simple Field (messageTypeFieldPresent)
- messageTypeFieldPresent := bool(m.MessageTypeFieldPresent)
- _messageTypeFieldPresentErr := io.WriteBit((bool) (messageTypeFieldPresent))
- if _messageTypeFieldPresentErr != nil {
- return errors.New("Error serializing 'messageTypeFieldPresent' field " + _messageTypeFieldPresentErr.Error())
- }
-
- // Reserved Field (reserved)
- {
- _err := io.WriteUint8(1, uint8(0))
- if _err != nil {
- return errors.New("Error serializing 'reserved' field " + _err.Error())
- }
- }
-
- // Simple Field (destinationSpecified)
- destinationSpecified := bool(m.DestinationSpecified)
- _destinationSpecifiedErr := io.WriteBit((bool) (destinationSpecified))
- if _destinationSpecifiedErr != nil {
- return errors.New("Error serializing 'destinationSpecified' field " + _destinationSpecifiedErr.Error())
- }
-
- // Reserved Field (reserved)
- {
- _err := io.WriteUint8(1, uint8(0))
- if _err != nil {
- return errors.New("Error serializing 'reserved' field " + _err.Error())
- }
- }
-
- // Simple Field (sourceSpecified)
- sourceSpecified := bool(m.SourceSpecified)
- _sourceSpecifiedErr := io.WriteBit((bool) (sourceSpecified))
- if _sourceSpecifiedErr != nil {
- return errors.New("Error serializing 'sourceSpecified' field " + _sourceSpecifiedErr.Error())
- }
-
- // Simple Field (expectingReply)
- expectingReply := bool(m.ExpectingReply)
- _expectingReplyErr := io.WriteBit((bool) (expectingReply))
- if _expectingReplyErr != nil {
- return errors.New("Error serializing 'expectingReply' field " + _expectingReplyErr.Error())
- }
-
- // Simple Field (networkPriority)
- networkPriority := uint8(m.NetworkPriority)
- _networkPriorityErr := io.WriteUint8(2, (networkPriority))
- if _networkPriorityErr != nil {
- return errors.New("Error serializing 'networkPriority' field " + _networkPriorityErr.Error())
- }
-
- // Optional Field (destinationNetworkAddress) (Can be skipped, if the value is null)
- var destinationNetworkAddress *uint16 = nil
- if m.DestinationNetworkAddress != nil {
- destinationNetworkAddress = m.DestinationNetworkAddress
- _destinationNetworkAddressErr := io.WriteUint16(16, *(destinationNetworkAddress))
- if _destinationNetworkAddressErr != nil {
- return errors.New("Error serializing 'destinationNetworkAddress' field " + _destinationNetworkAddressErr.Error())
- }
- }
-
- // Optional Field (destinationLength) (Can be skipped, if the value is null)
- var destinationLength *uint8 = nil
- if m.DestinationLength != nil {
- destinationLength = m.DestinationLength
- _destinationLengthErr := io.WriteUint8(8, *(destinationLength))
- if _destinationLengthErr != nil {
- return errors.New("Error serializing 'destinationLength' field " + _destinationLengthErr.Error())
- }
- }
-
- // Array Field (destinationAddress)
- if m.DestinationAddress != nil {
- for _, _element := range m.DestinationAddress {
- _elementErr := io.WriteUint8(8, _element)
- if _elementErr != nil {
- return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
- }
- }
- }
-
- // Optional Field (sourceNetworkAddress) (Can be skipped, if the value is null)
- var sourceNetworkAddress *uint16 = nil
- if m.SourceNetworkAddress != nil {
- sourceNetworkAddress = m.SourceNetworkAddress
- _sourceNetworkAddressErr := io.WriteUint16(16, *(sourceNetworkAddress))
- if _sourceNetworkAddressErr != nil {
- return errors.New("Error serializing 'sourceNetworkAddress' field " + _sourceNetworkAddressErr.Error())
- }
- }
-
- // Optional Field (sourceLength) (Can be skipped, if the value is null)
- var sourceLength *uint8 = nil
- if m.SourceLength != nil {
- sourceLength = m.SourceLength
- _sourceLengthErr := io.WriteUint8(8, *(sourceLength))
- if _sourceLengthErr != nil {
- return errors.New("Error serializing 'sourceLength' field " + _sourceLengthErr.Error())
- }
- }
-
- // Array Field (sourceAddress)
- if m.SourceAddress != nil {
- for _, _element := range m.SourceAddress {
- _elementErr := io.WriteUint8(8, _element)
- if _elementErr != nil {
- return errors.New("Error serializing 'sourceAddress' field " + _elementErr.Error())
- }
- }
- }
-
- // Optional Field (hopCount) (Can be skipped, if the value is null)
- var hopCount *uint8 = nil
- if m.HopCount != nil {
- hopCount = m.HopCount
- _hopCountErr := io.WriteUint8(8, *(hopCount))
- if _hopCountErr != nil {
- return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
- }
- }
-
- // Optional Field (nlm) (Can be skipped, if the value is null)
- var nlm *INLM = nil
- if m.Nlm != nil {
- nlm = m.Nlm
- _nlmErr := CastINLM(*nlm).Serialize(io)
- if _nlmErr != nil {
- return errors.New("Error serializing 'nlm' field " + _nlmErr.Error())
- }
- }
-
- // Optional Field (apdu) (Can be skipped, if the value is null)
- var apdu *IAPDU = nil
- if m.Apdu != nil {
- apdu = m.Apdu
- _apduErr := CastIAPDU(*apdu).Serialize(io)
- if _apduErr != nil {
- return errors.New("Error serializing 'apdu' field " + _apduErr.Error())
- }
- }
-
- return nil
+ // Simple Field (protocolVersionNumber)
+ protocolVersionNumber := uint8(m.ProtocolVersionNumber)
+ _protocolVersionNumberErr := io.WriteUint8(8, (protocolVersionNumber))
+ if _protocolVersionNumberErr != nil {
+ return errors.New("Error serializing 'protocolVersionNumber' field " + _protocolVersionNumberErr.Error())
+ }
+
+ // Simple Field (messageTypeFieldPresent)
+ messageTypeFieldPresent := bool(m.MessageTypeFieldPresent)
+ _messageTypeFieldPresentErr := io.WriteBit((messageTypeFieldPresent))
+ if _messageTypeFieldPresentErr != nil {
+ return errors.New("Error serializing 'messageTypeFieldPresent' field " + _messageTypeFieldPresentErr.Error())
+ }
+
+ // Reserved Field (reserved)
+ {
+ _err := io.WriteUint8(1, uint8(0))
+ if _err != nil {
+ return errors.New("Error serializing 'reserved' field " + _err.Error())
+ }
+ }
+
+ // Simple Field (destinationSpecified)
+ destinationSpecified := bool(m.DestinationSpecified)
+ _destinationSpecifiedErr := io.WriteBit((destinationSpecified))
+ if _destinationSpecifiedErr != nil {
+ return errors.New("Error serializing 'destinationSpecified' field " + _destinationSpecifiedErr.Error())
+ }
+
+ // Reserved Field (reserved)
+ {
+ _err := io.WriteUint8(1, uint8(0))
+ if _err != nil {
+ return errors.New("Error serializing 'reserved' field " + _err.Error())
+ }
+ }
+
+ // Simple Field (sourceSpecified)
+ sourceSpecified := bool(m.SourceSpecified)
+ _sourceSpecifiedErr := io.WriteBit((sourceSpecified))
+ if _sourceSpecifiedErr != nil {
+ return errors.New("Error serializing 'sourceSpecified' field " + _sourceSpecifiedErr.Error())
+ }
+
+ // Simple Field (expectingReply)
+ expectingReply := bool(m.ExpectingReply)
+ _expectingReplyErr := io.WriteBit((expectingReply))
+ if _expectingReplyErr != nil {
+ return errors.New("Error serializing 'expectingReply' field " + _expectingReplyErr.Error())
+ }
+
+ // Simple Field (networkPriority)
+ networkPriority := uint8(m.NetworkPriority)
+ _networkPriorityErr := io.WriteUint8(2, (networkPriority))
+ if _networkPriorityErr != nil {
+ return errors.New("Error serializing 'networkPriority' field " + _networkPriorityErr.Error())
+ }
+
+ // Optional Field (destinationNetworkAddress) (Can be skipped, if the value is null)
+ var destinationNetworkAddress *uint16 = nil
+ if m.DestinationNetworkAddress != nil {
+ destinationNetworkAddress = m.DestinationNetworkAddress
+ _destinationNetworkAddressErr := io.WriteUint16(16, *(destinationNetworkAddress))
+ if _destinationNetworkAddressErr != nil {
+ return errors.New("Error serializing 'destinationNetworkAddress' field " + _destinationNetworkAddressErr.Error())
+ }
+ }
+
+ // Optional Field (destinationLength) (Can be skipped, if the value is null)
+ var destinationLength *uint8 = nil
+ if m.DestinationLength != nil {
+ destinationLength = m.DestinationLength
+ _destinationLengthErr := io.WriteUint8(8, *(destinationLength))
+ if _destinationLengthErr != nil {
+ return errors.New("Error serializing 'destinationLength' field " + _destinationLengthErr.Error())
+ }
+ }
+
+ // Array Field (destinationAddress)
+ if m.DestinationAddress != nil {
+ for _, _element := range m.DestinationAddress {
+ _elementErr := io.WriteUint8(8, _element)
+ if _elementErr != nil {
+ return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
+ }
+ }
+ }
+
+ // Optional Field (sourceNetworkAddress) (Can be skipped, if the value is null)
+ var sourceNetworkAddress *uint16 = nil
+ if m.SourceNetworkAddress != nil {
+ sourceNetworkAddress = m.SourceNetworkAddress
+ _sourceNetworkAddressErr := io.WriteUint16(16, *(sourceNetworkAddress))
+ if _sourceNetworkAddressErr != nil {
+ return errors.New("Error serializing 'sourceNetworkAddress' field " + _sourceNetworkAddressErr.Error())
+ }
+ }
+
+ // Optional Field (sourceLength) (Can be skipped, if the value is null)
+ var sourceLength *uint8 = nil
+ if m.SourceLength != nil {
+ sourceLength = m.SourceLength
+ _sourceLengthErr := io.WriteUint8(8, *(sourceLength))
+ if _sourceLengthErr != nil {
+ return errors.New("Error serializing 'sourceLength' field " + _sourceLengthErr.Error())
+ }
+ }
+
+ // Array Field (sourceAddress)
+ if m.SourceAddress != nil {
+ for _, _element := range m.SourceAddress {
+ _elementErr := io.WriteUint8(8, _element)
+ if _elementErr != nil {
+ return errors.New("Error serializing 'sourceAddress' field " + _elementErr.Error())
+ }
+ }
+ }
+
+ // Optional Field (hopCount) (Can be skipped, if the value is null)
+ var hopCount *uint8 = nil
+ if m.HopCount != nil {
+ hopCount = m.HopCount
+ _hopCountErr := io.WriteUint8(8, *(hopCount))
+ if _hopCountErr != nil {
+ return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
+ }
+ }
+
+ // Optional Field (nlm) (Can be skipped, if the value is null)
+ var nlm *INLM = nil
+ if m.Nlm != nil {
+ nlm = m.Nlm
+ _nlmErr := CastINLM(*nlm).Serialize(io)
+ if _nlmErr != nil {
+ return errors.New("Error serializing 'nlm' field " + _nlmErr.Error())
+ }
+ }
+
+ // Optional Field (apdu) (Can be skipped, if the value is null)
+ var apdu *IAPDU = nil
+ if m.Apdu != nil {
+ apdu = m.Apdu
+ _apduErr := CastIAPDU(*apdu).Serialize(io)
+ if _apduErr != nil {
+ return errors.New("Error serializing 'apdu' field " + _apduErr.Error())
+ }
+ }
+
+ return nil
}
func (m *NPDU) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
- for {
- token, err := d.Token()
- if err != nil {
- if err == io.EOF {
- return nil
- }
- return err
- }
- switch token.(type) {
- case xml.StartElement:
- tok := token.(xml.StartElement)
- switch tok.Name.Local {
- case "protocolVersionNumber":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.ProtocolVersionNumber = data
- case "messageTypeFieldPresent":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.MessageTypeFieldPresent = data
- case "destinationSpecified":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.DestinationSpecified = data
- case "sourceSpecified":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.SourceSpecified = data
- case "expectingReply":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.ExpectingReply = data
- case "networkPriority":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.NetworkPriority = data
- case "destinationNetworkAddress":
- var data *uint16
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.DestinationNetworkAddress = data
- case "destinationLength":
- var data *uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.DestinationLength = data
- case "destinationAddress":
- var data []uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.DestinationAddress = data
- case "sourceNetworkAddress":
- var data *uint16
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.SourceNetworkAddress = data
- case "sourceLength":
- var data *uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.SourceLength = data
- case "sourceAddress":
- var data []uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.SourceAddress = data
- case "hopCount":
- var data *uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.HopCount = data
- case "nlm":
- switch tok.Attr[0].Value {
- case "org.apache.plc4x.java.bacnetip.readwrite.NLMWhoIsRouterToNetwork":
- var dt *NLMWhoIsRouterToNetwork
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- *m.Nlm = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.NLMIAmRouterToNetwork":
- var dt *NLMIAmRouterToNetwork
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- *m.Nlm = dt
- }
- case "apdu":
- switch tok.Attr[0].Value {
- case "org.apache.plc4x.java.bacnetip.readwrite.APDUConfirmedRequest":
- var dt *APDUConfirmedRequest
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- *m.Apdu = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.APDUUnconfirmedRequest":
- var dt *APDUUnconfirmedRequest
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- *m.Apdu = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.APDUSimpleAck":
- var dt *APDUSimpleAck
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- *m.Apdu = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.APDUComplexAck":
- var dt *APDUComplexAck
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- *m.Apdu = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.APDUSegmentAck":
- var dt *APDUSegmentAck
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- *m.Apdu = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.APDUError":
- var dt *APDUError
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- *m.Apdu = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.APDUReject":
- var dt *APDUReject
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- *m.Apdu = dt
- case "org.apache.plc4x.java.bacnetip.readwrite.APDUAbort":
- var dt *APDUAbort
- if err := d.DecodeElement(&dt, &tok); err != nil {
- return err
- }
- *m.Apdu = dt
- }
- }
- }
- }
+ for {
+ token, err := d.Token()
+ if err != nil {
+ if err == io.EOF {
+ return nil
+ }
+ return err
+ }
+ switch token.(type) {
+ case xml.StartElement:
+ tok := token.(xml.StartElement)
+ switch tok.Name.Local {
+ case "protocolVersionNumber":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.ProtocolVersionNumber = data
+ case "messageTypeFieldPresent":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.MessageTypeFieldPresent = data
+ case "destinationSpecified":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.DestinationSpecified = data
+ case "sourceSpecified":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.SourceSpecified = data
+ case "expectingReply":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.ExpectingReply = data
+ case "networkPriority":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.NetworkPriority = data
+ case "destinationNetworkAddress":
+ var data *uint16
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.DestinationNetworkAddress = data
+ case "destinationLength":
+ var data *uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.DestinationLength = data
+ case "destinationAddress":
+ var data []uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.DestinationAddress = data
+ case "sourceNetworkAddress":
+ var data *uint16
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.SourceNetworkAddress = data
+ case "sourceLength":
+ var data *uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.SourceLength = data
+ case "sourceAddress":
+ var data []uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.SourceAddress = data
+ case "hopCount":
+ var data *uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.HopCount = data
+ case "nlm":
+ switch tok.Attr[0].Value {
+ case "org.apache.plc4x.java.bacnetip.readwrite.NLMWhoIsRouterToNetwork":
+ var dt *NLMWhoIsRouterToNetwork
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ *m.Nlm = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.NLMIAmRouterToNetwork":
+ var dt *NLMIAmRouterToNetwork
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ *m.Nlm = dt
+ }
+ case "apdu":
+ switch tok.Attr[0].Value {
+ case "org.apache.plc4x.java.bacnetip.readwrite.APDUConfirmedRequest":
+ var dt *APDUConfirmedRequest
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ *m.Apdu = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.APDUUnconfirmedRequest":
+ var dt *APDUUnconfirmedRequest
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ *m.Apdu = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.APDUSimpleAck":
+ var dt *APDUSimpleAck
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ *m.Apdu = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.APDUComplexAck":
+ var dt *APDUComplexAck
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ *m.Apdu = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.APDUSegmentAck":
+ var dt *APDUSegmentAck
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ *m.Apdu = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.APDUError":
+ var dt *APDUError
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ *m.Apdu = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.APDUReject":
+ var dt *APDUReject
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ *m.Apdu = dt
+ case "org.apache.plc4x.java.bacnetip.readwrite.APDUAbort":
+ var dt *APDUAbort
+ if err := d.DecodeElement(&dt, &tok); err != nil {
+ return err
+ }
+ *m.Apdu = dt
+ }
+ }
+ }
+ }
}
func (m NPDU) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
- if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
- {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.NPDU"},
- }}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.ProtocolVersionNumber, xml.StartElement{Name: xml.Name{Local: "protocolVersionNumber"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.MessageTypeFieldPresent, xml.StartElement{Name: xml.Name{Local: "messageTypeFieldPresent"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.DestinationSpecified, xml.StartElement{Name: xml.Name{Local: "destinationSpecified"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.SourceSpecified, xml.StartElement{Name: xml.Name{Local: "sourceSpecified"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.ExpectingReply, xml.StartElement{Name: xml.Name{Local: "expectingReply"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.NetworkPriority, xml.StartElement{Name: xml.Name{Local: "networkPriority"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.DestinationNetworkAddress, xml.StartElement{Name: xml.Name{Local: "destinationNetworkAddress"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.DestinationLength, xml.StartElement{Name: xml.Name{Local: "destinationLength"}}); err != nil {
- return err
- }
- if err := e.EncodeToken(xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.DestinationAddress, xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
- return err
- }
- if err := e.EncodeToken(xml.EndElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.SourceNetworkAddress, xml.StartElement{Name: xml.Name{Local: "sourceNetworkAddress"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.SourceLength, xml.StartElement{Name: xml.Name{Local: "sourceLength"}}); err != nil {
- return err
- }
- if err := e.EncodeToken(xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.SourceAddress, xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
- return err
- }
- if err := e.EncodeToken(xml.EndElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.HopCount, xml.StartElement{Name: xml.Name{Local: "hopCount"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.Nlm, xml.StartElement{Name: xml.Name{Local: "nlm"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.Apdu, xml.StartElement{Name: xml.Name{Local: "apdu"}}); err != nil {
- return err
- }
- if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
- return err
- }
- return nil
+ if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+ {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.NPDU"},
+ }}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.ProtocolVersionNumber, xml.StartElement{Name: xml.Name{Local: "protocolVersionNumber"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.MessageTypeFieldPresent, xml.StartElement{Name: xml.Name{Local: "messageTypeFieldPresent"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.DestinationSpecified, xml.StartElement{Name: xml.Name{Local: "destinationSpecified"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.SourceSpecified, xml.StartElement{Name: xml.Name{Local: "sourceSpecified"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.ExpectingReply, xml.StartElement{Name: xml.Name{Local: "expectingReply"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.NetworkPriority, xml.StartElement{Name: xml.Name{Local: "networkPriority"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.DestinationNetworkAddress, xml.StartElement{Name: xml.Name{Local: "destinationNetworkAddress"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.DestinationLength, xml.StartElement{Name: xml.Name{Local: "destinationLength"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeToken(xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.DestinationAddress, xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeToken(xml.EndElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.SourceNetworkAddress, xml.StartElement{Name: xml.Name{Local: "sourceNetworkAddress"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.SourceLength, xml.StartElement{Name: xml.Name{Local: "sourceLength"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeToken(xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.SourceAddress, xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeToken(xml.EndElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.HopCount, xml.StartElement{Name: xml.Name{Local: "hopCount"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.Nlm, xml.StartElement{Name: xml.Name{Local: "nlm"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.Apdu, xml.StartElement{Name: xml.Name{Local: "apdu"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+ return err
+ }
+ return nil
}
-
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
index 3bc5926..0aa7637 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
@@ -19,12 +19,12 @@
package model
import (
- "encoding/xml"
- "errors"
- "io"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
- "strconv"
+ "encoding/xml"
+ "errors"
+ "io"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+ "strconv"
)
// Constant values.
@@ -32,276 +32,275 @@ const CEMIAdditionalInformationBusmonitorInfo_LEN uint8 = 1
// The data-structure of this message
type CEMIAdditionalInformationBusmonitorInfo struct {
- FrameErrorFlag bool
- BitErrorFlag bool
- ParityErrorFlag bool
- UnknownFlag bool
- LostFlag bool
- SequenceNumber uint8
- CEMIAdditionalInformation
+ FrameErrorFlag bool
+ BitErrorFlag bool
+ ParityErrorFlag bool
+ UnknownFlag bool
+ LostFlag bool
+ SequenceNumber uint8
+ CEMIAdditionalInformation
}
// The corresponding interface
type ICEMIAdditionalInformationBusmonitorInfo interface {
- ICEMIAdditionalInformation
- Serialize(io utils.WriteBuffer) error
+ ICEMIAdditionalInformation
+ Serialize(io utils.WriteBuffer) error
}
// Accessors for discriminator values.
func (m CEMIAdditionalInformationBusmonitorInfo) AdditionalInformationType() uint8 {
- return 0x03
+ return 0x03
}
func (m CEMIAdditionalInformationBusmonitorInfo) initialize() spi.Message {
- return m
+ return m
}
func NewCEMIAdditionalInformationBusmonitorInfo(frameErrorFlag bool, bitErrorFlag bool, parityErrorFlag bool, unknownFlag bool, lostFlag bool, sequenceNumber uint8) CEMIAdditionalInformationInitializer {
- return &CEMIAdditionalInformationBusmonitorInfo{FrameErrorFlag: frameErrorFlag, BitErrorFlag: bitErrorFlag, ParityErrorFlag: parityErrorFlag, UnknownFlag: unknownFlag, LostFlag: lostFlag, SequenceNumber: sequenceNumber}
+ return &CEMIAdditionalInformationBusmonitorInfo{FrameErrorFlag: frameErrorFlag, BitErrorFlag: bitErrorFlag, ParityErrorFlag: parityErrorFlag, UnknownFlag: unknownFlag, LostFlag: lostFlag, SequenceNumber: sequenceNumber}
}
func CastICEMIAdditionalInformationBusmonitorInfo(structType interface{}) ICEMIAdditionalInformationBusmonitorInfo {
- castFunc := func(typ interface{}) ICEMIAdditionalInformationBusmonitorInfo {
- if iCEMIAdditionalInformationBusmonitorInfo, ok := typ.(ICEMIAdditionalInformationBusmonitorInfo); ok {
- return iCEMIAdditionalInformationBusmonitorInfo
- }
- return nil
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) ICEMIAdditionalInformationBusmonitorInfo {
+ if iCEMIAdditionalInformationBusmonitorInfo, ok := typ.(ICEMIAdditionalInformationBusmonitorInfo); ok {
+ return iCEMIAdditionalInformationBusmonitorInfo
+ }
+ return nil
+ }
+ return castFunc(structType)
}
func CastCEMIAdditionalInformationBusmonitorInfo(structType interface{}) CEMIAdditionalInformationBusmonitorInfo {
- castFunc := func(typ interface{}) CEMIAdditionalInformationBusmonitorInfo {
- if sCEMIAdditionalInformationBusmonitorInfo, ok := typ.(CEMIAdditionalInformationBusmonitorInfo); ok {
- return sCEMIAdditionalInformationBusmonitorInfo
- }
- if sCEMIAdditionalInformationBusmonitorInfo, ok := typ.(*CEMIAdditionalInformationBusmonitorInfo); ok {
- return *sCEMIAdditionalInformationBusmonitorInfo
- }
- return CEMIAdditionalInformationBusmonitorInfo{}
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) CEMIAdditionalInformationBusmonitorInfo {
+ if sCEMIAdditionalInformationBusmonitorInfo, ok := typ.(CEMIAdditionalInformationBusmonitorInfo); ok {
+ return sCEMIAdditionalInformationBusmonitorInfo
+ }
+ if sCEMIAdditionalInformationBusmonitorInfo, ok := typ.(*CEMIAdditionalInformationBusmonitorInfo); ok {
+ return *sCEMIAdditionalInformationBusmonitorInfo
+ }
+ return CEMIAdditionalInformationBusmonitorInfo{}
+ }
+ return castFunc(structType)
}
func (m CEMIAdditionalInformationBusmonitorInfo) LengthInBits() uint16 {
- var lengthInBits uint16 = m.CEMIAdditionalInformation.LengthInBits()
+ var lengthInBits uint16 = m.CEMIAdditionalInformation.LengthInBits()
- // Const Field (len)
- lengthInBits += 8
+ // Const Field (len)
+ lengthInBits += 8
- // Simple field (frameErrorFlag)
- lengthInBits += 1
+ // Simple field (frameErrorFlag)
+ lengthInBits += 1
- // Simple field (bitErrorFlag)
- lengthInBits += 1
+ // Simple field (bitErrorFlag)
+ lengthInBits += 1
- // Simple field (parityErrorFlag)
- lengthInBits += 1
+ // Simple field (parityErrorFlag)
+ lengthInBits += 1
- // Simple field (unknownFlag)
- lengthInBits += 1
+ // Simple field (unknownFlag)
+ lengthInBits += 1
- // Simple field (lostFlag)
- lengthInBits += 1
+ // Simple field (lostFlag)
+ lengthInBits += 1
- // Simple field (sequenceNumber)
- lengthInBits += 3
+ // Simple field (sequenceNumber)
+ lengthInBits += 3
- return lengthInBits
+ return lengthInBits
}
func (m CEMIAdditionalInformationBusmonitorInfo) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
func CEMIAdditionalInformationBusmonitorInfoParse(io *utils.ReadBuffer) (CEMIAdditionalInformationInitializer, error) {
- // Const Field (len)
- len, _lenErr := io.ReadUint8(8)
- if _lenErr != nil {
- return nil, errors.New("Error parsing 'len' field " + _lenErr.Error())
- }
- if len != CEMIAdditionalInformationBusmonitorInfo_LEN {
- return nil, errors.New("Expected constant value " + strconv.Itoa(int(CEMIAdditionalInformationBusmonitorInfo_LEN)) + " but got " + strconv.Itoa(int(len)))
- }
-
- // Simple Field (frameErrorFlag)
- frameErrorFlag, _frameErrorFlagErr := io.ReadBit()
- if _frameErrorFlagErr != nil {
- return nil, errors.New("Error parsing 'frameErrorFlag' field " + _frameErrorFlagErr.Error())
- }
-
- // Simple Field (bitErrorFlag)
- bitErrorFlag, _bitErrorFlagErr := io.ReadBit()
- if _bitErrorFlagErr != nil {
- return nil, errors.New("Error parsing 'bitErrorFlag' field " + _bitErrorFlagErr.Error())
- }
-
- // Simple Field (parityErrorFlag)
- parityErrorFlag, _parityErrorFlagErr := io.ReadBit()
- if _parityErrorFlagErr != nil {
- return nil, errors.New("Error parsing 'parityErrorFlag' field " + _parityErrorFlagErr.Error())
- }
-
- // Simple Field (unknownFlag)
- unknownFlag, _unknownFlagErr := io.ReadBit()
- if _unknownFlagErr != nil {
- return nil, errors.New("Error parsing 'unknownFlag' field " + _unknownFlagErr.Error())
- }
-
- // Simple Field (lostFlag)
- lostFlag, _lostFlagErr := io.ReadBit()
- if _lostFlagErr != nil {
- return nil, errors.New("Error parsing 'lostFlag' field " + _lostFlagErr.Error())
- }
-
- // Simple Field (sequenceNumber)
- sequenceNumber, _sequenceNumberErr := io.ReadUint8(3)
- if _sequenceNumberErr != nil {
- return nil, errors.New("Error parsing 'sequenceNumber' field " + _sequenceNumberErr.Error())
- }
-
- // Create the instance
- return NewCEMIAdditionalInformationBusmonitorInfo(frameErrorFlag, bitErrorFlag, parityErrorFlag, unknownFlag, lostFlag, sequenceNumber), nil
+ // Const Field (len)
+ len, _lenErr := io.ReadUint8(8)
+ if _lenErr != nil {
+ return nil, errors.New("Error parsing 'len' field " + _lenErr.Error())
+ }
+ if len != CEMIAdditionalInformationBusmonitorInfo_LEN {
+ return nil, errors.New("Expected constant value " + strconv.Itoa(int(CEMIAdditionalInformationBusmonitorInfo_LEN)) + " but got " + strconv.Itoa(int(len)))
+ }
+
+ // Simple Field (frameErrorFlag)
+ frameErrorFlag, _frameErrorFlagErr := io.ReadBit()
+ if _frameErrorFlagErr != nil {
+ return nil, errors.New("Error parsing 'frameErrorFlag' field " + _frameErrorFlagErr.Error())
+ }
+
+ // Simple Field (bitErrorFlag)
+ bitErrorFlag, _bitErrorFlagErr := io.ReadBit()
+ if _bitErrorFlagErr != nil {
+ return nil, errors.New("Error parsing 'bitErrorFlag' field " + _bitErrorFlagErr.Error())
+ }
+
+ // Simple Field (parityErrorFlag)
+ parityErrorFlag, _parityErrorFlagErr := io.ReadBit()
+ if _parityErrorFlagErr != nil {
+ return nil, errors.New("Error parsing 'parityErrorFlag' field " + _parityErrorFlagErr.Error())
+ }
+
+ // Simple Field (unknownFlag)
+ unknownFlag, _unknownFlagErr := io.ReadBit()
+ if _unknownFlagErr != nil {
+ return nil, errors.New("Error parsing 'unknownFlag' field " + _unknownFlagErr.Error())
+ }
+
+ // Simple Field (lostFlag)
+ lostFlag, _lostFlagErr := io.ReadBit()
+ if _lostFlagErr != nil {
+ return nil, errors.New("Error parsing 'lostFlag' field " + _lostFlagErr.Error())
+ }
+
+ // Simple Field (sequenceNumber)
+ sequenceNumber, _sequenceNumberErr := io.ReadUint8(3)
+ if _sequenceNumberErr != nil {
+ return nil, errors.New("Error parsing 'sequenceNumber' field " + _sequenceNumberErr.Error())
+ }
+
+ // Create the instance
+ return NewCEMIAdditionalInformationBusmonitorInfo(frameErrorFlag, bitErrorFlag, parityErrorFlag, unknownFlag, lostFlag, sequenceNumber), nil
}
func (m CEMIAdditionalInformationBusmonitorInfo) Serialize(io utils.WriteBuffer) error {
- ser := func() error {
-
- // Const Field (len)
- _lenErr := io.WriteUint8(8, 1)
- if _lenErr != nil {
- return errors.New("Error serializing 'len' field " + _lenErr.Error())
- }
-
- // Simple Field (frameErrorFlag)
- frameErrorFlag := bool(m.FrameErrorFlag)
- _frameErrorFlagErr := io.WriteBit((bool) (frameErrorFlag))
- if _frameErrorFlagErr != nil {
- return errors.New("Error serializing 'frameErrorFlag' field " + _frameErrorFlagErr.Error())
- }
-
- // Simple Field (bitErrorFlag)
- bitErrorFlag := bool(m.BitErrorFlag)
- _bitErrorFlagErr := io.WriteBit((bool) (bitErrorFlag))
- if _bitErrorFlagErr != nil {
- return errors.New("Error serializing 'bitErrorFlag' field " + _bitErrorFlagErr.Error())
- }
-
- // Simple Field (parityErrorFlag)
- parityErrorFlag := bool(m.ParityErrorFlag)
- _parityErrorFlagErr := io.WriteBit((bool) (parityErrorFlag))
- if _parityErrorFlagErr != nil {
- return errors.New("Error serializing 'parityErrorFlag' field " + _parityErrorFlagErr.Error())
- }
-
- // Simple Field (unknownFlag)
- unknownFlag := bool(m.UnknownFlag)
- _unknownFlagErr := io.WriteBit((bool) (unknownFlag))
- if _unknownFlagErr != nil {
- return errors.New("Error serializing 'unknownFlag' field " + _unknownFlagErr.Error())
- }
-
- // Simple Field (lostFlag)
- lostFlag := bool(m.LostFlag)
- _lostFlagErr := io.WriteBit((bool) (lostFlag))
- if _lostFlagErr != nil {
- return errors.New("Error serializing 'lostFlag' field " + _lostFlagErr.Error())
- }
-
- // Simple Field (sequenceNumber)
- sequenceNumber := uint8(m.SequenceNumber)
- _sequenceNumberErr := io.WriteUint8(3, (sequenceNumber))
- if _sequenceNumberErr != nil {
- return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
- }
-
- return nil
- }
- return CEMIAdditionalInformationSerialize(io, m.CEMIAdditionalInformation, CastICEMIAdditionalInformation(m), ser)
+ ser := func() error {
+
+ // Const Field (len)
+ _lenErr := io.WriteUint8(8, 1)
+ if _lenErr != nil {
+ return errors.New("Error serializing 'len' field " + _lenErr.Error())
+ }
+
+ // Simple Field (frameErrorFlag)
+ frameErrorFlag := bool(m.FrameErrorFlag)
+ _frameErrorFlagErr := io.WriteBit((frameErrorFlag))
+ if _frameErrorFlagErr != nil {
+ return errors.New("Error serializing 'frameErrorFlag' field " + _frameErrorFlagErr.Error())
+ }
+
+ // Simple Field (bitErrorFlag)
+ bitErrorFlag := bool(m.BitErrorFlag)
+ _bitErrorFlagErr := io.WriteBit((bitErrorFlag))
+ if _bitErrorFlagErr != nil {
+ return errors.New("Error serializing 'bitErrorFlag' field " + _bitErrorFlagErr.Error())
+ }
+
+ // Simple Field (parityErrorFlag)
+ parityErrorFlag := bool(m.ParityErrorFlag)
+ _parityErrorFlagErr := io.WriteBit((parityErrorFlag))
+ if _parityErrorFlagErr != nil {
+ return errors.New("Error serializing 'parityErrorFlag' field " + _parityErrorFlagErr.Error())
+ }
+
+ // Simple Field (unknownFlag)
+ unknownFlag := bool(m.UnknownFlag)
+ _unknownFlagErr := io.WriteBit((unknownFlag))
+ if _unknownFlagErr != nil {
+ return errors.New("Error serializing 'unknownFlag' field " + _unknownFlagErr.Error())
+ }
+
+ // Simple Field (lostFlag)
+ lostFlag := bool(m.LostFlag)
+ _lostFlagErr := io.WriteBit((lostFlag))
+ if _lostFlagErr != nil {
+ return errors.New("Error serializing 'lostFlag' field " + _lostFlagErr.Error())
+ }
+
+ // Simple Field (sequenceNumber)
+ sequenceNumber := uint8(m.SequenceNumber)
+ _sequenceNumberErr := io.WriteUint8(3, (sequenceNumber))
+ if _sequenceNumberErr != nil {
+ return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
+ }
+
+ return nil
+ }
+ return CEMIAdditionalInformationSerialize(io, m.CEMIAdditionalInformation, CastICEMIAdditionalInformation(m), ser)
}
func (m *CEMIAdditionalInformationBusmonitorInfo) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
- for {
- token, err := d.Token()
- if err != nil {
- if err == io.EOF {
- return nil
- }
- return err
- }
- switch token.(type) {
- case xml.StartElement:
- tok := token.(xml.StartElement)
- switch tok.Name.Local {
- case "frameErrorFlag":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.FrameErrorFlag = data
- case "bitErrorFlag":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.BitErrorFlag = data
- case "parityErrorFlag":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.ParityErrorFlag = data
- case "unknownFlag":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.UnknownFlag = data
- case "lostFlag":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.LostFlag = data
- case "sequenceNumber":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.SequenceNumber = data
- }
- }
- }
+ for {
+ token, err := d.Token()
+ if err != nil {
+ if err == io.EOF {
+ return nil
+ }
+ return err
+ }
+ switch token.(type) {
+ case xml.StartElement:
+ tok := token.(xml.StartElement)
+ switch tok.Name.Local {
+ case "frameErrorFlag":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.FrameErrorFlag = data
+ case "bitErrorFlag":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.BitErrorFlag = data
+ case "parityErrorFlag":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.ParityErrorFlag = data
+ case "unknownFlag":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.UnknownFlag = data
+ case "lostFlag":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.LostFlag = data
+ case "sequenceNumber":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.SequenceNumber = data
+ }
+ }
+ }
}
func (m CEMIAdditionalInformationBusmonitorInfo) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
- if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
- {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIAdditionalInformationBusmonitorInfo"},
- }}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.FrameErrorFlag, xml.StartElement{Name: xml.Name{Local: "frameErrorFlag"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.BitErrorFlag, xml.StartElement{Name: xml.Name{Local: "bitErrorFlag"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.ParityErrorFlag, xml.StartElement{Name: xml.Name{Local: "parityErrorFlag"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.UnknownFlag, xml.StartElement{Name: xml.Name{Local: "unknownFlag"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.LostFlag, xml.StartElement{Name: xml.Name{Local: "lostFlag"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.SequenceNumber, xml.StartElement{Name: xml.Name{Local: "sequenceNumber"}}); err != nil {
- return err
- }
- if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
- return err
- }
- return nil
+ if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+ {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIAdditionalInformationBusmonitorInfo"},
+ }}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.FrameErrorFlag, xml.StartElement{Name: xml.Name{Local: "frameErrorFlag"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.BitErrorFlag, xml.StartElement{Name: xml.Name{Local: "bitErrorFlag"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.ParityErrorFlag, xml.StartElement{Name: xml.Name{Local: "parityErrorFlag"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.UnknownFlag, xml.StartElement{Name: xml.Name{Local: "unknownFlag"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.LostFlag, xml.StartElement{Name: xml.Name{Local: "lostFlag"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.SequenceNumber, xml.StartElement{Name: xml.Name{Local: "sequenceNumber"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+ return err
+ }
+ return nil
}
-
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataFrame.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataFrame.go
index b1ab309..ef2d79c 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataFrame.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataFrame.go
@@ -19,611 +19,608 @@
package model
import (
- "encoding/base64"
- "encoding/xml"
- "errors"
- "io"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
- "reflect"
+ "encoding/base64"
+ "encoding/xml"
+ "errors"
+ "io"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+ "reflect"
)
// The data-structure of this message
type CEMIDataFrame struct {
- StandardFrame bool
- Polling bool
- NotRepeated bool
- NotAckFrame bool
- Priority ICEMIPriority
- AcknowledgeRequested bool
- ErrorFlag bool
- GroupDestinationAddress bool
- HopCount uint8
- ExtendedFrameFormat uint8
- SourceAddress IKNXAddress
- DestinationAddress []int8
- DataLength uint8
- Tcpi ITPCI
- Counter uint8
- Apci IAPCI
- DataFirstByte int8
- Data []int8
-
+ StandardFrame bool
+ Polling bool
+ NotRepeated bool
+ NotAckFrame bool
+ Priority ICEMIPriority
+ AcknowledgeRequested bool
+ ErrorFlag bool
+ GroupDestinationAddress bool
+ HopCount uint8
+ ExtendedFrameFormat uint8
+ SourceAddress IKNXAddress
+ DestinationAddress []int8
+ DataLength uint8
+ Tcpi ITPCI
+ Counter uint8
+ Apci IAPCI
+ DataFirstByte int8
+ Data []int8
}
// The corresponding interface
type ICEMIDataFrame interface {
- spi.Message
- Serialize(io utils.WriteBuffer) error
+ spi.Message
+ Serialize(io utils.WriteBuffer) error
}
-
func NewCEMIDataFrame(standardFrame bool, polling bool, notRepeated bool, notAckFrame bool, priority ICEMIPriority, acknowledgeRequested bool, errorFlag bool, groupDestinationAddress bool, hopCount uint8, extendedFrameFormat uint8, sourceAddress IKNXAddress, destinationAddress []int8, dataLength uint8, tcpi ITPCI, counter uint8, apci IAPCI, dataFirstByte int8, data []int8) spi.Message {
- return &CEMIDataFrame{StandardFrame: standardFrame, Polling: polling, NotRepeated: notRepeated, NotAckFrame: notAckFrame, Priority: priority, AcknowledgeRequested: acknowledgeRequested, ErrorFlag: errorFlag, GroupDestinationAddress: groupDestinationAddress, HopCount: hopCount, ExtendedFrameFormat: extendedFrameFormat, SourceAddress: sourceAddress, DestinationAddress: destinationAddress, DataLength: dataLength, Tcpi: tcpi, Counter: counter, Apci: apci, DataFirstByte: dataFirstByte, Da [...]
+ return &CEMIDataFrame{StandardFrame: standardFrame, Polling: polling, NotRepeated: notRepeated, NotAckFrame: notAckFrame, Priority: priority, AcknowledgeRequested: acknowledgeRequested, ErrorFlag: errorFlag, GroupDestinationAddress: groupDestinationAddress, HopCount: hopCount, ExtendedFrameFormat: extendedFrameFormat, SourceAddress: sourceAddress, DestinationAddress: destinationAddress, DataLength: dataLength, Tcpi: tcpi, Counter: counter, Apci: apci, DataFirstByte: dataFirstByte, Data: data}
}
func CastICEMIDataFrame(structType interface{}) ICEMIDataFrame {
- castFunc := func(typ interface{}) ICEMIDataFrame {
- if iCEMIDataFrame, ok := typ.(ICEMIDataFrame); ok {
- return iCEMIDataFrame
- }
- return nil
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) ICEMIDataFrame {
+ if iCEMIDataFrame, ok := typ.(ICEMIDataFrame); ok {
+ return iCEMIDataFrame
+ }
+ return nil
+ }
+ return castFunc(structType)
}
func CastCEMIDataFrame(structType interface{}) CEMIDataFrame {
- castFunc := func(typ interface{}) CEMIDataFrame {
- if sCEMIDataFrame, ok := typ.(CEMIDataFrame); ok {
- return sCEMIDataFrame
- }
- if sCEMIDataFrame, ok := typ.(*CEMIDataFrame); ok {
- return *sCEMIDataFrame
- }
- return CEMIDataFrame{}
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) CEMIDataFrame {
+ if sCEMIDataFrame, ok := typ.(CEMIDataFrame); ok {
+ return sCEMIDataFrame
+ }
+ if sCEMIDataFrame, ok := typ.(*CEMIDataFrame); ok {
+ return *sCEMIDataFrame
+ }
+ return CEMIDataFrame{}
+ }
+ return castFunc(structType)
}
func (m CEMIDataFrame) LengthInBits() uint16 {
- var lengthInBits uint16 = 0
+ var lengthInBits uint16 = 0
- // Simple field (standardFrame)
- lengthInBits += 1
+ // Simple field (standardFrame)
+ lengthInBits += 1
- // Simple field (polling)
- lengthInBits += 1
+ // Simple field (polling)
+ lengthInBits += 1
- // Simple field (notRepeated)
- lengthInBits += 1
+ // Simple field (notRepeated)
+ lengthInBits += 1
- // Simple field (notAckFrame)
- lengthInBits += 1
+ // Simple field (notAckFrame)
+ lengthInBits += 1
- // Enum Field (priority)
- lengthInBits += 2
+ // Enum Field (priority)
+ lengthInBits += 2
- // Simple field (acknowledgeRequested)
- lengthInBits += 1
+ // Simple field (acknowledgeRequested)
+ lengthInBits += 1
- // Simple field (errorFlag)
- lengthInBits += 1
+ // Simple field (errorFlag)
+ lengthInBits += 1
- // Simple field (groupDestinationAddress)
- lengthInBits += 1
+ // Simple field (groupDestinationAddress)
+ lengthInBits += 1
- // Simple field (hopCount)
- lengthInBits += 3
+ // Simple field (hopCount)
+ lengthInBits += 3
- // Simple field (extendedFrameFormat)
- lengthInBits += 4
+ // Simple field (extendedFrameFormat)
+ lengthInBits += 4
- // Simple field (sourceAddress)
- lengthInBits += m.SourceAddress.LengthInBits()
+ // Simple field (sourceAddress)
+ lengthInBits += m.SourceAddress.LengthInBits()
- // Array field
- if len(m.DestinationAddress) > 0 {
- lengthInBits += 8 * uint16(len(m.DestinationAddress))
- }
+ // Array field
+ if len(m.DestinationAddress) > 0 {
+ lengthInBits += 8 * uint16(len(m.DestinationAddress))
+ }
- // Simple field (dataLength)
- lengthInBits += 8
+ // Simple field (dataLength)
+ lengthInBits += 8
- // Enum Field (tcpi)
- lengthInBits += 2
+ // Enum Field (tcpi)
+ lengthInBits += 2
- // Simple field (counter)
- lengthInBits += 4
+ // Simple field (counter)
+ lengthInBits += 4
- // Enum Field (apci)
- lengthInBits += 4
+ // Enum Field (apci)
+ lengthInBits += 4
- // Simple field (dataFirstByte)
- lengthInBits += 6
+ // Simple field (dataFirstByte)
+ lengthInBits += 6
- // Array field
- if len(m.Data) > 0 {
- lengthInBits += 8 * uint16(len(m.Data))
- }
+ // Array field
+ if len(m.Data) > 0 {
+ lengthInBits += 8 * uint16(len(m.Data))
+ }
- return lengthInBits
+ return lengthInBits
}
func (m CEMIDataFrame) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
func CEMIDataFrameParse(io *utils.ReadBuffer) (spi.Message, error) {
- // Simple Field (standardFrame)
- standardFrame, _standardFrameErr := io.ReadBit()
- if _standardFrameErr != nil {
- return nil, errors.New("Error parsing 'standardFrame' field " + _standardFrameErr.Error())
- }
-
- // Simple Field (polling)
- polling, _pollingErr := io.ReadBit()
- if _pollingErr != nil {
- return nil, errors.New("Error parsing 'polling' field " + _pollingErr.Error())
- }
-
- // Simple Field (notRepeated)
- notRepeated, _notRepeatedErr := io.ReadBit()
- if _notRepeatedErr != nil {
- return nil, errors.New("Error parsing 'notRepeated' field " + _notRepeatedErr.Error())
- }
-
- // Simple Field (notAckFrame)
- notAckFrame, _notAckFrameErr := io.ReadBit()
- if _notAckFrameErr != nil {
- return nil, errors.New("Error parsing 'notAckFrame' field " + _notAckFrameErr.Error())
- }
-
- // Enum field (priority)
- priority, _priorityErr := CEMIPriorityParse(io)
- if _priorityErr != nil {
- return nil, errors.New("Error parsing 'priority' field " + _priorityErr.Error())
- }
-
- // Simple Field (acknowledgeRequested)
- acknowledgeRequested, _acknowledgeRequestedErr := io.ReadBit()
- if _acknowledgeRequestedErr != nil {
- return nil, errors.New("Error parsing 'acknowledgeRequested' field " + _acknowledgeRequestedErr.Error())
- }
-
- // Simple Field (errorFlag)
- errorFlag, _errorFlagErr := io.ReadBit()
- if _errorFlagErr != nil {
- return nil, errors.New("Error parsing 'errorFlag' field " + _errorFlagErr.Error())
- }
-
- // Simple Field (groupDestinationAddress)
- groupDestinationAddress, _groupDestinationAddressErr := io.ReadBit()
- if _groupDestinationAddressErr != nil {
- return nil, errors.New("Error parsing 'groupDestinationAddress' field " + _groupDestinationAddressErr.Error())
- }
-
- // Simple Field (hopCount)
- hopCount, _hopCountErr := io.ReadUint8(3)
- if _hopCountErr != nil {
- return nil, errors.New("Error parsing 'hopCount' field " + _hopCountErr.Error())
- }
-
- // Simple Field (extendedFrameFormat)
- extendedFrameFormat, _extendedFrameFormatErr := io.ReadUint8(4)
- if _extendedFrameFormatErr != nil {
- return nil, errors.New("Error parsing 'extendedFrameFormat' field " + _extendedFrameFormatErr.Error())
- }
-
- // Simple Field (sourceAddress)
- _sourceAddressMessage, _err := KNXAddressParse(io)
- if _err != nil {
- return nil, errors.New("Error parsing simple field 'sourceAddress'. " + _err.Error())
- }
- var sourceAddress IKNXAddress
- sourceAddress, _sourceAddressOk := _sourceAddressMessage.(IKNXAddress)
- if !_sourceAddressOk {
- return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_sourceAddressMessage).Name() + " to IKNXAddress")
- }
-
- // Array field (destinationAddress)
- // Count array
- destinationAddress := make([]int8, uint16(2))
- for curItem := uint16(0); curItem < uint16(uint16(2)); curItem++ {
-
- _item, _err := io.ReadInt8(8)
- if _err != nil {
- return nil, errors.New("Error parsing 'destinationAddress' field " + _err.Error())
- }
- destinationAddress[curItem] = _item
- }
-
- // Simple Field (dataLength)
- dataLength, _dataLengthErr := io.ReadUint8(8)
- if _dataLengthErr != nil {
- return nil, errors.New("Error parsing 'dataLength' field " + _dataLengthErr.Error())
- }
-
- // Enum field (tcpi)
- tcpi, _tcpiErr := TPCIParse(io)
- if _tcpiErr != nil {
- return nil, errors.New("Error parsing 'tcpi' field " + _tcpiErr.Error())
- }
-
- // Simple Field (counter)
- counter, _counterErr := io.ReadUint8(4)
- if _counterErr != nil {
- return nil, errors.New("Error parsing 'counter' field " + _counterErr.Error())
- }
-
- // Enum field (apci)
- apci, _apciErr := APCIParse(io)
- if _apciErr != nil {
- return nil, errors.New("Error parsing 'apci' field " + _apciErr.Error())
- }
-
- // Simple Field (dataFirstByte)
- dataFirstByte, _dataFirstByteErr := io.ReadInt8(6)
- if _dataFirstByteErr != nil {
- return nil, errors.New("Error parsing 'dataFirstByte' field " + _dataFirstByteErr.Error())
- }
-
- // Array field (data)
- // Count array
- data := make([]int8, uint16(dataLength) - uint16(uint16(1)))
- for curItem := uint16(0); curItem < uint16(uint16(dataLength) - uint16(uint16(1))); curItem++ {
-
- _item, _err := io.ReadInt8(8)
- if _err != nil {
- return nil, errors.New("Error parsing 'data' field " + _err.Error())
- }
- data[curItem] = _item
- }
-
- // Create the instance
- return NewCEMIDataFrame(standardFrame, polling, notRepeated, notAckFrame, priority, acknowledgeRequested, errorFlag, groupDestinationAddress, hopCount, extendedFrameFormat, sourceAddress, destinationAddress, dataLength, tcpi, counter, apci, dataFirstByte, data), nil
+ // Simple Field (standardFrame)
+ standardFrame, _standardFrameErr := io.ReadBit()
+ if _standardFrameErr != nil {
+ return nil, errors.New("Error parsing 'standardFrame' field " + _standardFrameErr.Error())
+ }
+
+ // Simple Field (polling)
+ polling, _pollingErr := io.ReadBit()
+ if _pollingErr != nil {
+ return nil, errors.New("Error parsing 'polling' field " + _pollingErr.Error())
+ }
+
+ // Simple Field (notRepeated)
+ notRepeated, _notRepeatedErr := io.ReadBit()
+ if _notRepeatedErr != nil {
+ return nil, errors.New("Error parsing 'notRepeated' field " + _notRepeatedErr.Error())
+ }
+
+ // Simple Field (notAckFrame)
+ notAckFrame, _notAckFrameErr := io.ReadBit()
+ if _notAckFrameErr != nil {
+ return nil, errors.New("Error parsing 'notAckFrame' field " + _notAckFrameErr.Error())
+ }
+
+ // Enum field (priority)
+ priority, _priorityErr := CEMIPriorityParse(io)
+ if _priorityErr != nil {
+ return nil, errors.New("Error parsing 'priority' field " + _priorityErr.Error())
+ }
+
+ // Simple Field (acknowledgeRequested)
+ acknowledgeRequested, _acknowledgeRequestedErr := io.ReadBit()
+ if _acknowledgeRequestedErr != nil {
+ return nil, errors.New("Error parsing 'acknowledgeRequested' field " + _acknowledgeRequestedErr.Error())
+ }
+
+ // Simple Field (errorFlag)
+ errorFlag, _errorFlagErr := io.ReadBit()
+ if _errorFlagErr != nil {
+ return nil, errors.New("Error parsing 'errorFlag' field " + _errorFlagErr.Error())
+ }
+
+ // Simple Field (groupDestinationAddress)
+ groupDestinationAddress, _groupDestinationAddressErr := io.ReadBit()
+ if _groupDestinationAddressErr != nil {
+ return nil, errors.New("Error parsing 'groupDestinationAddress' field " + _groupDestinationAddressErr.Error())
+ }
+
+ // Simple Field (hopCount)
+ hopCount, _hopCountErr := io.ReadUint8(3)
+ if _hopCountErr != nil {
+ return nil, errors.New("Error parsing 'hopCount' field " + _hopCountErr.Error())
+ }
+
+ // Simple Field (extendedFrameFormat)
+ extendedFrameFormat, _extendedFrameFormatErr := io.ReadUint8(4)
+ if _extendedFrameFormatErr != nil {
+ return nil, errors.New("Error parsing 'extendedFrameFormat' field " + _extendedFrameFormatErr.Error())
+ }
+
+ // Simple Field (sourceAddress)
+ _sourceAddressMessage, _err := KNXAddressParse(io)
+ if _err != nil {
+ return nil, errors.New("Error parsing simple field 'sourceAddress'. " + _err.Error())
+ }
+ var sourceAddress IKNXAddress
+ sourceAddress, _sourceAddressOk := _sourceAddressMessage.(IKNXAddress)
+ if !_sourceAddressOk {
+ return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_sourceAddressMessage).Name() + " to IKNXAddress")
+ }
+
+ // Array field (destinationAddress)
+ // Count array
+ destinationAddress := make([]int8, uint16(2))
+ for curItem := uint16(0); curItem < uint16(uint16(2)); curItem++ {
+
+ _item, _err := io.ReadInt8(8)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'destinationAddress' field " + _err.Error())
+ }
+ destinationAddress[curItem] = _item
+ }
+
+ // Simple Field (dataLength)
+ dataLength, _dataLengthErr := io.ReadUint8(8)
+ if _dataLengthErr != nil {
+ return nil, errors.New("Error parsing 'dataLength' field " + _dataLengthErr.Error())
+ }
+
+ // Enum field (tcpi)
+ tcpi, _tcpiErr := TPCIParse(io)
+ if _tcpiErr != nil {
+ return nil, errors.New("Error parsing 'tcpi' field " + _tcpiErr.Error())
+ }
+
+ // Simple Field (counter)
+ counter, _counterErr := io.ReadUint8(4)
+ if _counterErr != nil {
+ return nil, errors.New("Error parsing 'counter' field " + _counterErr.Error())
+ }
+
+ // Enum field (apci)
+ apci, _apciErr := APCIParse(io)
+ if _apciErr != nil {
+ return nil, errors.New("Error parsing 'apci' field " + _apciErr.Error())
+ }
+
+ // Simple Field (dataFirstByte)
+ dataFirstByte, _dataFirstByteErr := io.ReadInt8(6)
+ if _dataFirstByteErr != nil {
+ return nil, errors.New("Error parsing 'dataFirstByte' field " + _dataFirstByteErr.Error())
+ }
+
+ // Array field (data)
+ // Count array
+ data := make([]int8, uint16(dataLength)-uint16(uint16(1)))
+ for curItem := uint16(0); curItem < uint16(uint16(dataLength)-uint16(uint16(1))); curItem++ {
+
+ _item, _err := io.ReadInt8(8)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'data' field " + _err.Error())
+ }
+ data[curItem] = _item
+ }
+
+ // Create the instance
+ return NewCEMIDataFrame(standardFrame, polling, notRepeated, notAckFrame, priority, acknowledgeRequested, errorFlag, groupDestinationAddress, hopCount, extendedFrameFormat, sourceAddress, destinationAddress, dataLength, tcpi, counter, apci, dataFirstByte, data), nil
}
func (m CEMIDataFrame) Serialize(io utils.WriteBuffer) error {
- // Simple Field (standardFrame)
- standardFrame := bool(m.StandardFrame)
- _standardFrameErr := io.WriteBit((bool) (standardFrame))
- if _standardFrameErr != nil {
- return errors.New("Error serializing 'standardFrame' field " + _standardFrameErr.Error())
- }
-
- // Simple Field (polling)
- polling := bool(m.Polling)
- _pollingErr := io.WriteBit((bool) (polling))
- if _pollingErr != nil {
- return errors.New("Error serializing 'polling' field " + _pollingErr.Error())
- }
-
- // Simple Field (notRepeated)
- notRepeated := bool(m.NotRepeated)
- _notRepeatedErr := io.WriteBit((bool) (notRepeated))
- if _notRepeatedErr != nil {
- return errors.New("Error serializing 'notRepeated' field " + _notRepeatedErr.Error())
- }
-
- // Simple Field (notAckFrame)
- notAckFrame := bool(m.NotAckFrame)
- _notAckFrameErr := io.WriteBit((bool) (notAckFrame))
- if _notAckFrameErr != nil {
- return errors.New("Error serializing 'notAckFrame' field " + _notAckFrameErr.Error())
- }
-
- // Enum field (priority)
- priority := CastCEMIPriority(m.Priority)
- _priorityErr := priority.Serialize(io)
- if _priorityErr != nil {
- return errors.New("Error serializing 'priority' field " + _priorityErr.Error())
- }
-
- // Simple Field (acknowledgeRequested)
- acknowledgeRequested := bool(m.AcknowledgeRequested)
- _acknowledgeRequestedErr := io.WriteBit((bool) (acknowledgeRequested))
- if _acknowledgeRequestedErr != nil {
- return errors.New("Error serializing 'acknowledgeRequested' field " + _acknowledgeRequestedErr.Error())
- }
-
- // Simple Field (errorFlag)
- errorFlag := bool(m.ErrorFlag)
- _errorFlagErr := io.WriteBit((bool) (errorFlag))
- if _errorFlagErr != nil {
- return errors.New("Error serializing 'errorFlag' field " + _errorFlagErr.Error())
- }
-
- // Simple Field (groupDestinationAddress)
- groupDestinationAddress := bool(m.GroupDestinationAddress)
- _groupDestinationAddressErr := io.WriteBit((bool) (groupDestinationAddress))
- if _groupDestinationAddressErr != nil {
- return errors.New("Error serializing 'groupDestinationAddress' field " + _groupDestinationAddressErr.Error())
- }
-
- // Simple Field (hopCount)
- hopCount := uint8(m.HopCount)
- _hopCountErr := io.WriteUint8(3, (hopCount))
- if _hopCountErr != nil {
- return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
- }
-
- // Simple Field (extendedFrameFormat)
- extendedFrameFormat := uint8(m.ExtendedFrameFormat)
- _extendedFrameFormatErr := io.WriteUint8(4, (extendedFrameFormat))
- if _extendedFrameFormatErr != nil {
- return errors.New("Error serializing 'extendedFrameFormat' field " + _extendedFrameFormatErr.Error())
- }
-
- // Simple Field (sourceAddress)
- sourceAddress := CastIKNXAddress(m.SourceAddress)
- _sourceAddressErr := sourceAddress.Serialize(io)
- if _sourceAddressErr != nil {
- return errors.New("Error serializing 'sourceAddress' field " + _sourceAddressErr.Error())
- }
-
- // Array Field (destinationAddress)
- if m.DestinationAddress != nil {
- for _, _element := range m.DestinationAddress {
- _elementErr := io.WriteInt8(8, _element)
- if _elementErr != nil {
- return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
- }
- }
- }
-
- // Simple Field (dataLength)
- dataLength := uint8(m.DataLength)
- _dataLengthErr := io.WriteUint8(8, (dataLength))
- if _dataLengthErr != nil {
- return errors.New("Error serializing 'dataLength' field " + _dataLengthErr.Error())
- }
-
- // Enum field (tcpi)
- tcpi := CastTPCI(m.Tcpi)
- _tcpiErr := tcpi.Serialize(io)
- if _tcpiErr != nil {
- return errors.New("Error serializing 'tcpi' field " + _tcpiErr.Error())
- }
-
- // Simple Field (counter)
- counter := uint8(m.Counter)
- _counterErr := io.WriteUint8(4, (counter))
- if _counterErr != nil {
- return errors.New("Error serializing 'counter' field " + _counterErr.Error())
- }
-
- // Enum field (apci)
- apci := CastAPCI(m.Apci)
- _apciErr := apci.Serialize(io)
- if _apciErr != nil {
- return errors.New("Error serializing 'apci' field " + _apciErr.Error())
- }
-
- // Simple Field (dataFirstByte)
- dataFirstByte := int8(m.DataFirstByte)
- _dataFirstByteErr := io.WriteInt8(6, (dataFirstByte))
- if _dataFirstByteErr != nil {
- return errors.New("Error serializing 'dataFirstByte' field " + _dataFirstByteErr.Error())
- }
-
- // Array Field (data)
- if m.Data != nil {
- for _, _element := range m.Data {
- _elementErr := io.WriteInt8(8, _element)
- if _elementErr != nil {
- return errors.New("Error serializing 'data' field " + _elementErr.Error())
- }
- }
- }
-
- return nil
+ // Simple Field (standardFrame)
+ standardFrame := bool(m.StandardFrame)
+ _standardFrameErr := io.WriteBit((standardFrame))
+ if _standardFrameErr != nil {
+ return errors.New("Error serializing 'standardFrame' field " + _standardFrameErr.Error())
+ }
+
+ // Simple Field (polling)
+ polling := bool(m.Polling)
+ _pollingErr := io.WriteBit((polling))
+ if _pollingErr != nil {
+ return errors.New("Error serializing 'polling' field " + _pollingErr.Error())
+ }
+
+ // Simple Field (notRepeated)
+ notRepeated := bool(m.NotRepeated)
+ _notRepeatedErr := io.WriteBit((notRepeated))
+ if _notRepeatedErr != nil {
+ return errors.New("Error serializing 'notRepeated' field " + _notRepeatedErr.Error())
+ }
+
+ // Simple Field (notAckFrame)
+ notAckFrame := bool(m.NotAckFrame)
+ _notAckFrameErr := io.WriteBit((notAckFrame))
+ if _notAckFrameErr != nil {
+ return errors.New("Error serializing 'notAckFrame' field " + _notAckFrameErr.Error())
+ }
+
+ // Enum field (priority)
+ priority := CastCEMIPriority(m.Priority)
+ _priorityErr := priority.Serialize(io)
+ if _priorityErr != nil {
+ return errors.New("Error serializing 'priority' field " + _priorityErr.Error())
+ }
+
+ // Simple Field (acknowledgeRequested)
+ acknowledgeRequested := bool(m.AcknowledgeRequested)
+ _acknowledgeRequestedErr := io.WriteBit((acknowledgeRequested))
+ if _acknowledgeRequestedErr != nil {
+ return errors.New("Error serializing 'acknowledgeRequested' field " + _acknowledgeRequestedErr.Error())
+ }
+
+ // Simple Field (errorFlag)
+ errorFlag := bool(m.ErrorFlag)
+ _errorFlagErr := io.WriteBit((errorFlag))
+ if _errorFlagErr != nil {
+ return errors.New("Error serializing 'errorFlag' field " + _errorFlagErr.Error())
+ }
+
+ // Simple Field (groupDestinationAddress)
+ groupDestinationAddress := bool(m.GroupDestinationAddress)
+ _groupDestinationAddressErr := io.WriteBit((groupDestinationAddress))
+ if _groupDestinationAddressErr != nil {
+ return errors.New("Error serializing 'groupDestinationAddress' field " + _groupDestinationAddressErr.Error())
+ }
+
+ // Simple Field (hopCount)
+ hopCount := uint8(m.HopCount)
+ _hopCountErr := io.WriteUint8(3, (hopCount))
+ if _hopCountErr != nil {
+ return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
+ }
+
+ // Simple Field (extendedFrameFormat)
+ extendedFrameFormat := uint8(m.ExtendedFrameFormat)
+ _extendedFrameFormatErr := io.WriteUint8(4, (extendedFrameFormat))
+ if _extendedFrameFormatErr != nil {
+ return errors.New("Error serializing 'extendedFrameFormat' field " + _extendedFrameFormatErr.Error())
+ }
+
+ // Simple Field (sourceAddress)
+ sourceAddress := CastIKNXAddress(m.SourceAddress)
+ _sourceAddressErr := sourceAddress.Serialize(io)
+ if _sourceAddressErr != nil {
+ return errors.New("Error serializing 'sourceAddress' field " + _sourceAddressErr.Error())
+ }
+
+ // Array Field (destinationAddress)
+ if m.DestinationAddress != nil {
+ for _, _element := range m.DestinationAddress {
+ _elementErr := io.WriteInt8(8, _element)
+ if _elementErr != nil {
+ return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
+ }
+ }
+ }
+
+ // Simple Field (dataLength)
+ dataLength := uint8(m.DataLength)
+ _dataLengthErr := io.WriteUint8(8, (dataLength))
+ if _dataLengthErr != nil {
+ return errors.New("Error serializing 'dataLength' field " + _dataLengthErr.Error())
+ }
+
+ // Enum field (tcpi)
+ tcpi := CastTPCI(m.Tcpi)
+ _tcpiErr := tcpi.Serialize(io)
+ if _tcpiErr != nil {
+ return errors.New("Error serializing 'tcpi' field " + _tcpiErr.Error())
+ }
+
+ // Simple Field (counter)
+ counter := uint8(m.Counter)
+ _counterErr := io.WriteUint8(4, (counter))
+ if _counterErr != nil {
+ return errors.New("Error serializing 'counter' field " + _counterErr.Error())
+ }
+
+ // Enum field (apci)
+ apci := CastAPCI(m.Apci)
+ _apciErr := apci.Serialize(io)
+ if _apciErr != nil {
+ return errors.New("Error serializing 'apci' field " + _apciErr.Error())
+ }
+
+ // Simple Field (dataFirstByte)
+ dataFirstByte := int8(m.DataFirstByte)
+ _dataFirstByteErr := io.WriteInt8(6, (dataFirstByte))
+ if _dataFirstByteErr != nil {
+ return errors.New("Error serializing 'dataFirstByte' field " + _dataFirstByteErr.Error())
+ }
+
+ // Array Field (data)
+ if m.Data != nil {
+ for _, _element := range m.Data {
+ _elementErr := io.WriteInt8(8, _element)
+ if _elementErr != nil {
+ return errors.New("Error serializing 'data' field " + _elementErr.Error())
+ }
+ }
+ }
+
+ return nil
}
func (m *CEMIDataFrame) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
- for {
- token, err := d.Token()
- if err != nil {
- if err == io.EOF {
- return nil
- }
- return err
- }
- switch token.(type) {
- case xml.StartElement:
- tok := token.(xml.StartElement)
- switch tok.Name.Local {
- case "standardFrame":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.StandardFrame = data
- case "polling":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.Polling = data
- case "notRepeated":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.NotRepeated = data
- case "notAckFrame":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.NotAckFrame = data
- case "priority":
- var data *CEMIPriority
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.Priority = data
- case "acknowledgeRequested":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.AcknowledgeRequested = data
- case "errorFlag":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.ErrorFlag = data
- case "groupDestinationAddress":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.GroupDestinationAddress = data
- case "hopCount":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.HopCount = data
- case "extendedFrameFormat":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.ExtendedFrameFormat = data
- case "sourceAddress":
- var data *KNXAddress
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.SourceAddress = CastIKNXAddress(data)
- case "destinationAddress":
- var _encoded string
- if err := d.DecodeElement(&_encoded, &tok); err != nil {
- return err
- }
- _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
- _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
- if err != nil {
- return err
- }
- m.DestinationAddress = utils.ByteToInt8(_decoded[0:_len])
- case "dataLength":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.DataLength = data
- case "tcpi":
- var data *TPCI
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.Tcpi = data
- case "counter":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.Counter = data
- case "apci":
- var data *APCI
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.Apci = data
- case "dataFirstByte":
- var data int8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.DataFirstByte = data
- case "data":
- var _encoded string
- if err := d.DecodeElement(&_encoded, &tok); err != nil {
- return err
- }
- _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
- _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
- if err != nil {
- return err
- }
- m.Data = utils.ByteToInt8(_decoded[0:_len])
- }
- }
- }
+ for {
+ token, err := d.Token()
+ if err != nil {
+ if err == io.EOF {
+ return nil
+ }
+ return err
+ }
+ switch token.(type) {
+ case xml.StartElement:
+ tok := token.(xml.StartElement)
+ switch tok.Name.Local {
+ case "standardFrame":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.StandardFrame = data
+ case "polling":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.Polling = data
+ case "notRepeated":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.NotRepeated = data
+ case "notAckFrame":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.NotAckFrame = data
+ case "priority":
+ var data *CEMIPriority
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.Priority = data
+ case "acknowledgeRequested":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.AcknowledgeRequested = data
+ case "errorFlag":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.ErrorFlag = data
+ case "groupDestinationAddress":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.GroupDestinationAddress = data
+ case "hopCount":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.HopCount = data
+ case "extendedFrameFormat":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.ExtendedFrameFormat = data
+ case "sourceAddress":
+ var data *KNXAddress
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.SourceAddress = CastIKNXAddress(data)
+ case "destinationAddress":
+ var _encoded string
+ if err := d.DecodeElement(&_encoded, &tok); err != nil {
+ return err
+ }
+ _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
+ _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
+ if err != nil {
+ return err
+ }
+ m.DestinationAddress = utils.ByteToInt8(_decoded[0:_len])
+ case "dataLength":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.DataLength = data
+ case "tcpi":
+ var data *TPCI
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.Tcpi = data
+ case "counter":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.Counter = data
+ case "apci":
+ var data *APCI
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.Apci = data
+ case "dataFirstByte":
+ var data int8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.DataFirstByte = data
+ case "data":
+ var _encoded string
+ if err := d.DecodeElement(&_encoded, &tok); err != nil {
+ return err
+ }
+ _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
+ _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
+ if err != nil {
+ return err
+ }
+ m.Data = utils.ByteToInt8(_decoded[0:_len])
+ }
+ }
+ }
}
func (m CEMIDataFrame) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
- if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
- {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIDataFrame"},
- }}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.StandardFrame, xml.StartElement{Name: xml.Name{Local: "standardFrame"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.Polling, xml.StartElement{Name: xml.Name{Local: "polling"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.NotRepeated, xml.StartElement{Name: xml.Name{Local: "notRepeated"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.NotAckFrame, xml.StartElement{Name: xml.Name{Local: "notAckFrame"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.Priority, xml.StartElement{Name: xml.Name{Local: "priority"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.AcknowledgeRequested, xml.StartElement{Name: xml.Name{Local: "acknowledgeRequested"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.ErrorFlag, xml.StartElement{Name: xml.Name{Local: "errorFlag"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.GroupDestinationAddress, xml.StartElement{Name: xml.Name{Local: "groupDestinationAddress"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.HopCount, xml.StartElement{Name: xml.Name{Local: "hopCount"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.ExtendedFrameFormat, xml.StartElement{Name: xml.Name{Local: "extendedFrameFormat"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.SourceAddress, xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
- return err
- }
- _encodedDestinationAddress := make([]byte, base64.StdEncoding.EncodedLen(len(m.DestinationAddress)))
- base64.StdEncoding.Encode(_encodedDestinationAddress, utils.Int8ToByte(m.DestinationAddress))
- if err := e.EncodeElement(_encodedDestinationAddress, xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.DataLength, xml.StartElement{Name: xml.Name{Local: "dataLength"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.Tcpi, xml.StartElement{Name: xml.Name{Local: "tcpi"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.Counter, xml.StartElement{Name: xml.Name{Local: "counter"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.Apci, xml.StartElement{Name: xml.Name{Local: "apci"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.DataFirstByte, xml.StartElement{Name: xml.Name{Local: "dataFirstByte"}}); err != nil {
- return err
- }
- _encodedData := make([]byte, base64.StdEncoding.EncodedLen(len(m.Data)))
- base64.StdEncoding.Encode(_encodedData, utils.Int8ToByte(m.Data))
- if err := e.EncodeElement(_encodedData, xml.StartElement{Name: xml.Name{Local: "data"}}); err != nil {
- return err
- }
- if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
- return err
- }
- return nil
+ if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+ {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIDataFrame"},
+ }}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.StandardFrame, xml.StartElement{Name: xml.Name{Local: "standardFrame"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.Polling, xml.StartElement{Name: xml.Name{Local: "polling"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.NotRepeated, xml.StartElement{Name: xml.Name{Local: "notRepeated"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.NotAckFrame, xml.StartElement{Name: xml.Name{Local: "notAckFrame"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.Priority, xml.StartElement{Name: xml.Name{Local: "priority"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.AcknowledgeRequested, xml.StartElement{Name: xml.Name{Local: "acknowledgeRequested"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.ErrorFlag, xml.StartElement{Name: xml.Name{Local: "errorFlag"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.GroupDestinationAddress, xml.StartElement{Name: xml.Name{Local: "groupDestinationAddress"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.HopCount, xml.StartElement{Name: xml.Name{Local: "hopCount"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.ExtendedFrameFormat, xml.StartElement{Name: xml.Name{Local: "extendedFrameFormat"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.SourceAddress, xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
+ return err
+ }
+ _encodedDestinationAddress := make([]byte, base64.StdEncoding.EncodedLen(len(m.DestinationAddress)))
+ base64.StdEncoding.Encode(_encodedDestinationAddress, utils.Int8ToByte(m.DestinationAddress))
+ if err := e.EncodeElement(_encodedDestinationAddress, xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.DataLength, xml.StartElement{Name: xml.Name{Local: "dataLength"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.Tcpi, xml.StartElement{Name: xml.Name{Local: "tcpi"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.Counter, xml.StartElement{Name: xml.Name{Local: "counter"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.Apci, xml.StartElement{Name: xml.Name{Local: "apci"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.DataFirstByte, xml.StartElement{Name: xml.Name{Local: "dataFirstByte"}}); err != nil {
+ return err
+ }
+ _encodedData := make([]byte, base64.StdEncoding.EncodedLen(len(m.Data)))
+ base64.StdEncoding.Encode(_encodedData, utils.Int8ToByte(m.Data))
+ if err := e.EncodeElement(_encodedData, xml.StartElement{Name: xml.Name{Local: "data"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+ return err
+ }
+ return nil
}
-
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrame.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrame.go
index ff44a54..bb9dc89 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrame.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrame.go
@@ -19,294 +19,291 @@
package model
import (
- "encoding/xml"
- "errors"
- "io"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+ "encoding/xml"
+ "errors"
+ "io"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
)
// The data-structure of this message
type CEMIFrame struct {
- Repeated bool
- Priority ICEMIPriority
- AcknowledgeRequested bool
- ErrorFlag bool
-
+ Repeated bool
+ Priority ICEMIPriority
+ AcknowledgeRequested bool
+ ErrorFlag bool
}
// The corresponding interface
type ICEMIFrame interface {
- spi.Message
- NotAckFrame() bool
- Polling() bool
- StandardFrame() bool
- Serialize(io utils.WriteBuffer) error
+ spi.Message
+ NotAckFrame() bool
+ Polling() bool
+ StandardFrame() bool
+ Serialize(io utils.WriteBuffer) error
}
type CEMIFrameInitializer interface {
- initialize(repeated bool, priority ICEMIPriority, acknowledgeRequested bool, errorFlag bool) spi.Message
+ initialize(repeated bool, priority ICEMIPriority, acknowledgeRequested bool, errorFlag bool) spi.Message
}
func CEMIFrameNotAckFrame(m ICEMIFrame) bool {
- return m.NotAckFrame()
+ return m.NotAckFrame()
}
func CEMIFramePolling(m ICEMIFrame) bool {
- return m.Polling()
+ return m.Polling()
}
func CEMIFrameStandardFrame(m ICEMIFrame) bool {
- return m.StandardFrame()
+ return m.StandardFrame()
}
-
func CastICEMIFrame(structType interface{}) ICEMIFrame {
- castFunc := func(typ interface{}) ICEMIFrame {
- if iCEMIFrame, ok := typ.(ICEMIFrame); ok {
- return iCEMIFrame
- }
- return nil
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) ICEMIFrame {
+ if iCEMIFrame, ok := typ.(ICEMIFrame); ok {
+ return iCEMIFrame
+ }
+ return nil
+ }
+ return castFunc(structType)
}
func CastCEMIFrame(structType interface{}) CEMIFrame {
- castFunc := func(typ interface{}) CEMIFrame {
- if sCEMIFrame, ok := typ.(CEMIFrame); ok {
- return sCEMIFrame
- }
- if sCEMIFrame, ok := typ.(*CEMIFrame); ok {
- return *sCEMIFrame
- }
- return CEMIFrame{}
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) CEMIFrame {
+ if sCEMIFrame, ok := typ.(CEMIFrame); ok {
+ return sCEMIFrame
+ }
+ if sCEMIFrame, ok := typ.(*CEMIFrame); ok {
+ return *sCEMIFrame
+ }
+ return CEMIFrame{}
+ }
+ return castFunc(structType)
}
func (m CEMIFrame) LengthInBits() uint16 {
- var lengthInBits uint16 = 0
+ var lengthInBits uint16 = 0
- // Discriminator Field (standardFrame)
- lengthInBits += 1
+ // Discriminator Field (standardFrame)
+ lengthInBits += 1
- // Discriminator Field (polling)
- lengthInBits += 1
+ // Discriminator Field (polling)
+ lengthInBits += 1
- // Simple field (repeated)
- lengthInBits += 1
+ // Simple field (repeated)
+ lengthInBits += 1
- // Discriminator Field (notAckFrame)
- lengthInBits += 1
+ // Discriminator Field (notAckFrame)
+ lengthInBits += 1
- // Enum Field (priority)
- lengthInBits += 2
+ // Enum Field (priority)
+ lengthInBits += 2
- // Simple field (acknowledgeRequested)
- lengthInBits += 1
+ // Simple field (acknowledgeRequested)
+ lengthInBits += 1
- // Simple field (errorFlag)
- lengthInBits += 1
+ // Simple field (errorFlag)
+ lengthInBits += 1
- // Length of sub-type elements will be added by sub-type...
+ // Length of sub-type elements will be added by sub-type...
- return lengthInBits
+ return lengthInBits
}
func (m CEMIFrame) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
func CEMIFrameParse(io *utils.ReadBuffer) (spi.Message, error) {
- // Discriminator Field (standardFrame) (Used as input to a switch field)
- standardFrame, _standardFrameErr := io.ReadBit()
- if _standardFrameErr != nil {
- return nil, errors.New("Error parsing 'standardFrame' field " + _standardFrameErr.Error())
- }
-
- // Discriminator Field (polling) (Used as input to a switch field)
- polling, _pollingErr := io.ReadBit()
- if _pollingErr != nil {
- return nil, errors.New("Error parsing 'polling' field " + _pollingErr.Error())
- }
-
- // Simple Field (repeated)
- repeated, _repeatedErr := io.ReadBit()
- if _repeatedErr != nil {
- return nil, errors.New("Error parsing 'repeated' field " + _repeatedErr.Error())
- }
-
- // Discriminator Field (notAckFrame) (Used as input to a switch field)
- notAckFrame, _notAckFrameErr := io.ReadBit()
- if _notAckFrameErr != nil {
- return nil, errors.New("Error parsing 'notAckFrame' field " + _notAckFrameErr.Error())
- }
-
- // Enum field (priority)
- priority, _priorityErr := CEMIPriorityParse(io)
- if _priorityErr != nil {
- return nil, errors.New("Error parsing 'priority' field " + _priorityErr.Error())
- }
-
- // Simple Field (acknowledgeRequested)
- acknowledgeRequested, _acknowledgeRequestedErr := io.ReadBit()
- if _acknowledgeRequestedErr != nil {
- return nil, errors.New("Error parsing 'acknowledgeRequested' field " + _acknowledgeRequestedErr.Error())
- }
-
- // Simple Field (errorFlag)
- errorFlag, _errorFlagErr := io.ReadBit()
- if _errorFlagErr != nil {
- return nil, errors.New("Error parsing 'errorFlag' field " + _errorFlagErr.Error())
- }
-
- // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
- var initializer CEMIFrameInitializer
- var typeSwitchError error
- switch {
- case notAckFrame == false:
- initializer, typeSwitchError = CEMIFrameAckParse(io)
- case notAckFrame == true && standardFrame == true && polling == false:
- initializer, typeSwitchError = CEMIFrameDataParse(io)
- case notAckFrame == true && standardFrame == true && polling == true:
- initializer, typeSwitchError = CEMIFramePollingDataParse(io)
- case notAckFrame == true && standardFrame == false && polling == false:
- initializer, typeSwitchError = CEMIFrameDataExtParse(io)
- case notAckFrame == true && standardFrame == false && polling == true:
- initializer, typeSwitchError = CEMIFramePollingDataExtParse(io)
- }
- if typeSwitchError != nil {
- return nil, errors.New("Error parsing sub-type for type-switch. " + typeSwitchError.Error())
- }
-
- // Create the instance
- return initializer.initialize(repeated, priority, acknowledgeRequested, errorFlag), nil
+ // Discriminator Field (standardFrame) (Used as input to a switch field)
+ standardFrame, _standardFrameErr := io.ReadBit()
+ if _standardFrameErr != nil {
+ return nil, errors.New("Error parsing 'standardFrame' field " + _standardFrameErr.Error())
+ }
+
+ // Discriminator Field (polling) (Used as input to a switch field)
+ polling, _pollingErr := io.ReadBit()
+ if _pollingErr != nil {
+ return nil, errors.New("Error parsing 'polling' field " + _pollingErr.Error())
+ }
+
+ // Simple Field (repeated)
+ repeated, _repeatedErr := io.ReadBit()
+ if _repeatedErr != nil {
+ return nil, errors.New("Error parsing 'repeated' field " + _repeatedErr.Error())
+ }
+
+ // Discriminator Field (notAckFrame) (Used as input to a switch field)
+ notAckFrame, _notAckFrameErr := io.ReadBit()
+ if _notAckFrameErr != nil {
+ return nil, errors.New("Error parsing 'notAckFrame' field " + _notAckFrameErr.Error())
+ }
+
+ // Enum field (priority)
+ priority, _priorityErr := CEMIPriorityParse(io)
+ if _priorityErr != nil {
+ return nil, errors.New("Error parsing 'priority' field " + _priorityErr.Error())
+ }
+
+ // Simple Field (acknowledgeRequested)
+ acknowledgeRequested, _acknowledgeRequestedErr := io.ReadBit()
+ if _acknowledgeRequestedErr != nil {
+ return nil, errors.New("Error parsing 'acknowledgeRequested' field " + _acknowledgeRequestedErr.Error())
+ }
+
+ // Simple Field (errorFlag)
+ errorFlag, _errorFlagErr := io.ReadBit()
+ if _errorFlagErr != nil {
+ return nil, errors.New("Error parsing 'errorFlag' field " + _errorFlagErr.Error())
+ }
+
+ // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+ var initializer CEMIFrameInitializer
+ var typeSwitchError error
+ switch {
+ case notAckFrame == false:
+ initializer, typeSwitchError = CEMIFrameAckParse(io)
+ case notAckFrame == true && standardFrame == true && polling == false:
+ initializer, typeSwitchError = CEMIFrameDataParse(io)
+ case notAckFrame == true && standardFrame == true && polling == true:
+ initializer, typeSwitchError = CEMIFramePollingDataParse(io)
+ case notAckFrame == true && standardFrame == false && polling == false:
+ initializer, typeSwitchError = CEMIFrameDataExtParse(io)
+ case notAckFrame == true && standardFrame == false && polling == true:
+ initializer, typeSwitchError = CEMIFramePollingDataExtParse(io)
+ }
+ if typeSwitchError != nil {
+ return nil, errors.New("Error parsing sub-type for type-switch. " + typeSwitchError.Error())
+ }
+
+ // Create the instance
+ return initializer.initialize(repeated, priority, acknowledgeRequested, errorFlag), nil
}
func CEMIFrameSerialize(io utils.WriteBuffer, m CEMIFrame, i ICEMIFrame, childSerialize func() error) error {
- // Discriminator Field (standardFrame) (Used as input to a switch field)
- standardFrame := bool(i.StandardFrame())
- _standardFrameErr := io.WriteBit((bool) (standardFrame))
- if _standardFrameErr != nil {
- return errors.New("Error serializing 'standardFrame' field " + _standardFrameErr.Error())
- }
-
- // Discriminator Field (polling) (Used as input to a switch field)
- polling := bool(i.Polling())
- _pollingErr := io.WriteBit((bool) (polling))
- if _pollingErr != nil {
- return errors.New("Error serializing 'polling' field " + _pollingErr.Error())
- }
-
- // Simple Field (repeated)
- repeated := bool(m.Repeated)
- _repeatedErr := io.WriteBit((bool) (repeated))
- if _repeatedErr != nil {
- return errors.New("Error serializing 'repeated' field " + _repeatedErr.Error())
- }
-
- // Discriminator Field (notAckFrame) (Used as input to a switch field)
- notAckFrame := bool(i.NotAckFrame())
- _notAckFrameErr := io.WriteBit((bool) (notAckFrame))
- if _notAckFrameErr != nil {
- return errors.New("Error serializing 'notAckFrame' field " + _notAckFrameErr.Error())
- }
-
- // Enum field (priority)
- priority := CastCEMIPriority(m.Priority)
- _priorityErr := priority.Serialize(io)
- if _priorityErr != nil {
- return errors.New("Error serializing 'priority' field " + _priorityErr.Error())
- }
-
- // Simple Field (acknowledgeRequested)
- acknowledgeRequested := bool(m.AcknowledgeRequested)
- _acknowledgeRequestedErr := io.WriteBit((bool) (acknowledgeRequested))
- if _acknowledgeRequestedErr != nil {
- return errors.New("Error serializing 'acknowledgeRequested' field " + _acknowledgeRequestedErr.Error())
- }
-
- // Simple Field (errorFlag)
- errorFlag := bool(m.ErrorFlag)
- _errorFlagErr := io.WriteBit((bool) (errorFlag))
- if _errorFlagErr != nil {
- return errors.New("Error serializing 'errorFlag' field " + _errorFlagErr.Error())
- }
-
- // Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
- _typeSwitchErr := childSerialize()
- if _typeSwitchErr != nil {
- return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
- }
-
- return nil
+ // Discriminator Field (standardFrame) (Used as input to a switch field)
+ standardFrame := bool(i.StandardFrame())
+ _standardFrameErr := io.WriteBit((standardFrame))
+ if _standardFrameErr != nil {
+ return errors.New("Error serializing 'standardFrame' field " + _standardFrameErr.Error())
+ }
+
+ // Discriminator Field (polling) (Used as input to a switch field)
+ polling := bool(i.Polling())
+ _pollingErr := io.WriteBit((polling))
+ if _pollingErr != nil {
+ return errors.New("Error serializing 'polling' field " + _pollingErr.Error())
+ }
+
+ // Simple Field (repeated)
+ repeated := bool(m.Repeated)
+ _repeatedErr := io.WriteBit((repeated))
+ if _repeatedErr != nil {
+ return errors.New("Error serializing 'repeated' field " + _repeatedErr.Error())
+ }
+
+ // Discriminator Field (notAckFrame) (Used as input to a switch field)
+ notAckFrame := bool(i.NotAckFrame())
+ _notAckFrameErr := io.WriteBit((notAckFrame))
+ if _notAckFrameErr != nil {
+ return errors.New("Error serializing 'notAckFrame' field " + _notAckFrameErr.Error())
+ }
+
+ // Enum field (priority)
+ priority := CastCEMIPriority(m.Priority)
+ _priorityErr := priority.Serialize(io)
+ if _priorityErr != nil {
+ return errors.New("Error serializing 'priority' field " + _priorityErr.Error())
+ }
+
+ // Simple Field (acknowledgeRequested)
+ acknowledgeRequested := bool(m.AcknowledgeRequested)
+ _acknowledgeRequestedErr := io.WriteBit((acknowledgeRequested))
+ if _acknowledgeRequestedErr != nil {
+ return errors.New("Error serializing 'acknowledgeRequested' field " + _acknowledgeRequestedErr.Error())
+ }
+
+ // Simple Field (errorFlag)
+ errorFlag := bool(m.ErrorFlag)
+ _errorFlagErr := io.WriteBit((errorFlag))
+ if _errorFlagErr != nil {
+ return errors.New("Error serializing 'errorFlag' field " + _errorFlagErr.Error())
+ }
+
+ // Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
+ _typeSwitchErr := childSerialize()
+ if _typeSwitchErr != nil {
+ return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+ }
+
+ return nil
}
func (m *CEMIFrame) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
- for {
- token, err := d.Token()
- if err != nil {
- if err == io.EOF {
- return nil
- }
- return err
- }
- switch token.(type) {
- case xml.StartElement:
- tok := token.(xml.StartElement)
- switch tok.Name.Local {
- case "repeated":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.Repeated = data
- case "priority":
- var data *CEMIPriority
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.Priority = data
- case "acknowledgeRequested":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.AcknowledgeRequested = data
- case "errorFlag":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.ErrorFlag = data
- }
- }
- }
+ for {
+ token, err := d.Token()
+ if err != nil {
+ if err == io.EOF {
+ return nil
+ }
+ return err
+ }
+ switch token.(type) {
+ case xml.StartElement:
+ tok := token.(xml.StartElement)
+ switch tok.Name.Local {
+ case "repeated":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.Repeated = data
+ case "priority":
+ var data *CEMIPriority
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.Priority = data
+ case "acknowledgeRequested":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.AcknowledgeRequested = data
+ case "errorFlag":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.ErrorFlag = data
+ }
+ }
+ }
}
func (m CEMIFrame) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
- if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
- {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIFrame"},
- }}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.Repeated, xml.StartElement{Name: xml.Name{Local: "repeated"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.Priority, xml.StartElement{Name: xml.Name{Local: "priority"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.AcknowledgeRequested, xml.StartElement{Name: xml.Name{Local: "acknowledgeRequested"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.ErrorFlag, xml.StartElement{Name: xml.Name{Local: "errorFlag"}}); err != nil {
- return err
- }
- if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
- return err
- }
- return nil
+ if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+ {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIFrame"},
+ }}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.Repeated, xml.StartElement{Name: xml.Name{Local: "repeated"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.Priority, xml.StartElement{Name: xml.Name{Local: "priority"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.AcknowledgeRequested, xml.StartElement{Name: xml.Name{Local: "acknowledgeRequested"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.ErrorFlag, xml.StartElement{Name: xml.Name{Local: "errorFlag"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+ return err
+ }
+ return nil
}
-
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameData.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameData.go
index fb6b6a7..52563a0 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameData.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameData.go
@@ -19,452 +19,451 @@
package model
import (
- "encoding/base64"
- "encoding/xml"
- "errors"
- "io"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
- "reflect"
+ "encoding/base64"
+ "encoding/xml"
+ "errors"
+ "io"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+ "reflect"
)
// The data-structure of this message
type CEMIFrameData struct {
- SourceAddress IKNXAddress
- DestinationAddress []int8
- GroupAddress bool
- HopCount uint8
- DataLength uint8
- Tcpi ITPCI
- Counter uint8
- Apci IAPCI
- DataFirstByte int8
- Data []int8
- Crc uint8
- CEMIFrame
+ SourceAddress IKNXAddress
+ DestinationAddress []int8
+ GroupAddress bool
+ HopCount uint8
+ DataLength uint8
+ Tcpi ITPCI
+ Counter uint8
+ Apci IAPCI
+ DataFirstByte int8
+ Data []int8
+ Crc uint8
+ CEMIFrame
}
// The corresponding interface
type ICEMIFrameData interface {
- ICEMIFrame
- Serialize(io utils.WriteBuffer) error
+ ICEMIFrame
+ Serialize(io utils.WriteBuffer) error
}
// Accessors for discriminator values.
func (m CEMIFrameData) NotAckFrame() bool {
- return true
+ return true
}
func (m CEMIFrameData) StandardFrame() bool {
- return true
+ return true
}
func (m CEMIFrameData) Polling() bool {
- return false
+ return false
}
func (m CEMIFrameData) initialize(repeated bool, priority ICEMIPriority, acknowledgeRequested bool, errorFlag bool) spi.Message {
- m.Repeated = repeated
- m.Priority = priority
- m.AcknowledgeRequested = acknowledgeRequested
- m.ErrorFlag = errorFlag
- return m
+ m.Repeated = repeated
+ m.Priority = priority
+ m.AcknowledgeRequested = acknowledgeRequested
+ m.ErrorFlag = errorFlag
+ return m
}
func NewCEMIFrameData(sourceAddress IKNXAddress, destinationAddress []int8, groupAddress bool, hopCount uint8, dataLength uint8, tcpi ITPCI, counter uint8, apci IAPCI, dataFirstByte int8, data []int8, crc uint8) CEMIFrameInitializer {
- return &CEMIFrameData{SourceAddress: sourceAddress, DestinationAddress: destinationAddress, GroupAddress: groupAddress, HopCount: hopCount, DataLength: dataLength, Tcpi: tcpi, Counter: counter, Apci: apci, DataFirstByte: dataFirstByte, Data: data, Crc: crc}
+ return &CEMIFrameData{SourceAddress: sourceAddress, DestinationAddress: destinationAddress, GroupAddress: groupAddress, HopCount: hopCount, DataLength: dataLength, Tcpi: tcpi, Counter: counter, Apci: apci, DataFirstByte: dataFirstByte, Data: data, Crc: crc}
}
func CastICEMIFrameData(structType interface{}) ICEMIFrameData {
- castFunc := func(typ interface{}) ICEMIFrameData {
- if iCEMIFrameData, ok := typ.(ICEMIFrameData); ok {
- return iCEMIFrameData
- }
- return nil
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) ICEMIFrameData {
+ if iCEMIFrameData, ok := typ.(ICEMIFrameData); ok {
+ return iCEMIFrameData
+ }
+ return nil
+ }
+ return castFunc(structType)
}
func CastCEMIFrameData(structType interface{}) CEMIFrameData {
- castFunc := func(typ interface{}) CEMIFrameData {
- if sCEMIFrameData, ok := typ.(CEMIFrameData); ok {
- return sCEMIFrameData
- }
- if sCEMIFrameData, ok := typ.(*CEMIFrameData); ok {
- return *sCEMIFrameData
- }
- return CEMIFrameData{}
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) CEMIFrameData {
+ if sCEMIFrameData, ok := typ.(CEMIFrameData); ok {
+ return sCEMIFrameData
+ }
+ if sCEMIFrameData, ok := typ.(*CEMIFrameData); ok {
+ return *sCEMIFrameData
+ }
+ return CEMIFrameData{}
+ }
+ return castFunc(structType)
}
func (m CEMIFrameData) LengthInBits() uint16 {
- var lengthInBits uint16 = m.CEMIFrame.LengthInBits()
+ var lengthInBits uint16 = m.CEMIFrame.LengthInBits()
- // Simple field (sourceAddress)
- lengthInBits += m.SourceAddress.LengthInBits()
+ // Simple field (sourceAddress)
+ lengthInBits += m.SourceAddress.LengthInBits()
- // Array field
- if len(m.DestinationAddress) > 0 {
- lengthInBits += 8 * uint16(len(m.DestinationAddress))
- }
+ // Array field
+ if len(m.DestinationAddress) > 0 {
+ lengthInBits += 8 * uint16(len(m.DestinationAddress))
+ }
- // Simple field (groupAddress)
- lengthInBits += 1
+ // Simple field (groupAddress)
+ lengthInBits += 1
- // Simple field (hopCount)
- lengthInBits += 3
+ // Simple field (hopCount)
+ lengthInBits += 3
- // Simple field (dataLength)
- lengthInBits += 4
+ // Simple field (dataLength)
+ lengthInBits += 4
- // Enum Field (tcpi)
- lengthInBits += 2
+ // Enum Field (tcpi)
+ lengthInBits += 2
- // Simple field (counter)
- lengthInBits += 4
+ // Simple field (counter)
+ lengthInBits += 4
- // Enum Field (apci)
- lengthInBits += 4
+ // Enum Field (apci)
+ lengthInBits += 4
- // Simple field (dataFirstByte)
- lengthInBits += 6
+ // Simple field (dataFirstByte)
+ lengthInBits += 6
- // Array field
- if len(m.Data) > 0 {
- lengthInBits += 8 * uint16(len(m.Data))
- }
+ // Array field
+ if len(m.Data) > 0 {
+ lengthInBits += 8 * uint16(len(m.Data))
+ }
- // Simple field (crc)
- lengthInBits += 8
+ // Simple field (crc)
+ lengthInBits += 8
- return lengthInBits
+ return lengthInBits
}
func (m CEMIFrameData) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
func CEMIFrameDataParse(io *utils.ReadBuffer) (CEMIFrameInitializer, error) {
- // Simple Field (sourceAddress)
- _sourceAddressMessage, _err := KNXAddressParse(io)
- if _err != nil {
- return nil, errors.New("Error parsing simple field 'sourceAddress'. " + _err.Error())
- }
- var sourceAddress IKNXAddress
- sourceAddress, _sourceAddressOk := _sourceAddressMessage.(IKNXAddress)
- if !_sourceAddressOk {
- return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_sourceAddressMessage).Name() + " to IKNXAddress")
- }
-
- // Array field (destinationAddress)
- // Count array
- destinationAddress := make([]int8, uint16(2))
- for curItem := uint16(0); curItem < uint16(uint16(2)); curItem++ {
-
- _item, _err := io.ReadInt8(8)
- if _err != nil {
- return nil, errors.New("Error parsing 'destinationAddress' field " + _err.Error())
- }
- destinationAddress[curItem] = _item
- }
-
- // Simple Field (groupAddress)
- groupAddress, _groupAddressErr := io.ReadBit()
- if _groupAddressErr != nil {
- return nil, errors.New("Error parsing 'groupAddress' field " + _groupAddressErr.Error())
- }
-
- // Simple Field (hopCount)
- hopCount, _hopCountErr := io.ReadUint8(3)
- if _hopCountErr != nil {
- return nil, errors.New("Error parsing 'hopCount' field " + _hopCountErr.Error())
- }
-
- // Simple Field (dataLength)
- dataLength, _dataLengthErr := io.ReadUint8(4)
- if _dataLengthErr != nil {
- return nil, errors.New("Error parsing 'dataLength' field " + _dataLengthErr.Error())
- }
-
- // Enum field (tcpi)
- tcpi, _tcpiErr := TPCIParse(io)
- if _tcpiErr != nil {
- return nil, errors.New("Error parsing 'tcpi' field " + _tcpiErr.Error())
- }
-
- // Simple Field (counter)
- counter, _counterErr := io.ReadUint8(4)
- if _counterErr != nil {
- return nil, errors.New("Error parsing 'counter' field " + _counterErr.Error())
- }
-
- // Enum field (apci)
- apci, _apciErr := APCIParse(io)
- if _apciErr != nil {
- return nil, errors.New("Error parsing 'apci' field " + _apciErr.Error())
- }
-
- // Simple Field (dataFirstByte)
- dataFirstByte, _dataFirstByteErr := io.ReadInt8(6)
- if _dataFirstByteErr != nil {
- return nil, errors.New("Error parsing 'dataFirstByte' field " + _dataFirstByteErr.Error())
- }
-
- // Array field (data)
- // Count array
- data := make([]int8, uint16(dataLength) - uint16(uint16(1)))
- for curItem := uint16(0); curItem < uint16(uint16(dataLength) - uint16(uint16(1))); curItem++ {
-
- _item, _err := io.ReadInt8(8)
- if _err != nil {
- return nil, errors.New("Error parsing 'data' field " + _err.Error())
- }
- data[curItem] = _item
- }
-
- // Simple Field (crc)
- crc, _crcErr := io.ReadUint8(8)
- if _crcErr != nil {
- return nil, errors.New("Error parsing 'crc' field " + _crcErr.Error())
- }
-
- // Create the instance
- return NewCEMIFrameData(sourceAddress, destinationAddress, groupAddress, hopCount, dataLength, tcpi, counter, apci, dataFirstByte, data, crc), nil
+ // Simple Field (sourceAddress)
+ _sourceAddressMessage, _err := KNXAddressParse(io)
+ if _err != nil {
+ return nil, errors.New("Error parsing simple field 'sourceAddress'. " + _err.Error())
+ }
+ var sourceAddress IKNXAddress
+ sourceAddress, _sourceAddressOk := _sourceAddressMessage.(IKNXAddress)
+ if !_sourceAddressOk {
+ return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_sourceAddressMessage).Name() + " to IKNXAddress")
+ }
+
+ // Array field (destinationAddress)
+ // Count array
+ destinationAddress := make([]int8, uint16(2))
+ for curItem := uint16(0); curItem < uint16(uint16(2)); curItem++ {
+
+ _item, _err := io.ReadInt8(8)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'destinationAddress' field " + _err.Error())
+ }
+ destinationAddress[curItem] = _item
+ }
+
+ // Simple Field (groupAddress)
+ groupAddress, _groupAddressErr := io.ReadBit()
+ if _groupAddressErr != nil {
+ return nil, errors.New("Error parsing 'groupAddress' field " + _groupAddressErr.Error())
+ }
+
+ // Simple Field (hopCount)
+ hopCount, _hopCountErr := io.ReadUint8(3)
+ if _hopCountErr != nil {
+ return nil, errors.New("Error parsing 'hopCount' field " + _hopCountErr.Error())
+ }
+
+ // Simple Field (dataLength)
+ dataLength, _dataLengthErr := io.ReadUint8(4)
+ if _dataLengthErr != nil {
+ return nil, errors.New("Error parsing 'dataLength' field " + _dataLengthErr.Error())
+ }
+
+ // Enum field (tcpi)
+ tcpi, _tcpiErr := TPCIParse(io)
+ if _tcpiErr != nil {
+ return nil, errors.New("Error parsing 'tcpi' field " + _tcpiErr.Error())
+ }
+
+ // Simple Field (counter)
+ counter, _counterErr := io.ReadUint8(4)
+ if _counterErr != nil {
+ return nil, errors.New("Error parsing 'counter' field " + _counterErr.Error())
+ }
+
+ // Enum field (apci)
+ apci, _apciErr := APCIParse(io)
+ if _apciErr != nil {
+ return nil, errors.New("Error parsing 'apci' field " + _apciErr.Error())
+ }
+
+ // Simple Field (dataFirstByte)
+ dataFirstByte, _dataFirstByteErr := io.ReadInt8(6)
+ if _dataFirstByteErr != nil {
+ return nil, errors.New("Error parsing 'dataFirstByte' field " + _dataFirstByteErr.Error())
+ }
+
+ // Array field (data)
+ // Count array
+ data := make([]int8, uint16(dataLength)-uint16(uint16(1)))
+ for curItem := uint16(0); curItem < uint16(uint16(dataLength)-uint16(uint16(1))); curItem++ {
+
+ _item, _err := io.ReadInt8(8)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'data' field " + _err.Error())
+ }
+ data[curItem] = _item
+ }
+
+ // Simple Field (crc)
+ crc, _crcErr := io.ReadUint8(8)
+ if _crcErr != nil {
+ return nil, errors.New("Error parsing 'crc' field " + _crcErr.Error())
+ }
+
+ // Create the instance
+ return NewCEMIFrameData(sourceAddress, destinationAddress, groupAddress, hopCount, dataLength, tcpi, counter, apci, dataFirstByte, data, crc), nil
}
func (m CEMIFrameData) Serialize(io utils.WriteBuffer) error {
- ser := func() error {
-
- // Simple Field (sourceAddress)
- sourceAddress := CastIKNXAddress(m.SourceAddress)
- _sourceAddressErr := sourceAddress.Serialize(io)
- if _sourceAddressErr != nil {
- return errors.New("Error serializing 'sourceAddress' field " + _sourceAddressErr.Error())
- }
-
- // Array Field (destinationAddress)
- if m.DestinationAddress != nil {
- for _, _element := range m.DestinationAddress {
- _elementErr := io.WriteInt8(8, _element)
- if _elementErr != nil {
- return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
- }
- }
- }
-
- // Simple Field (groupAddress)
- groupAddress := bool(m.GroupAddress)
- _groupAddressErr := io.WriteBit((bool) (groupAddress))
- if _groupAddressErr != nil {
- return errors.New("Error serializing 'groupAddress' field " + _groupAddressErr.Error())
- }
-
- // Simple Field (hopCount)
- hopCount := uint8(m.HopCount)
- _hopCountErr := io.WriteUint8(3, (hopCount))
- if _hopCountErr != nil {
- return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
- }
-
- // Simple Field (dataLength)
- dataLength := uint8(m.DataLength)
- _dataLengthErr := io.WriteUint8(4, (dataLength))
- if _dataLengthErr != nil {
- return errors.New("Error serializing 'dataLength' field " + _dataLengthErr.Error())
- }
-
- // Enum field (tcpi)
- tcpi := CastTPCI(m.Tcpi)
- _tcpiErr := tcpi.Serialize(io)
- if _tcpiErr != nil {
- return errors.New("Error serializing 'tcpi' field " + _tcpiErr.Error())
- }
-
- // Simple Field (counter)
- counter := uint8(m.Counter)
- _counterErr := io.WriteUint8(4, (counter))
- if _counterErr != nil {
- return errors.New("Error serializing 'counter' field " + _counterErr.Error())
- }
-
- // Enum field (apci)
- apci := CastAPCI(m.Apci)
- _apciErr := apci.Serialize(io)
- if _apciErr != nil {
- return errors.New("Error serializing 'apci' field " + _apciErr.Error())
- }
-
- // Simple Field (dataFirstByte)
- dataFirstByte := int8(m.DataFirstByte)
- _dataFirstByteErr := io.WriteInt8(6, (dataFirstByte))
- if _dataFirstByteErr != nil {
- return errors.New("Error serializing 'dataFirstByte' field " + _dataFirstByteErr.Error())
- }
-
- // Array Field (data)
- if m.Data != nil {
- for _, _element := range m.Data {
- _elementErr := io.WriteInt8(8, _element)
- if _elementErr != nil {
- return errors.New("Error serializing 'data' field " + _elementErr.Error())
- }
- }
- }
-
- // Simple Field (crc)
- crc := uint8(m.Crc)
- _crcErr := io.WriteUint8(8, (crc))
- if _crcErr != nil {
- return errors.New("Error serializing 'crc' field " + _crcErr.Error())
- }
-
- return nil
- }
- return CEMIFrameSerialize(io, m.CEMIFrame, CastICEMIFrame(m), ser)
+ ser := func() error {
+
+ // Simple Field (sourceAddress)
+ sourceAddress := CastIKNXAddress(m.SourceAddress)
+ _sourceAddressErr := sourceAddress.Serialize(io)
+ if _sourceAddressErr != nil {
+ return errors.New("Error serializing 'sourceAddress' field " + _sourceAddressErr.Error())
+ }
+
+ // Array Field (destinationAddress)
+ if m.DestinationAddress != nil {
+ for _, _element := range m.DestinationAddress {
+ _elementErr := io.WriteInt8(8, _element)
+ if _elementErr != nil {
+ return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
+ }
+ }
+ }
+
+ // Simple Field (groupAddress)
+ groupAddress := bool(m.GroupAddress)
+ _groupAddressErr := io.WriteBit((groupAddress))
+ if _groupAddressErr != nil {
+ return errors.New("Error serializing 'groupAddress' field " + _groupAddressErr.Error())
+ }
+
+ // Simple Field (hopCount)
+ hopCount := uint8(m.HopCount)
+ _hopCountErr := io.WriteUint8(3, (hopCount))
+ if _hopCountErr != nil {
+ return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
+ }
+
+ // Simple Field (dataLength)
+ dataLength := uint8(m.DataLength)
+ _dataLengthErr := io.WriteUint8(4, (dataLength))
+ if _dataLengthErr != nil {
+ return errors.New("Error serializing 'dataLength' field " + _dataLengthErr.Error())
+ }
+
+ // Enum field (tcpi)
+ tcpi := CastTPCI(m.Tcpi)
+ _tcpiErr := tcpi.Serialize(io)
+ if _tcpiErr != nil {
+ return errors.New("Error serializing 'tcpi' field " + _tcpiErr.Error())
+ }
+
+ // Simple Field (counter)
+ counter := uint8(m.Counter)
+ _counterErr := io.WriteUint8(4, (counter))
+ if _counterErr != nil {
+ return errors.New("Error serializing 'counter' field " + _counterErr.Error())
+ }
+
+ // Enum field (apci)
+ apci := CastAPCI(m.Apci)
+ _apciErr := apci.Serialize(io)
+ if _apciErr != nil {
+ return errors.New("Error serializing 'apci' field " + _apciErr.Error())
+ }
+
+ // Simple Field (dataFirstByte)
+ dataFirstByte := int8(m.DataFirstByte)
+ _dataFirstByteErr := io.WriteInt8(6, (dataFirstByte))
+ if _dataFirstByteErr != nil {
+ return errors.New("Error serializing 'dataFirstByte' field " + _dataFirstByteErr.Error())
+ }
+
+ // Array Field (data)
+ if m.Data != nil {
+ for _, _element := range m.Data {
+ _elementErr := io.WriteInt8(8, _element)
+ if _elementErr != nil {
+ return errors.New("Error serializing 'data' field " + _elementErr.Error())
+ }
+ }
+ }
+
+ // Simple Field (crc)
+ crc := uint8(m.Crc)
+ _crcErr := io.WriteUint8(8, (crc))
+ if _crcErr != nil {
+ return errors.New("Error serializing 'crc' field " + _crcErr.Error())
+ }
+
+ return nil
+ }
+ return CEMIFrameSerialize(io, m.CEMIFrame, CastICEMIFrame(m), ser)
}
func (m *CEMIFrameData) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
- for {
- token, err := d.Token()
- if err != nil {
- if err == io.EOF {
- return nil
- }
- return err
- }
- switch token.(type) {
- case xml.StartElement:
- tok := token.(xml.StartElement)
- switch tok.Name.Local {
- case "sourceAddress":
- var data *KNXAddress
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.SourceAddress = CastIKNXAddress(data)
- case "destinationAddress":
- var _encoded string
- if err := d.DecodeElement(&_encoded, &tok); err != nil {
- return err
- }
- _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
- _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
- if err != nil {
- return err
- }
- m.DestinationAddress = utils.ByteToInt8(_decoded[0:_len])
- case "groupAddress":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.GroupAddress = data
- case "hopCount":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.HopCount = data
- case "dataLength":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.DataLength = data
- case "tcpi":
- var data *TPCI
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.Tcpi = data
- case "counter":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.Counter = data
- case "apci":
- var data *APCI
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.Apci = data
- case "dataFirstByte":
- var data int8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.DataFirstByte = data
- case "data":
- var _encoded string
- if err := d.DecodeElement(&_encoded, &tok); err != nil {
- return err
- }
- _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
- _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
- if err != nil {
- return err
- }
- m.Data = utils.ByteToInt8(_decoded[0:_len])
- case "crc":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.Crc = data
- }
- }
- }
+ for {
+ token, err := d.Token()
+ if err != nil {
+ if err == io.EOF {
+ return nil
+ }
+ return err
+ }
+ switch token.(type) {
+ case xml.StartElement:
+ tok := token.(xml.StartElement)
+ switch tok.Name.Local {
+ case "sourceAddress":
+ var data *KNXAddress
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.SourceAddress = CastIKNXAddress(data)
+ case "destinationAddress":
+ var _encoded string
+ if err := d.DecodeElement(&_encoded, &tok); err != nil {
+ return err
+ }
+ _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
+ _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
+ if err != nil {
+ return err
+ }
+ m.DestinationAddress = utils.ByteToInt8(_decoded[0:_len])
+ case "groupAddress":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.GroupAddress = data
+ case "hopCount":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.HopCount = data
+ case "dataLength":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.DataLength = data
+ case "tcpi":
+ var data *TPCI
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.Tcpi = data
+ case "counter":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.Counter = data
+ case "apci":
+ var data *APCI
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.Apci = data
+ case "dataFirstByte":
+ var data int8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.DataFirstByte = data
+ case "data":
+ var _encoded string
+ if err := d.DecodeElement(&_encoded, &tok); err != nil {
+ return err
+ }
+ _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
+ _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
+ if err != nil {
+ return err
+ }
+ m.Data = utils.ByteToInt8(_decoded[0:_len])
+ case "crc":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.Crc = data
+ }
+ }
+ }
}
func (m CEMIFrameData) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
- if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
- {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIFrameData"},
- }}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.SourceAddress, xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
- return err
- }
- _encodedDestinationAddress := make([]byte, base64.StdEncoding.EncodedLen(len(m.DestinationAddress)))
- base64.StdEncoding.Encode(_encodedDestinationAddress, utils.Int8ToByte(m.DestinationAddress))
- if err := e.EncodeElement(_encodedDestinationAddress, xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.GroupAddress, xml.StartElement{Name: xml.Name{Local: "groupAddress"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.HopCount, xml.StartElement{Name: xml.Name{Local: "hopCount"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.DataLength, xml.StartElement{Name: xml.Name{Local: "dataLength"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.Tcpi, xml.StartElement{Name: xml.Name{Local: "tcpi"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.Counter, xml.StartElement{Name: xml.Name{Local: "counter"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.Apci, xml.StartElement{Name: xml.Name{Local: "apci"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.DataFirstByte, xml.StartElement{Name: xml.Name{Local: "dataFirstByte"}}); err != nil {
- return err
- }
- _encodedData := make([]byte, base64.StdEncoding.EncodedLen(len(m.Data)))
- base64.StdEncoding.Encode(_encodedData, utils.Int8ToByte(m.Data))
- if err := e.EncodeElement(_encodedData, xml.StartElement{Name: xml.Name{Local: "data"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.Crc, xml.StartElement{Name: xml.Name{Local: "crc"}}); err != nil {
- return err
- }
- if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
- return err
- }
- return nil
+ if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+ {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIFrameData"},
+ }}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.SourceAddress, xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
+ return err
+ }
+ _encodedDestinationAddress := make([]byte, base64.StdEncoding.EncodedLen(len(m.DestinationAddress)))
+ base64.StdEncoding.Encode(_encodedDestinationAddress, utils.Int8ToByte(m.DestinationAddress))
+ if err := e.EncodeElement(_encodedDestinationAddress, xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.GroupAddress, xml.StartElement{Name: xml.Name{Local: "groupAddress"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.HopCount, xml.StartElement{Name: xml.Name{Local: "hopCount"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.DataLength, xml.StartElement{Name: xml.Name{Local: "dataLength"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.Tcpi, xml.StartElement{Name: xml.Name{Local: "tcpi"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.Counter, xml.StartElement{Name: xml.Name{Local: "counter"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.Apci, xml.StartElement{Name: xml.Name{Local: "apci"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.DataFirstByte, xml.StartElement{Name: xml.Name{Local: "dataFirstByte"}}); err != nil {
+ return err
+ }
+ _encodedData := make([]byte, base64.StdEncoding.EncodedLen(len(m.Data)))
+ base64.StdEncoding.Encode(_encodedData, utils.Int8ToByte(m.Data))
+ if err := e.EncodeElement(_encodedData, xml.StartElement{Name: xml.Name{Local: "data"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.Crc, xml.StartElement{Name: xml.Name{Local: "crc"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+ return err
+ }
+ return nil
}
-
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameDataExt.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameDataExt.go
index 58200a2..b1b3873 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameDataExt.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameDataExt.go
@@ -19,478 +19,477 @@
package model
import (
- "encoding/base64"
- "encoding/xml"
- "errors"
- "io"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
- "reflect"
+ "encoding/base64"
+ "encoding/xml"
+ "errors"
+ "io"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+ "reflect"
)
// The data-structure of this message
type CEMIFrameDataExt struct {
- GroupAddress bool
- HopCount uint8
- ExtendedFrameFormat uint8
- SourceAddress IKNXAddress
- DestinationAddress []int8
- DataLength uint8
- Tcpi ITPCI
- Counter uint8
- Apci IAPCI
- DataFirstByte int8
- Data []int8
- Crc uint8
- CEMIFrame
+ GroupAddress bool
+ HopCount uint8
+ ExtendedFrameFormat uint8
+ SourceAddress IKNXAddress
+ DestinationAddress []int8
+ DataLength uint8
+ Tcpi ITPCI
+ Counter uint8
+ Apci IAPCI
+ DataFirstByte int8
+ Data []int8
+ Crc uint8
+ CEMIFrame
}
// The corresponding interface
type ICEMIFrameDataExt interface {
- ICEMIFrame
- Serialize(io utils.WriteBuffer) error
+ ICEMIFrame
+ Serialize(io utils.WriteBuffer) error
}
// Accessors for discriminator values.
func (m CEMIFrameDataExt) NotAckFrame() bool {
- return true
+ return true
}
func (m CEMIFrameDataExt) StandardFrame() bool {
- return false
+ return false
}
func (m CEMIFrameDataExt) Polling() bool {
- return false
+ return false
}
func (m CEMIFrameDataExt) initialize(repeated bool, priority ICEMIPriority, acknowledgeRequested bool, errorFlag bool) spi.Message {
- m.Repeated = repeated
- m.Priority = priority
- m.AcknowledgeRequested = acknowledgeRequested
- m.ErrorFlag = errorFlag
- return m
+ m.Repeated = repeated
+ m.Priority = priority
+ m.AcknowledgeRequested = acknowledgeRequested
+ m.ErrorFlag = errorFlag
+ return m
}
func NewCEMIFrameDataExt(groupAddress bool, hopCount uint8, extendedFrameFormat uint8, sourceAddress IKNXAddress, destinationAddress []int8, dataLength uint8, tcpi ITPCI, counter uint8, apci IAPCI, dataFirstByte int8, data []int8, crc uint8) CEMIFrameInitializer {
- return &CEMIFrameDataExt{GroupAddress: groupAddress, HopCount: hopCount, ExtendedFrameFormat: extendedFrameFormat, SourceAddress: sourceAddress, DestinationAddress: destinationAddress, DataLength: dataLength, Tcpi: tcpi, Counter: counter, Apci: apci, DataFirstByte: dataFirstByte, Data: data, Crc: crc}
+ return &CEMIFrameDataExt{GroupAddress: groupAddress, HopCount: hopCount, ExtendedFrameFormat: extendedFrameFormat, SourceAddress: sourceAddress, DestinationAddress: destinationAddress, DataLength: dataLength, Tcpi: tcpi, Counter: counter, Apci: apci, DataFirstByte: dataFirstByte, Data: data, Crc: crc}
}
func CastICEMIFrameDataExt(structType interface{}) ICEMIFrameDataExt {
- castFunc := func(typ interface{}) ICEMIFrameDataExt {
- if iCEMIFrameDataExt, ok := typ.(ICEMIFrameDataExt); ok {
- return iCEMIFrameDataExt
- }
- return nil
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) ICEMIFrameDataExt {
+ if iCEMIFrameDataExt, ok := typ.(ICEMIFrameDataExt); ok {
+ return iCEMIFrameDataExt
+ }
+ return nil
+ }
+ return castFunc(structType)
}
func CastCEMIFrameDataExt(structType interface{}) CEMIFrameDataExt {
- castFunc := func(typ interface{}) CEMIFrameDataExt {
- if sCEMIFrameDataExt, ok := typ.(CEMIFrameDataExt); ok {
- return sCEMIFrameDataExt
- }
- if sCEMIFrameDataExt, ok := typ.(*CEMIFrameDataExt); ok {
- return *sCEMIFrameDataExt
- }
- return CEMIFrameDataExt{}
- }
- return castFunc(structType)
+ castFunc := func(typ interface{}) CEMIFrameDataExt {
+ if sCEMIFrameDataExt, ok := typ.(CEMIFrameDataExt); ok {
+ return sCEMIFrameDataExt
+ }
+ if sCEMIFrameDataExt, ok := typ.(*CEMIFrameDataExt); ok {
+ return *sCEMIFrameDataExt
+ }
+ return CEMIFrameDataExt{}
+ }
+ return castFunc(structType)
}
func (m CEMIFrameDataExt) LengthInBits() uint16 {
- var lengthInBits uint16 = m.CEMIFrame.LengthInBits()
+ var lengthInBits uint16 = m.CEMIFrame.LengthInBits()
- // Simple field (groupAddress)
- lengthInBits += 1
+ // Simple field (groupAddress)
+ lengthInBits += 1
- // Simple field (hopCount)
- lengthInBits += 3
+ // Simple field (hopCount)
+ lengthInBits += 3
- // Simple field (extendedFrameFormat)
- lengthInBits += 4
+ // Simple field (extendedFrameFormat)
+ lengthInBits += 4
- // Simple field (sourceAddress)
- lengthInBits += m.SourceAddress.LengthInBits()
+ // Simple field (sourceAddress)
+ lengthInBits += m.SourceAddress.LengthInBits()
- // Array field
- if len(m.DestinationAddress) > 0 {
- lengthInBits += 8 * uint16(len(m.DestinationAddress))
- }
+ // Array field
+ if len(m.DestinationAddress) > 0 {
+ lengthInBits += 8 * uint16(len(m.DestinationAddress))
+ }
- // Simple field (dataLength)
- lengthInBits += 8
+ // Simple field (dataLength)
+ lengthInBits += 8
- // Enum Field (tcpi)
- lengthInBits += 2
+ // Enum Field (tcpi)
+ lengthInBits += 2
- // Simple field (counter)
- lengthInBits += 4
+ // Simple field (counter)
+ lengthInBits += 4
- // Enum Field (apci)
- lengthInBits += 4
+ // Enum Field (apci)
+ lengthInBits += 4
- // Simple field (dataFirstByte)
- lengthInBits += 6
+ // Simple field (dataFirstByte)
+ lengthInBits += 6
- // Array field
- if len(m.Data) > 0 {
- lengthInBits += 8 * uint16(len(m.Data))
- }
+ // Array field
+ if len(m.Data) > 0 {
+ lengthInBits += 8 * uint16(len(m.Data))
+ }
- // Simple field (crc)
- lengthInBits += 8
+ // Simple field (crc)
+ lengthInBits += 8
- return lengthInBits
+ return lengthInBits
}
func (m CEMIFrameDataExt) LengthInBytes() uint16 {
- return m.LengthInBits() / 8
+ return m.LengthInBits() / 8
}
func CEMIFrameDataExtParse(io *utils.ReadBuffer) (CEMIFrameInitializer, error) {
- // Simple Field (groupAddress)
- groupAddress, _groupAddressErr := io.ReadBit()
- if _groupAddressErr != nil {
- return nil, errors.New("Error parsing 'groupAddress' field " + _groupAddressErr.Error())
- }
-
- // Simple Field (hopCount)
- hopCount, _hopCountErr := io.ReadUint8(3)
- if _hopCountErr != nil {
- return nil, errors.New("Error parsing 'hopCount' field " + _hopCountErr.Error())
- }
-
- // Simple Field (extendedFrameFormat)
- extendedFrameFormat, _extendedFrameFormatErr := io.ReadUint8(4)
- if _extendedFrameFormatErr != nil {
- return nil, errors.New("Error parsing 'extendedFrameFormat' field " + _extendedFrameFormatErr.Error())
- }
-
- // Simple Field (sourceAddress)
- _sourceAddressMessage, _err := KNXAddressParse(io)
- if _err != nil {
- return nil, errors.New("Error parsing simple field 'sourceAddress'. " + _err.Error())
- }
- var sourceAddress IKNXAddress
- sourceAddress, _sourceAddressOk := _sourceAddressMessage.(IKNXAddress)
- if !_sourceAddressOk {
- return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_sourceAddressMessage).Name() + " to IKNXAddress")
- }
-
- // Array field (destinationAddress)
- // Count array
- destinationAddress := make([]int8, uint16(2))
- for curItem := uint16(0); curItem < uint16(uint16(2)); curItem++ {
-
- _item, _err := io.ReadInt8(8)
- if _err != nil {
- return nil, errors.New("Error parsing 'destinationAddress' field " + _err.Error())
- }
- destinationAddress[curItem] = _item
- }
-
- // Simple Field (dataLength)
- dataLength, _dataLengthErr := io.ReadUint8(8)
- if _dataLengthErr != nil {
- return nil, errors.New("Error parsing 'dataLength' field " + _dataLengthErr.Error())
- }
-
- // Enum field (tcpi)
- tcpi, _tcpiErr := TPCIParse(io)
- if _tcpiErr != nil {
- return nil, errors.New("Error parsing 'tcpi' field " + _tcpiErr.Error())
- }
-
- // Simple Field (counter)
- counter, _counterErr := io.ReadUint8(4)
- if _counterErr != nil {
- return nil, errors.New("Error parsing 'counter' field " + _counterErr.Error())
- }
-
- // Enum field (apci)
- apci, _apciErr := APCIParse(io)
- if _apciErr != nil {
- return nil, errors.New("Error parsing 'apci' field " + _apciErr.Error())
- }
-
- // Simple Field (dataFirstByte)
- dataFirstByte, _dataFirstByteErr := io.ReadInt8(6)
- if _dataFirstByteErr != nil {
- return nil, errors.New("Error parsing 'dataFirstByte' field " + _dataFirstByteErr.Error())
- }
-
- // Array field (data)
- // Count array
- data := make([]int8, uint16(dataLength) - uint16(uint16(1)))
- for curItem := uint16(0); curItem < uint16(uint16(dataLength) - uint16(uint16(1))); curItem++ {
-
- _item, _err := io.ReadInt8(8)
- if _err != nil {
- return nil, errors.New("Error parsing 'data' field " + _err.Error())
- }
- data[curItem] = _item
- }
-
- // Simple Field (crc)
- crc, _crcErr := io.ReadUint8(8)
- if _crcErr != nil {
- return nil, errors.New("Error parsing 'crc' field " + _crcErr.Error())
- }
-
- // Create the instance
- return NewCEMIFrameDataExt(groupAddress, hopCount, extendedFrameFormat, sourceAddress, destinationAddress, dataLength, tcpi, counter, apci, dataFirstByte, data, crc), nil
+ // Simple Field (groupAddress)
+ groupAddress, _groupAddressErr := io.ReadBit()
+ if _groupAddressErr != nil {
+ return nil, errors.New("Error parsing 'groupAddress' field " + _groupAddressErr.Error())
+ }
+
+ // Simple Field (hopCount)
+ hopCount, _hopCountErr := io.ReadUint8(3)
+ if _hopCountErr != nil {
+ return nil, errors.New("Error parsing 'hopCount' field " + _hopCountErr.Error())
+ }
+
+ // Simple Field (extendedFrameFormat)
+ extendedFrameFormat, _extendedFrameFormatErr := io.ReadUint8(4)
+ if _extendedFrameFormatErr != nil {
+ return nil, errors.New("Error parsing 'extendedFrameFormat' field " + _extendedFrameFormatErr.Error())
+ }
+
+ // Simple Field (sourceAddress)
+ _sourceAddressMessage, _err := KNXAddressParse(io)
+ if _err != nil {
+ return nil, errors.New("Error parsing simple field 'sourceAddress'. " + _err.Error())
+ }
+ var sourceAddress IKNXAddress
+ sourceAddress, _sourceAddressOk := _sourceAddressMessage.(IKNXAddress)
+ if !_sourceAddressOk {
+ return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_sourceAddressMessage).Name() + " to IKNXAddress")
+ }
+
+ // Array field (destinationAddress)
+ // Count array
+ destinationAddress := make([]int8, uint16(2))
+ for curItem := uint16(0); curItem < uint16(uint16(2)); curItem++ {
+
+ _item, _err := io.ReadInt8(8)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'destinationAddress' field " + _err.Error())
+ }
+ destinationAddress[curItem] = _item
+ }
+
+ // Simple Field (dataLength)
+ dataLength, _dataLengthErr := io.ReadUint8(8)
+ if _dataLengthErr != nil {
+ return nil, errors.New("Error parsing 'dataLength' field " + _dataLengthErr.Error())
+ }
+
+ // Enum field (tcpi)
+ tcpi, _tcpiErr := TPCIParse(io)
+ if _tcpiErr != nil {
+ return nil, errors.New("Error parsing 'tcpi' field " + _tcpiErr.Error())
+ }
+
+ // Simple Field (counter)
+ counter, _counterErr := io.ReadUint8(4)
+ if _counterErr != nil {
+ return nil, errors.New("Error parsing 'counter' field " + _counterErr.Error())
+ }
+
+ // Enum field (apci)
+ apci, _apciErr := APCIParse(io)
+ if _apciErr != nil {
+ return nil, errors.New("Error parsing 'apci' field " + _apciErr.Error())
+ }
+
+ // Simple Field (dataFirstByte)
+ dataFirstByte, _dataFirstByteErr := io.ReadInt8(6)
+ if _dataFirstByteErr != nil {
+ return nil, errors.New("Error parsing 'dataFirstByte' field " + _dataFirstByteErr.Error())
+ }
+
+ // Array field (data)
+ // Count array
+ data := make([]int8, uint16(dataLength)-uint16(uint16(1)))
+ for curItem := uint16(0); curItem < uint16(uint16(dataLength)-uint16(uint16(1))); curItem++ {
+
+ _item, _err := io.ReadInt8(8)
+ if _err != nil {
+ return nil, errors.New("Error parsing 'data' field " + _err.Error())
+ }
+ data[curItem] = _item
+ }
+
+ // Simple Field (crc)
+ crc, _crcErr := io.ReadUint8(8)
+ if _crcErr != nil {
+ return nil, errors.New("Error parsing 'crc' field " + _crcErr.Error())
+ }
+
+ // Create the instance
+ return NewCEMIFrameDataExt(groupAddress, hopCount, extendedFrameFormat, sourceAddress, destinationAddress, dataLength, tcpi, counter, apci, dataFirstByte, data, crc), nil
}
func (m CEMIFrameDataExt) Serialize(io utils.WriteBuffer) error {
- ser := func() error {
-
- // Simple Field (groupAddress)
- groupAddress := bool(m.GroupAddress)
- _groupAddressErr := io.WriteBit((bool) (groupAddress))
- if _groupAddressErr != nil {
- return errors.New("Error serializing 'groupAddress' field " + _groupAddressErr.Error())
- }
-
- // Simple Field (hopCount)
- hopCount := uint8(m.HopCount)
- _hopCountErr := io.WriteUint8(3, (hopCount))
- if _hopCountErr != nil {
- return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
- }
-
- // Simple Field (extendedFrameFormat)
- extendedFrameFormat := uint8(m.ExtendedFrameFormat)
- _extendedFrameFormatErr := io.WriteUint8(4, (extendedFrameFormat))
- if _extendedFrameFormatErr != nil {
- return errors.New("Error serializing 'extendedFrameFormat' field " + _extendedFrameFormatErr.Error())
- }
-
- // Simple Field (sourceAddress)
- sourceAddress := CastIKNXAddress(m.SourceAddress)
- _sourceAddressErr := sourceAddress.Serialize(io)
- if _sourceAddressErr != nil {
- return errors.New("Error serializing 'sourceAddress' field " + _sourceAddressErr.Error())
- }
-
- // Array Field (destinationAddress)
- if m.DestinationAddress != nil {
- for _, _element := range m.DestinationAddress {
- _elementErr := io.WriteInt8(8, _element)
- if _elementErr != nil {
- return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
- }
- }
- }
-
- // Simple Field (dataLength)
- dataLength := uint8(m.DataLength)
- _dataLengthErr := io.WriteUint8(8, (dataLength))
- if _dataLengthErr != nil {
- return errors.New("Error serializing 'dataLength' field " + _dataLengthErr.Error())
- }
-
- // Enum field (tcpi)
- tcpi := CastTPCI(m.Tcpi)
- _tcpiErr := tcpi.Serialize(io)
- if _tcpiErr != nil {
- return errors.New("Error serializing 'tcpi' field " + _tcpiErr.Error())
- }
-
- // Simple Field (counter)
- counter := uint8(m.Counter)
- _counterErr := io.WriteUint8(4, (counter))
- if _counterErr != nil {
- return errors.New("Error serializing 'counter' field " + _counterErr.Error())
- }
-
- // Enum field (apci)
- apci := CastAPCI(m.Apci)
- _apciErr := apci.Serialize(io)
- if _apciErr != nil {
- return errors.New("Error serializing 'apci' field " + _apciErr.Error())
- }
-
- // Simple Field (dataFirstByte)
- dataFirstByte := int8(m.DataFirstByte)
- _dataFirstByteErr := io.WriteInt8(6, (dataFirstByte))
- if _dataFirstByteErr != nil {
- return errors.New("Error serializing 'dataFirstByte' field " + _dataFirstByteErr.Error())
- }
-
- // Array Field (data)
- if m.Data != nil {
- for _, _element := range m.Data {
- _elementErr := io.WriteInt8(8, _element)
- if _elementErr != nil {
- return errors.New("Error serializing 'data' field " + _elementErr.Error())
- }
- }
- }
-
- // Simple Field (crc)
- crc := uint8(m.Crc)
- _crcErr := io.WriteUint8(8, (crc))
- if _crcErr != nil {
- return errors.New("Error serializing 'crc' field " + _crcErr.Error())
- }
-
- return nil
- }
- return CEMIFrameSerialize(io, m.CEMIFrame, CastICEMIFrame(m), ser)
+ ser := func() error {
+
+ // Simple Field (groupAddress)
+ groupAddress := bool(m.GroupAddress)
+ _groupAddressErr := io.WriteBit((groupAddress))
+ if _groupAddressErr != nil {
+ return errors.New("Error serializing 'groupAddress' field " + _groupAddressErr.Error())
+ }
+
+ // Simple Field (hopCount)
+ hopCount := uint8(m.HopCount)
+ _hopCountErr := io.WriteUint8(3, (hopCount))
+ if _hopCountErr != nil {
+ return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
+ }
+
+ // Simple Field (extendedFrameFormat)
+ extendedFrameFormat := uint8(m.ExtendedFrameFormat)
+ _extendedFrameFormatErr := io.WriteUint8(4, (extendedFrameFormat))
+ if _extendedFrameFormatErr != nil {
+ return errors.New("Error serializing 'extendedFrameFormat' field " + _extendedFrameFormatErr.Error())
+ }
+
+ // Simple Field (sourceAddress)
+ sourceAddress := CastIKNXAddress(m.SourceAddress)
+ _sourceAddressErr := sourceAddress.Serialize(io)
+ if _sourceAddressErr != nil {
+ return errors.New("Error serializing 'sourceAddress' field " + _sourceAddressErr.Error())
+ }
+
+ // Array Field (destinationAddress)
+ if m.DestinationAddress != nil {
+ for _, _element := range m.DestinationAddress {
+ _elementErr := io.WriteInt8(8, _element)
+ if _elementErr != nil {
+ return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
+ }
+ }
+ }
+
+ // Simple Field (dataLength)
+ dataLength := uint8(m.DataLength)
+ _dataLengthErr := io.WriteUint8(8, (dataLength))
+ if _dataLengthErr != nil {
+ return errors.New("Error serializing 'dataLength' field " + _dataLengthErr.Error())
+ }
+
+ // Enum field (tcpi)
+ tcpi := CastTPCI(m.Tcpi)
+ _tcpiErr := tcpi.Serialize(io)
+ if _tcpiErr != nil {
+ return errors.New("Error serializing 'tcpi' field " + _tcpiErr.Error())
+ }
+
+ // Simple Field (counter)
+ counter := uint8(m.Counter)
+ _counterErr := io.WriteUint8(4, (counter))
+ if _counterErr != nil {
+ return errors.New("Error serializing 'counter' field " + _counterErr.Error())
+ }
+
+ // Enum field (apci)
+ apci := CastAPCI(m.Apci)
+ _apciErr := apci.Serialize(io)
+ if _apciErr != nil {
+ return errors.New("Error serializing 'apci' field " + _apciErr.Error())
+ }
+
+ // Simple Field (dataFirstByte)
+ dataFirstByte := int8(m.DataFirstByte)
+ _dataFirstByteErr := io.WriteInt8(6, (dataFirstByte))
+ if _dataFirstByteErr != nil {
+ return errors.New("Error serializing 'dataFirstByte' field " + _dataFirstByteErr.Error())
+ }
+
+ // Array Field (data)
+ if m.Data != nil {
+ for _, _element := range m.Data {
+ _elementErr := io.WriteInt8(8, _element)
+ if _elementErr != nil {
+ return errors.New("Error serializing 'data' field " + _elementErr.Error())
+ }
+ }
+ }
+
+ // Simple Field (crc)
+ crc := uint8(m.Crc)
+ _crcErr := io.WriteUint8(8, (crc))
+ if _crcErr != nil {
+ return errors.New("Error serializing 'crc' field " + _crcErr.Error())
+ }
+
+ return nil
+ }
+ return CEMIFrameSerialize(io, m.CEMIFrame, CastICEMIFrame(m), ser)
}
func (m *CEMIFrameDataExt) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
- for {
- token, err := d.Token()
- if err != nil {
- if err == io.EOF {
- return nil
- }
- return err
- }
- switch token.(type) {
- case xml.StartElement:
- tok := token.(xml.StartElement)
- switch tok.Name.Local {
- case "groupAddress":
- var data bool
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.GroupAddress = data
- case "hopCount":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.HopCount = data
- case "extendedFrameFormat":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.ExtendedFrameFormat = data
- case "sourceAddress":
- var data *KNXAddress
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.SourceAddress = CastIKNXAddress(data)
- case "destinationAddress":
- var _encoded string
- if err := d.DecodeElement(&_encoded, &tok); err != nil {
- return err
- }
- _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
- _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
- if err != nil {
- return err
- }
- m.DestinationAddress = utils.ByteToInt8(_decoded[0:_len])
- case "dataLength":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.DataLength = data
- case "tcpi":
- var data *TPCI
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.Tcpi = data
- case "counter":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.Counter = data
- case "apci":
- var data *APCI
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.Apci = data
- case "dataFirstByte":
- var data int8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.DataFirstByte = data
- case "data":
- var _encoded string
- if err := d.DecodeElement(&_encoded, &tok); err != nil {
- return err
- }
- _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
- _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
- if err != nil {
- return err
- }
- m.Data = utils.ByteToInt8(_decoded[0:_len])
- case "crc":
- var data uint8
- if err := d.DecodeElement(&data, &tok); err != nil {
- return err
- }
- m.Crc = data
- }
- }
- }
+ for {
+ token, err := d.Token()
+ if err != nil {
+ if err == io.EOF {
+ return nil
+ }
+ return err
+ }
+ switch token.(type) {
+ case xml.StartElement:
+ tok := token.(xml.StartElement)
+ switch tok.Name.Local {
+ case "groupAddress":
+ var data bool
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.GroupAddress = data
+ case "hopCount":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.HopCount = data
+ case "extendedFrameFormat":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.ExtendedFrameFormat = data
+ case "sourceAddress":
+ var data *KNXAddress
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.SourceAddress = CastIKNXAddress(data)
+ case "destinationAddress":
+ var _encoded string
+ if err := d.DecodeElement(&_encoded, &tok); err != nil {
+ return err
+ }
+ _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
+ _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
+ if err != nil {
+ return err
+ }
+ m.DestinationAddress = utils.ByteToInt8(_decoded[0:_len])
+ case "dataLength":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.DataLength = data
+ case "tcpi":
+ var data *TPCI
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.Tcpi = data
+ case "counter":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.Counter = data
+ case "apci":
+ var data *APCI
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.Apci = data
+ case "dataFirstByte":
+ var data int8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.DataFirstByte = data
+ case "data":
+ var _encoded string
+ if err := d.DecodeElement(&_encoded, &tok); err != nil {
+ return err
+ }
+ _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
+ _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
+ if err != nil {
+ return err
+ }
+ m.Data = utils.ByteToInt8(_decoded[0:_len])
+ case "crc":
+ var data uint8
+ if err := d.DecodeElement(&data, &tok); err != nil {
+ return err
+ }
+ m.Crc = data
+ }
+ }
+ }
}
func (m CEMIFrameDataExt) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
- if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
- {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIFrameDataExt"},
- }}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.GroupAddress, xml.StartElement{Name: xml.Name{Local: "groupAddress"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.HopCount, xml.StartElement{Name: xml.Name{Local: "hopCount"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.ExtendedFrameFormat, xml.StartElement{Name: xml.Name{Local: "extendedFrameFormat"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.SourceAddress, xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
- return err
- }
- _encodedDestinationAddress := make([]byte, base64.StdEncoding.EncodedLen(len(m.DestinationAddress)))
- base64.StdEncoding.Encode(_encodedDestinationAddress, utils.Int8ToByte(m.DestinationAddress))
- if err := e.EncodeElement(_encodedDestinationAddress, xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.DataLength, xml.StartElement{Name: xml.Name{Local: "dataLength"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.Tcpi, xml.StartElement{Name: xml.Name{Local: "tcpi"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.Counter, xml.StartElement{Name: xml.Name{Local: "counter"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.Apci, xml.StartElement{Name: xml.Name{Local: "apci"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.DataFirstByte, xml.StartElement{Name: xml.Name{Local: "dataFirstByte"}}); err != nil {
- return err
- }
- _encodedData := make([]byte, base64.StdEncoding.EncodedLen(len(m.Data)))
- base64.StdEncoding.Encode(_encodedData, utils.Int8ToByte(m.Data))
- if err := e.EncodeElement(_encodedData, xml.StartElement{Name: xml.Name{Local: "data"}}); err != nil {
- return err
- }
- if err := e.EncodeElement(m.Crc, xml.StartElement{Name: xml.Name{Local: "crc"}}); err != nil {
- return err
- }
- if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
- return err
- }
- return nil
+ if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+ {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIFrameDataExt"},
+ }}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.GroupAddress, xml.StartElement{Name: xml.Name{Local: "groupAddress"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.HopCount, xml.StartElement{Name: xml.Name{Local: "hopCount"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.ExtendedFrameFormat, xml.StartElement{Name: xml.Name{Local: "extendedFrameFormat"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.SourceAddress, xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
+ return err
+ }
+ _encodedDestinationAddress := make([]byte, base64.StdEncoding.EncodedLen(len(m.DestinationAddress)))
+ base64.StdEncoding.Encode(_encodedDestinationAddress, utils.Int8ToByte(m.DestinationAddress))
+ if err := e.EncodeElement(_encodedDestinationAddress, xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.DataLength, xml.StartElement{Name: xml.Name{Local: "dataLength"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.Tcpi, xml.StartElement{Name: xml.Name{Local: "tcpi"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.Counter, xml.StartElement{Name: xml.Name{Local: "counter"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.Apci, xml.StartElement{Name: xml.Name{Local: "apci"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.DataFirstByte, xml.StartElement{Name: xml.Name{Local: "dataFirstByte"}}); err != nil {
+ return err
+ }
+ _encodedData := make([]byte, base64.StdEncoding.EncodedLen(len(m.Data)))
+ base64.StdEncoding.Encode(_encodedData, utils.Int8ToByte(m.Data))
+ if err := e.EncodeElement(_encodedData, xml.StartElement{Name: xml.Name{Local: "data"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeElement(m.Crc, xml.StartElement{Name: xml.Name{Local: "crc"}}); err != nil {
+ return err
+ }
+ if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+ return err
+ }
+ return nil
}
-
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go
index fa62fe6..288effc 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go
@@ -19,152 +19,149 @@
package model
import (
- "encoding/xml"
- "errors"
- "io"
- log "github.com/sirupsen/logrus"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
- "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+ "encoding/xml"
+ "errors"
+ log "github.com/sirupsen/logrus"
+ "io"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+ "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
)
// The data-structure of this message
type DeviceStatus struct {
- ProgramMode bool
-
... 6364 lines suppressed ...