armodel 1.7.3__py3-none-any.whl → 1.7.4__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 (31) hide show
  1. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +2 -1
  2. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +1 -1
  3. armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +6 -7
  4. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +7 -1
  5. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +28 -1
  6. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +17 -1
  7. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AutosarVariableRef.py +31 -0
  8. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/DataElements.py +4 -3
  9. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/InstanceRefsUsage.py +17 -32
  10. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +4 -0
  11. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +7 -1
  12. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +47 -15
  13. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetCommunication.py +229 -0
  14. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +167 -0
  15. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/NetworkEndpoint.py +225 -0
  16. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/ServiceInstances.py +96 -7
  17. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +47 -4
  18. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +18 -5
  19. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/Timing.py +7 -12
  20. armodel/models/M2/MSR/AsamHdo/BaseTypes.py +0 -1
  21. armodel/models/__init__.py +3 -0
  22. armodel/parser/arxml_parser.py +222 -46
  23. armodel/tests/test_armodel/models/test_ar_ref.py +2 -2
  24. armodel/writer/abstract_arxml_writer.py +1 -3
  25. armodel/writer/arxml_writer.py +256 -103
  26. {armodel-1.7.3.dist-info → armodel-1.7.4.dist-info}/METADATA +17 -2
  27. {armodel-1.7.3.dist-info → armodel-1.7.4.dist-info}/RECORD +31 -27
  28. {armodel-1.7.3.dist-info → armodel-1.7.4.dist-info}/LICENSE +0 -0
  29. {armodel-1.7.3.dist-info → armodel-1.7.4.dist-info}/WHEEL +0 -0
  30. {armodel-1.7.3.dist-info → armodel-1.7.4.dist-info}/entry_points.txt +0 -0
  31. {armodel-1.7.3.dist-info → armodel-1.7.4.dist-info}/top_level.txt +0 -0
@@ -60,6 +60,9 @@ from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import
60
60
  from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import *
61
61
  from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import *
62
62
  from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import *
63
+ from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import *
64
+ from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import *
65
+ from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import *
63
66
  from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import *
64
67
  from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import *
65
68
  from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import *
@@ -2,10 +2,6 @@ from typing import List
2
2
  import xml.etree.ElementTree as ET
3
3
  import os
4
4
 
5
-
6
-
7
-
8
-
9
5
  from ..models.M2.MSR.AsamHdo.AdminData import AdminData
10
6
  from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition
11
7
  from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstrRule, InternalConstrs, PhysConstrs, DataConstr
@@ -51,20 +47,21 @@ from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyI
51
47
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable, MultilanguageReferrable
52
48
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
53
49
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage, ReferenceBase
54
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral
50
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Ip6AddressString, RefType, ARLiteral
55
51
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption, PortDefinedArgumentValue
56
52
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent
57
53
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationRecordDataType, ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, AutosarDataType, DataTypeMap, DataTypeMappingSet
58
54
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet, EndToEndDescription, EndToEndProtection, EndToEndProtectionVariablePrototype
59
55
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef, ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
60
56
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
61
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef, AutosarVariableRef, VariableInAtomicSWCTypeInstanceRef
57
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef, VariableInAtomicSWCTypeInstanceRef
62
58
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
63
59
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
60
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, CompositionSwComponentType, PortGroup, SwComponentType, SymbolProps, PPortPrototype, RPortPrototype
64
61
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
65
62
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument, SwcInternalBehavior
63
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AutosarVariableRef import AutosarVariableRef
66
64
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
67
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, CompositionSwComponentType, PortGroup, SwComponentType, SymbolProps, PPortPrototype, RPortPrototype
68
65
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector
69
66
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet, ModeAccessPoint
70
67
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
@@ -78,12 +75,16 @@ from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiv
78
75
  from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
79
76
  from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
80
77
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering
81
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, FramePort, IPduPort, ISignalPort, LinPhysicalChannel, PhysicalChannel
78
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort, LinPhysicalChannel, PhysicalChannel
82
79
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import Frame, FrameTriggering, IPdu, IPduTiming, ISignalIPdu, ISignalTriggering, PduTriggering
83
80
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
84
81
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
85
82
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrameTriggering, RxIdentifierRange
86
83
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
84
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCommunicationController
85
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SocketConnection, SocketConnectionBundle, SocketConnectionIpduIdentifier
86
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import Ipv6Configuration, NetworkEndpoint
87
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import SoAdConfig, SocketAddress
87
88
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import ISignalMapping
88
89
 
89
90
  from .abstract_arxml_parser import AbstractARXMLParser
@@ -205,17 +206,18 @@ class ARXMLParser(AbstractARXMLParser):
205
206
  iref.setTargetComponentRef(self.getChildElementOptionalRefType(element, "TARGET-COMPONENT-REF"))
206
207
  return iref
207
208
 
208
- def getAutosarVariableInImplDatatype(self, element: ET.Element) -> AutosarVariableRef:
209
- child_element = self.find(element, "ACCESSED-VARIABLE")
209
+ def getAutosarVariableRef(self, element: ET.Element, key: str) -> AutosarVariableRef:
210
+ child_element = self.find(element, key)
210
211
  ref = None
211
212
  if (child_element is not None):
212
213
  ref = AutosarVariableRef()
213
214
  #self.readARObjectAttributes(child_element, ref)
