armodel 1.7.4__py3-none-any.whl → 1.7.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. armodel/cli/file_list_cli.py +70 -0
  2. armodel/models/M2/AUTOSARTemplates/DiagnosticExtract/DiagnosticContribution.py +47 -0
  3. armodel/models/M2/AUTOSARTemplates/DiagnosticExtract/__init__.py +0 -0
  4. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +67 -3
  5. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +9 -0
  6. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DiagnosticConnection.py +58 -0
  7. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetCommunication.py +16 -1
  8. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +114 -0
  9. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/NetworkEndpoint.py +104 -1
  10. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/ServiceInstances.py +429 -7
  11. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinCommunication.py +114 -6
  12. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinTopology.py +94 -0
  13. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +151 -6
  14. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +98 -13
  15. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +13 -1
  16. armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +135 -13
  17. armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +25 -1
  18. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +4 -3
  19. armodel/models/M2/MSR/DataDictionary/RecordLayout.py +1 -1
  20. armodel/models/__init__.py +3 -0
  21. armodel/parser/abstract_arxml_parser.py +2 -0
  22. armodel/parser/arxml_parser.py +353 -30
  23. armodel/writer/arxml_writer.py +471 -145
  24. {armodel-1.7.4.dist-info → armodel-1.7.5.dist-info}/METADATA +31 -1
  25. {armodel-1.7.4.dist-info → armodel-1.7.5.dist-info}/RECORD +29 -24
  26. {armodel-1.7.4.dist-info → armodel-1.7.5.dist-info}/entry_points.txt +1 -0
  27. {armodel-1.7.4.dist-info → armodel-1.7.5.dist-info}/LICENSE +0 -0
  28. {armodel-1.7.4.dist-info → armodel-1.7.5.dist-info}/WHEEL +0 -0
  29. {armodel-1.7.4.dist-info → armodel-1.7.5.dist-info}/top_level.txt +0 -0
@@ -40,6 +40,7 @@ from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import Intern
40
40
  from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclaration, ModeDeclarationGroup, ModeDeclarationGroupPrototype
41
41
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
42
42
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import RoughEstimateStackUsage, StackUsage
43
+ from ..models.M2.AUTOSARTemplates.DiagnosticExtract.DiagnosticContribution import DiagnosticServiceTable
43
44
  from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
44
45
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
45
46
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Identifiable, MultilanguageReferrable, Referrable
@@ -76,22 +77,24 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import S
76
77
 
77
78
  from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping, System, SystemMapping
78
79
  from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
79
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import FrameTriggering, IPdu, IPduTiming, ISignalGroup, ISignalIPdu, ISignalIPduGroup, ISignalTriggering, PduTriggering, SecuredIPdu, SystemSignal, DcmIPdu, Frame, ISignal, NPdu, NmPdu, SystemSignalGroup
80
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.DiagnosticConnection import DiagnosticConnection
81
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import FrameTriggering, GeneralPurposeIPdu, GeneralPurposePdu, IPdu, IPduTiming, ISignalGroup, ISignalIPdu, ISignalIPduGroup, ISignalTriggering, MultiplexedIPdu, PduTriggering, SecureCommunicationPropsSet, SecuredIPdu, SystemSignal, DcmIPdu, Frame, ISignal, NPdu, NmPdu, SystemSignalGroup, UserDefinedIPdu, UserDefinedPdu
80
82
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
81
83
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
82
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SocketConnection, SocketConnectionBundle, SocketConnectionIpduIdentifier
84
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SoAdRoutingGroup, SocketConnection, SocketConnectionBundle, SocketConnectionIpduIdentifier
83
85
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import GenericEthernetFrame
84
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCluster, EthernetCommunicationConnector, EthernetCommunicationController
85
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import Ipv6Configuration, NetworkEndpoint, NetworkEndpointAddress
86
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import SoAdConfig
86
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCluster, EthernetCommunicationConnector, EthernetCommunicationController, InitialSdDelayConfig, RequestResponseDelay, SdClientConfig
87
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import DoIpEntity, InfrastructureServices, Ipv6Configuration, NetworkEndpoint, NetworkEndpointAddress
88
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ApplicationEndpoint, ConsumedEventGroup, ConsumedServiceInstance, GenericTp, SoAdConfig, SocketAddress, TcpTp, TpPort, TransportProtocolConfiguration, UdpTp
87
89
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway, ISignalMapping
88
90
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrame, CanFrameTriggering, RxIdentifierRange
89
91
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
90
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering, LinUnconditionalFrame
91
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort, LinCluster, LinPhysicalChannel, PhysicalChannel
92
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import ApplicationEntry, LinFrameTriggering, LinScheduleTable, LinUnconditionalFrame, ScheduleTableEntry
93
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, CanClusterBusOffRecovery, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort, LinCluster, LinPhysicalChannel, PhysicalChannel
94
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinTopology import LinCommunicationConnector, LinMaster
92
95
  from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
93
- from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
94
- from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpConfig
96
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode, UdpNmCluster, UdpNmClusterCoupling, UdpNmNode
97
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpConfig, DoIpTpConfig
95
98
 
96
99
  from .abstract_arxml_writer import AbstractARXMLWriter
97
100
  class ARXMLWriter(AbstractARXMLWriter):
@@ -194,7 +197,7 @@ class ARXMLWriter(AbstractARXMLWriter):
194
197
  self.setMultiLanguagePlainText(child_element, "USED-LANGUAGES", admin_data.getUsedLanguages())
195
198
  self.writeSdgs(child_element, admin_data)
196
199
 
197
- def setIdentifiable(self, element: ET.Element, identifiable: Identifiable):
200
+ def writeIdentifiable(self, element: ET.Element, identifiable: Identifiable):
198
201
  self.setMultilanguageReferrable(element, identifiable)
199
202
  self.setAnnotations(element, identifiable.getAnnotations())
200
203
  self.setMultiLanguageOverviewParagraph(element, "DESC", identifiable.getDesc())
@@ -203,7 +206,7 @@ class ARXMLWriter(AbstractARXMLWriter):
203
206
  self.setAdminData(element, identifiable.getAdminData())
204
207
 
205
208
  def setARElement(self, parent: ET.Element, ar_element: ARElement):
206
- self.setIdentifiable(parent, ar_element)
209
+ self.writeIdentifiable(parent, ar_element)
207
210
 
208
211
  def setTransmissionAcknowledgementRequest(self, element: ET.Element, acknowledge: TransmissionAcknowledgementRequest):
209
212
  if (acknowledge != None):
@@ -436,7 +439,7 @@ class ARXMLWriter(AbstractARXMLWriter):
436
439
  def writePPortPrototype(self, ports_tag: ET.Element, prototype: PPortPrototype):
437
440
  prototype_tag = ET.SubElement(ports_tag, "P-PORT-PROTOTYPE")
438
441
 
439
- self.setIdentifiable(prototype_tag, prototype)
442
+ self.writeIdentifiable(prototype_tag, prototype)
440
443
  self.logger.debug("write PPortPrototype %s" % prototype.getShortName())
441
444
  self.setAbstractProvidedPortPrototype(prototype_tag, prototype)
442
445
  self.setChildElementOptionalRefType(prototype_tag, "PROVIDED-INTERFACE-TREF", prototype.getProvidedInterfaceTRef())
@@ -451,14 +454,14 @@ class ARXMLWriter(AbstractARXMLWriter):
451
454
  def writeRPortPrototype(self, ports_tag: ET.Element, prototype: RPortPrototype):
452
455
  self.logger.debug("write RPortPrototype %s" % prototype.getShortName())
453
456
  prototype_tag = ET.SubElement(ports_tag, "R-PORT-PROTOTYPE")
454
- self.setIdentifiable(prototype_tag, prototype)
457
+ self.writeIdentifiable(prototype_tag, prototype)
455
458
  self.setAbstractRequiredPortPrototype(prototype_tag, prototype)
456
459
  self.setChildElementOptionalRefType(prototype_tag, "REQUIRED-INTERFACE-TREF", prototype.getRequiredInterfaceTRef())
457
460
 
458
461
  def writePRPortPrototype(self, ports_tag: ET.Element, prototype: PRPortPrototype):
459
462
  self.logger.debug("write PRPortPrototype %s" % prototype.getShortName())
460
463
  prototype_tag = ET.SubElement(ports_tag, "PR-PORT-PROTOTYPE")
461
- self.setIdentifiable(prototype_tag, prototype)
464
+ self.writeIdentifiable(prototype_tag, prototype)
462
465
  self.setAbstractProvidedPortPrototype(prototype_tag, prototype)
463
466
  self.setAbstractRequiredPortPrototype(prototype_tag, prototype)
464
467
  self.setChildElementOptionalRefType(prototype_tag, "PROVIDED-REQUIRED-INTERFACE-TREF", prototype.getProvidedRequiredInterface())
@@ -497,7 +500,7 @@ class ARXMLWriter(AbstractARXMLWriter):
497
500
  def writePortGroup(self, element: ET.Element, port_group: PortGroup):
498
501
  self.logger.debug("writePortGroup %s" % port_group.getShortName())
499
502
  child_element = ET.SubElement(element, "PORT-GROUP")
500
- self.setIdentifiable(child_element, port_group)
503
+ self.writeIdentifiable(child_element, port_group)
501
504
  self.writePortGroupInnerGroupIRefs(child_element, port_group)
502
505
  self.writePortGroupOuterPortRefs(child_element, port_group)
503
506
 
@@ -509,7 +512,7 @@ class ARXMLWriter(AbstractARXMLWriter):
509
512
  self.writePortGroup(child_element, port_group)
510
513
 
511
514
  def writeSwComponentType(self, element: ET.Element, sw_component: SwComponentType):
512
- self.setIdentifiable(element, sw_component)
515
+ self.writeIdentifiable(element, sw_component)
513
516
  port_prototypes = sw_component.getPortPrototypes()
514
517
  if len(port_prototypes) > 0:
515
518
  ports_tag = ET.SubElement(element, "PORTS")
@@ -518,7 +521,7 @@ class ARXMLWriter(AbstractARXMLWriter):
518
521
 
519
522
  def writeSwComponentPrototype(self, element: ET.Element, prototype: SwComponentPrototype):
520
523
  prototype_tag = ET.SubElement(element, "SW-COMPONENT-PROTOTYPE")
521
- self.setIdentifiable(prototype_tag, prototype)
524
+ self.writeIdentifiable(prototype_tag, prototype)
522
525
  self.setChildElementOptionalRefType(prototype_tag, "TYPE-TREF", prototype.getTypeTRef())
523
526
 
524
527
  def writeSwComponentPrototypes(self, element: ET.Element, sw_component: CompositionSwComponentType):
@@ -530,7 +533,7 @@ class ARXMLWriter(AbstractARXMLWriter):
530
533
 
531
534
  def writeAssemblySwConnector(self, element: ET.Element, sw_connector: AssemblySwConnector):
532
535
  child_element = ET.SubElement(element, "ASSEMBLY-SW-CONNECTOR")
533
- self.setIdentifiable(child_element, sw_connector)
536
+ self.writeIdentifiable(child_element, sw_connector)
534
537
  self.setChildElementOptionalRefType(child_element, "MAPPING-REF", sw_connector.getMappingRef())
535
538
 
536
539
  if sw_connector.getProviderIRef() is not None:
@@ -549,7 +552,7 @@ class ARXMLWriter(AbstractARXMLWriter):
549
552
 
550
553
  def writeDelegationSwConnector(self, element: ET.Element, sw_connector: DelegationSwConnector):
551
554
  connector_tag = ET.SubElement(element, "DELEGATION-SW-CONNECTOR")
552
- self.setIdentifiable(connector_tag, sw_connector)
555
+ self.writeIdentifiable(connector_tag, sw_connector)
553
556
 
554
557
  if sw_connector.getInnerPortIRref() is not None:
555
558
  inner_port_iref_tag = ET.SubElement(connector_tag, "INNER-PORT-IREF")
@@ -737,7 +740,7 @@ class ARXMLWriter(AbstractARXMLWriter):
737
740
  self.setSwDataDefProps(element, "SW-DATA-DEF-PROPS", prototype.getSwDataDefProps())
738
741
 
739
742
  def setApplicationCompositeElementDataPrototype(self, element: ET.Element, prototype: ApplicationCompositeElementDataPrototype):
740
- self.setIdentifiable(element, prototype)
743
+ self.writeIdentifiable(element, prototype)
741
744
  self.setDataPrototype(element, prototype)
742
745
  self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.typeTRef)
743
746
 
@@ -775,7 +778,7 @@ class ARXMLWriter(AbstractARXMLWriter):
775
778
 
776
779
  def writeSwBaseType(self, element: ET.Element, base_type: SwBaseType):
777
780
  data_type_tag = ET.SubElement(element, "SW-BASE-TYPE")
778
- self.setIdentifiable(data_type_tag, base_type)
781
+ self.writeIdentifiable(data_type_tag, base_type)
779
782
  self.setBaseTypeDirectDefinition(data_type_tag, base_type.getBaseTypeDefinition())
780
783
 
781
784
  def writeCompuScaleConstantContents(self, element: ET.Element, contents: CompuScaleConstantContents):
@@ -844,7 +847,7 @@ class ARXMLWriter(AbstractARXMLWriter):
844
847
  def writeCompuMethod(self, element: ET.Element, compu_method: CompuMethod):
845
848
  child_element = ET.SubElement(element, "COMPU-METHOD")
846
849
  self.logger.debug("write CompuMethods %s" % compu_method.getShortName())
847
- self.setIdentifiable(child_element, compu_method)
850
+ self.writeIdentifiable(child_element, compu_method)
848
851
  self.setChildElementOptionalRefType(child_element, "UNIT-REF", compu_method.getUnitRef())
849
852
  self.setCompu(child_element, "COMPU-INTERNAL-TO-PHYS", compu_method.getCompuInternalToPhys())
850
853
  self.setCompu(child_element, "COMPU-PHYS-TO-INTERNAL", compu_method.getCompuPhysToInternal())
@@ -878,7 +881,7 @@ class ARXMLWriter(AbstractARXMLWriter):
878
881
 
879
882
  def writeConstantSpecification(self, element: ET.Element, spec: ConstantSpecification):
880
883
  spec_tag = ET.SubElement(element, "CONSTANT-SPECIFICATION")
881
- self.setIdentifiable(spec_tag, spec)
884
+ self.writeIdentifiable(spec_tag, spec)
882
885
 
883
886
  if spec.getValueSpec() is not None:
