This is an automated email from the ASF dual-hosted git repository. hutcheb pushed a commit to branch feature/native_opua_client in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit a6e41a9f0691aa33cf4c612b71c7482f6fe898ba Merge: 11b9d51 0baecae Author: hutcheb <[email protected]> AuthorDate: Fri Jan 22 07:04:00 2021 -0500 Merge branch 'develop' into feature/native_opua_client LICENSE | 1 + NOTICE | 5 +- RELEASE_NOTES | 2 + .../language/go/GoLanguageTemplateHelper.java | 25 +- .../main/resources/templates/go/enum-template.ftlh | 16 +- .../templates/go/parser-factory-template.ftlh | 2 +- plc4go/cmd/main/drivers/bacnetip_test.go | 2 +- plc4go/cmd/main/drivers/knxnetip_test.go | 433 +- plc4go/cmd/main/drivers/modbus_test.go | 8 +- plc4go/cmd/main/drivers/s7_test.go | 2 +- .../cmd/main/drivers/tests/knx_discovery_test.go | 1224 ++-- .../cmd/main/drivers/tests/modbus_driver_test.go | 2 +- .../drivers/tests/modbus_parser_serializer_test.go | 2 +- plc4go/go.sum | 1 + .../plc4go/bacnetip/readwrite/ParserHelper.go | 2 +- .../plc4go/bacnetip/readwrite/model/APDU.go | 2 +- .../plc4go/bacnetip/readwrite/model/APDUAbort.go | 4 +- .../bacnetip/readwrite/model/APDUComplexAck.go | 4 +- .../readwrite/model/APDUConfirmedRequest.go | 4 +- .../plc4go/bacnetip/readwrite/model/APDUError.go | 4 +- .../plc4go/bacnetip/readwrite/model/APDUReject.go | 4 +- .../bacnetip/readwrite/model/APDUSegmentAck.go | 4 +- .../bacnetip/readwrite/model/APDUSimpleAck.go | 4 +- .../readwrite/model/APDUUnconfirmedRequest.go | 4 +- .../bacnetip/readwrite/model/ApplicationTag.go | 38 +- .../bacnetip/readwrite/model/BACnetAddress.go | 2 +- .../readwrite/model/BACnetConfirmedServiceACK.go | 2 +- .../BACnetConfirmedServiceACKAtomicReadFile.go | 2 +- .../BACnetConfirmedServiceACKAtomicWriteFile.go | 2 +- ...tConfirmedServiceACKConfirmedPrivateTransfer.go | 2 +- .../model/BACnetConfirmedServiceACKCreateObject.go | 2 +- .../BACnetConfirmedServiceACKGetAlarmSummary.go | 2 +- ...ACnetConfirmedServiceACKGetEnrollmentSummary.go | 2 +- ...BACnetConfirmedServiceACKGetEventInformation.go | 2 +- .../model/BACnetConfirmedServiceACKReadProperty.go | 2 +- ...ACnetConfirmedServiceACKReadPropertyMultiple.go | 2 +- .../model/BACnetConfirmedServiceACKReadRange.go | 2 +- ...BACnetConfirmedServiceACKRemovedAuthenticate.go | 2 +- ...rmedServiceACKRemovedReadPropertyConditional.go | 2 +- .../model/BACnetConfirmedServiceACKVTData.go | 2 +- .../model/BACnetConfirmedServiceACKVTOpen.go | 2 +- .../model/BACnetConfirmedServiceRequest.go | 2 +- ...ACnetConfirmedServiceRequestAcknowledgeAlarm.go | 2 +- .../BACnetConfirmedServiceRequestAddListElement.go | 2 +- .../BACnetConfirmedServiceRequestAtomicReadFile.go | 2 +- ...BACnetConfirmedServiceRequestAtomicWriteFile.go | 2 +- ...firmedServiceRequestConfirmedCOVNotification.go | 2 +- ...rviceRequestConfirmedCOVNotificationMultiple.go | 2 +- ...rmedServiceRequestConfirmedEventNotification.go | 2 +- ...firmedServiceRequestConfirmedPrivateTransfer.go | 2 +- ...tConfirmedServiceRequestConfirmedTextMessage.go | 2 +- .../BACnetConfirmedServiceRequestCreateObject.go | 2 +- .../BACnetConfirmedServiceRequestDeleteObject.go | 2 +- ...rmedServiceRequestDeviceCommunicationControl.go | 2 +- ...tConfirmedServiceRequestGetEnrollmentSummary.go | 2 +- ...etConfirmedServiceRequestGetEventInformation.go | 2 +- ...etConfirmedServiceRequestLifeSafetyOperation.go | 2 +- .../BACnetConfirmedServiceRequestReadProperty.go | 2 +- ...tConfirmedServiceRequestReadPropertyMultiple.go | 2 +- .../BACnetConfirmedServiceRequestReadRange.go | 2 +- ...netConfirmedServiceRequestReinitializeDevice.go | 2 +- ...CnetConfirmedServiceRequestRemoveListElement.go | 2 +- ...etConfirmedServiceRequestRemovedAuthenticate.go | 2 +- ...ServiceRequestRemovedReadPropertyConditional.go | 2 +- ...CnetConfirmedServiceRequestRemovedRequestKey.go | 2 +- .../BACnetConfirmedServiceRequestSubscribeCOV.go | 2 +- ...tConfirmedServiceRequestSubscribeCOVProperty.go | 2 +- ...edServiceRequestSubscribeCOVPropertyMultiple.go | 2 +- .../model/BACnetConfirmedServiceRequestVTClose.go | 2 +- .../model/BACnetConfirmedServiceRequestVTData.go | 2 +- .../model/BACnetConfirmedServiceRequestVTOpen.go | 2 +- .../BACnetConfirmedServiceRequestWriteProperty.go | 2 +- ...ConfirmedServiceRequestWritePropertyMultiple.go | 2 +- .../plc4go/bacnetip/readwrite/model/BACnetError.go | 2 +- .../readwrite/model/BACnetErrorAtomicReadFile.go | 2 +- .../readwrite/model/BACnetErrorAtomicWriteFile.go | 2 +- .../model/BACnetErrorConfirmedPrivateTransfer.go | 2 +- .../readwrite/model/BACnetErrorCreateObject.go | 2 +- .../readwrite/model/BACnetErrorGetAlarmSummary.go | 2 +- .../model/BACnetErrorGetEnrollmentSummary.go | 2 +- .../model/BACnetErrorGetEventInformation.go | 2 +- .../readwrite/model/BACnetErrorReadProperty.go | 2 +- .../model/BACnetErrorReadPropertyMultiple.go | 2 +- .../readwrite/model/BACnetErrorReadRange.go | 2 +- .../model/BACnetErrorRemovedAuthenticate.go | 2 +- .../BACnetErrorRemovedReadPropertyConditional.go | 2 +- .../bacnetip/readwrite/model/BACnetErrorVTData.go | 2 +- .../bacnetip/readwrite/model/BACnetErrorVTOpen.go | 2 +- .../bacnetip/readwrite/model/BACnetNetworkType.go | 34 +- .../bacnetip/readwrite/model/BACnetNodeType.go | 56 +- .../bacnetip/readwrite/model/BACnetNotifyType.go | 18 +- .../bacnetip/readwrite/model/BACnetObjectType.go | 130 +- .../bacnetip/readwrite/model/BACnetServiceAck.go | 2 +- .../model/BACnetServiceAckAtomicReadFile.go | 2 +- .../model/BACnetServiceAckAtomicWriteFile.go | 2 +- .../BACnetServiceAckConfirmedPrivateTransfer.go | 2 +- .../model/BACnetServiceAckCreateObject.go | 2 +- .../model/BACnetServiceAckGetAlarmSummary.go | 2 +- .../model/BACnetServiceAckGetEnrollmentSummary.go | 2 +- .../model/BACnetServiceAckGetEventInformation.go | 2 +- .../model/BACnetServiceAckReadProperty.go | 2 +- .../model/BACnetServiceAckReadPropertyMultiple.go | 2 +- .../readwrite/model/BACnetServiceAckReadRange.go | 2 +- .../model/BACnetServiceAckRemovedAuthenticate.go | 2 +- ...CnetServiceAckRemovedReadPropertyConditional.go | 2 +- .../readwrite/model/BACnetServiceAckVTData.go | 2 +- .../readwrite/model/BACnetServiceAckVTOpen.go | 2 +- .../plc4go/bacnetip/readwrite/model/BACnetTag.go | 2 +- .../model/BACnetTagApplicationBitString.go | 2 +- .../readwrite/model/BACnetTagApplicationBoolean.go | 2 +- .../model/BACnetTagApplicationCharacterString.go | 2 +- .../readwrite/model/BACnetTagApplicationDate.go | 2 +- .../readwrite/model/BACnetTagApplicationDouble.go | 2 +- .../model/BACnetTagApplicationEnumerated.go | 2 +- .../readwrite/model/BACnetTagApplicationNull.go | 2 +- .../model/BACnetTagApplicationObjectIdentifier.go | 2 +- .../model/BACnetTagApplicationOctetString.go | 2 +- .../readwrite/model/BACnetTagApplicationReal.go | 2 +- .../model/BACnetTagApplicationSignedInteger.go | 2 +- .../readwrite/model/BACnetTagApplicationTime.go | 2 +- .../model/BACnetTagApplicationUnsignedInteger.go | 2 +- .../bacnetip/readwrite/model/BACnetTagContext.go | 2 +- .../readwrite/model/BACnetTagWithContent.go | 2 +- .../model/BACnetUnconfirmedServiceRequest.go | 2 +- .../model/BACnetUnconfirmedServiceRequestIAm.go | 2 +- .../model/BACnetUnconfirmedServiceRequestIHave.go | 2 +- ...UnconfirmedServiceRequestTimeSynchronization.go | 2 +- ...onfirmedServiceRequestUTCTimeSynchronization.go | 2 +- ...rmedServiceRequestUnconfirmedCOVNotification.go | 2 +- ...iceRequestUnconfirmedCOVNotificationMultiple.go | 2 +- ...edServiceRequestUnconfirmedEventNotification.go | 2 +- ...rmedServiceRequestUnconfirmedPrivateTransfer.go | 2 +- ...onfirmedServiceRequestUnconfirmedTextMessage.go | 2 +- .../model/BACnetUnconfirmedServiceRequestWhoHas.go | 2 +- .../model/BACnetUnconfirmedServiceRequestWhoIs.go | 2 +- .../BACnetUnconfirmedServiceRequestWriteGroup.go | 2 +- .../plc4go/bacnetip/readwrite/model/BVLC.go | 2 +- .../model/BVLCDeleteForeignDeviceTableEntry.go | 2 +- .../model/BVLCDistributeBroadcastToNetwork.go | 2 +- .../bacnetip/readwrite/model/BVLCForwardedNPDU.go | 2 +- .../readwrite/model/BVLCOriginalBroadcastNPDU.go | 2 +- .../readwrite/model/BVLCOriginalUnicastNPDU.go | 2 +- .../model/BVLCReadBroadcastDistributionTable.go | 2 +- .../model/BVLCReadBroadcastDistributionTableAck.go | 2 +- .../readwrite/model/BVLCReadForeignDeviceTable.go | 2 +- .../model/BVLCReadForeignDeviceTableAck.go | 2 +- .../readwrite/model/BVLCRegisterForeignDevice.go | 2 +- .../plc4go/bacnetip/readwrite/model/BVLCResult.go | 2 +- .../bacnetip/readwrite/model/BVLCSecureBVLL.go | 2 +- .../model/BVLCWideBroadcastDistributionTable.go | 2 +- .../plc4go/bacnetip/readwrite/model/NLM.go | 2 +- .../readwrite/model/NLMIAmRouterToNetwork.go | 2 +- .../readwrite/model/NLMWhoIsRouterToNetwork.go | 2 +- .../plc4go/bacnetip/readwrite/model/NPDU.go | 4 +- .../readwrite/model/KnxManufacturers.go | 4380 ------------ .../readwrite/model/KnxObjectProperties.go | 1378 ---- .../knxmasterdata/readwrite/model/KnxObjectType.go | 268 - plc4go/internal/plc4go/knxnetip/KnxNetIpBrowser.go | 241 + .../internal/plc4go/knxnetip/KnxNetIpConnection.go | 978 +-- .../internal/plc4go/knxnetip/KnxNetIpDiscoverer.go | 148 + plc4go/internal/plc4go/knxnetip/KnxNetIpDriver.go | 99 +- plc4go/internal/plc4go/knxnetip/KnxNetIpField.go | 101 +- .../plc4go/knxnetip/KnxNetIpFieldHandler.go | 101 +- .../plc4go/knxnetip/KnxNetIpMessageCodec.go | 154 +- plc4go/internal/plc4go/knxnetip/KnxNetIpReader.go | 554 +- .../internal/plc4go/knxnetip/KnxNetIpSubscriber.go | 220 +- .../plc4go/knxnetip/KnxNetIpSubscriptionEvent.go | 4 +- .../plc4go/knxnetip/KnxNetIpValueHandler.go | 15 +- plc4go/internal/plc4go/knxnetip/KnxNetIpWriter.go | 54 +- plc4go/internal/plc4go/knxnetip/Utils.go | 42 + .../plc4go/knxnetip/readwrite/ParserHelper.go | 124 +- .../knxnetip/readwrite/PropertyDataTypeIO.go | 156 + .../plc4go/knxnetip/readwrite/XmlParserHelper.go | 338 +- .../plc4go/knxnetip/readwrite/model/APCI.go | 44 +- .../plc4go/knxnetip/readwrite/model/CEMI.go | 2 +- .../readwrite/model/CEMIAdditionalInformation.go | 2 +- .../CEMIAdditionalInformationBusmonitorInfo.go | 2 +- .../CEMIAdditionalInformationRelativeTimestamp.go | 2 +- .../knxnetip/readwrite/model/CEMIPriority.go | 20 +- .../knxnetip/readwrite/model/ConnectionRequest.go | 2 +- .../model/ConnectionRequestInformation.go | 2 +- ...ConnectionRequestInformationDeviceManagement.go | 2 +- ...ConnectionRequestInformationTunnelConnection.go | 4 +- .../knxnetip/readwrite/model/ConnectionResponse.go | 2 +- .../readwrite/model/ConnectionResponseDataBlock.go | 2 +- .../ConnectionResponseDataBlockDeviceManagement.go | 2 +- .../ConnectionResponseDataBlockTunnelConnection.go | 2 +- .../readwrite/model/ConnectionStateRequest.go | 4 +- .../readwrite/model/ConnectionStateResponse.go | 2 +- .../plc4go/knxnetip/readwrite/model/ControlType.go | 20 +- .../knxnetip/readwrite/model/DIBDeviceInfo.go | 2 +- .../knxnetip/readwrite/model/DIBSuppSvcFamilies.go | 2 +- .../knxnetip/readwrite/model/DescriptionRequest.go | 2 +- .../readwrite/model/DescriptionResponse.go | 2 +- .../readwrite/model/DeviceConfigurationAck.go | 2 +- .../model/DeviceConfigurationAckDataBlock.go | 2 +- .../readwrite/model/DeviceConfigurationRequest.go | 2 +- .../model/DeviceConfigurationRequestDataBlock.go | 4 +- .../knxnetip/readwrite/model/DeviceStatus.go | 4 +- .../knxnetip/readwrite/model/DisconnectRequest.go | 4 +- .../knxnetip/readwrite/model/DisconnectResponse.go | 2 +- .../knxnetip/readwrite/model/ExtendedAPCI.go | 94 +- .../readwrite/model/HPAIControlEndpoint.go | 2 +- .../knxnetip/readwrite/model/HPAIDataEndpoint.go | 2 +- .../readwrite/model/HPAIDiscoveryEndpoint.go | 2 +- .../knxnetip/readwrite/model/HostProtocolCode.go | 16 +- .../plc4go/knxnetip/readwrite/model/IPAddress.go | 2 +- .../plc4go/knxnetip/readwrite/model/KnxAddress.go | 2 +- .../knxnetip/readwrite/model/KnxDatapoint.go | 4 +- .../readwrite/model/KnxDatapointSubtype.go | 5260 +++++++++++++++ .../knxnetip/readwrite/model/KnxDatapointType.go | 5596 +++------------ .../knxnetip/readwrite/model/KnxGroupAddress.go | 2 +- .../readwrite/model/KnxGroupAddress2Level.go | 2 +- .../readwrite/model/KnxGroupAddress3Level.go | 2 +- .../readwrite/model/KnxGroupAddressFreeLevel.go | 2 +- .../readwrite/model/KnxInterfaceObjectProperty.go | 4221 ++++++++++++ .../readwrite/model/KnxInterfaceObjectType.go | 424 ++ .../plc4go/knxnetip/readwrite/model/KnxLayer.go | 18 +- .../knxnetip/readwrite/model/KnxManufacturer.go | 7093 ++++++++++++++++++++ .../plc4go/knxnetip/readwrite/model/KnxMedium.go | 24 +- .../knxnetip/readwrite/model/KnxNetIpCore.go | 2 +- .../readwrite/model/KnxNetIpDeviceManagement.go | 2 +- .../knxnetip/readwrite/model/KnxNetIpMessage.go | 2 +- .../knxnetip/readwrite/model/KnxNetIpTunneling.go | 2 +- .../knxnetip/readwrite/model/KnxNetObjectServer.go | 2 +- .../model/KnxNetRemoteConfigurationAndDiagnosis.go | 2 +- .../readwrite/model/KnxNetRemoteLogging.go | 2 +- .../readwrite/model/KnxPropertyDataType.go | 908 +++ .../plc4go/knxnetip/readwrite/model/LBusmonInd.go | 2 +- .../plc4go/knxnetip/readwrite/model/LDataCon.go | 2 +- .../plc4go/knxnetip/readwrite/model/LDataFrame.go | 2 +- .../knxnetip/readwrite/model/LDataFrameAck.go | 2 +- .../knxnetip/readwrite/model/LDataFrameData.go | 2 +- .../knxnetip/readwrite/model/LDataFrameDataExt.go | 2 +- .../readwrite/model/LDataFramePollingData.go | 4 +- .../plc4go/knxnetip/readwrite/model/LDataInd.go | 2 +- .../plc4go/knxnetip/readwrite/model/LDataReq.go | 2 +- .../knxnetip/readwrite/model/LPollDataCon.go | 2 +- .../knxnetip/readwrite/model/LPollDataReq.go | 2 +- .../plc4go/knxnetip/readwrite/model/LRawCon.go | 2 +- .../plc4go/knxnetip/readwrite/model/LRawInd.go | 2 +- .../plc4go/knxnetip/readwrite/model/LRawReq.go | 2 +- .../plc4go/knxnetip/readwrite/model/MACAddress.go | 2 +- .../readwrite/model/MFuncPropCommandReq.go | 2 +- .../knxnetip/readwrite/model/MFuncPropCon.go | 2 +- .../readwrite/model/MFuncPropStateReadReq.go | 2 +- .../knxnetip/readwrite/model/MPropInfoInd.go | 2 +- .../knxnetip/readwrite/model/MPropReadCon.go | 2 +- .../knxnetip/readwrite/model/MPropReadReq.go | 2 +- .../knxnetip/readwrite/model/MPropWriteCon.go | 2 +- .../knxnetip/readwrite/model/MPropWriteReq.go | 2 +- .../plc4go/knxnetip/readwrite/model/MResetInd.go | 2 +- .../plc4go/knxnetip/readwrite/model/MResetReq.go | 2 +- .../model/ProjectInstallationIdentifier.go | 2 +- .../knxnetip/readwrite/model/RelativeTimestamp.go | 2 +- .../knxnetip/readwrite/model/RoutingIndication.go | 2 +- .../knxnetip/readwrite/model/SearchRequest.go | 2 +- .../knxnetip/readwrite/model/SearchResponse.go | 2 +- .../plc4go/knxnetip/readwrite/model/ServiceId.go | 2 +- .../plc4go/knxnetip/readwrite/model/Status.go | 36 +- .../readwrite/model/SupportedPhysicalMedia.go | 54 +- .../knxnetip/readwrite/model/TDataConnectedInd.go | 2 +- .../knxnetip/readwrite/model/TDataConnectedReq.go | 2 +- .../knxnetip/readwrite/model/TDataIndividualInd.go | 2 +- .../knxnetip/readwrite/model/TDataIndividualReq.go | 2 +- .../knxnetip/readwrite/model/TunnelingRequest.go | 2 +- .../readwrite/model/TunnelingRequestDataBlock.go | 4 +- .../knxnetip/readwrite/model/TunnelingResponse.go | 2 +- .../readwrite/model/TunnelingResponseDataBlock.go | 2 +- .../knxnetip/readwrite/model/UnknownMessage.go | 2 +- plc4go/internal/plc4go/modbus/ModbusConnection.go | 53 +- plc4go/internal/plc4go/modbus/ModbusDriver.go | 29 +- .../internal/plc4go/modbus/ModbusFieldHandler.go | 22 +- .../internal/plc4go/modbus/ModbusMessageCodec.go | 87 +- plc4go/internal/plc4go/modbus/ModbusReader.go | 67 +- .../internal/plc4go/modbus/ModbusValueHandler.go | 2 +- plc4go/internal/plc4go/modbus/ModbusWriter.go | 74 +- .../plc4go/modbus/readwrite/ParserHelper.go | 2 +- .../plc4go/modbus/readwrite/model/DataItem.go | 4 +- .../modbus/readwrite/model/ModbusConstants.go | 2 +- .../modbus/readwrite/model/ModbusDataTypeSizes.go | 64 +- .../modbus/readwrite/model/ModbusErrorCode.go | 32 +- .../plc4go/modbus/readwrite/model/ModbusPDU.go | 2 +- .../readwrite/model/ModbusPDUDiagnosticRequest.go | 2 +- .../readwrite/model/ModbusPDUDiagnosticResponse.go | 2 +- .../modbus/readwrite/model/ModbusPDUError.go | 2 +- .../model/ModbusPDUGetComEventCounterRequest.go | 2 +- .../model/ModbusPDUGetComEventCounterResponse.go | 2 +- .../model/ModbusPDUGetComEventLogRequest.go | 2 +- .../model/ModbusPDUGetComEventLogResponse.go | 2 +- .../ModbusPDUMaskWriteHoldingRegisterRequest.go | 2 +- .../ModbusPDUMaskWriteHoldingRegisterResponse.go | 2 +- .../readwrite/model/ModbusPDUReadCoilsRequest.go | 2 +- .../readwrite/model/ModbusPDUReadCoilsResponse.go | 2 +- .../ModbusPDUReadDeviceIdentificationRequest.go | 2 +- .../ModbusPDUReadDeviceIdentificationResponse.go | 2 +- .../model/ModbusPDUReadDiscreteInputsRequest.go | 2 +- .../model/ModbusPDUReadDiscreteInputsResponse.go | 2 +- .../model/ModbusPDUReadExceptionStatusRequest.go | 2 +- .../model/ModbusPDUReadExceptionStatusResponse.go | 2 +- .../model/ModbusPDUReadFifoQueueRequest.go | 2 +- .../model/ModbusPDUReadFifoQueueResponse.go | 2 +- .../model/ModbusPDUReadFileRecordRequest.go | 2 +- .../model/ModbusPDUReadFileRecordRequestItem.go | 2 +- .../model/ModbusPDUReadFileRecordResponse.go | 2 +- .../model/ModbusPDUReadFileRecordResponseItem.go | 2 +- .../model/ModbusPDUReadHoldingRegistersRequest.go | 2 +- .../model/ModbusPDUReadHoldingRegistersResponse.go | 2 +- .../model/ModbusPDUReadInputRegistersRequest.go | 2 +- .../model/ModbusPDUReadInputRegistersResponse.go | 2 +- ...sPDUReadWriteMultipleHoldingRegistersRequest.go | 2 +- ...PDUReadWriteMultipleHoldingRegistersResponse.go | 2 +- .../model/ModbusPDUReportServerIdRequest.go | 2 +- .../model/ModbusPDUReportServerIdResponse.go | 2 +- .../model/ModbusPDUWriteFileRecordRequest.go | 2 +- .../model/ModbusPDUWriteFileRecordRequestItem.go | 2 +- .../model/ModbusPDUWriteFileRecordResponse.go | 2 +- .../model/ModbusPDUWriteFileRecordResponseItem.go | 2 +- .../model/ModbusPDUWriteMultipleCoilsRequest.go | 2 +- .../model/ModbusPDUWriteMultipleCoilsResponse.go | 2 +- ...odbusPDUWriteMultipleHoldingRegistersRequest.go | 2 +- ...dbusPDUWriteMultipleHoldingRegistersResponse.go | 2 +- .../model/ModbusPDUWriteSingleCoilRequest.go | 2 +- .../model/ModbusPDUWriteSingleCoilResponse.go | 2 +- .../model/ModbusPDUWriteSingleRegisterRequest.go | 2 +- .../model/ModbusPDUWriteSingleRegisterResponse.go | 2 +- .../modbus/readwrite/model/ModbusSerialADU.go | 4 +- .../plc4go/modbus/readwrite/model/ModbusTcpADU.go | 2 +- .../plc4go/model/DefaultPlcSubscriptionEvent.go | 108 - .../plc4go/model/DefaultPlcSubscriptionRequest.go | 160 - .../internal/plc4go/model/values/PlcBitString.go | 93 - .../internal/plc4go/s7/readwrite/ParserHelper.go | 2 +- .../plc4go/s7/readwrite/model/COTPPacket.go | 2 +- .../readwrite/model/COTPPacketConnectionRequest.go | 2 +- .../model/COTPPacketConnectionResponse.go | 2 +- .../plc4go/s7/readwrite/model/COTPPacketData.go | 2 +- .../readwrite/model/COTPPacketDisconnectRequest.go | 2 +- .../model/COTPPacketDisconnectResponse.go | 2 +- .../s7/readwrite/model/COTPPacketTpduError.go | 2 +- .../plc4go/s7/readwrite/model/COTPParameter.go | 2 +- .../s7/readwrite/model/COTPParameterCalledTsap.go | 2 +- .../s7/readwrite/model/COTPParameterCallingTsap.go | 2 +- .../s7/readwrite/model/COTPParameterChecksum.go | 2 +- ...COTPParameterDisconnectAdditionalInformation.go | 2 +- .../s7/readwrite/model/COTPParameterTpduSize.go | 2 +- .../plc4go/s7/readwrite/model/COTPProtocolClass.go | 22 +- .../plc4go/s7/readwrite/model/COTPTpduSize.go | 26 +- .../internal/plc4go/s7/readwrite/model/DataItem.go | 4 +- .../s7/readwrite/model/DataTransportErrorCode.go | 24 +- .../plc4go/s7/readwrite/model/DataTransportSize.go | 26 +- .../plc4go/s7/readwrite/model/DeviceGroup.go | 18 +- .../plc4go/s7/readwrite/model/MemoryArea.go | 30 +- .../plc4go/s7/readwrite/model/S7Address.go | 2 +- .../plc4go/s7/readwrite/model/S7AddressAny.go | 4 +- .../plc4go/s7/readwrite/model/S7Message.go | 6 +- .../plc4go/s7/readwrite/model/S7MessageRequest.go | 2 +- .../plc4go/s7/readwrite/model/S7MessageResponse.go | 2 +- .../s7/readwrite/model/S7MessageResponseData.go | 2 +- .../plc4go/s7/readwrite/model/S7MessageUserData.go | 2 +- .../plc4go/s7/readwrite/model/S7Parameter.go | 2 +- .../readwrite/model/S7ParameterReadVarRequest.go | 2 +- .../readwrite/model/S7ParameterReadVarResponse.go | 2 +- .../model/S7ParameterSetupCommunication.go | 4 +- .../s7/readwrite/model/S7ParameterUserData.go | 2 +- .../s7/readwrite/model/S7ParameterUserDataItem.go | 2 +- .../model/S7ParameterUserDataItemCPUFunctions.go | 2 +- .../readwrite/model/S7ParameterWriteVarRequest.go | 2 +- .../readwrite/model/S7ParameterWriteVarResponse.go | 2 +- .../plc4go/s7/readwrite/model/S7Payload.go | 2 +- .../s7/readwrite/model/S7PayloadReadVarResponse.go | 2 +- .../plc4go/s7/readwrite/model/S7PayloadUserData.go | 2 +- .../s7/readwrite/model/S7PayloadUserDataItem.go | 2 +- ...PayloadUserDataItemCpuFunctionReadSzlRequest.go | 2 +- ...ayloadUserDataItemCpuFunctionReadSzlResponse.go | 2 +- .../s7/readwrite/model/S7PayloadWriteVarRequest.go | 2 +- .../readwrite/model/S7PayloadWriteVarResponse.go | 2 +- .../plc4go/s7/readwrite/model/S7StaticHelper.go | 4 +- .../s7/readwrite/model/S7VarPayloadDataItem.go | 2 +- .../s7/readwrite/model/S7VarPayloadStatusItem.go | 2 +- .../readwrite/model/S7VarRequestParameterItem.go | 2 +- .../model/S7VarRequestParameterItemAddress.go | 2 +- .../plc4go/s7/readwrite/model/SzlDataTreeItem.go | 2 +- plc4go/internal/plc4go/s7/readwrite/model/SzlId.go | 2 +- .../s7/readwrite/model/SzlModuleTypeClass.go | 20 +- .../plc4go/s7/readwrite/model/SzlSublist.go | 50 +- .../plc4go/s7/readwrite/model/TPKTPacket.go | 4 +- .../plc4go/s7/readwrite/model/TransportSize.go | 40 +- plc4go/internal/plc4go/spi/Message.go | 4 +- plc4go/internal/plc4go/spi/MessageCodec.go | 24 +- .../{TransportInstanceExposer.go => PlcBrowser.go} | 6 +- .../plc4go/spi/PlcDiscoverer.go} | 7 +- plc4go/internal/plc4go/spi/PlcSubscriber.go | 2 +- .../plc4go/spi/TransportInstanceExposer.go | 4 +- .../interceptors/SingleItemRequestInterceptor.go | 2 +- .../plc4go/spi/model/DefaultBrowseRequest.go | 102 + .../model/DefaultPlcDiscoveryEvent.go} | 36 +- .../{ => spi}/model/DefaultPlcReadRequest.go | 0 .../{ => spi}/model/DefaultPlcReadResponse.go | 0 .../model/DefaultPlcSubscriptionEvent.go} | 66 +- .../spi/model/DefaultPlcSubscriptionRequest.go | 160 + .../model/DefaultPlcSubscriptionResponse.go | 4 +- .../{ => spi}/model/DefaultPlcWriteRequest.go | 2 +- .../{ => spi}/model/DefaultPlcWriteResponse.go | 0 .../plc4go/{ => spi}/model/RequestInterceptor.go | 0 .../plc4go/{ => spi}/testutils/DriverTestRunner.go | 32 +- .../testutils/ParserSerializerTestRunner.go | 20 +- .../plc4go/{ => spi}/testutils/TestUtils.go | 0 .../plc4go/{ => spi}/transports/Transport.go | 10 +- .../{ => spi}/transports/TransportInstance.go | 0 .../plc4go/spi/transports/tcp/TcpTransport.go | 188 + .../{ => spi}/transports/test/TestTransport.go | 2 +- .../plc4go/spi/transports/udp/UdpTransport.go | 217 + .../internal/plc4go/{ => spi}/utils/CastUtils.go | 20 +- .../internal/plc4go/{ => spi}/utils/ReadBuffer.go | 0 .../plc4go/{utils/Utils.go => spi/utils/Regexp.go} | 18 +- .../plc4go/{ => spi}/utils/Serializable.go | 2 +- plc4go/internal/plc4go/{ => spi}/utils/Utils.go | 0 .../internal/plc4go/{ => spi}/utils/WriteBuffer.go | 0 .../internal/plc4go/{model => spi}/values/BOOL.go | 0 .../internal/plc4go/{model => spi}/values/BYTE.go | 0 .../internal/plc4go/{model => spi}/values/CHAR.go | 0 .../internal/plc4go/{model => spi}/values/DATE.go | 26 +- .../plc4go/{model => spi}/values/DATE_AND_TIME.go | 0 .../internal/plc4go/{model => spi}/values/DINT.go | 0 .../internal/plc4go/{model => spi}/values/DWORD.go | 0 .../{model => spi}/values/IEC61131ValueHandler.go | 0 .../internal/plc4go/{model => spi}/values/INT.go | 0 .../internal/plc4go/{model => spi}/values/LINT.go | 0 .../internal/plc4go/{model => spi}/values/LREAL.go | 0 .../internal/plc4go/{model => spi}/values/LTIME.go | 0 .../internal/plc4go/{model => spi}/values/LWORD.go | 0 .../internal/plc4go/{model => spi}/values/NULL.go | 0 .../PlcList.go => spi/values/PlcBitString.go} | 47 +- .../plc4go/{model => spi}/values/PlcByteArray.go | 0 .../plc4go/{model => spi}/values/PlcList.go | 0 .../{model => spi}/values/PlcSimpleValueAdapter.go | 0 .../plc4go/{model => spi}/values/PlcStruct.go | 24 +- .../{model => spi}/values/PlcValueAdapter.go | 0 .../internal/plc4go/{model => spi}/values/REAL.go | 0 .../internal/plc4go/{model => spi}/values/SINT.go | 0 .../plc4go/{model => spi}/values/STRING.go | 0 .../internal/plc4go/{model => spi}/values/TIME.go | 0 .../plc4go/{model => spi}/values/TIME_OF_DAY.go | 30 +- .../internal/plc4go/{model => spi}/values/UDINT.go | 0 .../internal/plc4go/{model => spi}/values/UINT.go | 0 .../internal/plc4go/{model => spi}/values/ULINT.go | 0 .../internal/plc4go/{model => spi}/values/USINT.go | 0 .../internal/plc4go/{model => spi}/values/WCHAR.go | 0 .../internal/plc4go/{model => spi}/values/WORD.go | 0 .../plc4go/{model => spi}/values/WSTRING.go | 0 .../internal/plc4go/transports/tcp/TcpTransport.go | 188 - .../internal/plc4go/transports/udp/UdpTransport.go | 190 - plc4go/internal/plc4go/utils/Regexp.go | 35 - plc4go/pkg/plc4go/connection.go | 2 + plc4go/pkg/plc4go/driver.go | 21 +- plc4go/pkg/plc4go/driverManager.go | 238 +- .../model/{plc_read_request.go => plc_browse.go} | 35 +- plc4go/pkg/plc4go/model/plc_connection_metadata.go | 7 +- .../plc4go/model/plc_discovery.go} | 26 +- .../model/{plc_read_request.go => plc_read.go} | 12 +- plc4go/pkg/plc4go/model/plc_read_response.go | 29 - ...subscription_request.go => plc_subscription.go} | 46 +- plc4go/pkg/plc4go/model/plc_subscription_event.go | 31 - .../pkg/plc4go/model/plc_subscription_response.go | 25 - ...bscription_request.go => plc_unsubscription.go} | 3 + .../model/{plc_write_request.go => plc_write.go} | 3 + plc4go/pkg/plc4go/model/plc_write_response.go | 22 - plc4go/pkg/plc4go/transports/transports.go | 4 +- plc4go/pom.xml | 2 +- .../org/apache/plc4x/java/abeth/AbEthDriver.java | 9 + .../org/apache/plc4x/java/ads/ADSPlcDriver.java | 9 + .../plc4x/java/ads/field/DirectAdsField.java | 2 +- .../plc4x/java/ads/field/DirectAdsStringField.java | 2 +- .../plc4x/java/ads/field/SymbolicAdsField.java | 2 +- .../java/ads/field/SymbolicAdsStringField.java | 2 +- .../plc4x/java/canopen/CANOpenPlcDriver.java | 9 + .../apache/plc4x/java/eip/readwrite/EIPDriver.java | 9 + .../java/firmata/readwrite/FirmataDriver.java | 9 + .../apache/plc4x/java/knxnetip/KnxNetIpDriver.java | 3 + .../plc4x/java/knxnetip/ets5/Ets5Parser.java | 10 +- .../java/knxnetip/ets5/model/GroupAddress.java | 8 +- .../knxnetip/protocol/KnxNetIpProtocolLogic.java | 9 +- .../org/apache/plc4x/java/modbus/ModbusDriver.java | 9 + .../apache/plc4x/java/s7/readwrite/S7Driver.java | 9 + .../java/s7/readwrite/optimizer/S7Optimizer.java | 4 +- .../plc4x/java/s7/readwrite/issues/PLC4X272.java | 29 + .../s7/src/test/resources/tests/PLC4X-272.xml | 2282 +++++++ plc4j/integrations/apache-kafka/pom.xml | 48 +- .../org/apache/plc4x/kafka/Plc4xSinkConnector.java | 1 - .../java/org/apache/plc4x/kafka/Plc4xSinkTask.java | 2 - .../apache/plc4x/kafka/Plc4xSourceConnector.java | 3 - .../org/apache/plc4x/kafka/Plc4xSourceTask.java | 5 +- .../apache-kafka/src/remote-resources/LICENSE | 7 + .../apache-kafka/src/remote-resources/NOTICE | 4 + plc4j/integrations/opcua-server/pom.xml | 23 +- .../java/opcuaserver/AttributeLoggingFilter.java | 73 - .../plc4x/java/opcuaserver/KeyStoreLoader.java | 163 - .../apache/plc4x/java/opcuaserver/OPCUAServer.java | 244 +- .../opcuaserver/backend/Plc4xCommunication.java | 238 +- .../java/opcuaserver/backend/Plc4xNamespace.java | 110 +- .../opcuaserver/configuration/Configuration.java | 7 - .../opcuaserver/context/CertificateGenerator.java | 122 + .../opcuaserver/context/CertificateKeyPair.java | 38 + .../plc4x/java/opcuaserver/OpcuaPlcDriverTest.java | 245 + .../opcua-server/src/test/resources/config.yml | 1 - .../apache/plc4x/java/spi/Plc4xNettyWrapper.java | 1 + .../spi/connection/DefaultNettyPlcConnection.java | 33 +- .../java/spi/connection/GeneratedDriverBase.java | 13 + .../plc4x/test/driver/DriverTestsuiteRunner.java | 3 + pom.xml | 7 +- protocols/knxnetip/pom.xml | 7 + protocols/knxnetip/src/main/xslt/knx-types.xsl | 181 +- .../enrich/knxnetip/ets5/Ets5DataEnrichment.java | 8 +- 513 files changed, 27686 insertions(+), 15200 deletions(-) diff --cc plc4j/integrations/opcua-server/pom.xml index f920410,3313a16..21fcc24 --- a/plc4j/integrations/opcua-server/pom.xml +++ b/plc4j/integrations/opcua-server/pom.xml @@@ -208,8 -203,20 +203,25 @@@ <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> </dependency> ++<<<<<<< HEAD + + ++======= + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + </dependency> + + <dependency> + <groupId>io.vavr</groupId> + <artifactId>vavr</artifactId> + </dependency> ++>>>>>>> develop + + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + </dependency> </dependencies> diff --cc plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/DefaultNettyPlcConnection.java index 1fc70ad,177ef71..2343d11 --- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/DefaultNettyPlcConnection.java +++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/DefaultNettyPlcConnection.java @@@ -47,8 -48,9 +48,13 @@@ public class DefaultNettyPlcConnection protected final Configuration configuration; protected final ChannelFactory channelFactory; protected final boolean awaitSessionSetupComplete; + protected final boolean awaitSessionDisconnectComplete; protected final ProtocolStackConfigurer stackConfigurer; ++<<<<<<< HEAD + private final CompletableFuture<Void> sessionDisconnectCompleteFuture = new CompletableFuture<>(); ++======= + protected final CompletableFuture<Void> sessionDisconnectCompleteFuture = new CompletableFuture<>(); ++>>>>>>> develop protected Channel channel; protected boolean connected; @@@ -107,15 -111,23 +115,33 @@@ } } + /** + * Close the connection by firstly calling disconnect and waiting for a DisconnectedEvent occurs and then calling + * Close() to finish up any other clean up. + * @throws PlcConnectionException + */ @Override public void close() throws PlcConnectionException { ++<<<<<<< HEAD + // TODO call protocols close method + + channel.pipeline().fireUserEventTriggered(new DisconnectEvent()); + try { + sessionDisconnectCompleteFuture.get(10000L, TimeUnit.MILLISECONDS); + } catch (Exception e) { + //Do Nothing ++======= + + logger.debug("Closing connection to PLC, await for disconnect = {}", awaitSessionDisconnectComplete); + + channel.pipeline().fireUserEventTriggered(new DisconnectEvent()); + try { + if (awaitSessionDisconnectComplete) { + sessionDisconnectCompleteFuture.get(DEFAULT_DISCONNECT_WAIT_TIME, TimeUnit.MILLISECONDS); + } + } catch (Exception e) { + logger.error("Timeout while trying to close connection"); ++>>>>>>> develop } channel.pipeline().fireUserEventTriggered(new CloseConnectionEvent()); diff --cc protocols/knxnetip/src/main/xslt/knx-types.xsl index 3ae4e56,65a43f4..6590625 --- a/protocols/knxnetip/src/main/xslt/knx-types.xsl +++ b/protocols/knxnetip/src/main/xslt/knx-types.xsl @@@ -46,15 -47,58 +47,68 @@@ // specific language governing permissions and limitations // under the License. // + [enum uint 16 'KnxDatapointType' [uint 16 'number', uint 8 'sizeInBits', string 'name'] + ['0' DPT_UNKNOWN ['0', '0', '"Unknown Datapoint Type"']] + <xsl:apply-templates select="knx:KNX/knx:MasterData/knx:DatapointTypes/knx:DatapointType"/> + ] + + [enum uint 32 'KnxDatapointSubtype' [uint 16 'number', KnxDatapointType 'datapointType', string 'name'] + ['0' DPST_UNKNOWN ['0', 'KnxDatapointType.DPT_UNKNOWN', '"Unknown Datapoint Subtype"']] + <xsl:apply-templates select="knx:KNX/knx:MasterData/knx:DatapointTypes/knx:DatapointType/knx:DatapointSubtypes/knx:DatapointSubtype"/> + ] + [enum uint 16 'KnxInterfaceObjectType' [string 'code', string 'name'] + ['0' OT_UNKNOWN ['U', '"Unknown Interface Object Type"']] + ['1' OT_GENERAL ['G', '"General Interface Object Type"']] + <xsl:apply-templates select="knx:KNX/knx:MasterData/knx:InterfaceObjectTypes/knx:InterfaceObjectType"/> + ] + ++<<<<<<< HEAD +[enum uint 8 'KnxObjectType' [string '-1' 'text']<xsl:apply-templates select="knx:KNX/knx:MasterData/knx:InterfaceObjectTypes/knx:InterfaceObjectType"/> +] + +[enum uint 8 'KnxObjectProperties' [string '-1' 'name', string '-1' 'dataTypeId', string '-1' 'text']<xsl:apply-templates select="knx:KNX/knx:MasterData/knx:InterfaceObjectProperties/knx:InterfaceObjectProperty"/> +] + +[enum uint 16 'KnxManufacturers' [string '-1' 'text']<xsl:apply-templates select="knx:KNX/knx:MasterData/knx:Manufacturers/knx:Manufacturer"/> ++======= + [enum uint 32 'KnxInterfaceObjectProperty' [uint 8 'propertyId', KnxInterfaceObjectType 'objectType', KnxPropertyDataType 'propertyDataType', string 'name'] + ['0' PID_UNKNOWN ['0', 'KnxInterfaceObjectType.OT_UNKNOWN', 'KnxPropertyDataType.PDT_UNKNOWN', '"Unknown Interface Object Property"']] + <xsl:apply-templates select="knx:KNX/knx:MasterData/knx:InterfaceObjectProperties/knx:InterfaceObjectProperty"/> ] + + [enum uint 8 'KnxPropertyDataType' [uint 8 'number', uint 8 'sizeInBytes', string 'name'] + ['0' PDT_UNKNOWN ['0', '0', '"Unknown Property Data Type"']] + <xsl:apply-templates select="knx:KNX/knx:MasterData/knx:PropertyDataTypes/knx:PropertyDataType"/> + ] + + [enum uint 16 'KnxManufacturer' [uint 16 'number', string 'name'] + ['0' M_UNKNOWN ['0', '"Unknown Manufacturer"']] + <xsl:apply-templates select="knx:KNX/knx:MasterData/knx:Manufacturers/knx:Manufacturer"/> ++>>>>>>> develop + ] + </xsl:template> + + <xsl:template match="knx:DatapointType"> + <xsl:variable name="datapointTypeId"> + <xsl:call-template name="getDatapointTypeId"> + <xsl:with-param name="contextNode" select="."/> + </xsl:call-template> + </xsl:variable>['<xsl:value-of select="position()"/>' <xsl:value-of select="$datapointTypeId"/> ['<xsl:value-of select="@Number"/>', '<xsl:value-of select="@SizeInBit"/>', '"<xsl:value-of select="@Text"/>"']] + </xsl:template> + + <xsl:template match="knx:DatapointSubtype"> + <xsl:variable name="datapointSubtypeId"> + <xsl:choose> + <xsl:when test="fn:starts-with(@Name, 'DPT')">DPST_<xsl:value-of select="fn:substring-after(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(@Name, '\[', '_'), '\]', ''), '³', '_3'), 'µ', 'y'), '/', ''), '-', '_'), 'DPT_')"/></xsl:when> + <xsl:otherwise>DPST_<xsl:for-each select="tokenize(@Name, ' ')"><xsl:value-of select="concat(upper-case(substring(.,1,1)), substring(., 2))"/><xsl:if test="position()!=last()">_</xsl:if></xsl:for-each></xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="datapointTypeId"> + <xsl:call-template name="getDatapointTypeId"> + <xsl:with-param name="contextNode" select="../.."/> + </xsl:call-template> + </xsl:variable>['<xsl:value-of select="position()"/>' <xsl:value-of select="$datapointSubtypeId"/> ['<xsl:value-of select="@Number"/>', 'KnxDatapointType.<xsl:value-of select="$datapointTypeId"/>', '"<xsl:value-of select="@Text"/>"']] </xsl:template> <xsl:template match="knx:InterfaceObjectType"> @@@ -140,4 -178,11 +188,15 @@@ </xsl:choose> </xsl:template> ++<<<<<<< HEAD ++</xsl:stylesheet> ++======= + <xsl:template name="getIdFromText"> + <xsl:param name="text"/> + <xsl:variable name="cleanedText" select="fn:replace(fn:replace(fn:replace(fn:replace(fn:upper-case($text), '/', ''), '\(', ''), '\)', ''), '–', '_')"/> + <xsl:variable name="cleanedText2" select="fn:replace(fn:replace($cleanedText, '³', '_3'), 'É', 'E')"/> + <xsl:value-of select="fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(normalize-space($cleanedText2),' ', '_'), '&', 'AND'), '-', '_'), ' ', '_'), '\.', '_'), ',', '_'), '\+', 'Plus'), '/', '_'), 'Ä', 'AE'), 'Ö', 'OE'), 'Ü', 'UE'), 'ß', 'SS'), ':', '_')"/> + </xsl:template> + -</xsl:stylesheet> +</xsl:stylesheet> ++>>>>>>> develop