214
- ref.setAutosarVariableIRef(self.getVariableInAtomicSWCTypeInstanceRef(self.find(child_element, "AUTOSAR-VARIABLE-IREF")))
215
+ ref.setAutosarVariableIRef(self.getVariableInAtomicSWCTypeInstanceRef(self.find(child_element, "AUTOSAR-VARIABLE-IREF"))) \
216
+ .setLocalVariableRef(self.getChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF"))
215
217
  return ref
216
218
 
217
- def getLocalVariableRef(self, element: ET.Element) -> AutosarVariableRef:
218
- child_element = self.find(element, "ACCESSED-VARIABLE")
219
+ def getLocalVariableRef(self, element: ET.Element, key: str) -> AutosarVariableRef:
220
+ child_element = self.find(element, key)
219
221
  ref = None
220
222
  if (child_element is not None):
221
223
  ref = AutosarVariableRef()
@@ -230,25 +232,25 @@ class ARXMLParser(AbstractARXMLParser):
230
232
 
231
233
  if (key == "DATA-RECEIVE-POINT-BY-ARGUMENTS"):
232
234
  variable_access = parent.createDataReceivePointByArgument(short_name)
233
- variable_access.setAccessedVariableRef(self.getAutosarVariableInImplDatatype(child_element))
235
+ variable_access.setAccessedVariableRef(self.getAutosarVariableRef(child_element, "ACCESSED-VARIABLE"))
234
236
  elif (key == "DATA-RECEIVE-POINT-BY-VALUES"):
235
237
  variable_access = parent.createDataReceivePointByValue(short_name)
236
- variable_access.setAccessedVariableRef(self.getAutosarVariableInImplDatatype(child_element))
238
+ variable_access.setAccessedVariableRef(self.getAutosarVariableRef(child_element, "ACCESSED-VARIABLE"))
237
239
  elif (key == "DATA-READ-ACCESSS"):
238
240
  variable_access = parent.createDataReadAccess(short_name)
239
- variable_access.setAccessedVariableRef(self.getAutosarVariableInImplDatatype(child_element))
241
+ variable_access.setAccessedVariableRef(self.getAutosarVariableRef(child_element, "ACCESSED-VARIABLE"))
240
242
  elif (key == "DATA-WRITE-ACCESSS"):
241
243
  variable_access = parent.createDataWriteAccess(short_name)
242
- variable_access.setAccessedVariableRef(self.getAutosarVariableInImplDatatype(child_element))
244
+ variable_access.setAccessedVariableRef(self.getAutosarVariableRef(child_element, "ACCESSED-VARIABLE"))
243
245
  elif (key == "DATA-SEND-POINTS"):
244
246
  variable_access = parent.createDataSendPoint(short_name)
245
- variable_access.setAccessedVariableRef(self.getAutosarVariableInImplDatatype(child_element))
247
+ variable_access.setAccessedVariableRef(self.getAutosarVariableRef(child_element, "ACCESSED-VARIABLE"))
246
248
  elif (key == "WRITTEN-LOCAL-VARIABLES"):
247
249
  variable_access = parent.createWrittenLocalVariable(short_name)
248
- variable_access.setAccessedVariableRef(self.getLocalVariableRef(child_element))
250
+ variable_access.setAccessedVariableRef(self.getLocalVariableRef(child_element, "ACCESSED-VARIABLE"))
249
251
  elif (key == "READ-LOCAL-VARIABLES"):
250
252
  variable_access = parent.createReadLocalVariable(short_name)
251
- variable_access.setAccessedVariableRef(self.getLocalVariableRef(child_element))
253
+ variable_access.setAccessedVariableRef(self.getLocalVariableRef(child_element, "ACCESSED-VARIABLE"))
252
254
  else:
253
255
  self.notImplemented("Unsupported Variable Accesss <%s>" % key)
254
256
 
@@ -369,6 +371,7 @@ class ARXMLParser(AbstractARXMLParser):
369
371
  def getRoleBasedDataAssignment(self, element: ET.Element) -> RoleBasedDataAssignment:
370
372
  assignment = RoleBasedDataAssignment()
371
373
  assignment.setRole(self.getChildElementOptionalLiteral(element, "ROLE")) \
374
+ .setUsedDataElement(self.getAutosarVariableRef(element, "USED-DATA-ELEMENT")) \
372
375
  .setUsedParameterElement(self.getAutosarParameterRef(element, "USED-PARAMETER-ELEMENT")) \
373
376
  .setUsedPimRef(self.getChildElementOptionalRefType(element, "USED-PIM-REF"))
374
377
  return assignment
@@ -432,6 +435,7 @@ class ARXMLParser(AbstractARXMLParser):
432
435
  .setUseCRCCompMechanism(self.getChildElementOptionalBooleanValue(element, "USE-CRC-COMP-MECHANISM")) \
433
436
  .setWriteOnlyOnce(self.getChildElementOptionalBooleanValue(element, "WRITE-ONLY-ONCE")) \
434
437
  .setWriteVerification(self.getChildElementOptionalBooleanValue(element, "WRITE-VERIFICATION")) \
438
+ .setWritingFrequency(self.getChildElementOptionalPositiveInteger(element, "WRITING-FREQUENCY")) \
435
439
  .setWritingPriority(self.getChildElementOptionalLiteral(element, "WRITING-PRIORITY"))
436
440
 
437
441
  def reaDiagnosticCommunicationManagerNeeds(self, element: ET.Element, parent: SwcServiceDependency):
@@ -475,16 +479,23 @@ class ARXMLParser(AbstractARXMLParser):
475
479
  def readDiagnosticEventNeeds(self, element: ET.Element, parent: SwcServiceDependency):
476
480
  short_name = self.getShortName(element)
477
481
  needs = parent.createDiagnosticEventNeeds(short_name)
478
- self.logger.debug("read DiagnosticEventNeeds %s" % short_name)
482
+ self.logger.debug("Read DiagnosticEventNeeds %s" % short_name)
479
483
  self.readIdentifiable(element, needs)
480
484
  self.readDiagEventDebounceAlgorithm(element, needs)
481
485
  needs.setDtcKind(self.getChildElementOptionalLiteral(element, "DTC-KIND")) \
482
- .setUdsDtcNumber(self.getChildElementOptionalIntegerValue(element, "UDS-DTC-NUMBER"))
486
+ .setUdsDtcNumber(self.getChildElementOptionalIntegerValue(element, "UDS-DTC-NUMBER"))
487
+
488
+ def readDiagnosticEventInfoNeeds(self, element: ET.Element, parent: SwcServiceDependency):
489
+ short_name = self.getShortName(element)
490
+ needs = parent.createDiagnosticEventInfoNeeds(short_name)
491
+ self.logger.debug("Read DiagnosticEventInfoNeeds %s" % short_name)
492
+ self.readIdentifiable(element, needs)
493
+ needs.setUdsDtcNumber(self.getChildElementOptionalPositiveInteger(element, "UDS-DTC-NUMBER"))
483
494
 
484
495
  def readCryptoServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
485
496
  short_name = self.getShortName(element)
486
497
  needs = parent.createCryptoServiceNeeds(short_name)
487
- self.logger.debug("read DiagnosticValueNeeds %s" % short_name)
498
+ self.logger.debug("Read DiagnosticValueNeeds %s" % short_name)
488
499
  self.readIdentifiable(element, needs)
489
500
  needs.setMaximumKeyLength(self.getChildElementOptionalPositiveInteger(element, "MAXIMUM-KEY-LENGTH"))
490
501
 
@@ -507,6 +518,8 @@ class ARXMLParser(AbstractARXMLParser):
507
518
  self.readDiagnosticValueNeeds(child_element, parent)
508
519
  elif tag_name == "DIAGNOSTIC-EVENT-NEEDS":
509
520
  self.readDiagnosticEventNeeds(child_element, parent)
521
+ elif tag_name == "DIAGNOSTIC-EVENT-INFO-NEEDS":
522
+ self.readDiagnosticEventInfoNeeds(child_element, parent)
510
523
  elif tag_name == "CRYPTO-SERVICE-NEEDS":
511
524
  self.readCryptoServiceNeeds(child_element, parent)
512
525
  elif tag_name == "ECU-STATE-MGR-USER-NEEDS":
@@ -540,6 +553,18 @@ class ARXMLParser(AbstractARXMLParser):
540
553
  include_data_type_set.addDataTypeRef(ref_type)
541
554
  include_data_type_sets.append(include_data_type_set)
542
555
  return include_data_type_sets
556
+
557
+ def readSwcInternalBehaviorArTypedPerInstanceMemories(self, element: ET.Element, parent: SwcInternalBehavior):
558
+ for child_element in self.findall(element, "AR-TYPED-PER-INSTANCE-MEMORYS/VARIABLE-DATA-PROTOTYPE"):
559
+ short_name = self.getShortName(child_element)
560
+ prototype = parent.createArTypedPerInstanceMemory(short_name)
561
+ self.readVariableDataPrototype(child_element, prototype)
562
+
563
+ def readSwcInternalBehaviorSharedParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
564
+ for child_element in self.findall(element, "SHARED-PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
565
+ short_name = self.getShortName(child_element)
566
+ prototype = behavior.createSharedParameter(short_name)
567
+ self.readParameterDataPrototype(child_element, prototype)
543
568
 
544
569
  def readSwcInternalBehavior(self, element: ET.Element, parent: AtomicSwComponentType):
545
570
  for child_element in self.findall(element, "INTERNAL-BEHAVIORS/SWC-INTERNAL-BEHAVIOR"):
@@ -551,16 +576,17 @@ class ARXMLParser(AbstractARXMLParser):
551
576
  self.readInternalBehavior(child_element, behavior)
552
577
 
553
578
  # read the extra SwcInternalBehavior
579
+ self.readSwcInternalBehaviorArTypedPerInstanceMemories(child_element, behavior)
554
580
  self.readSwcInternalBehaviorRunnables(child_element, behavior)
555
581
  self.readSwcInternalBehaviorEvents(child_element, behavior)
556
582
  self.readSwcInternalBehaviorServiceDependencies(child_element, behavior)
557
583
  self.readExplicitInterRunnableVariables(child_element, behavior)
558
- for data_type_set in self.getIncludedDataTypeSets(child_element):
559
- behavior.addIncludedDataTypeSet(data_type_set)
560
- behavior.handleTerminationAndRestart = self.getChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART")
584
+
585
+ behavior.setHandleTerminationAndRestart(self.getChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART"))
561
586
  self.readPerInstanceMemories(child_element, behavior)
562
587
  self.readPerInstanceParameters(child_element, behavior)
563
588
  self.readPortAPIOptions(child_element, behavior)
589
+ self.readSwcInternalBehaviorSharedParameters(child_element, behavior)
564
590
  behavior.setSupportsMultipleInstantiation(self.getChildElementOptionalBooleanValue(child_element, "SUPPORTS-MULTIPLE-INSTANTIATION"))
565
591
 
566
592
  def getIncludedModeDeclarationGroupSets(self, element: ET.Element) -> List[IncludedModeDeclarationGroupSet]:
@@ -799,21 +825,21 @@ class ARXMLParser(AbstractARXMLParser):
799
825
  argument = RunnableEntityArgument()
800
826
  argument.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
801
827
  return argument
802
-
828
+
803
829
  def getAutosarParameterRef(self, element: ET.Element, key: str) -> AutosarParameterRef:
804
- accessed_parameter = None
830
+ parameter = None
805
831
  child_element = self.find(element, key)
806
832
  if child_element is not None:
807
- accessed_parameter = AutosarParameterRef()
808
- accessed_parameter.local_parameter_ref = self.getChildElementOptionalRefType(child_element, "LOCAL-PARAMETER-REF")
809
- return accessed_parameter
833
+ parameter = AutosarParameterRef()
834
+ parameter.setLocalParameterRef(self.getChildElementOptionalRefType(child_element, "LOCAL-PARAMETER-REF"))
835
+ return parameter
810
836
 
811
837
  def readParameterAccesses(self, element: ET.Element, parent: RunnableEntity):
812
838
  for child_element in self.findall(element, "PARAMETER-ACCESSS/PARAMETER-ACCESS"):
813
839
  short_name = self.getShortName(child_element)
814
840
  self.logger.debug("readParameterAccesses %s" % short_name)
815
841
  parameter_access = parent.createParameterAccess(short_name)
816
- parameter_access.accessed_parameter = self.getAutosarParameterRef(child_element, "ACCESSED-PARAMETER")
842
+ parameter_access.setAccessedParameter(self.getAutosarParameterRef(child_element, "ACCESSED-PARAMETER"))
817
843
 
818
844
  def readWrittenLocalVariables(self, element: ET.Element, parent: RunnableEntity):
819
845
  self._readVariableAccesses(element, parent, "WRITTEN-LOCAL-VARIABLES")
@@ -991,7 +1017,7 @@ class ARXMLParser(AbstractARXMLParser):
991
1017
  def readVariableDataPrototype(self, element: ET.Element, prototype: VariableDataPrototype):
992
1018
  self.readAutosarDataPrototype(element, prototype)
993
1019
  prototype.setInitValue(self.getInitValue(element))
994
-
1020
+
995
1021
  def readExplicitInterRunnableVariables(self, element: ET.Element, parent: SwcInternalBehavior):
996
1022
  for child_element in self.findall(element, "EXPLICIT-INTER-RUNNABLE-VARIABLES/VARIABLE-DATA-PROTOTYPE"):
997
1023
  short_name = self.getShortName(child_element)
@@ -1016,7 +1042,7 @@ class ARXMLParser(AbstractARXMLParser):
1016
1042
  self.readIdentifiable(element, prototype)
1017
1043
  self.readAutosarDataPrototype(element, prototype)
1018
1044
  prototype.setInitValue(self.getInitValue(element))
1019
-
1045
+
1020
1046
  def readPerInstanceParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
1021
1047
  for child_element in self.findall(element, "PER-INSTANCE-PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
1022
1048
  short_name = self.getShortName(child_element)
@@ -1356,16 +1382,17 @@ class ARXMLParser(AbstractARXMLParser):
1356
1382
  '''
1357
1383
 
1358
1384
  def readBaseTypeDirectDefinition(self, element: ET.Element, definition: BaseTypeDirectDefinition):
1359
- definition.baseTypeSize = self.getChildElementOptionalNumericalValue(element, "BASE-TYPE-SIZE")
1360
- definition.baseTypeEncoding = self.getChildElementOptionalLiteral(element, "BASE-TYPE-ENCODING")
1361
- definition.memAlignment = self.getChildElementOptionalNumericalValue(element, "MEM-ALIGNMENT")
1362
- definition.nativeDeclaration = self.getChildElementOptionalLiteral(element, "NATIVE-DECLARATION")
1385
+ definition.setBaseTypeSize(self.getChildElementOptionalNumericalValue(element, "BASE-TYPE-SIZE")) \
1386
+ .setBaseTypeEncoding(self.getChildElementOptionalLiteral(element, "BASE-TYPE-ENCODING")) \
1387
+ .setByteOrder(self.getChildElementOptionalLiteral(element, "BYTE-ORDER")) \
1388
+ .setMemAlignment(self.getChildElementOptionalNumericalValue(element, "MEM-ALIGNMENT")) \
1389
+ .setNativeDeclaration(self.getChildElementOptionalLiteral(element, "NATIVE-DECLARATION"))
1363
1390
 
1364
1391
  def readSwBaseType(self, element: ET.Element, parent: ARPackage):
1365
1392
  short_name = self.getShortName(element)
1366
1393
  data_type = parent.createSwBaseType(short_name)
1367
1394
  self.readIdentifiable(element, data_type)
1368
- self.readBaseTypeDirectDefinition(element, data_type.baseTypeDefinition)
1395
+ self.readBaseTypeDirectDefinition(element, data_type.getBaseTypeDefinition())
1369
1396
 
1370
1397
  def getApplicationCompositeElementInPortInterfaceInstanceRef(self, element: ET.Element, key:str) -> ApplicationCompositeElementInPortInterfaceInstanceRef:
1371
1398
  child_element = self.find(element, key)
@@ -1464,7 +1491,9 @@ class ARXMLParser(AbstractARXMLParser):
1464
1491
  def getModeSwitchReceiverComSpec(self, element: ET.Element) -> ModeSwitchReceiverComSpec:
1465
1492
  com_spec = ModeSwitchReceiverComSpec()
1466
1493
  self.readARObjectAttributes(element, com_spec)
1467
- com_spec.modeGroupRef = self.getChildElementOptionalRefType(element, "MODE-GROUP-REF")
1494
+ com_spec.setEnhancedModeApi(self.getChildElementOptionalBooleanValue(element, "ENHANCED-MODE-API")) \
1495
+ .setModeGroupRef(self.getChildElementOptionalRefType(element, "MODE-GROUP-REF")) \
1496
+ .setSupportsAsynchronousModeSwitch(self.getChildElementOptionalBooleanValue(element, "SUPPORTS-ASYNCHRONOUS-MODE-SWITCH"))
1468
1497
  return com_spec
1469
1498
 
1470
1499
  def getNonqueuedReceiverComSpec(self, element: ET.Element) -> NonqueuedReceiverComSpec:
@@ -2446,6 +2475,119 @@ class ARXMLParser(AbstractARXMLParser):
2446
2475
  self.readIdentifiable(element, channel)
2447
2476
  self.readPhysicalChannel(element, channel)
2448
2477
 
2478
+ def getIpv6Configuration(self, element: ET.Element) -> Ipv6Configuration:
2479
+ configuration = None
2480
+ if element is not None:
2481
+ configuration = Ipv6Configuration()
2482
+ configuration.setAssignmentPriority(self.getChildElementOptionalPositiveInteger(element, "ASSIGNMENT-PRIORITY")) \
2483
+ .setDefaultRouter(self.getChildElementOptionalLiteral(element, "DEFAULT-ROUTER")) \
2484
+ .setEnableAnycast(self.getChildElementOptionalBooleanValue(element, "ENABLE-ANYCAST")) \
2485
+ .setHopCount(self.getChildElementOptionalPositiveInteger(element, "HOP-COUNT")) \
2486
+ .setIpAddressPrefixLength(self.getChildElementOptionalPositiveInteger(element, "IP-ADDRESS-PREFIX-LENGTH")) \
2487
+ .setIpv6Address(self.getChildElementOptionalLiteral(element, "IPV-6-ADDRESS")) \
2488
+ .setIpv6AddressSource(self.getChildElementOptionalLiteral(element, "IPV-6-ADDRESS-SOURCE"))
2489
+ return configuration
2490
+
2491
+ def readNetworkEndPointNetworkEndPointAddress(self, element: ET.Element, end_point: NetworkEndpoint):
2492
+ for child_element in self.findall(element, "NETWORK-ENDPOINT-ADDRESSES/*"):
2493
+ tag_name = self.getTagName(child_element)
2494
+ if tag_name == "IPV-6-CONFIGURATION":
2495
+ end_point.addNetworkEndpointAddress(self.getIpv6Configuration(child_element))
2496
+ else:
2497
+ self.notImplemented("Unsupported Network EndPoint Address <%s>" % tag_name)
2498
+
2499
+ def readNetworkEndPoint(self, element: ET.Element, end_point: NetworkEndpoint):
2500
+ self.readIdentifiable(element, end_point)
2501
+ self.readNetworkEndPointNetworkEndPointAddress(element, end_point)
2502
+ end_point.setPriority(self.getChildElementOptionalPositiveInteger(element, "PRIORITY"))
2503
+
2504
+ def readEthernetPhysicalChannelNetworkEndPoints(self, element: ET.Element, channel: EthernetPhysicalChannel):
2505
+ for child_element in self.findall(element, "NETWORK-ENDPOINTS/NETWORK-ENDPOINT"):
2506
+ end_point = channel.createNetworkEndPoint(self.getShortName(child_element))
2507
+ self.readNetworkEndPoint(child_element, end_point)
2508
+
2509
+ def getSocketConnectionIpduIdentifier(self, element: ET.Element) -> SocketConnectionIpduIdentifier:
2510
+ identifier = None
2511
+ if element is not None:
2512
+ identifier = SocketConnectionIpduIdentifier()
2513
+ identifier.setHeaderId(self.getChildElementOptionalPositiveInteger(element, "HEADER-ID")) \
2514
+ .setPduCollectionSemantics(self.getChildElementOptionalLiteral(element, "PDU-COLLECTION-SEMANTICS")) \
2515
+ .setPduCollectionTrigger(self.getChildElementOptionalLiteral(element, "PDU-COLLECTION-TRIGGER")) \
2516
+ .setPduRef(self.getChildElementOptionalRefType(element, "PDU-REF")) \
2517
+ .setPduTriggeringRef(self.getChildElementOptionalRefType(element, "PDU-TRIGGERING-REF"))
2518
+ return identifier
2519
+
2520
+ def getSocketConnectionPdus(self, element: ET.Element) -> List[SocketConnectionIpduIdentifier]:
2521
+ pdus = []
2522
+ for child_element in self.findall(element, "PDUS/*"):
2523
+ tag_name = self.getTagName(child_element)
2524
+ if tag_name == "SOCKET-CONNECTION-IPDU-IDENTIFIER":
2525
+ pdus.append(self.getSocketConnectionIpduIdentifier(child_element))
2526
+ else:
2527
+ self.notImplemented("Unsupported Pdu <%s>" % tag_name)
2528
+ return pdus
2529
+
2530
+ def getSocketConnection(self, element: ET.Element) -> SocketConnection:
2531
+ connection = None
2532
+ if element is not None:
2533
+ connection = SocketConnection()
2534
+ connection.setClientPortRef(self.getChildElementOptionalRefType(element, "CLIENT-PORT-REF"))
2535
+ for pdu in self.getSocketConnectionPdus(element):
2536
+ connection.addPdu(pdu)
2537
+ connection.setPduCollectionMaxBufferSize(self.getChildElementOptionalPositiveInteger(element, "PDU-COLLECTION-MAX-BUFFER-SIZE")) \
2538
+ .setPduCollectionTimeout(self.getChildElementOptionalTimeValue(element, "PDU-COLLECTION-TIMEOUT")) \
2539
+ .setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL"))
2540
+ return connection
2541
+
2542
+ def readSocketConnectionBundleConnections(self, element: ET.Element, bundle: SocketConnectionBundle):
2543
+ for child_element in self.findall(element, "BUNDLED-CONNECTIONS/*"):
2544
+ tag_name = self.getTagName(child_element)
2545
+ if tag_name == "SOCKET-CONNECTION":
2546
+ bundle.addBundledConnection(self.getSocketConnection(child_element))
2547
+ else:
2548
+ self.notImplemented("Unsupported Bundled Connection <%s>" % tag_name)
2549
+
2550
+ def readSocketConnectionBundle(self, element: ET.Element, bundle: SocketConnectionBundle):
2551
+ self.readSocketConnectionBundleConnections(element, bundle)
2552
+ bundle.setServerPortRef(self.getChildElementOptionalRefType(element, "SERVER-PORT-REF"))
2553
+
2554
+ def readSoAdConfigConnectionBundles(self, element: ET.Element, config: SoAdConfig):
2555
+ for child_element in self.findall(element, "CONNECTION-BUNDLES/*"):
2556
+ tag_name = self.getTagName(child_element)
2557
+ if tag_name == "SOCKET-CONNECTION-BUNDLE":
2558
+ bundle = config.createSocketConnectionBundle(self.getShortName(child_element))
2559
+ self.readSocketConnectionBundle(child_element, bundle)
2560
+ else:
2561
+ self.notImplemented("Unsupported Connection Bundle <%s>" % tag_name)
2562
+
2563
+ def readSocketAddress(self, element: ET.Element, address: SocketAddress):
2564
+ self.readSocketConnectionBundleConnections(element, address)
2565
+ address.setConnectorRef(self.getChildElementOptionalRefType(element, "CONNECTOR-REF"))
2566
+
2567
+ def readSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
2568
+ for child_element in self.findall(element, "SOCKET-ADDRESSS/*"):
2569
+ tag_name = self.getTagName(child_element)
2570
+ if tag_name == "SOCKET-ADDRESS":
2571
+ bundle = config.createSocketAddress(self.getShortName(child_element))
2572
+ self.readSocketAddress(child_element, bundle)
2573
+ else:
2574
+ self.notImplemented("Unsupported Connection Bundle <%s>" % tag_name)
2575
+
2576
+ def getSoAdConfig(self, element: ET.Element, key: str) -> SoAdConfig:
2577
+ child_element = self.find(element, key)
2578
+ config = None
2579
+ if child_element is not None:
2580
+ config = SoAdConfig()
2581
+ self.readSoAdConfigConnectionBundles(child_element, config)
2582
+ self.readSoAdConfigSocketAddresses(child_element, config)
2583
+ return config
2584
+
2585
+ def readEthernetPhysicalChannel(self, element: ET.Element, channel: EthernetPhysicalChannel):
2586
+ self.readIdentifiable(element, channel)
2587
+ self.readPhysicalChannel(element, channel)
2588
+ self.readEthernetPhysicalChannelNetworkEndPoints(element, channel)
2589
+ channel.setSoAdConfig(self.getSoAdConfig(element, "SO-AD-CONFIG"))
2590
+
2449
2591
  def readCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
2450
2592
  for child_element in self.findall(element, "PHYSICAL-CHANNELS/*"):
2451
2593
  tag_name = self.getTagName(child_element)
@@ -2455,6 +2597,9 @@ class ARXMLParser(AbstractARXMLParser):
2455
2597
  elif tag_name == "LIN-PHYSICAL-CHANNEL":
2456
2598
  channel = cluster.createLinPhysicalChannel(self.getShortName(child_element))
2457
2599
  self.readLinPhysicalChannel(child_element, channel)
2600
+ elif tag_name == "ETHERNET-PHYSICAL-CHANNEL":
2601
+ channel = cluster.createEthernetPhysicalChannel(self.getShortName(child_element))
2602
+ self.readEthernetPhysicalChannel(child_element, channel)
2458
2603
  else:
2459
2604
  self.notImplemented("Unsupported Physical Channel <%s>" % tag_name)
2460
2605
 
@@ -2488,6 +2633,15 @@ class ARXMLParser(AbstractARXMLParser):
2488
2633
  self.readCommunicationCluster(child_element, cluster)
2489
2634
  self.readAbstractCanCluster(child_element, cluster)
2490
2635
 
2636
+ def readEthernetCluster(self, element: ET.Element, parent: ARPackage):
2637
+ short_name = self.getShortName(element)
2638
+ self.logger.debug("Read EthernetCluster %s" % short_name)
2639
+ cluster = parent.createEthernetCluster(short_name)
2640
+ self.readIdentifiable(element, cluster)
2641
+ child_element = self.find(element, "ETHERNET-CLUSTER-VARIANTS/ETHERNET-CLUSTER-CONDITIONAL")
2642
+ if child_element is not None:
2643
+ self.readCommunicationCluster(child_element, cluster)
2644
+
2491
2645
  def readPduToFrameMappings(self, element: ET.Element, parent: Frame):
2492
2646
  for child_element in self.findall(element, "PDU-TO-FRAME-MAPPINGS/PDU-TO-FRAME-MAPPING"):
2493
2647
  short_name = self.getShortName(child_element)
@@ -2648,7 +2802,11 @@ class ARXMLParser(AbstractARXMLParser):
2648
2802
  self.readFrame(element, frame)
2649
2803
 
2650
2804
  def readCanCommunicationController(self, element: ET.Element, controller: CanCommunicationController):
2651
- self.logger.debug("read CanCommunicationController %s" % controller.getShortName())
2805
+ self.logger.debug("Read CanCommunicationController %s" % controller.getShortName())
2806
+ self.readIdentifiable(element, controller)
2807
+
2808
+ def readEthernetCommunicationController(self, element: ET.Element, controller: EthernetCommunicationController):
2809
+ self.logger.debug("Read CanCommunicationController %s" % controller.getShortName())
2652
2810
  self.readIdentifiable(element, controller)
2653
2811
 
2654
2812
  def readEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
@@ -2658,6 +2816,9 @@ class ARXMLParser(AbstractARXMLParser):
2658
2816
  if tag_name == "CAN-COMMUNICATION-CONTROLLER":
2659
2817
  controller = instance.createCanCommunicationController(self.getShortName(child_element))
2660
2818
  self.readCanCommunicationController(child_element, controller)
2819
+ elif tag_name == "ETHERNET-COMMUNICATION-CONTROLLER":
2820
+ controller = instance.createEthernetCommunicationController(self.getShortName(child_element))
2821
+ self.readEthernetCommunicationController(child_element, controller)
2661
2822
  else:
2662
2823
  self._raiseError("Unsupported Communication Controller <%s>" % tag_name)
2663
2824
 
@@ -2698,6 +2859,9 @@ class ARXMLParser(AbstractARXMLParser):
2698
2859
  def readCanCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
2699
2860
  self.readCommunicationConnector(element, connector)
2700
2861
 
2862
+ def readEthernetCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
2863
+ self.readCommunicationConnector(element, connector)
2864
+
2701
2865
  def readEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
2702
2866
  self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
2703
2867
  for child_element in self.findall(element, "CONNECTORS/*"):
@@ -2705,8 +2869,11 @@ class ARXMLParser(AbstractARXMLParser):
2705
2869
  if tag_name == "CAN-COMMUNICATION-CONNECTOR":
2706
2870
  connector = instance.createCanCommunicationConnector(self.getShortName(child_element))
2707
2871
  self.readCanCommunicationConnector(child_element, connector)
2872
+ elif tag_name == "ETHERNET-COMMUNICATION-CONNECTOR":
2873
+ connector = instance.createEthernetCommunicationConnector(self.getShortName(child_element))
2874
+ self.readEthernetCommunicationConnector(child_element, connector)
2708
2875
  else:
2709
- self._raiseError("Unsupported Communication Controller <%s>" % tag_name)
2876
+ self._raiseError("Unsupported Communication Connector <%s>" % tag_name)
2710
2877
 
2711
2878
  def readEcuInstance(self, element: ET.Element, parent: ARPackage):
2712
2879
  short_name = self.getShortName(element)
@@ -2768,6 +2935,7 @@ class ARXMLParser(AbstractARXMLParser):
2768
2935
  signal = parent.createISignal(short_name)
2769
2936
  self.readIdentifiable(element, signal)
2770
2937
  signal.setDataTypePolicy(self.getChildElementOptionalLiteral(element, "DATA-TYPE-POLICY")) \
2938
+ .setISignalType(self.getChildElementOptionalLiteral(element, "I-SIGNAL-TYPE")) \
2771
2939
  .setInitValue(self.getInitValue(element)) \
2772
2940
  .setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH")) \
2773
2941
  .setNetworkRepresentationProps(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION-PROPS")) \
@@ -2932,7 +3100,8 @@ class ARXMLParser(AbstractARXMLParser):
2932
3100
  self.logger.debug("SystemSignal %s" % short_name)
2933
3101
  signal = parent.createSystemSignal(short_name)
2934
3102
  self.readIdentifiable(element, signal)
2935
- signal.setDynamicLength(self.getChildElementOptionalBooleanValue(element, "DYNAMIC-LENGTH"))
3103
+ signal.setDynamicLength(self.getChildElementOptionalBooleanValue(element, "DYNAMIC-LENGTH")) \
3104
+ .setPhysicalProps(self.getSwDataDefProps(element, "PHYSICAL-PROPS"))
2936
3105
 
2937
3106
  def readSystemSignalGroup(self, element: ET.Element, parent: ARPackage):
2938
3107
  short_name = self.getShortName(element)
@@ -2985,6 +3154,8 @@ class ARXMLParser(AbstractARXMLParser):
2985
3154
  child_element = self.find(element, key)
2986
3155
  if child_element is not None:
2987
3156
  timing = CyclicTiming()
3157
+ timing.setTimeOffset(self.getTimeRangeType(child_element, "TIME-OFFSET")) \
3158
+ .setTimePeriod(self.getTimeRangeType(child_element, "TIME-PERIOD"))
2988
3159
  return timing
2989
3160
 
2990
3161
  def getEventControlledTiming(self, element: ET.Element, key: str) -> EventControlledTiming:
@@ -3002,8 +3173,8 @@ class ARXMLParser(AbstractARXMLParser):
3002
3173
  if child_element is not None:
3003
3174
  self.logger.debug("Get TransmissionModeTiming of <%s>" % key)
3004
3175
  timing = TransmissionModeTiming()
3005
- #timing.getCyclicTiming(child_element, "")
3006
- timing.setEventControlledTiming(self.getEventControlledTiming(child_element, "EVENT-CONTROLLED-TIMING"))
3176
+ timing.setCyclicTiming(self.getCyclicTiming(child_element, "CYCLIC-TIMING")) \
3177
+ .setEventControlledTiming(self.getEventControlledTiming(child_element, "EVENT-CONTROLLED-TIMING"))
3007
3178
  return timing
3008
3179
 
3009
3180
  def getTransmissionModeDeclaration(self, element: ET.Element, key: str) -> TransmissionModeDeclaration:
@@ -3021,7 +3192,8 @@ class ARXMLParser(AbstractARXMLParser):
3021
3192
  child_element = self.find(element, "I-PDU-TIMING-SPECIFICATIONS/I-PDU-TIMING")
3022
3193
  if child_element is not None:
3023
3194
  timing = IPduTiming()
3024
- timing.setTransmissionModeDeclaration(self.getTransmissionModeDeclaration(child_element, "TRANSMISSION-MODE-DECLARATION"))
3195
+ timing.setMinimumDelay(self.getChildElementOptionalTimeValue(child_element, "MINIMUM-DELAY")) \
3196
+ .setTransmissionModeDeclaration(self.getTransmissionModeDeclaration(child_element, "TRANSMISSION-MODE-DECLARATION"))
3025
3197
  return timing
3026
3198
 
3027
3199
  def readISignalIPdu(self, element: ET.Element, parent: ARPackage):
@@ -3195,6 +3367,8 @@ class ARXMLParser(AbstractARXMLParser):
3195
3367
  self.readIdentifiable(element, mapping_set)
3196
3368
  self.readPortInterfaceMappings(element, mapping_set)
3197
3369
 
3370
+
3371
+
3198
3372
  def readARPackageElements(self, element: ET.Element, parent: ARPackage):
3199
3373
  for child_element in self.findall(element, "ELEMENTS/*"):
3200
3374
  tag_name = self.getTagName(child_element.tag)
@@ -3314,6 +3488,8 @@ class ARXMLParser(AbstractARXMLParser):
3314
3488
  self.readFlatMap(child_element, parent)
3315
3489
  elif tag_name == "PORT-INTERFACE-MAPPING-SET":
3316
3490
  self.readPortInterfaceMappingSet(child_element, parent)
3491
+ elif tag_name == "ETHERNET-CLUSTER":
3492
+ self.readEthernetCluster(child_element, parent)
3317
3493
  else:
3318
3494
  self.notImplemented("Unsupported element type of ARPackage <%s>" % tag_name)
3319
3495
 
@@ -2,11 +2,11 @@
2
2
 
3
3
  import pytest
4
4
 
5
+ from ....models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AutosarVariableRef import AutosarVariableRef
5
6
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
6
-
7
7
  from ....models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AtpInstanceRef
8
8
  from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import OperationInAtomicSwcInstanceRef, POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef, ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
9
- from ....models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import ArVariableInImplementationDataInstanceRef, AutosarVariableRef
9
+ from ....models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import ArVariableInImplementationDataInstanceRef
10
10
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import TRefType
11
11
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
12
12
 
@@ -127,10 +127,8 @@ class AbstractARXMLWriter:
127
127
  return element
128
128
 
129
129
  def patch_xml(self, xml: str) -> str:
130
- #xml = xml.replace("<SW-DATA-DEF-PROPS-CONDITIONAL/>","<SW-DATA-DEF-PROPS-CONDITIONAL></SW-DATA-DEF-PROPS-CONDITIONAL>")
131
130
  xml = re.sub(r"\<([\w-]+)\/\>",r"<\1></\1>", xml)
132
- xml = re.sub(r"<((\w+)\s+\w+=\"\w+\")\/>", r"<\1></\2>", xml)
133
- #xml = xml.replace("<USES-END-TO-END-PROTECTION>false</USES-END-TO-END-PROTECTION>", "<USES-END-TO-END-PROTECTION>0</USES-END-TO-END-PROTECTION>")
131
+ xml = re.sub(r"<(([\w-]+)\s+\w+=\"[\w-]+\")\/>", r"<\1></\2>", xml)
134
132
  return xml
135
133
 
136
134
  def saveToFile(self, filename, root: ET.Element):