884
887
  self.setValueSpecification(spec_tag, "VALUE-SPEC", spec.getValueSpec())
@@ -915,13 +918,13 @@ class ARXMLWriter(AbstractARXMLWriter):
915
918
 
916
919
  def writeDataConstr(self, element: ET.Element, constr: DataConstr):
917
920
  child_element = ET.SubElement(element, "DATA-CONSTR")
918
- self.setIdentifiable(child_element, constr)
921
+ self.writeIdentifiable(child_element, constr)
919
922
  self.writeDataConstrRules(child_element, constr)
920
923
 
921
924
  def writeUnit(self, element: ET.Element, unit: Unit):
922
925
  self.logger.debug("writeUnit %s" % unit.getShortName())
923
926
  child_element = ET.SubElement(element, "UNIT")
924
- self.setIdentifiable(child_element, unit)
927
+ self.writeIdentifiable(child_element, unit)
925
928
  self.setChildElementOptionalLiteral(child_element, "DISPLAY-NAME", unit.getDisplayName())
926
929
  self.setChildElementOptionalFloatValue(child_element, "FACTOR-SI-TO-UNIT", unit.getFactorSiToUnit())
927
930
  self.setChildElementOptionalFloatValue(child_element, "OFFSET-SI-TO-UNIT", unit.getOffsetSiToUnit())
@@ -943,7 +946,7 @@ class ARXMLWriter(AbstractARXMLWriter):
943
946
  self.setChildElementOptionalRefType(child_element, "TARGET-PROVIDED-OPERATION-REF", iref.getTargetProvidedOperationRef())
944
947
 
945
948
  def setRTEEvent(self, element: ET.Element, event: RTEEvent):
946
- self.setIdentifiable(element, event)
949
+ self.writeIdentifiable(element, event)
947
950
  irefs = event.getDisabledModeIRefs()
948
951
  if len(irefs) > 0:
949
952
  child_element = ET.SubElement(element, "DISABLED-MODE-IREFS")
@@ -1030,7 +1033,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1030
1033
  areas_tag = ET.SubElement(element, "EXCLUSIVE-AREAS")
1031
1034
  for area in areas:
1032
1035
  child_element = ET.SubElement(areas_tag, "EXCLUSIVE-AREA")
1033
- self.setIdentifiable(child_element, area)
1036
+ self.writeIdentifiable(child_element, area)
1034
1037
 
1035
1038
  def writeDataTypeMappingRefs(self, element: ET.Element, behavior: InternalBehavior):
1036
1039
  refs = behavior.getDataTypeMappingRefs()
@@ -1040,7 +1043,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1040
1043
  self.setChildElementOptionalRefType(refs_tag, "DATA-TYPE-MAPPING-REF", ref)
1041
1044
 
1042
1045
  def writeInternalBehavior(self, element: ET.Element, behavior: InternalBehavior):
1043
- self.setIdentifiable(element, behavior)
1046
+ self.writeIdentifiable(element, behavior)
1044
1047
  self.setParameterDataPrototypes(element, "CONSTANT-MEMORYS", behavior.getConstantMemories())
1045
1048
  self.writeDataTypeMappingRefs(element, behavior)
1046
1049
  self.writeExclusiveAreas(element, behavior)
@@ -1066,7 +1069,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1066
1069
 
1067
1070
  def setVariableAccess(self, element: ET.Element, access: VariableAccess):
1068
1071
  child_element = ET.SubElement(element, "VARIABLE-ACCESS")
1069
- self.setIdentifiable(child_element, access)
1072
+ self.writeIdentifiable(child_element, access)
1070
1073
  self.setAutosarVariableRef(child_element, "ACCESSED-VARIABLE", access.getAccessedVariableRef())
1071
1074
 
1072
1075
  def setAutosarParameterRef(self, element: ET.Element, key: str, parameter_ref: AutosarParameterRef):
@@ -1076,7 +1079,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1076
1079
 
1077
1080
  def writeParameterAccess(self, element: ET.Element, parameter_access: ParameterAccess):
1078
1081
  child_element = ET.SubElement(element, "PARAMETER-ACCESS")
1079
- self.setIdentifiable(child_element, parameter_access)
1082
+ self.writeIdentifiable(child_element, parameter_access)
1080
1083
  self.setAutosarParameterRef(child_element, "ACCESSED-PARAMETER", parameter_access.getAccessedParameter())
1081
1084
 
1082
1085
  def writeParameterAccesses(self, element: ET.Element, entity: RunnableEntity):
@@ -1134,12 +1137,12 @@ class ARXMLWriter(AbstractARXMLWriter):
1134
1137
 
1135
1138
  def setSynchronousServerCallPoint(self, element: ET.Element, call_point: SynchronousServerCallPoint):
1136
1139
  child_element = ET.SubElement(element, "SYNCHRONOUS-SERVER-CALL-POINT")
1137
- self.setIdentifiable(child_element, call_point)
1140
+ self.writeIdentifiable(child_element, call_point)
1138
1141
  self.setServerCallPoint(child_element, call_point)
1139
1142
 
1140
1143
  def setAsynchronousServerCallPoint(self, element: ET.Element, call_point: SynchronousServerCallPoint):
1141
1144
  child_element = ET.SubElement(element, "ASYNCHRONOUS-SERVER-CALL-POINT")
1142
- self.setIdentifiable(child_element, call_point)
1145
+ self.writeIdentifiable(child_element, call_point)
1143
1146
  self.setServerCallPoint(child_element, call_point)
1144
1147
 
1145
1148
  def writeServerCallPoints(self, element: ET.Element, entity: RunnableEntity):
@@ -1188,7 +1191,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1188
1191
  mode_access_points_tag = ET.SubElement(element, "MODE-SWITCH-POINTS")
1189
1192
  for point in points:
1190
1193
  child_element = ET.SubElement(mode_access_points_tag, "MODE-SWITCH-POINT")
1191
- self.setIdentifiable(child_element, point)
1194
+ self.writeIdentifiable(child_element, point)
1192
1195
  self.setPModeGroupInAtomicSWCInstanceRef(child_element, "MODE-GROUP-IREF", point.getModeGroupIRef())
1193
1196
 
1194
1197
  def setRunnableEntityArgument(self, element: ET.Element, argument: RunnableEntityArgument):
@@ -1211,7 +1214,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1211
1214
  points_tag = ET.SubElement(element, "ASYNCHRONOUS-SERVER-CALL-RESULT-POINTS")
1212
1215
  for point in points:
1213
1216
  child_element = ET.SubElement(points_tag, "ASYNCHRONOUS-SERVER-CALL-RESULT-POINT")
1214
- self.setIdentifiable(child_element, point)
1217
+ self.writeIdentifiable(child_element, point)
1215
1218
  self.setChildElementOptionalRefType(child_element, "ASYNCHRONOUS-SERVER-CALL-POINT-REF", point.getAsynchronousServerCallPointRef())
1216
1219
 
1217
1220
  def writeRunnableEntity(self, element: ET.Element, entity: RunnableEntity):
@@ -1269,7 +1272,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1269
1272
  memories_tag = ET.SubElement(element, "PER-INSTANCE-MEMORYS")
1270
1273
  for memory in memories:
1271
1274
  child_element = ET.SubElement(memories_tag, "PER-INSTANCE-MEMORY")
1272
- self.setIdentifiable(child_element, memory)
1275
+ self.writeIdentifiable(child_element, memory)
1273
1276
  self.setChildElementOptionalLiteral(child_element, "INIT-VALUE", memory.getInitValue())
1274
1277
  self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", memory.getSwDataDefProps())
1275
1278
  self.setChildElementOptionalLiteral(child_element, "TYPE", memory.getType())
@@ -1277,7 +1280,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1277
1280
 
1278
1281
  def setParameterDataPrototype(self, element: ET.Element, prototype: ParameterDataPrototype):
1279
1282
  child_element = ET.SubElement(element, "PARAMETER-DATA-PROTOTYPE")
1280
- self.setIdentifiable(child_element, prototype)
1283
+ self.writeIdentifiable(child_element, prototype)
1281
1284
  self.setAutosarDataPrototype(child_element, prototype)
1282
1285
  self.setValueSpecification(child_element, "INIT-VALUE", prototype.getInitValue())
1283
1286
 
@@ -1324,7 +1327,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1324
1327
  self._raiseError("Unsupported Assigned Data <%s>" % type(data))
1325
1328
 
1326
1329
  def writeServiceDependency(self, element: ET.Element, dependency: ServiceDependency):
1327
- self.setIdentifiable(element, dependency)
1330
+ self.writeIdentifiable(element, dependency)
1328
1331
  self.writeServiceDependencyAssignedDataType(element, dependency)
1329
1332
 
1330
1333
  def writeRoleBasedDataAssignment(self, element: ET.Element, assignment: RoleBasedDataAssignment):
@@ -1362,7 +1365,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1362
1365
  def setNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
1363
1366
  child_element = ET.SubElement(element, "NV-BLOCK-NEEDS")
1364
1367
  self.logger.debug("write NvBlockNeeds %s" % needs.getShortName())
1365
- self.setIdentifiable(child_element, needs)
1368
+ self.writeIdentifiable(child_element, needs)
1366
1369
  self.setChildElementOptionalBooleanValue(child_element, "CALC-RAM-BLOCK-CRC", needs.getCalcRamBlockCrc())
1367
1370
  self.setChildElementOptionalBooleanValue(child_element, "CHECK-STATIC-BLOCK-ID", needs.getCheckStaticBlockId())
1368
1371
  self.setChildElementOptionalNumericalValue(child_element, "N-DATA-SETS", needs.getNDataSets())
@@ -1386,20 +1389,20 @@ class ARXMLWriter(AbstractARXMLWriter):
1386
1389
  def setDiagnosticCommunicationManagerNeeds(self, element: ET.Element, needs: DiagnosticCommunicationManagerNeeds):
1387
1390
  child_element = ET.SubElement(element, "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS")
1388
1391
  self.logger.debug("write DiagnosticCommunicationManagerNeeds %s" % needs.getShortName())
1389
- self.setIdentifiable(child_element, needs)
1392
+ self.writeIdentifiable(child_element, needs)
1390
1393
  self.setChildElementOptionalLiteral(child_element, "SERVICE-REQUEST-CALLBACK-TYPE", needs.getServiceRequestCallbackType())
1391
1394
 
1392
1395
  def setDiagnosticRoutineNeeds(self, element: ET.Element, needs: DiagnosticRoutineNeeds):
1393
1396
  child_element = ET.SubElement(element, "DIAGNOSTIC-ROUTINE-NEEDS")
1394
1397
  self.logger.debug("write DiagnosticRoutineNeeds %s" % needs.getShortName())
1395
- self.setIdentifiable(child_element, needs)
1398
+ self.writeIdentifiable(child_element, needs)
1396
1399
  self.setChildElementOptionalLiteral(child_element, "DIAG-ROUTINE-TYPE", needs.getDiagRoutineType())
1397
1400
  self.setChildElementOptionalIntegerValue(child_element, "RID-NUMBER", needs.getRidNumber())
1398
1401
 
1399
1402
  def setDiagnosticValueNeeds(self, element: ET.Element, needs: DiagnosticValueNeeds):
1400
1403
  child_element = ET.SubElement(element, "DIAGNOSTIC-VALUE-NEEDS")
1401
1404
  self.logger.debug("write DiagnosticValueNeeds %s" % needs.getShortName())
1402
- self.setIdentifiable(child_element, needs)
1405
+ self.writeIdentifiable(child_element, needs)
1403
1406
  self.setChildElementOptionalPositiveInteger(child_element, "DATA-LENGTH", needs.getDataLength())
1404
1407
  self.setChildElementOptionalLiteral(child_element, "DIAGNOSTIC-VALUE-ACCESS", needs.getDiagnosticValueAccess())
1405
1408
  self.setChildElementOptionalIntegerValue(child_element, "DID-NUMBER", needs.getDidNumber())
@@ -1408,7 +1411,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1408
1411
 
1409
1412
  def setDiagEventDebounceMonitorInternal(self, element: ET.Element, algorithm: DiagEventDebounceMonitorInternal):
1410
1413
  child_element = ET.SubElement(element, "DIAG-EVENT-DEBOUNCE-MONITOR-INTERNAL")
1411
- self.setIdentifiable(child_element, algorithm)
1414
+ self.writeIdentifiable(child_element, algorithm)
1412
1415
 
1413
1416
  def writeDiagEventDebounceAlgorithm(self, element: ET.Element, needs: DiagnosticEventNeeds):
1414
1417
  algorithm = needs.getDiagEventDebounceAlgorithm()
@@ -1422,7 +1425,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1422
1425
  def setDiagnosticEventNeeds(self, element: ET.Element, needs: DiagnosticEventNeeds):
1423
1426
  child_element = ET.SubElement(element, "DIAGNOSTIC-EVENT-NEEDS")
1424
1427
  self.logger.debug("write DiagnosticEventNeeds %s" % needs.getShortName())
1425
- self.setIdentifiable(child_element, needs)
1428
+ self.writeIdentifiable(child_element, needs)
1426
1429
  self.writeDiagEventDebounceAlgorithm(child_element, needs)
1427
1430
  self.setChildElementOptionalLiteral(child_element, "DTC-KIND", needs.getDtcKind())
1428
1431
  self.setChildElementOptionalIntegerValue(child_element, "UDS-DTC-NUMBER", needs.getUdsDtcNumber())
@@ -1430,19 +1433,19 @@ class ARXMLWriter(AbstractARXMLWriter):
1430
1433
  def setDiagnosticEventInfoNeeds(self, element: ET.Element, needs: DiagnosticEventInfoNeeds):
1431
1434
  child_element = ET.SubElement(element, "DIAGNOSTIC-EVENT-INFO-NEEDS")
1432
1435
  self.logger.debug("write DiagnosticEventNeeds %s" % needs.getShortName())
1433
- self.setIdentifiable(child_element, needs)
1436
+ self.writeIdentifiable(child_element, needs)
1434
1437
  self.setChildElementOptionalPositiveInteger(child_element, "UDS-DTC-NUMBER", needs.getUdsDtcNumber())
1435
1438
 
1436
1439
  def setCryptoServiceNeeds(self, element: ET.Element, needs: CryptoServiceNeeds):
1437
1440
  child_element = ET.SubElement(element, "CRYPTO-SERVICE-NEEDS")
1438
1441
  self.logger.debug("write CryptoServiceNeeds %s" % needs.getShortName())
1439
- self.setIdentifiable(child_element, needs)
1442
+ self.writeIdentifiable(child_element, needs)
1440
1443
  self.setChildElementOptionalPositiveInteger(child_element, "MAXIMUM-KEY-LENGTH", needs.getMaximumKeyLength())
1441
1444
 
1442
1445
  def setEcuStateMgrUserNeeds(self, element: ET.Element, needs: EcuStateMgrUserNeeds):
1443
1446
  child_element = ET.SubElement(element, "ECU-STATE-MGR-USER-NEEDS")
1444
1447
  self.logger.debug("write EcuStateMgrUserNeeds %s" % needs.getShortName())
1445
- self.setIdentifiable(child_element, needs)
1448
+ self.writeIdentifiable(child_element, needs)
1446
1449
 
1447
1450
  def writeSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
1448
1451
  needs = parent.getServiceNeeds()
@@ -1547,7 +1550,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1547
1550
  def setCode(self, element: ET.SubElement, code_desc: Code):
1548
1551
  self.logger.debug("setCode %s" % code_desc.getShortName())
1549
1552
  child_element = ET.SubElement(element, "CODE")
1550
- self.setIdentifiable(child_element, code_desc)
1553
+ self.writeIdentifiable(child_element, code_desc)
1551
1554
  self.writeArtifactDescriptor(child_element, code_desc)
1552
1555
 
1553
1556
  def writeCodeDescriptors(self, element: ET.Element, impl: Implementation):
@@ -1572,7 +1575,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1572
1575
  sections_tag = ET.SubElement(element, "MEMORY-SECTIONS")
1573
1576
  for memory_section in memory_sections:
1574
1577
  child_element = ET.SubElement(sections_tag, "MEMORY-SECTION")
1575
- self.setIdentifiable(child_element, memory_section)
1578
+ self.writeIdentifiable(child_element, memory_section)
1576
1579
  self.setChildElementOptionalLiteral(child_element, "ALIGNMENT", memory_section.getAlignment())
1577
1580
  self.setChildElementOptionalLiteral(child_element, "MEM-CLASS-SYMBOL", memory_section.getMemClassSymbol())
1578
1581
  self.setMemorySectionOptions(child_element, memory_section.getOptions())
@@ -1583,7 +1586,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1583
1586
 
1584
1587
  def setStackUsage(self, element: ET.Element, usage: StackUsage):
1585
1588
  self.logger.debug("Write StackUsage %s" % usage.getShortName())
1586
- self.setIdentifiable(element, usage)
1589
+ self.writeIdentifiable(element, usage)
1587
1590
 
1588
1591
  def setRoughEstimateStackUsage(self, element: ET.Element, usage: RoughEstimateStackUsage):
1589
1592
  if usage is not None:
@@ -1603,12 +1606,12 @@ class ARXMLWriter(AbstractARXMLWriter):
1603
1606
  def setResourceConsumption(self, element: ET.Element, consumption: ResourceConsumption):
1604
1607
  if consumption is not None:
1605
1608
  child_element = ET.SubElement(element, "RESOURCE-CONSUMPTION")
1606
- self.setIdentifiable(child_element, consumption)
1609
+ self.writeIdentifiable(child_element, consumption)
1607
1610
  self.writeMemorySections(child_element, consumption)
1608
1611
  self.writeStackUsages(child_element, consumption.getStackUsages())
1609
1612
 
1610
1613
  def writeImplementation(self, element: ET.Element, impl: Implementation):
1611
- self.setIdentifiable(element, impl)
1614
+ self.writeIdentifiable(element, impl)
1612
1615
  self.writeCodeDescriptors(element, impl)
1613
1616
  self.setChildElementOptionalLiteral(element, "PROGRAMMING-LANGUAGE", impl.getProgrammingLanguage())
1614
1617
  self.setResourceConsumption(element, impl.getResourceConsumption())
@@ -1671,7 +1674,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1671
1674
  def setEndToEndProtection(self, element: ET.Element, protection: EndToEndProtection):
1672
1675
  if protection is not None:
1673
1676
  child_element = ET.SubElement(element, "END-TO-END-PROTECTION")
1674
- self.setIdentifiable(child_element, protection)
1677
+ self.writeIdentifiable(child_element, protection)
1675
1678
  self.setEndToEndDescription(child_element, "END-TO-END-PROFILE", protection.endToEndProfile)
1676
1679
  self.writeEndToEndProtectionVariablePrototypes(child_element, protection)
1677
1680
 
@@ -1686,7 +1689,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1686
1689
  def writeEndToEndProtectionSet(self, element: ET.Element, protection_set: EndToEndProtectionSet):
1687
1690
  self.logger.debug("writeEndToEndProtectionSet %s" % protection_set.getShortName())
1688
1691
  child_element = ET.SubElement(element, "END-TO-END-PROTECTION-SET")
1689
- self.setIdentifiable(child_element, protection_set)
1692
+ self.writeIdentifiable(child_element, protection_set)
1690
1693
  self.writeEndToEndProtections(child_element, protection_set)
1691
1694
 
1692
1695
  def setAutosarDataPrototype(self, element: ET.Element, prototype: AutosarDataPrototype):
@@ -1696,7 +1699,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1696
1699
  def writeVariableDataPrototype(self, element: ET.Element, prototype: VariableDataPrototype):
1697
1700
  self.logger.debug("writeVariableDataPrototype %s" % prototype.getShortName())
1698
1701
  child_element = ET.SubElement(element, "VARIABLE-DATA-PROTOTYPE")
1699
- self.setIdentifiable(child_element, prototype)
1702
+ self.writeIdentifiable(child_element, prototype)
1700
1703
  self.setAutosarDataPrototype(child_element, prototype)
1701
1704
  self.setValueSpecification(child_element, "INIT-VALUE", prototype.getInitValue())
1702
1705
 
@@ -1722,7 +1725,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1722
1725
  def writeSenderReceiverInterface(self, element: ET.Element, sr_interface: SenderReceiverInterface):
1723
1726
  self.logger.debug("writeSenderReceiverInterface %s" % sr_interface.getShortName())
1724
1727
  child_element = ET.SubElement(element, "SENDER-RECEIVER-INTERFACE")
1725
- self.setIdentifiable(child_element, sr_interface)
1728
+ self.writeIdentifiable(child_element, sr_interface)
1726
1729
  self.setChildElementOptionalBooleanValue(child_element, "IS-SERVICE", sr_interface.getIsService())
1727
1730
  self.writeSenderReceiverInterfaceDataElements(child_element, sr_interface)
1728
1731
  self.writeSenderReceiverInterfaceInvalidationPolicies(child_element, sr_interface)
@@ -1736,7 +1739,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1736
1739
  self.setChildElementOptionalRefType(entry_tag, "BSW-MODULE-ENTRY-REF", entry)
1737
1740
 
1738
1741
  def setModeDeclarationGroupPrototype(self, element: ET.Element, prototype: ModeDeclarationGroupPrototype):
1739
- self.setIdentifiable(element, prototype)
1742
+ self.writeIdentifiable(element, prototype)
1740
1743
  self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.type_tref)
1741
1744
 
1742
1745
  def writeProvidedModeGroup(self, element: ET.Element, parent: BswModuleDescription):
@@ -1755,7 +1758,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1755
1758
  self.setChildElementOptionalRefType(child_element, "CAN-ENTER-EXCLUSIVE-AREA-REF", ref)
1756
1759
 
1757
1760
  def setExecutableEntity(self, element: ET.Element, entity: ExecutableEntity):
1758
- self.setIdentifiable(element, entity)
1761
+ self.writeIdentifiable(element, entity)
1759
1762
  self.writeCanEnterExclusiveAreaRefs(element, entity)
1760
1763
  self.setChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL", entity.getMinimumStartInterval())
1761
1764
  self.setChildElementOptionalRefType(element, "SW-ADDR-METHOD-REF", entity.getSwAddrMethodRef())
@@ -1805,7 +1808,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1805
1808
  self.notImplemented("Unsupported BswModuleEntity <%s>" % type(entity))
1806
1809
 
1807
1810
  def setBswEvent(self, element: ET.Element, event: BswEvent):
1808
- self.setIdentifiable(element, event)
1811
+ self.writeIdentifiable(element, event)
1809
1812
  self.setChildElementOptionalRefType(element, "STARTS-ON-EVENT-REF", event.startsOnEventRef)
1810
1813
 
1811
1814
  def setBswScheduleEvent(self, element: ET.Element, event: BswScheduleEvent):
@@ -1872,7 +1875,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1872
1875
  def writeBswModuleDescription(self, element: ET.Element, desc: BswModuleDescription):
1873
1876
  self.logger.debug("writeBswModuleDescription %s" % desc.getShortName())
1874
1877
  child_element = ET.SubElement(element, "BSW-MODULE-DESCRIPTION")
1875
- self.setIdentifiable(child_element, desc)
1878
+ self.writeIdentifiable(child_element, desc)
1876
1879
  self.setChildElementOptionalNumericalValue(child_element, "MODULE-ID", desc.getModuleId())
1877
1880
  self.writerBswModuleDescriptionImplementedEntry(child_element, desc)
1878
1881
  self.writeProvidedModeGroup(child_element, desc)
@@ -1891,7 +1894,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1891
1894
  self.logger.debug("Set SwServiceArg <%s>" % arg.getShortName())
1892
1895
  if arg is not None:
1893
1896
  child_element = ET.SubElement(element, "SW-SERVICE-ARG")
1894
- self.setIdentifiable(child_element, arg)
1897
+ self.writeIdentifiable(child_element, arg)
1895
1898
  self.setChildElementOptionalLiteral(child_element, "DIRECTION", arg.getDirection())
1896
1899
  self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", arg.getSwDataDefProps())
1897
1900
 
@@ -1905,7 +1908,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1905
1908
  def writeBswModuleEntry(self, element: ET.Element, entry: BswModuleEntry):
1906
1909
  self.logger.debug("writeBswModuleDescription %s" % entry.getShortName())
1907
1910
  child_element = ET.SubElement(element, "BSW-MODULE-ENTRY")
1908
- self.setIdentifiable(child_element, entry)
1911
+ self.writeIdentifiable(child_element, entry)
1909
1912
  self.setChildElementOptionalNumericalValue(child_element, "SERVICE-ID", entry.getServiceId())
1910
1913
  self.setChildElementOptionalBooleanValue(child_element, "IS-REENTRANT", entry.getIsReentrant())
1911
1914
  self.setChildElementOptionalBooleanValue(child_element, "IS-SYNCHRONOUS", entry.getIsSynchronous())
@@ -1932,7 +1935,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1932
1935
  def writeSwcBswMapping(self, element: ET.Element, mapping: SwcBswMapping):
1933
1936
  self.logger.debug("writeBswModuleDescription %s" % mapping.getShortName())
1934
1937
  child_element = ET.SubElement(element, "SWC-BSW-MAPPING")
1935
- self.setIdentifiable(child_element, mapping)
1938
+ self.writeIdentifiable(child_element, mapping)
1936
1939
  self.setChildElementOptionalRefType(child_element, "BSW-BEHAVIOR-REF", mapping.getBswBehaviorRef())
1937
1940
  self.writeSwcBswRunnableMappings(child_element, mapping)
1938
1941
  self.setChildElementOptionalRefType(child_element, "SWC-BEHAVIOR-REF", mapping.getSwcBehaviorRef())
@@ -1979,7 +1982,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1979
1982
  sub_elements_tag = ET.SubElement(element, "SUB-ELEMENTS")
1980
1983
  for type_element in sub_elements:
1981
1984
  child_element = ET.SubElement(sub_elements_tag, "IMPLEMENTATION-DATA-TYPE-ELEMENT")
1982
- self.setIdentifiable(child_element, type_element)
1985
+ self.writeIdentifiable(child_element, type_element)
1983
1986
  self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE", type_element.getArraySize())
1984
1987
  self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE-HANDLING", type_element.getArraySizeHandling())
1985
1988
  self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE-SEMANTICS", type_element.getArraySizeSemantics())
@@ -2000,7 +2003,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2000
2003
  arguments_tag = ET.SubElement(element, "ARGUMENTS")
2001
2004
  for prototype in arguments:
2002
2005
  child_element = ET.SubElement(arguments_tag, "ARGUMENT-DATA-PROTOTYPE")
2003
- self.setIdentifiable(child_element, prototype)
2006
+ self.writeIdentifiable(child_element, prototype)
2004
2007
  self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", prototype.swDataDefProps)
2005
2008
  self.setChildElementOptionalRefType(child_element, "TYPE-TREF", prototype.typeTRef)
2006
2009
  self.setChildElementOptionalLiteral(child_element, "DIRECTION", prototype.direction)
@@ -2016,7 +2019,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2016
2019
  def writeClientServerOperation(self, element: ET.Element, operation: ClientServerOperation):
2017
2020
  self.logger.debug("writeClientServerOperation %s" % operation.getShortName())
2018
2021
  child_element = ET.SubElement(element, "CLIENT-SERVER-OPERATION")
2019
- self.setIdentifiable(child_element, operation)
2022
+ self.writeIdentifiable(child_element, operation)
2020
2023
  self.writeArgumentDataPrototypes(child_element, operation)
2021
2024
  self.writePossibleErrorRefs(child_element, operation)
2022
2025
 
@@ -2033,7 +2036,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2033
2036
  def writeApplicationError(self, element: ET.Element, error: ApplicationError):
2034
2037
  self.logger.debug("writeApplicationError %s" % error.getShortName())
2035
2038
  child_element = ET.SubElement(element, "APPLICATION-ERROR")
2036
- self.setIdentifiable(child_element, error)
2039
+ self.writeIdentifiable(child_element, error)
2037
2040
  self.setChildElementOptionalNumericalValue(child_element, "ERROR-CODE", error.error_code)
2038
2041
 
2039
2042
  def writePossibleErrors(self, element: ET.Element, parent: ClientServerInterface):
@@ -2047,7 +2050,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2047
2050
  self._raiseError("Unsupported PossibleError %s" % type(error))
2048
2051
 
2049
2052
  def setPortInterface(self, element: ET.Element, port_interface: PortInterface):
2050
- self.setIdentifiable(element, port_interface)
2053
+ self.writeIdentifiable(element, port_interface)
2051
2054
  self.setChildElementOptionalBooleanValue(element, "IS-SERVICE", port_interface.isService)
2052
2055
  self.setChildElementOptionalLiteral(element, "SERVICE-KIND", port_interface.serviceKind)
2053
2056
 
@@ -2092,7 +2095,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2092
2095
  child_element = ET.SubElement(element, key)
2093
2096
  self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", layout_v.getShortLabel())
2094
2097
  self.setChildElementOptionalRefType(child_element, "BASE-TYPE-REF", layout_v.getBaseTypeRef())
2095
- self.setChildElementOptionalNumericalValue(child_element, "SW-RECORD-LAYOUT-V-AXIS", layout_v.getSwRecordLayoutVAxis())
2098
+ self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-AXIS", layout_v.getSwRecordLayoutVAxis())
2096
2099
  self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-PROP", layout_v.getSwRecordLayoutVProp())
2097
2100
  self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-INDEX", layout_v.getSwRecordLayoutVIndex())
2098
2101
 
@@ -2101,7 +2104,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2101
2104
  child_element = ET.SubElement(element, key)
2102
2105
  self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", group.getShortLabel())
2103
2106
  self.setChildElementOptionalLiteral(child_element, "CATEGORY", group.getCategory())
2104
- self.setChildElementOptionalNumericalValue(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS", group.getSwRecordLayoutGroupAxis())
2107
+ self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS", group.getSwRecordLayoutGroupAxis())
2105
2108
  self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-INDEX", group.getSwRecordLayoutGroupIndex())
2106
2109
  self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-FROM", group.getSwRecordLayoutGroupFrom())
2107
2110
  self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-TO", group.getSwRecordLayoutGroupTo())
@@ -2113,13 +2116,13 @@ class ARXMLWriter(AbstractARXMLWriter):
2113
2116
  def writeSwRecordLayout(self, element: ET.Element, layout: SwRecordLayout):
2114
2117
  self.logger.debug("writeSwRecordLayout %s" % layout.getShortName())
2115
2118
  child_element = ET.SubElement(element, "SW-RECORD-LAYOUT")
2116
- self.setIdentifiable(child_element, layout)
2119
+ self.writeIdentifiable(child_element, layout)
2117
2120
  self.setSwRecordLayoutGroup(child_element, "SW-RECORD-LAYOUT-GROUP", layout.getSwRecordLayoutGroup())
2118
2121
 
2119
2122
  def writeSwAddrMethod(self, element: ET.Element, method: SwAddrMethod):
2120
2123
  self.logger.debug("writeSwAddrMethod %s" % method.getShortName())
2121
2124
  child_element = ET.SubElement(element, "SW-ADDR-METHOD")
2122
- self.setIdentifiable(child_element, method)
2125
+ self.writeIdentifiable(child_element, method)
2123
2126
  self.setChildElementOptionalLiteral(child_element, "MEMORY-ALLOCATION-KEYWORD-POLICY", method.getMemoryAllocationKeywordPolicy())
2124
2127
  options = method.getOptions()
2125
2128
  if len(options) > 0:
@@ -2161,13 +2164,13 @@ class ARXMLWriter(AbstractARXMLWriter):
2161
2164
  def writeDataTypeMappingSet(self, element: ET.Element, mapping_set: DataTypeMappingSet):
2162
2165
  self.logger.debug("writeDataTypeMappingSet %s" % mapping_set.getShortName())
2163
2166
  child_element = ET.SubElement(element, "DATA-TYPE-MAPPING-SET")
2164
- self.setIdentifiable(child_element, mapping_set)
2167
+ self.writeIdentifiable(child_element, mapping_set)
2165
2168
  self.writeDataTypeMaps(child_element, mapping_set)
2166
2169
  self.writeModeRequestTypeMaps(child_element, mapping_set)
2167
2170
 
2168
2171
  def setModeDeclaration(self, element: ET.Element, mode_declaration: ModeDeclaration):
2169
2172
  child_element = ET.SubElement(element, "MODE-DECLARATION")
2170
- self.setIdentifiable(child_element, mode_declaration)
2173
+ self.writeIdentifiable(child_element, mode_declaration)
2171
2174
  self.setChildElementOptionalNumericalValue(child_element, "VALUE", mode_declaration.getValue())
2172
2175
 
2173
2176
  def writeModeDeclarationGroupModeDeclaration(self, element: ET.Element, parent: ModeDeclarationGroup):
@@ -2180,7 +2183,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2180
2183
  def writeModeDeclarationGroup(self, element: ET.Element, group: ModeDeclarationGroup):
2181
2184
  self.logger.debug("writeModeDeclarationGroup %s" % group.getShortName())
2182
2185
  child_element = ET.SubElement(element, "MODE-DECLARATION-GROUP")
2183
- self.setIdentifiable(child_element, group)
2186
+ self.writeIdentifiable(child_element, group)
2184
2187
  self.setChildElementOptionalRefType(child_element, "INITIAL-MODE-REF", group.initialModeRef)
2185
2188
  self.writeModeDeclarationGroupModeDeclaration(child_element, group)
2186
2189
  self.setChildElementOptionalNumericalValue(child_element, "ON-TRANSITION-VALUE", group.getOnTransitionValue())
@@ -2190,7 +2193,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2190
2193
  if len(mode_groups) > 0:
2191
2194
  mode_group = mode_groups[0]
2192
2195
  child_element = ET.SubElement(element, "MODE-GROUP")
2193
- self.setIdentifiable(child_element, mode_group)
2196
+ self.writeIdentifiable(child_element, mode_group)
2194
2197
  self.setChildElementOptionalRefType(child_element, "TYPE-TREF", mode_group.type_tref)
2195
2198
 
2196
2199
  def writeModeSwitchInterface(self, element: ET.Element, mode_interface: ModeSwitchInterface):
@@ -2207,7 +2210,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2207
2210
 
2208
2211
  def writeEOCExecutableEntityRef(self, element: ET.Element, entity_ref: EOCExecutableEntityRef):
2209
2212
  child_element = ET.SubElement(element, "EOC-EXECUTABLE-ENTITY-REF")
2210
- self.setIdentifiable(child_element, entity_ref)
2213
+ self.writeIdentifiable(child_element, entity_ref)
2211
2214
  self.setEOCExecutableEntityRefSuccessorRefs(child_element, entity_ref.getSuccessorRefs())
2212
2215
 
2213
2216
  def writeExecutionOrderConstraintOrderedElement(self, element: ET.Element, constraint: ExecutionOrderConstraint):
@@ -2223,7 +2226,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2223
2226
  def writeExecutionOrderConstraint(self, element: ET.Element, constraint: ExecutionOrderConstraint):
2224
2227
  self.logger.debug("writeExecutionOrderConstraint %s" % constraint.getShortName())
2225
2228
  child_element = ET.SubElement(element, "EXECUTION-ORDER-CONSTRAINT")
2226
- self.setIdentifiable(child_element, constraint)
2229
+ self.writeIdentifiable(child_element, constraint)
2227
2230
  self.writeExecutionOrderConstraintOrderedElement(child_element, constraint)
2228
2231
 
2229
2232
  def writeTimingRequirements(self, element: ET.Element, extension: TimingExtension):
@@ -2242,7 +2245,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2242
2245
  def writeSwcTiming(self, element: ET.Element, timing: SwcTiming):
2243
2246
  self.logger.debug("writeSWcTiming %s" % timing.getShortName())
2244
2247
  child_element = ET.SubElement(element, "SWC-TIMING")
2245
- self.setIdentifiable(child_element, timing)
2248
+ self.writeIdentifiable(child_element, timing)
2246
2249
  self.writeTimingExtension(child_element, timing)
2247
2250
 
2248
2251
  def writePduToFrameMappings(self, element: ET.Element, parent: Frame):
@@ -2251,13 +2254,13 @@ class ARXMLWriter(AbstractARXMLWriter):
2251
2254
  mappings_tags = ET.SubElement(element, "PDU-TO-FRAME-MAPPINGS")
2252
2255
  for mapping in mappings:
2253
2256
  child_element = ET.SubElement(mappings_tags, "PDU-TO-FRAME-MAPPING")
2254
- self.setIdentifiable(child_element, mapping)
2257
+ self.writeIdentifiable(child_element, mapping)
2255
2258
  self.setChildElementOptionalLiteral(child_element, "PACKING-BYTE-ORDER", mapping.packingByteOrder)
2256
2259
  self.setChildElementOptionalRefType(child_element, "PDU-REF", mapping.pduRef)
2257
2260
  self.setChildElementOptionalNumericalValue(child_element, "START-POSITION", mapping.startPosition)
2258
2261
 
2259
2262
  def writeFrame(self, element: ET.Element, frame: Frame):
2260
- self.setIdentifiable(element, frame)
2263
+ self.writeIdentifiable(element, frame)
2261
2264
  self.setChildElementOptionalNumericalValue(element, "FRAME-LENGTH", frame.frameLength)
2262
2265
  self.writePduToFrameMappings(element, frame)
2263
2266
 
@@ -2284,15 +2287,21 @@ class ARXMLWriter(AbstractARXMLWriter):
2284
2287
  self.setChildElementOptionalRefType(refs_tag, "TX-NM-PDU-REF", ref)
2285
2288
 
2286
2289
  def writeCanNmNode(self, element: ET.Element, nm_node: CanNmNode):
2287
- self.logger.debug("writeCanNmNode %s" % nm_node.getShortName())
2290
+ self.logger.debug("write CanNmNode %s" % nm_node.getShortName())
2288
2291
  child_element = ET.SubElement(element, "CAN-NM-NODE")
2289
- self.setIdentifiable(child_element, nm_node)
2292
+ self.writeIdentifiable(child_element, nm_node)
2290
2293
  self.writeNmNode(child_element, nm_node)
2291
2294
 
2292
2295
  self.setChildElementOptionalFloatValue(child_element, "NM-MSG-CYCLE-OFFSET", nm_node.getNmMsgCycleOffset())
2293
2296
  self.setChildElementOptionalFloatValue(child_element, "NM-MSG-REDUCED-TIME", nm_node.getNmMsgReducedTime())
2294
2297
  self.setChildElementRxIdentifierRange(child_element, "NM-RANGE-CONFIG", nm_node.getNmRangeConfig())
2295
2298
 
2299
+ def writeUdpNmNode(self, element: ET.Element, nm_node: UdpNmNode):
2300
+ self.logger.debug("write UdpNmNode %s" % nm_node.getShortName())
2301
+ child_element = ET.SubElement(element, "UDP-NM-NODE")
2302
+ self.writeIdentifiable(child_element, nm_node)
2303
+ self.writeNmNode(child_element, nm_node)
2304
+
2296
2305
  def writeNmClusterNmNodes(self, element: ET.Element, parent: NmCluster):
2297
2306
  nodes = parent.getNmNodes()
2298
2307
  if len(nodes) > 0:
@@ -2300,10 +2309,12 @@ class ARXMLWriter(AbstractARXMLWriter):
2300
2309
  for node in nodes:
2301
2310
  if isinstance(node, CanNmNode):
2302
2311
  self.writeCanNmNode(child_element, node)
2312
+ elif isinstance(node, UdpNmNode):
2313
+ self.writeUdpNmNode(child_element, node)
2303
2314
  else:
2304
- self._raiseError("Unsupported Nm Node <%s>" % type(node))
2315
+ self.notImplemented("Unsupported Nm Node <%s>" % type(node))
2305
2316
 
2306
- def setCanNmClusterCoupling(self, element: ET.Element, coupling: CanNmClusterCoupling):
2317
+ def writeCanNmClusterCoupling(self, element: ET.Element, coupling: CanNmClusterCoupling):
2307
2318
  child_element = ET.SubElement(element, "CAN-NM-CLUSTER-COUPLING")
2308
2319
  refs = coupling.getCoupledClusterRefs()
2309
2320
  if len(refs) > 0:
@@ -2314,6 +2325,9 @@ class ARXMLWriter(AbstractARXMLWriter):
2314
2325
  self.setChildElementOptionalBooleanValue(child_element, "NM-BUSLOAD-REDUCTION-ENABLED", coupling.getNmBusloadReductionEnabled())
2315
2326
  self.setChildElementOptionalBooleanValue(child_element, "NM-IMMEDIATE-RESTART-ENABLED", coupling.getNmImmediateRestartEnabled())
2316
2327
 
2328
+ def writeUdpNmClusterCoupling(self, element: ET.Element, coupling: UdpNmClusterCoupling):
2329
+ child_element = ET.SubElement(element, "UDP-NM-CLUSTER-COUPLING")
2330
+
2317
2331
  def writeNmConfigNmClusterCouplings(self, element: ET.Element, config: NmConfig):
2318
2332
  self.logger.debug("writeNmConfigNmClusterCouplings %s" % config.getShortName())
2319
2333
  couplings = config.getNmClusterCouplings()
@@ -2321,11 +2335,14 @@ class ARXMLWriter(AbstractARXMLWriter):
2321
2335
  child_element= ET.SubElement(element, "NM-CLUSTER-COUPLINGS")
2322
2336
  for coupling in couplings:
2323
2337
  if isinstance(coupling, CanNmClusterCoupling):
2324
- self.setCanNmClusterCoupling(child_element, coupling)
2338
+ self.writeCanNmClusterCoupling(child_element, coupling)
2339
+ elif isinstance(coupling, UdpNmClusterCoupling):
2340
+ self.writeUdpNmClusterCoupling(child_element, coupling)
2325
2341
  else:
2326
- self._raiseError("Unsupported Nm Cluster Coupling <%s>" % type(coupling))
2342
+ self.notImplemented("Unsupported Nm Cluster Coupling <%s>" % type(coupling))
2327
2343
 
2328
2344
  def writeNmCluster(self, element: ET.Element, cluster: NmCluster):
2345
+ self.writeIdentifiable(element, cluster)
2329
2346
  self.setChildElementOptionalRefType(element, "COMMUNICATION-CLUSTER-REF", cluster.communicationClusterRef)
2330
2347
  self.setChildElementOptionalNumericalValue(element, "NM-CHANNEL-ID", cluster.nmChannelId)
2331
2348
  self.setChildElementOptionalBooleanValue(element, "NM-CHANNEL-SLEEP-MASTER", cluster.nmChannelSleepMaster)
@@ -2335,7 +2352,6 @@ class ARXMLWriter(AbstractARXMLWriter):
2335
2352
  def writeCanNmCluster(self, element: ET.Element, cluster: CanNmCluster):
2336
2353
  self.logger.debug("WriteCanNmCluster %s" % cluster.getShortName())
2337
2354
  child_element = ET.SubElement(element, "CAN-NM-CLUSTER")
2338
- self.setIdentifiable(child_element, cluster)
2339
2355
  self.writeNmCluster(child_element, cluster)
2340
2356
 
2341
2357
  self.setChildElementOptionalBooleanValue(child_element, "NM-BUSLOAD-REDUCTION-ACTIVE", cluster.getNmBusloadReductionActive())
@@ -2353,6 +2369,11 @@ class ARXMLWriter(AbstractARXMLWriter):
2353
2369
  self.setChildElementOptionalNumericalValue(child_element, "NM-USER-DATA-LENGTH", cluster.getNmUserDataLength())
2354
2370
  self.setChildElementOptionalFloatValue(child_element, "NM-WAIT-BUS-SLEEP-TIME", cluster.getNmWaitBusSleepTime())
2355
2371
 
2372
+ def writeUdpNmCluster(self, element: ET.Element, cluster: CanNmCluster):
2373
+ self.logger.debug("Write UdpNmCluster %s" % cluster.getShortName())
2374
+ child_element = ET.SubElement(element, "UDP-NM-CLUSTER")
2375
+ self.writeNmCluster(child_element, cluster)
2376
+
2356
2377
  def writeNmConfigNmClusters(self, element: ET.Element, parent: NmConfig):
2357
2378
  clusters = parent.getNmClusters()
2358
2379
  if len(clusters) > 0:
@@ -2360,26 +2381,28 @@ class ARXMLWriter(AbstractARXMLWriter):
2360
2381
  for cluster in clusters:
2361
2382
  if isinstance(cluster, CanNmCluster):
2362
2383
  self.writeCanNmCluster(child_element, cluster)
2384
+ elif isinstance(cluster, UdpNmCluster):
2385
+ self.writeUdpNmCluster(child_element, cluster)
2363
2386
  else:
2364
- self._raiseError("Unsupported Nm Cluster <%s>" % type(cluster))
2387
+ self.notImplemented("Unsupported Nm Cluster <%s>" % type(cluster))
2365
2388
 
2366
2389
  def writeNmConfig(self, element: ET.Element, config: NmConfig):
2367
2390
  self.logger.debug("WriteNmConfig %s" % config.getShortName())
2368
2391
  child_element = ET.SubElement(element, "NM-CONFIG")
2369
- self.setIdentifiable(child_element, config)
2392
+ self.writeIdentifiable(child_element, config)
2370
2393
  self.writeNmConfigNmClusters(child_element, config)
2371
2394
  self.writeNmConfigNmClusterCouplings(child_element, config)
2372
2395
 
2373
2396
  def writeNmPdu(self, element: ET.Element, pdu: NmPdu):
2374
2397
  self.logger.debug("NmPdu %s" % pdu.getShortName())
2375
2398
  child_element = ET.SubElement(element, "NM-PDU")
2376
- self.setIdentifiable(child_element, pdu)
2399
+ self.writeIdentifiable(child_element, pdu)
2377
2400
  self.writeIPdu(child_element, pdu)
2378
2401
 
2379
2402
  def writeNPdu(self, element: ET.Element, pdu: NPdu):
2380
2403
  self.logger.debug("NPdu %s" % pdu.getShortName())
2381
2404
  child_element = ET.SubElement(element, "N-PDU")
2382
- self.setIdentifiable(child_element, pdu)
2405
+ self.writeIdentifiable(child_element, pdu)
2383
2406
  self.writeIPdu(child_element, pdu)
2384
2407
 
2385
2408
  def writeIPdu(self, element: ET.Element, pdu: IPdu):
@@ -2388,20 +2411,20 @@ class ARXMLWriter(AbstractARXMLWriter):
2388
2411
  def writeDcmIPdu(self, element: ET.Element, pdu: DcmIPdu):
2389
2412
  self.logger.debug("DcmIPdu %s" % pdu.getShortName())
2390
2413
  child_element = ET.SubElement(element, "DCM-I-PDU")
2391
- self.setIdentifiable(child_element, pdu)
2414
+ self.writeIdentifiable(child_element, pdu)
2392
2415
  self.writeIPdu(child_element, pdu)
2393
2416
  self.setChildElementOptionalLiteral(child_element, "DIAG-PDU-TYPE", pdu.getDiagPduType())
2394
2417
 
2395
2418
  def writeSecuredIPdu(self, element: ET.Element, pdu: DcmIPdu):
2396
2419
  self.logger.debug("SecuredIPdu %s" % pdu.getShortName())
2397
2420
  child_element = ET.SubElement(element, "SECURED-I-PDU")
2398
- self.setIdentifiable(child_element, pdu)
2421
+ self.writeIdentifiable(child_element, pdu)
2399
2422
  self.writeIPdu(child_element, pdu)
2400
2423
 
2401
2424
  def writeCanTpConfig(self, element: ET.Element, config: CanTpConfig):
2402
2425
  self.logger.debug("CanTpConfig %s" % config.getShortName())
2403
2426
  child_element = ET.SubElement(element, "CAN-TP-CONFIG")
2404
- self.setIdentifiable(child_element, config)
2427
+ self.writeIdentifiable(child_element, config)
2405
2428
 
2406
2429
  def writeFrameTriggering(self, element: ET.Element, triggering: FrameTriggering):
2407
2430
  ref_list = triggering.getFramePortRefs()
@@ -2421,7 +2444,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2421
2444
  def writeCanFrameTriggering(self, element: ET.Element, triggering: CanFrameTriggering):
2422
2445
  self.logger.debug("WRite CanFrameTriggering %s" % triggering.getShortName())
2423
2446
  child_element = ET.SubElement(element, "CAN-FRAME-TRIGGERING")
2424
- self.setIdentifiable(child_element, triggering)
2447
+ self.writeIdentifiable(child_element, triggering)
2425
2448
  self.writeFrameTriggering(child_element, triggering)
2426
2449
  self.setChildElementOptionalLiteral(child_element, "CAN-ADDRESSING-MODE", triggering.getCanAddressingMode())
2427
2450
  self.setChildElementOptionalBooleanValue(child_element, "CAN-FD-FRAME-SUPPORT", triggering.getCanFdFrameSupport())
@@ -2433,7 +2456,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2433
2456
  def writeLinFrameTriggering(self, element: ET.Element, triggering: LinFrameTriggering):
2434
2457
  self.logger.debug("Write LinFrameTriggering %s" % triggering.getShortName())
2435
2458
  child_element = ET.SubElement(element, "LIN-FRAME-TRIGGERING")
2436
- self.setIdentifiable(child_element, triggering)
2459
+ self.writeIdentifiable(child_element, triggering)
2437
2460
  self.writeFrameTriggering(child_element, triggering)
2438
2461
  self.setChildElementOptionalNumericalValue(child_element, "IDENTIFIER", triggering.getIdentifier())
2439
2462
  self.setChildElementOptionalLiteral(child_element, "LIN-CHECKSUM", triggering.getLinChecksum())
@@ -2441,7 +2464,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2441
2464
  def writeISignalTriggering(self, element: ET.Element, triggering: ISignalTriggering):
2442
2465
  self.logger.debug("Write ISignalTriggering %s" % triggering.getShortName())
2443
2466
  child_element = ET.SubElement(element, "I-SIGNAL-TRIGGERING")
2444
- self.setIdentifiable(child_element, triggering)
2467
+ self.writeIdentifiable(child_element, triggering)
2445
2468
  self.setChildElementOptionalRefType(child_element, "I-SIGNAL-GROUP-REF", triggering.getISignalGroupRef())
2446
2469
  ref_list = triggering.getISignalPortRefs()
2447
2470
  if len(ref_list) > 0:
@@ -2453,7 +2476,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2453
2476
  def writePduTriggering(self, element: ET.Element, triggering: PduTriggering):
2454
2477
  self.logger.debug("Write PduTriggering %s" % triggering.getShortName())
2455
2478
  child_element = ET.SubElement(element, "PDU-TRIGGERING")
2456
- self.setIdentifiable(child_element, triggering)
2479
+ self.writeIdentifiable(child_element, triggering)
2457
2480
  ref_list = triggering.getIPduPortRefs()
2458
2481
  if len(ref_list) > 0:
2459
2482
  i_signal_port_refs_tag = ET.SubElement(child_element, "I-PDU-PORT-REFS")
@@ -2505,17 +2528,55 @@ class ARXMLWriter(AbstractARXMLWriter):
2505
2528
  else:
2506
2529
  self.notImplemented("Unsupported PduTriggering <%s>" % type(triggering))
2507
2530
 
2508
- def setCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
2531
+ def writeCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
2509
2532
  self.logger.debug("Set CanPhysicalChannel %s" % channel.getShortName())
2510
2533
  child_element = ET.SubElement(element, "CAN-PHYSICAL-CHANNEL")
2511
- self.setIdentifiable(child_element, channel)
2534
+ self.writeIdentifiable(child_element, channel)
2512
2535
  self.writePhysicalChannel(child_element, channel)
2513
2536
 
2537
+ def writeScheduleTableEntry(self, element: ET.Element, entry: ScheduleTableEntry):
2538
+ self.setChildElementOptionalTimeValue(element, "DELAY", entry.getDelay())
2539
+ self.setChildElementOptionalIntegerValue(element, "POSITION-IN-TABLE", entry.getPositionInTable())
2540
+
2541
+ def setApplicationEntry(self, element: ET.Element, key: str, entry: ApplicationEntry):
2542
+ if entry is not None:
2543
+ child_element = ET.SubElement(element, key)
2544
+ self.writeScheduleTableEntry(child_element, entry)
2545
+ self.setChildElementOptionalRefType(child_element, "FRAME-TRIGGERING-REF", entry.getFrameTriggeringRef())
2546
+
2547
+ def writeLinScheduleTableTableEntries(self, element: ET.Element, table: LinScheduleTable):
2548
+ entries = table.getTableEntries()
2549
+ if len(entries) > 0:
2550
+ child_element = ET.SubElement(element, "TABLE-ENTRYS")
2551
+ for entry in entries:
2552
+ if isinstance(entry, ApplicationEntry):
2553
+ self.setApplicationEntry(child_element, "APPLICATION-ENTRY", entry)
2554
+ else:
2555
+ self.notImplemented("Unsupported Schedule Table <%s>" % type(entry))
2556
+
2557
+ def writeLinScheduleTable(self, element: ET.Element, table: LinScheduleTable):
2558
+ child_element = ET.SubElement(element, "LIN-SCHEDULE-TABLE")
2559
+ self.writeIdentifiable(child_element, table)
2560
+ self.setChildElementOptionalLiteral(child_element, "RESUME-POSITION", table.getResumePosition())
2561
+ self.setChildElementOptionalLiteral(child_element, "RUN-MODE", table.getRunMode())
2562
+ self.writeLinScheduleTableTableEntries(child_element, table)
2563
+
2564
+ def writeLinPhysicalChannelScheduleTables(self, element: ET.Element, channel: LinPhysicalChannel):
2565
+ tables = channel.getScheduleTables()
2566
+ if len(tables) > 0:
2567
+ child_element = ET.SubElement(element, "SCHEDULE-TABLES")
2568
+ for table in tables:
2569
+ if isinstance(table, LinScheduleTable):
2570
+ self.writeLinScheduleTable(child_element, table)
2571
+ else:
2572
+ self.notImplemented("Unsupported Schedule Table <%s>" % type(table))
2573
+
2514
2574
  def writeLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
2515
2575
  self.logger.debug("Set LinPhysicalChannel %s" % channel.getShortName())
2516
2576
  child_element = ET.SubElement(element, "LIN-PHYSICAL-CHANNEL")
2517
- self.setIdentifiable(child_element, channel)
2577
+ self.writeIdentifiable(child_element, channel)
2518
2578
  self.writePhysicalChannel(child_element, channel)
2579
+ self.writeLinPhysicalChannelScheduleTables(child_element, channel)
2519
2580
 
2520
2581
  def setIpv6Configuration(self, element: ET.Element, configuration: Ipv6Configuration):
2521
2582
  if configuration is not None:
@@ -2537,10 +2598,21 @@ class ARXMLWriter(AbstractARXMLWriter):
2537
2598
  else:
2538
2599
  self.notImplemented("Unsupported Network EndPoint Address <%s>" % type(address))
2539
2600
 
2601
+ def setDoIpEntity(self, element: ET.Element, key: str, entity: DoIpEntity):
2602
+ if entity is not None:
2603
+ child_element = ET.SubElement(element, key)
2604
+ self.setChildElementOptionalLiteral(child_element, "DO-IP-ENTITY-ROLE", entity.getDoIpEntityRole())
2605
+
2606
+ def setInfrastructureServices(self, element: ET.Element, key: str, services: InfrastructureServices):
2607
+ if services is not None:
2608
+ child_element = ET.SubElement(element, key)
2609
+ self.setDoIpEntity(child_element, "DO-IP-ENTITY", services.getDoIpEntity())
2610
+
2540
2611
  def writeNetworkEndPoint(self, element: ET.Element, end_point: NetworkEndpoint):
2541
2612
  self.logger.debug("Set NetworkEndpoint %s" % end_point.getShortName())
2542
2613
  child_element = ET.SubElement(element, "NETWORK-ENDPOINT")
2543
- self.setIdentifiable(child_element, end_point)
2614
+ self.writeIdentifiable(child_element, end_point)
2615
+ self.setInfrastructureServices(child_element, "INFRASTRUCTURE-SERVICES", end_point.getInfrastructureServices())
2544
2616
  self.writeNetworkEndPointNetworkEndPointAddresses(child_element, end_point.getNetworkEndpointAddresses())
2545
2617
  self.setChildElementOptionalPositiveInteger(child_element, "PRIORITY", end_point.getPriority())
2546
2618
 
@@ -2571,10 +2643,14 @@ class ARXMLWriter(AbstractARXMLWriter):
2571
2643
  def setSocketConnection(self, element: ET.Element, connection: SocketConnection):
2572
2644
  if connection is not None:
2573
2645
  child_element = ET.SubElement(element, "SOCKET-CONNECTION")
2646
+ self.setChildElementOptionalBooleanValue(child_element, "CLIENT-IP-ADDR-FROM-CONNECTION-REQUEST", connection.getClientIpAddrFromConnectionRequest())
2647
+ self.setChildElementOptionalBooleanValue(child_element, "CLIENT-PORT-FROM-CONNECTION-REQUEST", connection.getClientPortFromConnectionRequest())
2574
2648
  self.setChildElementOptionalRefType(child_element, "CLIENT-PORT-REF", connection.getClientPortRef())
2575
2649
  self.setSocketConnectionPdus(child_element, "PDUS", connection.getPdus())
2576
2650
  self.setChildElementOptionalPositiveInteger(child_element, "PDU-COLLECTION-MAX-BUFFER-SIZE", connection.getPduCollectionMaxBufferSize())
2577
2651
  self.setChildElementOptionalTimeValue(child_element, "PDU-COLLECTION-TIMEOUT", connection.getPduCollectionTimeout())
2652
+ self.setChildElementOptionalLiteral(child_element, "RUNTIME-IP-ADDRESS-CONFIGURATION", connection.getRuntimeIpAddressConfiguration())
2653
+ self.setChildElementOptionalLiteral(child_element, "RUNTIME-PORT-CONFIGURATION", connection.getRuntimePortConfiguration())
2578
2654
  self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", connection.getShortLabel())
2579
2655
 
2580
2656
  def writeSocketConnectionBundleConnections(self, element: ET.Element, bundle: SocketConnectionBundle):
@@ -2604,18 +2680,166 @@ class ARXMLWriter(AbstractARXMLWriter):
2604
2680
  else:
2605
2681
  self.notImplemented("Unsupported Connection Bundle <%s>" % type(bundle))
2606
2682
 
2607
- def setSoAdConfig(self, element: ET.Element, key: str, config: SoAdConfig):
2683
+ def setTpPort(self, element: ET.SubElement, key: str, port: TpPort):
2684
+ if port is not None:
2685
+ child_element = ET.SubElement(element, key)
2686
+ self.setChildElementOptionalBooleanValue(child_element, "DYNAMICALLY-ASSIGNED", port.getDynamicallyAssigned())
2687
+ self.setChildElementOptionalPositiveInteger(child_element, "PORT-NUMBER", port.getPortNumber())
2688
+
2689
+ def writeUdpTp(self, element: ET.Element, tp: UdpTp):
2690
+ child_element = ET.SubElement(element, "UDP-TP")
2691
+ self.setTpPort(child_element, "UDP-TP-PORT", tp.getUdpTpPort())
2692
+
2693
+ def writeTcpTp(self, element: ET.Element, tp: TcpTp):
2694
+ child_element = ET.SubElement(element, "TCP-TP")
2695
+ self.setChildElementOptionalTimeValue(child_element, "KEEP-ALIVE-INTERVAL", tp.getKeepAliveInterval())
2696
+ self.setChildElementOptionalPositiveInteger(child_element, "KEEP-ALIVE-PROBES-MAX", tp.getKeepAliveProbesMax())
2697
+ self.setChildElementOptionalTimeValue(child_element, "KEEP-ALIVE-TIME", tp.getKeepAliveTime())
2698
+ self.setChildElementOptionalBooleanValue(child_element, "KEEP-ALIVES", tp.getKeepAlives())
2699
+ self.setChildElementOptionalLiteral(child_element, "NAGLES-ALGORITHM", tp.getNaglesAlgorithm())
2700
+ self.setTpPort(child_element, "TCP-TP-PORT", tp.getTcpTpPort())
2701
+
2702
+ def writeGenericTp(self, element: ET.Element, tp: GenericTp):
2703
+ child_element = ET.SubElement(element, "GENERIC-TP")
2704
+ self.setChildElementOptionalLiteral(child_element, "TP-ADDRESS", tp.getTpAddress())
2705
+ self.setChildElementOptionalLiteral(child_element, "TP-TECHNOLOGY", tp.getTpTechnology())
2706
+
2707
+ def writeTransportProtocolConfiguration(self, element: ET.Element, configuration: TransportProtocolConfiguration):
2708
+ if configuration is not None:
2709
+ child_element = ET.SubElement(element, "TP-CONFIGURATION")
2710
+ if isinstance(configuration, UdpTp):
2711
+ self.writeUdpTp(child_element, configuration)
2712
+ elif isinstance(configuration, TcpTp):
2713
+ self.writeTcpTp(child_element, configuration)
2714
+ elif isinstance(configuration, GenericTp):
2715
+ self.writeGenericTp(child_element, configuration)
2716
+ else:
2717
+ self.notImplemented("Unsupported TransportProtocolConfiguration <%s>" % type(configuration))
2718
+
2719
+ return configuration
2720
+
2721
+ def writeConsumedEventGroupRoutingGroupRefs(self, element: ET.Element, group: ConsumedEventGroup):
2722
+ refs = group.getRoutingGroupRefs()
2723
+ if len(refs) > 0:
2724
+ child_element = ET.SubElement(element, "ROUTING-GROUP-REFS")
2725
+ for ref in refs:
2726
+ self.setChildElementOptionalRefType(child_element, "ROUTING-GROUP-REF", ref)
2727
+
2728
+ def setRequestResponseDelay(self, element: ET.Element, key: str, delay: RequestResponseDelay):
2729
+ if delay is not None:
2730
+ child_element = ET.SubElement(element, key)
2731
+ self.setChildElementOptionalTimeValue(child_element, "MAX-VALUE", delay.getMaxValue())
2732
+ self.setChildElementOptionalTimeValue(child_element, "MIN-VALUE", delay.getMinValue())
2733
+
2734
+ def setInitialSdDelayConfig(self, element: ET.Element, key: str, config: InitialSdDelayConfig):
2735
+ if config is not None:
2736
+ child_element = ET.SubElement(element, key)
2737
+ self.setChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MAX-VALUE", config.getInitialDelayMaxValue())
2738
+ self.setChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MIN-VALUE", config.getInitialDelayMinValue())
2739
+ self.setChildElementOptionalTimeValue(child_element, "INITIAL-REPETITIONS-BASE-DELAY", config.getInitialRepetitionsBaseDelay())
2740
+ self.setChildElementOptionalPositiveInteger(child_element, "INITIAL-REPETITIONS-MAX", config.getInitialRepetitionsMax())
2741
+
2742
+ def setSdClientConfig(self, element: ET.Element, key: str, config: SdClientConfig):
2743
+ if config is not None:
2744
+ child_element = ET.SubElement(element, key)
2745
+
2746
+ self.setChildElementOptionalPositiveInteger(child_element, "CLIENT-SERVICE-MAJOR-VERSION", config.getClientServiceMajorVersion())
2747
+ self.setChildElementOptionalPositiveInteger(child_element, "CLIENT-SERVICE-MINOR-VERSION", config.getClientServiceMinorVersion())
2748
+ self.setInitialSdDelayConfig(child_element, "INITIAL-FIND-BEHAVIOR", config.getInitialFindBehavior())
2749
+ self.setRequestResponseDelay(child_element, "REQUEST-RESPONSE-DELAY", config.getRequestResponseDelay())
2750
+ self.setChildElementOptionalPositiveInteger(child_element, "TTL", config.getTtl())
2751
+
2752
+ def writeConsumedEventGroup(self, element: ET.Element, group: ConsumedEventGroup):
2753
+ child_element = ET.SubElement(element, "CONSUMED-EVENT-GROUP")
2754
+ self.writeIdentifiable(child_element, group)
2755
+ self.setChildElementOptionalRefType(child_element, "APPLICATION-ENDPOINT-REF", group.getApplicationEndpointRef())
2756
+ self.setChildElementOptionalPositiveInteger(child_element, "EVENT-GROUP-IDENTIFIER", group.getEventGroupIdentifier())
2757
+ self.writeConsumedEventGroupRoutingGroupRefs(child_element, group)
2758
+ self.setSdClientConfig(child_element, "SD-CLIENT-CONFIG", group.getSdClientConfig())
2759
+
2760
+ def writeConsumedServiceInstanceConsumedEventGroups(self, element: ET.Element, instance: ConsumedServiceInstance):
2761
+ groups = instance.getConsumedEventGroups()
2762
+ if len(groups) > 0:
2763
+ child_element = ET.SubElement(element, "CONSUMED-EVENT-GROUPS")
2764
+ for group in groups:
2765
+ if isinstance(group, ConsumedEventGroup):
2766
+ self.writeConsumedEventGroup(child_element, group)
2767
+ else:
2768
+ self.notImplemented("Unsupported ConsumedEventGroups <%s>" % type(group))
2769
+
2770
+ def writeConsumedServiceInstance(self, element: ET.Element, instance: ConsumedServiceInstance):
2771
+ child_element = ET.SubElement(element, "CONSUMED-SERVICE-INSTANCE")
2772
+ self.writeIdentifiable(child_element, instance)
2773
+ self.writeConsumedServiceInstanceConsumedEventGroups(child_element, instance)
2774
+ self.setChildElementOptionalRefType(child_element, "PROVIDED-SERVICE-INSTANCE-REF", instance.getProvidedServiceInstanceRef())
2775
+ self.setSdClientConfig(child_element, "SD-CLIENT-CONFIG", instance.getSdClientConfig())
2776
+
2777
+ def writeSocketAddressApplicationEndpointConsumedServiceInstances(self, element: ET.Element, end_point: ApplicationEndpoint):
2778
+ instances = end_point.getConsumedServiceInstances()
2779
+ if len(instances) > 0:
2780
+ child_element = ET.SubElement(element, "CONSUMED-SERVICE-INSTANCES")
2781
+ for instance in instances:
2782
+ if isinstance(instance, ConsumedServiceInstance):
2783
+ self.writeConsumedServiceInstance(child_element, instance)
2784
+ else:
2785
+ self.notImplemented("Unsupported ConsumedServiceInstances <%s>" % type(instance))
2786
+
2787
+ def writeSocketAddressApplicationEndpoint(self, element: ET.Element, address: SocketAddress):
2788
+ end_point = address.getApplicationEndpoint()
2789
+ if end_point is not None:
2790
+ child_element = ET.SubElement(element, "APPLICATION-ENDPOINT")
2791
+ self.writeIdentifiable(child_element, end_point)
2792
+ self.writeSocketAddressApplicationEndpointConsumedServiceInstances(child_element, end_point)
2793
+ self.setChildElementOptionalRefType(child_element, "NETWORK-ENDPOINT-REF", end_point.getNetworkEndpointRef())
2794
+ self.setChildElementOptionalPositiveInteger(child_element, "PRIORITY", end_point.getPriority())
2795
+ self.writeTransportProtocolConfiguration(child_element, end_point.getTpConfiguration())
2796
+
2797
+ def writeSocketAddressMulticastConnectorRefs(self, element: ET.Element, address: SocketAddress):
2798
+ refs = address.getMulticastConnectorRefs()
2799
+ if len(refs) > 0:
2800
+ child_element = ET.SubElement(element, "MULTICAST-CONNECTOR-REFS")
2801
+ for ref in refs:
2802
+ self.setChildElementOptionalRefType(child_element, "MULTICAST-CONNECTOR-REF", ref)
2803
+
2804
+ def writeSocketAddress(self, element: ET.Element, address: SocketAddress):
2805
+ child_element = ET.SubElement(element, "SOCKET-ADDRESS")
2806
+ self.writeIdentifiable(child_element, address)
2807
+ self.writeSocketAddressApplicationEndpoint(child_element, address)
2808
+ self.writeSocketAddressMulticastConnectorRefs(child_element, address)
2809
+ self.setChildElementOptionalRefType(child_element, "CONNECTOR-REF", address.getConnectorRef())
2810
+ self.setChildElementOptionalPositiveInteger(child_element, "PORT-ADDRESS", address.getPortAddress())
2811
+
2812
+ def writeSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
2813
+ addresses = config.getSocketAddresses()
2814
+ if len(addresses) > 0:
2815
+ child_element = ET.SubElement(element, "SOCKET-ADDRESSS")
2816
+ for address in addresses:
2817
+ if isinstance(address, SocketAddress):
2818
+ self.writeSocketAddress(child_element, address)
2819
+ else:
2820
+ self.notImplemented("Unsupported Socket Address <%s>" % type(address))
2821
+
2822
+ def writeSoAdConfig(self, element: ET.Element, key: str, config: SoAdConfig):
2608
2823
  if config is not None:
2609
2824
  child_element = ET.SubElement(element, key)
2610
2825
  self.writeSoAdConfigConnectionBundles(child_element, config)
2826
+ self.writeSoAdConfigSocketAddresses(child_element, config)
2827
+
2828
+ def writeEthernetPhysicalChannelVlan(self, element: ET.Element, channel: EthernetPhysicalChannel):
2829
+ vlan = channel.getVlan()
2830
+ if vlan is not None:
2831
+ child_element = ET.SubElement(element, "VLAN")
2832
+ self.writeIdentifiable(child_element, vlan)
2833
+ self.setChildElementOptionalPositiveInteger(child_element, "VLAN-IDENTIFIER", vlan.getVlanIdentifier())
2611
2834
 
2612
- def setEthernetPhysicalChannel(self, element: ET.Element, channel: EthernetPhysicalChannel):
2835
+ def writeEthernetPhysicalChannel(self, element: ET.Element, channel: EthernetPhysicalChannel):
2613
2836
  self.logger.debug("Set EthernetPhysicalChannel %s" % channel.getShortName())
2614
2837
  child_element = ET.SubElement(element, "ETHERNET-PHYSICAL-CHANNEL")
2615
- self.setIdentifiable(child_element, channel)
2838
+ self.writeIdentifiable(child_element, channel)
2616
2839
  self.writePhysicalChannel(child_element, channel)
2617
2840
  self.writeEthernetPhysicalChannelNetworkEndPoints(child_element, channel.getNetworkEndpoints())
2618
- self.setSoAdConfig(child_element, "SO-AD-CONFIG", channel.getSoAdConfig())
2841
+ self.writeSoAdConfig(child_element, "SO-AD-CONFIG", channel.getSoAdConfig())
2842
+ self.writeEthernetPhysicalChannelVlan(child_element, channel)
2619
2843
 
2620
2844
  def writeCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
2621
2845
  channels = cluster.getPhysicalChannels()
@@ -2623,11 +2847,11 @@ class ARXMLWriter(AbstractARXMLWriter):
2623
2847
  child_element = ET.SubElement(element, "PHYSICAL-CHANNELS")
2624
2848
  for channel in channels:
2625
2849
  if isinstance(channel, CanPhysicalChannel):
2626
- self.setCanPhysicalChannel(child_element, channel)
2850
+ self.writeCanPhysicalChannel(child_element, channel)
2627
2851
  elif isinstance(channel, LinPhysicalChannel):
2628
2852
  self.writeLinPhysicalChannel(child_element, channel)
2629
2853
  elif isinstance(channel, EthernetPhysicalChannel):
2630
- self.setEthernetPhysicalChannel(child_element, channel)
2854
+ self.writeEthernetPhysicalChannel(child_element, channel)
2631
2855
  else:
2632
2856
  self.notImplemented("Unsupported Physical Channel <%s>" % type(channel))
2633
2857
 
@@ -2637,14 +2861,22 @@ class ARXMLWriter(AbstractARXMLWriter):
2637
2861
  self.setChildElementOptionalLiteral(element, "PROTOCOL-NAME", cluster.getProtocolName())
2638
2862
  self.setChildElementOptionalLiteral(element, "PROTOCOL-VERSION", cluster.getProtocolVersion())
2639
2863
 
2640
- def readAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
2864
+ def setCanClusterBusOffRecovery(self, element: ET.Element, key: str, recovery: CanClusterBusOffRecovery):
2865
+ if recovery is not None:
2866
+ child_element = ET.SubElement(element, key)
2867
+ self.setChildElementOptionalPositiveInteger(child_element, "BOR-COUNTER-L-1-TO-L-2", recovery.getBorCounterL1ToL2())
2868
+ self.setChildElementOptionalTimeValue(child_element, "BOR-TIME-L-1", recovery.getBorTimeL1())
2869
+ self.setChildElementOptionalTimeValue(child_element, "BOR-TIME-L-2", recovery.getBorTimeL2())
2870
+
2871
+ def writeAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
2872
+ self.setCanClusterBusOffRecovery(element, "BUS-OFF-RECOVERY", cluster.getBusOffRecovery())
2641
2873
  self.setChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE", cluster.getCanFdBaudrate())
2642
2874
  self.setChildElementOptionalNumericalValue(element, "SPEED", cluster.getSpeed())
2643
2875
 
2644
2876
  def writeLinCluster(self, element: ET.Element, cluster: LinCluster):
2645
2877
  self.logger.debug("LinCluster %s" % cluster.getShortName())
2646
2878
  child_element = ET.SubElement(element, "LIN-CLUSTER")
2647
- self.setIdentifiable(child_element, cluster)
2879
+ self.writeIdentifiable(child_element, cluster)
2648
2880
  child_element = ET.SubElement(child_element, "LIN-CLUSTER-VARIANTS")
2649
2881
  child_element = ET.SubElement(child_element, "LIN-CLUSTER-CONDITIONAL")
2650
2882
  self.writeCommunicationCluster(child_element, cluster)
@@ -2652,12 +2884,12 @@ class ARXMLWriter(AbstractARXMLWriter):
2652
2884
  def writeCanCluster(self, element: ET.Element, cluster: CanCluster):
2653
2885
  self.logger.debug("CanCluster %s" % cluster.getShortName())
2654
2886
  child_element = ET.SubElement(element, "CAN-CLUSTER")
2655
- self.setIdentifiable(child_element, cluster)
2887
+ self.writeIdentifiable(child_element, cluster)
2656
2888
 
2657
2889
  child_element = ET.SubElement(child_element, "CAN-CLUSTER-VARIANTS")
2658
2890
  child_element = ET.SubElement(child_element, "CAN-CLUSTER-CONDITIONAL")
2659
2891
  self.writeCommunicationCluster(child_element, cluster)
2660
- self.readAbstractCanCluster(child_element, cluster)
2892
+ self.writeAbstractCanCluster(child_element, cluster)
2661
2893
 
2662
2894
  def writeEthernetCluster(self, element: ET.Element, cluster: EthernetCluster):
2663
2895
  self.logger.debug("Set EthernetCluster %s" % cluster.getShortName())
@@ -2674,7 +2906,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2674
2906
  self.writeFrame(child_element, frame)
2675
2907
 
2676
2908
  def writeCommConnectorPort(self, element: ET.Element, port: CommConnectorPort):
2677
- self.setIdentifiable(element, port)
2909
+ self.writeIdentifiable(element, port)
2678
2910
  self.setChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION", port.getCommunicationDirection())
2679
2911
 
2680
2912
  def writeFramePort(self, element: ET.Element, port: FramePort):
@@ -2704,30 +2936,32 @@ class ARXMLWriter(AbstractARXMLWriter):
2704
2936
  else:
2705
2937
  self._raiseError("Unsupported CommConnectorPort <%s>" % type(port))
2706
2938
 
2707
- def setCanCommunicationController(self, element: ET.Element, controller: CanCommunicationController):
2939
+ def writeCanCommunicationController(self, element: ET.Element, controller: CanCommunicationController):
2940
+ child_element = ET.SubElement(element, "CAN-COMMUNICATION-CONTROLLER")
2708
2941
  self.logger.debug("Write CanCommunicationController %s" % controller.getShortName())
2709
- self.setIdentifiable(element, controller)
2942
+ self.writeIdentifiable(child_element, controller)
2710
2943
 
2711
- def setEthernetCommunicationController(self, element: ET.Element, controller: EthernetCommunicationController):
2944
+ def writeEthernetCommunicationController(self, element: ET.Element, controller: EthernetCommunicationController):
2945
+ child_element = ET.SubElement(element, "ETHERNET-COMMUNICATION-CONTROLLER")
2712
2946
  self.logger.debug("Write EthernetCommunicationController %s" % controller.getShortName())
2713
- self.setIdentifiable(element, controller)
2947
+ self.writeIdentifiable(child_element, controller)
2714
2948
 
2715
2949
  def writeEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
2716
2950
  controllers = instance.getCommControllers()
2717
2951
  if len(controllers) > 0:
2718
- controllers_tag = ET.SubElement(element, "COMM-CONTROLLERS")
2952
+ child_element = ET.SubElement(element, "COMM-CONTROLLERS")
2719
2953
  for controller in controllers:
2720
2954
  if isinstance(controller, CanCommunicationController):
2721
- child_element = ET.SubElement(controllers_tag, "CAN-COMMUNICATION-CONTROLLER")
2722
- self.setCanCommunicationController(child_element, controller)
2955
+ self.writeCanCommunicationController(child_element, controller)
2723
2956
  elif isinstance(controller, EthernetCommunicationController):
2724
- child_element = ET.SubElement(controllers_tag, "ETHERNET-COMMUNICATION-CONTROLLER")
2725
- self.setEthernetCommunicationController(child_element, controller)
2957
+ self.writeEthernetCommunicationController(child_element, controller)
2958
+ elif isinstance(controller, LinMaster):
2959
+ self.writeLinMaster(child_element, controller)
2726
2960
  else:
2727
2961
  self.notImplemented("Unsupported Communication Controller <%s>" % type(controller))
2728
2962
 
2729
2963
  def writeCommunicationConnector(self, element: ET.Element, connector: CommunicationConnector):
2730
- self.setIdentifiable(element, connector)
2964
+ self.writeIdentifiable(element, connector)
2731
2965
  self.setChildElementOptionalRefType(element, "COMM-CONTROLLER-REF", connector.getCommControllerRef())
2732
2966
  self.writeCommunicationConnectorEcuCommPortInstances(element, connector)
2733
2967
 
@@ -2739,6 +2973,10 @@ class ARXMLWriter(AbstractARXMLWriter):
2739
2973
  self.logger.debug("Write EthernetCommunicationConnector %s" % connector.getShortName())
2740
2974
  self.writeCommunicationConnector(element, connector)
2741
2975
 
2976
+ def writeLinCommunicationConnector(self, element: ET.Element, connector: LinCommunicationConnector):
2977
+ self.logger.debug("Write LinCommunicationConnector %s" % connector.getShortName())
2978
+ self.writeCommunicationConnector(element, connector)
2979
+
2742
2980
  def writeEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
2743
2981
  connectors = instance.getConnectors()
2744
2982
  if len(connectors) > 0:
@@ -2750,13 +2988,16 @@ class ARXMLWriter(AbstractARXMLWriter):
2750
2988
  elif isinstance(connector, EthernetCommunicationConnector):
2751
2989
  child_element = ET.SubElement(connectors_tag, "ETHERNET-COMMUNICATION-CONNECTOR")
2752
2990
  self.writeEthernetCommunicationConnector(child_element, connector)
2991
+ elif isinstance(connector, LinCommunicationConnector):
2992
+ child_element = ET.SubElement(connectors_tag, "LIN-COMMUNICATION-CONNECTOR")
2993
+ self.writeLinCommunicationConnector(child_element, connector)
2753
2994
  else:
2754
2995
  self._raiseError("Unsupported Communication connector <%s>" % type(connector))
2755
2996
 
2756
2997
  def writeEcuInstance(self, element: ET.Element, instance: EcuInstance):
2757
2998
  self.logger.debug("EcuInstance %s" % instance.getShortName())
2758
2999
  child_element = ET.SubElement(element, "ECU-INSTANCE")
2759
- self.setIdentifiable(child_element, instance)
3000
+ self.writeIdentifiable(child_element, instance)
2760
3001
  self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-GW-TIME-BASE", instance.getComConfigurationGwTimeBase())
2761
3002
  self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-RX-TIME-BASE", instance.getComConfigurationRxTimeBase())
2762
3003
  self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-TX-TIME-BASE", instance.getComConfigurationTxTimeBase())
@@ -2769,7 +3010,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2769
3010
  def writeSystemSignalGroup(self, element: ET.Element, group: SystemSignalGroup):
2770
3011
  self.logger.debug("Write SystemSignalGroup %s" % group.getShortName())
2771
3012
  child_element = ET.SubElement(element, "SYSTEM-SIGNAL-GROUP")
2772
- self.setIdentifiable(child_element, group)
3013
+ self.writeIdentifiable(child_element, group)
2773
3014
  signal_refs = group.getSystemSignalRefs()
2774
3015
  if len(signal_refs) > 0:
2775
3016
  signal_refs_tag = ET.SubElement(child_element, "SYSTEM-SIGNAL-REFS")
@@ -2801,7 +3042,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2801
3042
 
2802
3043
  def setSwcToEcuMapping(self, element: ET.Element, mapping: SwcToEcuMapping):
2803
3044
  child_element = ET.SubElement(element, "SWC-TO-ECU-MAPPING")
2804
- self.setIdentifiable(child_element, mapping)
3045
+ self.writeIdentifiable(child_element, mapping)
2805
3046
  irefs = mapping.getComponentIRefs()
2806
3047
  if len(irefs) > 0:
2807
3048
  irefs_tag = ET.SubElement(child_element, "COMPONENT-IREFS")
@@ -2822,7 +3063,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2822
3063
  def writeSystemMapping(self, element: ET.Element, mapping: SystemMapping):
2823
3064
  self.logger.debug("Write SystemMapping %s" % mapping.getShortName())
2824
3065
  child_element = ET.SubElement(element, "SYSTEM-MAPPING")
2825
- self.setIdentifiable(child_element, mapping)
3066
+ self.writeIdentifiable(child_element, mapping)
2826
3067
  self.writeSystemMappingDataMappings(child_element, mapping)
2827
3068
  self.writeSystemMappingSwMappings(child_element, mapping)
2828
3069
 
@@ -2842,7 +3083,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2842
3083
  self.logger.debug("Write RootSwCompositionPrototype <%s>" % prototype.getShortName())
2843
3084
  child_element = ET.SubElement(element, "ROOT-SOFTWARE-COMPOSITIONS")
2844
3085
  child_element = ET.SubElement(child_element, "ROOT-SW-COMPOSITION-PROTOTYPE")
2845
- self.setIdentifiable(child_element, prototype)
3086
+ self.writeIdentifiable(child_element, prototype)
2846
3087
  self.setChildElementOptionalRefType(child_element, "FLAT-MAP-REF", prototype.getFlatMapRef())
2847
3088
  self.setChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF", prototype.getSoftwareCompositionTRef())
2848
3089
 
@@ -2874,7 +3115,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2874
3115
  def setFlatInstanceDescriptor(self, element: ET.Element, desc: FlatInstanceDescriptor):
2875
3116
  self.logger.debug("Set FlatInstanceDescriptor %s" % desc.getShortName())
2876
3117
  child_element = ET.SubElement(element, "FLAT-INSTANCE-DESCRIPTOR")
2877
- self.setIdentifiable(child_element, desc)
3118
+ self.writeIdentifiable(child_element, desc)
2878
3119
  self.setAnyInstanceRef(child_element, "UPSTREAM-REFERENCE-IREF", desc.getUpstreamReferenceIRef())
2879
3120
  self.setAnyInstanceRef(child_element, "ECU-EXTRACT-REFERENCE-IREF", desc.getEcuExtractReferenceIRef())
2880
3121
 
@@ -2908,7 +3149,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2908
3149
  def setVariableAndParameterInterfaceMapping(self, element: ET.Element, mapping: VariableAndParameterInterfaceMapping):
2909
3150
  self.logger.debug("set VariableAndParameterInterfaceMapping %s" % mapping.getShortName())
2910
3151
  child_element = ET.SubElement(element, "VARIABLE-AND-PARAMETER-INTERFACE-MAPPING")
2911
- self.setIdentifiable(child_element, mapping)
3152
+ self.writeIdentifiable(child_element, mapping)
2912
3153
  self.setDataPrototypeMappings(child_element, "DATA-MAPPINGS", mapping.getDataMappings())
2913
3154
 
2914
3155
  def writePortInterfaceMappings(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
@@ -2938,14 +3179,14 @@ class ARXMLWriter(AbstractARXMLWriter):
2938
3179
  def writeGateway(self, element: ET.Element, gateway: Gateway):
2939
3180
  self.logger.debug("Gateway %s" % gateway.getShortName())
2940
3181
  child_element = ET.SubElement(element, "GATEWAY")
2941
- self.setIdentifiable(child_element, gateway)
3182
+ self.writeIdentifiable(child_element, gateway)
2942
3183
  self.setChildElementOptionalRefType(child_element, "ECU-REF", gateway.ecuRef)
2943
3184
  self.setISignalMappings(child_element, gateway.getSignalMappings())
2944
3185
 
2945
3186
  def writeISignal(self, element: ET.Element, signal: ISignal):
2946
3187
  self.logger.debug("ISignal %s" % signal.getShortName())
2947
3188
  child_element = ET.SubElement(element, "I-SIGNAL")
2948
- self.setIdentifiable(child_element, signal)
3189
+ self.writeIdentifiable(child_element, signal)
2949
3190
  self.setChildElementOptionalLiteral(child_element, "DATA-TYPE-POLICY", signal.getDataTypePolicy())
2950
3191
  self.setChildElementOptionalLiteral(child_element, "I-SIGNAL-TYPE", signal.getISignalType())
2951
3192
  self.setValueSpecification(child_element, "INIT-VALUE", signal.getInitValue())
@@ -2964,7 +3205,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2964
3205
  def writeEcucValueCollection(self, element: ET.Element, collection: EcucValueCollection):
2965
3206
  self.logger.debug("EcucValueCollection %s" % collection.getShortName())
2966
3207
  child_element = ET.SubElement(element, "ECUC-VALUE-COLLECTION")
2967
- self.setIdentifiable(child_element, collection)
3208
+ self.writeIdentifiable(child_element, collection)
2968
3209
  self.setChildElementOptionalRefType(child_element, "ECU-EXTRACT-REF", collection.getEcuExtractRef())
2969
3210
  self.writeEcucValueCollectionEcucValues(child_element, collection)
2970
3211
 
@@ -3044,7 +3285,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3044
3285
  def writeEcucContainValue(self, element: ET.Element, container_value: EcucContainerValue):
3045
3286
  self.logger.debug("EcucContainerValue %s" % container_value.getShortName())
3046
3287
  child_element = ET.SubElement(element, "ECUC-CONTAINER-VALUE")
3047
- self.setIdentifiable(child_element, container_value)
3288
+ self.writeIdentifiable(child_element, container_value)
3048
3289
  self.setChildElementOptionalRefType(child_element, "DEFINITION-REF", container_value.getDefinitionRef())
3049
3290
  self.writeEcucContainerValueParameterValues(child_element, container_value)
3050
3291
  self.writeEcucContainerValueReferenceValues(child_element, container_value)
@@ -3063,7 +3304,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3063
3304
  def writeEcucModuleConfigurationValues(self, element: ET.Element, values: EcucModuleConfigurationValues):
3064
3305
  self.logger.debug("EcucModuleConfigurationValues %s" % values.getShortName())
3065
3306
  child_element = ET.SubElement(element, "ECUC-MODULE-CONFIGURATION-VALUES")
3066
- self.setIdentifiable(child_element, values)
3307
+ self.writeIdentifiable(child_element, values)
3067
3308
  self.setChildElementOptionalRefType(child_element, "DEFINITION-REF", values.getDefinitionRef())
3068
3309
  self.setChildElementOptionalLiteral(child_element, "IMPLEMENTATION-CONFIG-VARIANT", values.getImplementationConfigVariant())
3069
3310
  self.setChildElementOptionalRefType(child_element, "MODULE-DESCRIPTION-REF", values.getModuleDescriptionRef())
@@ -3072,7 +3313,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3072
3313
  def writeISignalGroup(self, element: ET.Element, group: ISignalGroup):
3073
3314
  self.logger.debug("ISignalGroup %s" % group.getShortName())
3074
3315
  child_element = ET.SubElement(element, "I-SIGNAL-GROUP")
3075
- self.setIdentifiable(child_element, group)
3316
+ self.writeIdentifiable(child_element, group)
3076
3317
  signal_refs = group.getISignalRefs()
3077
3318
  if len(signal_refs) > 0:
3078
3319
  signal_refs_tag = ET.SubElement(child_element, "I-SIGNAL-REFS")
@@ -3083,7 +3324,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3083
3324
  def writeISignalIPduGroup(self, element: ET.Element, group: ISignalIPduGroup):
3084
3325
  self.logger.debug("Set ISignalIPduGroup %s" % group.getShortName())
3085
3326
  child_element = ET.SubElement(element, "I-SIGNAL-I-PDU-GROUP")
3086
- self.setIdentifiable(child_element, group)
3327
+ self.writeIdentifiable(child_element, group)
3087
3328
  self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-DIRECTION", group.getCommunicationDirection())
3088
3329
  self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-MODE", group.getCommunicationMode())
3089
3330
  group_refs = group.getContainedISignalIPduGroupRefs()
@@ -3101,19 +3342,84 @@ class ARXMLWriter(AbstractARXMLWriter):
3101
3342
  def writeSystemSignal(self, element: ET.Element, signal: SystemSignal):
3102
3343
  self.logger.debug("SystemSignal %s" % signal.getShortName())
3103
3344
  child_element = ET.SubElement(element, "SYSTEM-SIGNAL")
3104
- self.setIdentifiable(child_element, signal)
3345
+ self.writeIdentifiable(child_element, signal)
3105
3346
  self.setChildElementOptionalBooleanValue(child_element, "DYNAMIC-LENGTH", signal.getDynamicLength())
3106
3347
  self.setSwDataDefProps(child_element, "PHYSICAL-PROPS", signal.getPhysicalProps())
3107
3348
 
3108
- def writeGenericEthernetFrame(self, element: ET.Element, signal: GenericEthernetFrame):
3109
- self.logger.debug("Write GenericEthernetFrame %s" % signal.getShortName())
3349
+ def writeGenericEthernetFrame(self, element: ET.Element, frame: GenericEthernetFrame):
3350
+ self.logger.debug("Write GenericEthernetFrame %s" % frame.getShortName())
3110
3351
  child_element = ET.SubElement(element, "ETHERNET-FRAME")
3111
- self.writeFrame(child_element, signal)
3352
+ self.writeFrame(child_element, frame)
3112
3353
 
3113
3354
  def writeLifeCycleInfoSet(self, element: ET.Element, set: LifeCycleInfoSet):
3114
3355
  self.logger.debug("Write LifeCycleInfoSet %s" % set.getShortName())
3115
3356
  child_element = ET.SubElement(element, "LIFE-CYCLE-INFO-SET")
3116
- self.setIdentifiable(child_element, set)
3357
+ self.writeIdentifiable(child_element, set)
3358
+
3359
+ def writeDiagnosticConnectionFunctionalRequestRefs(self, element: ET.Element, connection: DiagnosticConnection):
3360
+ refs = connection.getFunctionalRequestRefs()
3361
+ if len(refs) > 0:
3362
+ refs_tag = ET.SubElement(element, "FUNCTIONAL-REQUEST-REFS")
3363
+ for ref in refs:
3364
+ self.setChildElementOptionalRefType(refs_tag, "FUNCTIONAL-REQUEST-REF", ref)
3365
+
3366
+ def writeDiagnosticConnection(self, element: ET.Element, connection: DiagnosticConnection):
3367
+ self.logger.debug("Write DiagnosticConnection %s" % connection.getShortName())
3368
+ child_element = ET.SubElement(element, "DIAGNOSTIC-CONNECTION")
3369
+ self.writeIdentifiable(child_element, connection)
3370
+ self.writeDiagnosticConnectionFunctionalRequestRefs(child_element, connection)
3371
+ self.setChildElementOptionalRefType(child_element, "PHYSICAL-REQUEST-REF", connection.getPhysicalRequestRef())
3372
+ self.setChildElementOptionalRefType(child_element, "RESPONSE-REF", connection.getResponseOnEventRef())
3373
+
3374
+ def writeDiagnosticServiceTable(self, element: ET.Element, table: DiagnosticServiceTable):
3375
+ self.logger.debug("Write DiagnosticServiceTable %s" % table.getShortName())
3376
+ child_element = ET.SubElement(element, "DIAGNOSTIC-SERVICE-TABLE")
3377
+ self.writeIdentifiable(child_element, table)
3378
+
3379
+ def writeMultiplexedIPdu(self, element: ET.Element, i_pdu: MultiplexedIPdu):
3380
+ self.logger.debug("Write MultiplexedIPdu %s" % i_pdu.getShortName())
3381
+ child_element = ET.SubElement(element, "MULTIPLEXED-I-PDU")
3382
+ self.writeIdentifiable(child_element, i_pdu)
3383
+
3384
+ def writeUserDefinedIPdu(self, element: ET.Element, i_pdu: UserDefinedIPdu):
3385
+ self.logger.debug("Write UserDefinedIPdu %s" % i_pdu.getShortName())
3386
+ child_element = ET.SubElement(element, "USER-DEFINED-I-PDU")
3387
+ self.writeIdentifiable(child_element, i_pdu)
3388
+
3389
+ def writeUserDefinedPdu(self, element: ET.Element, pdu: UserDefinedPdu):
3390
+ self.logger.debug("Write UserDefinedPdu %s" % pdu.getShortName())
3391
+ child_element = ET.SubElement(element, "USER-DEFINED-PDU")
3392
+ self.writeIdentifiable(child_element, pdu)
3393
+
3394
+ def writeGeneralPurposePdu(self, element: ET.Element, pdu: GeneralPurposePdu):
3395
+ self.logger.debug("Write GeneralPurposePdu %s" % pdu.getShortName())
3396
+ child_element = ET.SubElement(element, "GENERAL-PURPOSE-PDU")
3397
+ self.writeIdentifiable(child_element, pdu)
3398
+
3399
+ def writeGeneralPurposeIPdu(self, element: ET.Element, i_pdu: GeneralPurposeIPdu):
3400
+ self.logger.debug("Write GeneralPurposeIPdu %s" % i_pdu.getShortName())
3401
+ child_element = ET.SubElement(element, "GENERAL-PURPOSE-I-PDU")
3402
+ self.writeIdentifiable(child_element, i_pdu)
3403
+
3404
+ def writeSecureCommunicationPropsSet(self, element: ET.Element, set: SecureCommunicationPropsSet):
3405
+ self.logger.debug("Write SecureCommunicationPropsSet %s" % set.getShortName())
3406
+ child_element = ET.SubElement(element, "SECURE-COMMUNICATION-PROPS-SET")
3407
+ self.writeIdentifiable(child_element, set)
3408
+
3409
+ def writeSoAdRoutingGroup(self, element: ET.Element, group: SoAdRoutingGroup):
3410
+ self.logger.debug("Write SoAdRoutingGroup %s" % group.getShortName())
3411
+ child_element = ET.SubElement(element, "SO-AD-ROUTING-GROUP")
3412
+ self.writeIdentifiable(child_element, group)
3413
+
3414
+ def writeDoIpTpConfig(self, element: ET.Element, config: DoIpTpConfig):
3415
+ self.logger.debug("Write DoIpTpConfig %s" % config.getShortName())
3416
+ child_element = ET.SubElement(element, "DO-IP-TP-CONFIG")
3417
+ self.writeIdentifiable(child_element, config)
3418
+
3419
+ def writeLinMaster(self, element: ET.Element, master: LinMaster):
3420
+ self.logger.debug("Write LinMaster %s" % master.getShortName())
3421
+ child_element = ET.SubElement(element, "LIN-MASTER")
3422
+ self.writeIdentifiable(child_element, master)
3117
3423
 
3118
3424
  def writeISignalToPduMappings(self, element: ET.Element, parent: ISignalIPdu):
3119
3425
  mappings = parent.getISignalToPduMappings()
@@ -3121,7 +3427,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3121
3427
  mappings_tag = ET.SubElement(element, "I-SIGNAL-TO-PDU-MAPPINGS")
3122
3428
  for mapping in mappings:
3123
3429
  child_element = ET.SubElement(mappings_tag, "I-SIGNAL-TO-I-PDU-MAPPING")
3124
- self.setIdentifiable(child_element, mapping)
3430
+ self.writeIdentifiable(child_element, mapping)
3125
3431
  self.setChildElementOptionalRefType(child_element, "I-SIGNAL-REF", mapping.getISignalRef())
3126
3432
  self.setChildElementOptionalRefType(child_element, "I-SIGNAL-GROUP-REF", mapping.getISignalGroupRef())
3127
3433
  self.setChildElementOptionalLiteral(child_element, "PACKING-BYTE-ORDER", mapping.getPackingByteOrder())
@@ -3187,7 +3493,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3187
3493
  def writeISignalIPdu(self, element: ET.Element, i_pdu: ISignalIPdu):
3188
3494
  self.logger.debug("ISignalIPdu %s" % i_pdu.getShortName())
3189
3495
  child_element = ET.SubElement(element, "I-SIGNAL-I-PDU")
3190
- self.setIdentifiable(child_element, i_pdu)
3496
+ self.writeIdentifiable(child_element, i_pdu)
3191
3497
  self.setChildElementOptionalNumericalValue(child_element, "LENGTH", i_pdu.getLength())
3192
3498
  self.setISignalIPduIPduTimingSpecification(child_element, i_pdu.getIPduTimingSpecification())
3193
3499
  self.writeISignalToPduMappings(child_element, i_pdu)
@@ -3300,6 +3606,26 @@ class ARXMLWriter(AbstractARXMLWriter):
3300
3606
  self.writeEthernetCluster(element, ar_element)
3301
3607
  elif isinstance(ar_element, ISignalIPduGroup):
3302
3608
  self.writeISignalIPduGroup(element, ar_element)
3609
+ elif isinstance(ar_element, DiagnosticConnection):
3610
+ self.writeDiagnosticConnection(element, ar_element)
3611
+ elif isinstance(ar_element, DiagnosticServiceTable):
3612
+ self.writeDiagnosticServiceTable(element, ar_element)
3613
+ elif isinstance(ar_element, MultiplexedIPdu):
3614
+ self.writeMultiplexedIPdu(element, ar_element)
3615
+ elif isinstance(ar_element, UserDefinedIPdu):
3616
+ self.writeUserDefinedIPdu(element, ar_element)
3617
+ elif isinstance(ar_element, UserDefinedPdu):
3618
+ self.writeUserDefinedPdu(element, ar_element)
3619
+ elif isinstance(ar_element, GeneralPurposePdu):
3620
+ self.writeGeneralPurposePdu(element, ar_element)
3621
+ elif isinstance(ar_element, GeneralPurposeIPdu):
3622
+ self.writeGeneralPurposeIPdu(element, ar_element)
3623
+ elif isinstance(ar_element, SecureCommunicationPropsSet):
3624
+ self.writeSecureCommunicationPropsSet(element, ar_element)
3625
+ elif isinstance(ar_element, SoAdRoutingGroup):
3626
+ self.writeSoAdRoutingGroup(element, ar_element)
3627
+ elif isinstance(ar_element, DoIpTpConfig):
3628
+ self.writeDoIpTpConfig(element, ar_element)
3303
3629
  else:
3304
3630
  self.notImplemented("Unsupported Elements of ARPackage <%s>" % type(ar_element))
3305
3631
 
@@ -3322,7 +3648,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3322
3648
  for pkg in pkgs:
3323
3649
  pkg_tag = ET.SubElement(pkgs_tag, "AR-PACKAGE")
3324
3650
 
3325
- self.setIdentifiable(pkg_tag, pkg)
3651
+ self.writeIdentifiable(pkg_tag, pkg)
3326
3652
  self.logger.debug("writeARPackage %s" % pkg.full_name)
3327
3653
 
3328
3654
  self.writeReferenceBases(pkg_tag, pkg.getReferenceBases())