armodel 1.7.7__py3-none-any.whl → 1.7.8__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 (52) hide show
  1. armodel/cli/arxml_dump_cli.py +33 -22
  2. armodel/cli/arxml_format_cli.py +25 -13
  3. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +64 -29
  4. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +322 -63
  5. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +134 -35
  6. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +10 -1
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +18 -2
  8. armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +20 -19
  9. armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/HwElementCategory.py +59 -0
  10. armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/__init__.py +145 -0
  11. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +214 -156
  12. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +60 -32
  13. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +63 -42
  14. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +1 -0
  15. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +13 -6
  16. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +111 -38
  17. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AccessCount.py +9 -1
  18. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +5 -4
  19. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +9 -1
  20. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +167 -5
  21. armodel/models/M2/AUTOSARTemplates/SystemTemplate/{ECUResourceMapping.py → EcuResourceMapping.py} +4 -3
  22. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +31 -21
  23. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetFrame.py +5 -3
  24. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayCommunication.py +76 -0
  25. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayTopology.py +654 -0
  26. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/__init__.py +0 -0
  27. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +64 -31
  28. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +158 -40
  29. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +19 -6
  30. armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +2 -0
  31. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Transformer/__init__.py +524 -0
  32. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +15 -13
  33. armodel/models/__init__.py +5 -1
  34. armodel/parser/abstract_arxml_parser.py +34 -30
  35. armodel/parser/arxml_parser.py +1196 -525
  36. armodel/parser/file_parser.py +5 -3
  37. armodel/tests/test_armodel/models/test_ar_package.py +6 -11
  38. armodel/tests/test_armodel/models/test_port_interface.py +116 -117
  39. armodel/tests/test_armodel/parser/test_bsw_module_descriiption.py +109 -109
  40. armodel/tests/test_armodel/parser/test_sw_components.py +38 -27
  41. armodel/tests/test_armodel/parser/test_system.py +2 -8
  42. armodel/transformer/__init__.py +0 -0
  43. armodel/transformer/abstract.py +6 -0
  44. armodel/transformer/admin_data.py +31 -0
  45. armodel/writer/abstract_arxml_writer.py +22 -29
  46. armodel/writer/arxml_writer.py +1198 -477
  47. {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/METADATA +41 -1
  48. {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/RECORD +52 -43
  49. {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/LICENSE +0 -0
  50. {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/WHEEL +0 -0
  51. {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/entry_points.txt +0 -0
  52. {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/top_level.txt +0 -0
@@ -2,14 +2,12 @@ from typing import List
2
2
  import xml.etree.ElementTree as ET
3
3
  import os
4
4
 
5
- from armodel.models.M2.AUTOSARTemplates.SystemTemplate.SWmapping import SwcToImplMapping
6
-
7
-
8
-
9
5
  from ..models.M2.MSR.AsamHdo.AdminData import AdminData
10
6
  from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition, SwBaseType
11
7
  from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstrRule, InternalConstrs, PhysConstrs, DataConstr
12
- from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuConstContent, CompuConstFormulaContent, CompuConstNumericContent, CompuMethod, Compu, CompuConst, CompuConstTextContent, CompuNominatorDenominator, CompuRationalCoeffs, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
8
+ from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuConstContent, CompuConstFormulaContent, CompuConstNumericContent, CompuMethod, Compu
9
+ from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuConst, CompuConstTextContent, CompuNominatorDenominator, CompuRationalCoeffs, CompuScale
10
+ from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
13
11
  from ..models.M2.MSR.AsamHdo.SpecialData import Sdg, Sd
14
12
  from ..models.M2.MSR.AsamHdo.Units import PhysicalDimension, Unit
15
13
  from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValueCont, SwValues
@@ -26,83 +24,180 @@ from ..models.M2.MSR.Documentation.Annotation import Annotation, GeneralAnnotati
26
24
  from ..models.M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
27
25
  from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
28
26
  from ..models.M2.MSR.Documentation.TextModel.LanguageDataModel import LLongName, LOverviewParagraph, LParagraph, LanguageSpecific
29
- from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultiLanguagePlainText, MultilanguageLongName
27
+ from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultiLanguagePlainText
28
+ from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultilanguageLongName
30
29
 
31
30
  from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
32
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswBackgroundEvent, BswCalledEntity, BswDataReceivedEvent, BswExternalTriggerOccurredEvent, BswInternalBehavior, BswInternalTriggerOccurredEvent, BswInterruptEntity, BswModeSwitchEvent, BswModuleEntity, BswSchedulableEntity, BswScheduleEvent, BswModeSenderPolicy, BswTimingEvent
31
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswApiOptions, BswBackgroundEvent, BswCalledEntity, BswDataReceivedEvent
32
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswOperationInvokedEvent
33
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswDataReceptionPolicy, BswExternalTriggerOccurredEvent, BswInternalBehavior
34
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalTriggerOccurredEvent, BswInterruptEntity, BswModeSwitchEvent
35
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswModuleEntity, BswQueuedDataReceptionPolicy, BswSchedulableEntity
36
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswScheduleEvent, BswModeSenderPolicy, BswTimingEvent, BswVariableAccess
33
37
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
34
38
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
35
39
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
36
- from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, ConstantSpecification, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
40
+ from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference
41
+ from ..models.M2.AUTOSARTemplates.CommonStructure import ConstantSpecification, NumericalValueSpecification, RecordValueSpecification
42
+ from ..models.M2.AUTOSARTemplates.CommonStructure import TextValueSpecification, ValueSpecification
37
43
  from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
38
44
  from ..models.M2.AUTOSARTemplates.CommonStructure.FlatMap import FlatInstanceDescriptor, FlatMap
39
45
  from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import ImplementationProps, Code
46
+ from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity, InternalBehavior
40
47
  from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroup, ModeRequestTypeMap, ModeDeclarationGroupPrototype
41
48
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
42
49
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.MemorySectionUsage import MemorySection
43
50
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import RoughEstimateStackUsage, StackUsage
44
- from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity, InternalBehavior
45
51
  from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
46
- from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceAlgorithm, DiagEventDebounceMonitorInternal, DiagnosticEventNeeds, RoleBasedDataAssignment, RoleBasedDataTypeAssignment, ServiceDependency
52
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal
53
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticCommunicationManagerNeeds, DiagnosticEventInfoNeeds
54
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds
55
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import EcuStateMgrUserNeeds, NvBlockNeeds, RoleBasedDataAssignment
56
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import RoleBasedDataTypeAssignment, ServiceDependency
47
57
  from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
48
58
  from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
49
59
  from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import ExecutionOrderConstraint
50
60
  from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming, TimingExtension
61
+ from ..models.M2.AUTOSARTemplates.CommonStructure.TriggerDeclaration import Trigger
51
62
  from ..models.M2.AUTOSARTemplates.DiagnosticExtract.DiagnosticContribution import DiagnosticServiceTable
52
- from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
63
+ from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue
64
+ from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue
65
+ from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
66
+ from ..models.M2.AUTOSARTemplates.EcuResourceTemplate import HwDescriptionEntity, HwElement, HwPinGroup
67
+ from ..models.M2.AUTOSARTemplates.EcuResourceTemplate.HwElementCategory import HwAttributeDef, HwCategory, HwType
53
68
  from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyInstanceRef
54
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable, MultilanguageReferrable, Referrable
69
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Describable, Identifiable
70
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Referrable, MultilanguageReferrable
55
71
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
56
72
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage, ReferenceBase
57
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Ip6AddressString, RefType, ARLiteral
73
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral
58
74
  from ..models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfoSet
59
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption, PortDefinedArgumentValue
60
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import AsynchronousServerCallReturnsEvent, BackgroundEvent, DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent, ModeSwitchedAckEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent, TimingEvent
61
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationPrimitiveDataType, ApplicationRecordDataType, ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, AutosarDataType, DataTypeMap, DataTypeMappingSet
62
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet, EndToEndDescription, EndToEndProtection, EndToEndProtectionVariablePrototype
63
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef, ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
75
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationPrimitiveDataType, ApplicationRecordDataType
76
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType, ApplicationCompositeDataType
77
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationDataType, AutosarDataType, DataTypeMap, DataTypeMappingSet
78
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionISignalIPdu, EndToEndProtectionSet
79
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndDescription, EndToEndProtection
80
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionVariablePrototype
81
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef
82
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
64
83
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
65
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef, VariableInAtomicSWCTypeInstanceRef
66
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, ModeSwitchedAckRequest, TransmissionAcknowledgementRequest
67
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
68
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, ApplicationSwComponentType, ComplexDeviceDriverSwComponentType, CompositionSwComponentType, EcuAbstractionSwComponentType, PortGroup, SensorActuatorSwComponentType, ServiceSwComponentType, SwComponentType, SymbolProps, PPortPrototype, RPortPrototype
69
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
84
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, ModeSwitchedAckRequest
85
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import TransmissionAcknowledgementRequest
86
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec
87
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import NonqueuedReceiverComSpec, NonqueuedSenderComSpec, ParameterRequireComSpec
88
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import QueuedReceiverComSpec, QueuedSenderComSpec, ReceiverComSpec, SenderComSpec
89
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ServerComSpec
90
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, PRPortPrototype
91
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import ApplicationSwComponentType, ComplexDeviceDriverSwComponentType
92
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import CompositionSwComponentType, EcuAbstractionSwComponentType, PortGroup
93
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import SensorActuatorSwComponentType, ServiceSwComponentType, SwComponentType
94
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import SymbolProps, PPortPrototype, RPortPrototype
95
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType
96
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef
97
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import ModeGroupInAtomicSwcInstanceRef
98
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import PModeGroupInAtomicSwcInstanceRef
99
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import RModeGroupInAtomicSWCInstanceRef
100
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import RModeInAtomicSwcInstanceRef
101
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import RVariableInAtomicSwcInstanceRef
102
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector, SwComponentPrototype, SwConnector
103
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationCompositeElementDataPrototype
104
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationRecordElement, AutosarDataPrototype
105
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import DataPrototype, ParameterDataPrototype, VariableDataPrototype
106
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerOperation
107
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import DataPrototypeMapping, InvalidationPolicy, ModeSwitchInterface
108
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ParameterInterface, PortInterface, PortInterfaceMappingSet
109
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import SenderReceiverInterface, TriggerInterface, DataInterface
110
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import VariableAndParameterInterfaceMapping
111
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import SwcImplementation
70
112
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument, SwcInternalBehavior
71
113
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AutosarVariableRef import AutosarVariableRef
72
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
73
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector
74
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet, ModeAccessPoint
114
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
115
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef
116
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import VariableInAtomicSWCTypeInstanceRef
117
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet
118
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import ModeAccessPoint, ModeSwitchPoint
119
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption, PortDefinedArgumentValue
120
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import AsynchronousServerCallReturnsEvent, BackgroundEvent
121
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent
122
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import ModeSwitchedAckEvent, OperationInvokedEvent, RTEEvent
123
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import SwcModeSwitchEvent, TimingEvent
75
124
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
76
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
77
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerOperation, DataPrototypeMapping, InvalidationPolicy, ModeSwitchInterface, ParameterInterface, PortInterface, PortInterfaceMappingSet, SenderReceiverInterface, TriggerInterface, VariableAndParameterInterfaceMapping
78
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType
79
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import SwcImplementation
80
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationCompositeElementDataPrototype, AutosarDataPrototype, DataPrototype, ParameterDataPrototype, VariableDataPrototype
125
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
81
126
 
82
- from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping , System, SystemMapping
127
+ from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping, System, SystemMapping
128
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderRecCompositeTypeMapping
129
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderRecRecordElementMapping, SenderRecRecordTypeMapping
83
130
  from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
84
131
  from ..models.M2.AUTOSARTemplates.SystemTemplate.DiagnosticConnection import DiagnosticConnection
85
- from ..models.M2.AUTOSARTemplates.SystemTemplate.ECUResourceMapping import ECUMapping
86
- from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmEcu, NmNode, UdpNmCluster, UdpNmClusterCoupling, UdpNmEcu, UdpNmNode
87
- from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
88
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import ApplicationEntry, LinFrameTriggering, LinScheduleTable, LinUnconditionalFrame, ScheduleTableEntry
89
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinTopology import LinCommunicationConnector, LinCommunicationController, LinMaster
90
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, CanClusterBusOffRecovery, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, CommunicationController, EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort, LinCluster, LinPhysicalChannel, PhysicalChannel
91
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import DcmIPdu, DynamicPart, DynamicPartAlternative, Frame, FrameTriggering, GeneralPurposeIPdu, GeneralPurposePdu, IPdu, IPduTiming, ISignal, ISignalGroup, ISignalIPdu, ISignalIPduGroup, ISignalToIPduMapping, ISignalTriggering, MultiplexedIPdu, MultiplexedPart, NPdu, NmPdu, Pdu, PduTriggering, SecureCommunicationAuthenticationProps, SecureCommunicationFreshnessProps, SecureCommunicationProps, SecureCommunicationPropsSet, SecuredIPdu, SegmentPosition, StaticPart, SystemSignal, SystemSignalGroup, UserDefinedIPdu, UserDefinedPdu
92
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
93
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
132
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.EcuResourceMapping import ECUMapping
94
133
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrame, CanFrameTriggering, RxIdentifierRange
95
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import AbstractCanCommunicationController, AbstractCanCommunicationControllerAttributes, CanCommunicationConnector, CanCommunicationController, CanControllerConfigurationRequirements, CanControllerFdConfiguration, CanControllerFdConfigurationRequirements
96
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SoAdRoutingGroup, SocketConnection, SocketConnectionBundle, SocketConnectionIpduIdentifier
134
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import AbstractCanCommunicationController
135
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import AbstractCanCommunicationControllerAttributes
136
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
137
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanControllerConfigurationRequirements
138
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanControllerFdConfiguration
139
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanControllerFdConfigurationRequirements
140
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SoAdRoutingGroup, SocketConnection
141
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SocketConnectionBundle
142
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SocketConnectionIpduIdentifier
97
143
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import GenericEthernetFrame
98
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import DoIpEntity, InfrastructureServices, Ipv6Configuration, NetworkEndpoint
99
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ApplicationEndpoint, ConsumedEventGroup, ConsumedServiceInstance, EventHandler, GenericTp, ProvidedServiceInstance, SdServerConfig, SoAdConfig, SocketAddress, TcpTp, TpPort, TransportProtocolConfiguration, UdpTp
100
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import CouplingPort, CouplingPortDetails, CouplingPortFifo, CouplingPortScheduler, CouplingPortStructuralElement, EthernetCluster, EthernetCommunicationConnector, EthernetCommunicationController, EthernetPriorityRegeneration, InitialSdDelayConfig, MacMulticastGroup, RequestResponseDelay, SdClientConfig, VlanMembership
144
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import CouplingPort, CouplingPortDetails, CouplingPortFifo
145
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import CouplingPortScheduler, CouplingPortStructuralElement
146
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCluster, EthernetCommunicationConnector
147
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCommunicationController
148
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetPriorityRegeneration, InitialSdDelayConfig
149
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import MacMulticastGroup, RequestResponseDelay, SdClientConfig
150
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import VlanMembership
151
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import DoIpEntity, InfrastructureServices, Ipv6Configuration
152
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import NetworkEndpoint
153
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ApplicationEndpoint, ConsumedEventGroup
154
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ConsumedServiceInstance, EventHandler, GenericTp
155
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ProvidedServiceInstance, SdServerConfig, SoAdConfig
156
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import SocketAddress, TcpTp, TpPort
157
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import TransportProtocolConfiguration, UdpTp
158
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayCommunication import FlexrayAbsolutelyScheduledTiming, FlexrayFrame
159
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayCommunication import FlexrayFrameTriggering
160
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayTopology import FlexrayCluster, FlexrayCommunicationConnector
161
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayTopology import FlexrayCommunicationController
162
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import ApplicationEntry, LinFrameTriggering, LinScheduleTable
163
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinUnconditionalFrame, ScheduleTableEntry
164
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinTopology import LinCommunicationConnector, LinCommunicationController, LinMaster
101
165
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway, IPduMapping, ISignalMapping, TargetIPduRef
102
- from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpAddress, CanTpChannel, CanTpConfig, CanTpConnection, CanTpEcu, CanTpNode, DoIpLogicAddress, DoIpTpConfig, DoIpTpConnection, LinTpConfig, LinTpConnection, LinTpNode, TpAddress, TpConfig, TpConnection
166
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import DcmIPdu, DynamicPart, DynamicPartAlternative, Frame
167
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import FrameTriggering, GeneralPurposeIPdu, GeneralPurposePdu
168
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import IPdu, IPduTiming, ISignal, ISignalGroup, ISignalIPdu
169
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import ISignalIPduGroup, ISignalToIPduMapping, ISignalTriggering
170
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import MultiplexedIPdu, MultiplexedPart, NPdu, NmPdu, Pdu
171
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import PduTriggering, SecureCommunicationAuthenticationProps
172
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import SecureCommunicationFreshnessProps, SecureCommunicationProps
173
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import SecureCommunicationPropsSet, SecuredIPdu, SegmentPosition
174
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import StaticPart, SystemSignal, SystemSignalGroup
175
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import UserDefinedIPdu, UserDefinedPdu
176
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, CanClusterBusOffRecovery
177
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import FlexrayPhysicalChannel, CycleRepetition, CommunicationCycle
178
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import CanPhysicalChannel, CommConnectorPort, CommunicationCluster
179
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import CommunicationConnector, CommunicationController
180
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort
181
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import LinCluster, LinPhysicalChannel, PhysicalChannel
182
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
183
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType
184
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import TransmissionModeCondition, TransmissionModeDeclaration
185
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import TransmissionModeTiming
186
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
187
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmEcu
188
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import NmNode, UdpNmCluster, UdpNmClusterCoupling, UdpNmEcu, UdpNmNode
189
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.SWmapping import SwcToImplMapping
190
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import BufferProperties, DataTransformation, DataTransformationSet
191
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import EndToEndTransformationISignalProps, TransformationISignalProps
192
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import EndToEndTransformationDescription, TransformationDescription
193
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import TransformationTechnology
194
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpAddress, CanTpChannel, CanTpConfig, CanTpConnection, CanTpEcu
195
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpNode, DoIpLogicAddress, DoIpTpConfig, DoIpTpConnection, LinTpConfig
196
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import LinTpConnection, LinTpNode, TpAddress, TpConfig, TpConnection
103
197
 
104
198
  from .abstract_arxml_parser import AbstractARXMLParser
105
199
 
200
+
106
201
  class ARXMLParser(AbstractARXMLParser):
107
202
  def __init__(self, options=None) -> None:
108
203
  super().__init__(options)
@@ -115,7 +210,7 @@ class ARXMLParser(AbstractARXMLParser):
115
210
  range.setLowerCanId(self.getChildElementOptionalNumericalValue(child_element, "LOWER-CAN-ID")) \
116
211
  .setUpperCanId(self.getChildElementOptionalNumericalValue(child_element, "UPPER-CAN-ID"))
117
212
  return range
118
-
213
+
119
214
  def readSd(self, element: ET.Element, sdg: Sdg):
120
215
  for child_element in self.findall(element, "./SD"):
121
216
  sd = Sd()
@@ -124,12 +219,12 @@ class ARXMLParser(AbstractARXMLParser):
124
219
  sd.setValue(child_element.text)
125
220
  sdg.addSd(sd)
126
221
 
127
- def readSdgCaption(self, element: ET.Element, sdg:Sdg):
222
+ def readSdgCaption(self, element: ET.Element, sdg: Sdg):
128
223
  child_element = self.find(element, "SDG-CAPTION")
129
224
  if child_element is not None:
130
225
  sdg.createSdgCaption(self.getShortName(child_element))
131
226
 
132
- def readSdgSdxRefs(self, element: ET.SubElement, sdg:Sdg):
227
+ def readSdgSdxRefs(self, element: ET.SubElement, sdg: Sdg):
133
228
  for ref in self.getChildElementRefTypeList(element, "SDX-REF"):
134
229
  sdg.addSdxRef(ref)
135
230
 
@@ -143,16 +238,20 @@ class ARXMLParser(AbstractARXMLParser):
143
238
  sdg.addSdgContentsType(self.getSdg(child_element))
144
239
  self.readSdgSdxRefs(element, sdg)
145
240
  return sdg
146
-
241
+
147
242
  def readSdgs(self, element: ET.Element, admin_data: AdminData):
148
- for child_element in self.findall(element, "SDGS/SDG"):
149
- admin_data.addSdg(self.getSdg(child_element))
243
+ for child_element in self.findall(element, "SDGS/*"):
244
+ tag_name = self.getTagName(child_element)
245
+ if tag_name == "SDG":
246
+ admin_data.addSdg(self.getSdg(child_element))
247
+ else:
248
+ self.notImplemented("Unsupported SDG <%s>" % tag_name)
150
249
 
151
250
  def getAdminData(self, element: ET.Element, key: str) -> AdminData:
152
251
  admin_data = None
153
252
  child_element = self.find(element, key)
154
253
  if child_element is not None:
155
- self.logger.debug("readAdminData")
254
+ # self.logger.debug("Read AdminData")
156
255
  admin_data = AdminData()
157
256
  admin_data.setLanguage(self.getChildElementOptionalLiteral(child_element, "LANGUAGE")) \
158
257
  .setUsedLanguages(self.getMultiLanguagePlainText(child_element, "USED-LANGUAGES"))
@@ -176,8 +275,11 @@ class ARXMLParser(AbstractARXMLParser):
176
275
  identifiable.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY")) \
177
276
  .setDesc(self.getMultiLanguageOverviewParagraph(element, "DESC")) \
178
277
  .setIntroduction(self.getDocumentationBlock(element, "INTRODUCTION"))
179
-
278
+
180
279
  identifiable.setAdminData(self.getAdminData(element, "ADMIN-DATA"))
280
+
281
+ def readARElement(self, element: ET.Element, ar_element: ARElement):
282
+ self.readIdentifiable(element, ar_element)
181
283
 
182
284
  def readLLongName(self, element: ET.Element, long_name: MultilanguageLongName):
183
285
  for child_element in self.findall(element, "L-4"):
@@ -185,7 +287,7 @@ class ARXMLParser(AbstractARXMLParser):
185
287
  self.readARObjectAttributes(child_element, l4)
186
288
  l4.value = child_element.text
187
289
  if 'L' in child_element.attrib:
188
- l4.l = child_element.attrib['L']
290
+ l4.l = child_element.attrib['L'] # noqa: E741
189
291
  long_name.addL4(l4)
190
292
 
191
293
  def getMultilanguageLongName(self, element: ET.Element, key: str) -> MultilanguageLongName:
@@ -203,7 +305,7 @@ class ARXMLParser(AbstractARXMLParser):
203
305
  self.readARObjectAttributes(child_element, l2)
204
306
  l2.value = child_element.text
205
307
  if 'L' in child_element.attrib:
206
- l2.l = child_element.attrib['L']
308
+ l2.l = child_element.attrib['L'] # noqa: E741
207
309
  paragraph.addL2(l2)
208
310
 
209
311
  def getMultiLanguageOverviewParagraph(self, element: ET.Element, key: str) -> MultiLanguageOverviewParagraph:
@@ -216,37 +318,37 @@ class ARXMLParser(AbstractARXMLParser):
216
318
  return paragraph
217
319
 
218
320
  def getVariableInAtomicSWCTypeInstanceRef(self, element: ET.Element) -> VariableInAtomicSWCTypeInstanceRef:
219
- iref = None
321
+ instance_ref = None
220
322
  if element is not None:
221
- iref = VariableInAtomicSWCTypeInstanceRef()
222
- self.readARObjectAttributes(element, iref)
223
- iref.setPortPrototypeRef(self.getChildElementOptionalRefType(element, "PORT-PROTOTYPE-REF"))
224
- iref.setTargetDataPrototypeRef(self.getChildElementOptionalRefType(element, "TARGET-DATA-PROTOTYPE-REF"))
225
- return iref
323
+ instance_ref = VariableInAtomicSWCTypeInstanceRef()
324
+ self.readARObjectAttributes(element, instance_ref)
325
+ instance_ref.setPortPrototypeRef(self.getChildElementOptionalRefType(element, "PORT-PROTOTYPE-REF"))
326
+ instance_ref.setTargetDataPrototypeRef(self.getChildElementOptionalRefType(element, "TARGET-DATA-PROTOTYPE-REF"))
327
+ return instance_ref
226
328
 
227
329
  def getComponentInSystemInstanceRef(self, element: ET.Element) -> ComponentInSystemInstanceRef:
228
- iref = None
330
+ instance_ref = None
229
331
  if element is not None:
230
- iref = ComponentInSystemInstanceRef()
231
- self.readARObjectAttributes(element, iref)
232
- iref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF"))
233
- iref.setContextCompositionRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPOSITION-REF"))
234
- iref.setTargetComponentRef(self.getChildElementOptionalRefType(element, "TARGET-COMPONENT-REF"))
235
- return iref
332
+ instance_ref = ComponentInSystemInstanceRef()
333
+ self.readARObjectAttributes(element, instance_ref)
334
+ instance_ref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF"))
335
+ instance_ref.setContextCompositionRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPOSITION-REF"))
336
+ instance_ref.setTargetComponentRef(self.getChildElementOptionalRefType(element, "TARGET-COMPONENT-REF"))
337
+ return instance_ref
236
338
 
237
- def getAutosarVariableRef(self, element: ET.Element, key: str) -> AutosarVariableRef:
339
+ def getAutosarVariableRef(self, element: ET.Element, key: str) -> AutosarVariableRef:
238
340
  child_element = self.find(element, key)
239
- ref = None
341
+ instance_ref = None
240
342
  if (child_element is not None):
241
- ref = AutosarVariableRef()
242
- #self.readARObjectAttributes(child_element, ref)
243
- ref.setAutosarVariableIRef(self.getVariableInAtomicSWCTypeInstanceRef(self.find(child_element, "AUTOSAR-VARIABLE-IREF"))) \
244
- .setLocalVariableRef(self.getChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF"))
245
- return ref
343
+ instance_ref = AutosarVariableRef()
344
+ # self.readARObjectAttributes(child_element, ref)
345
+ instance_ref.setAutosarVariableIRef(self.getVariableInAtomicSWCTypeInstanceRef(self.find(child_element, "AUTOSAR-VARIABLE-IREF"))) \
346
+ .setLocalVariableRef(self.getChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF"))
347
+ return instance_ref
246
348
 
247
- def getLocalVariableRef(self, element: ET.Element, key: str) -> AutosarVariableRef:
349
+ def getLocalVariableRef(self, element: ET.Element, key: str) -> AutosarVariableRef:
248
350
  child_element = self.find(element, key)
249
- ref = None
351
+ ref = None
250
352
  if (child_element is not None):
251
353
  ref = AutosarVariableRef()
252
354
  ref.setLocalVariableRef(self.getChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF"))
@@ -284,31 +386,34 @@ class ARXMLParser(AbstractARXMLParser):
284
386
 
285
387
  self.readIdentifiable(child_element, variable_access)
286
388
 
287
- def readBswModuleDescriptionImplementedEntry(self, element: ET.Element, parent: BswModuleDescription):
389
+ def readBswModuleDescriptionImplementedEntryRefs(self, element: ET.Element, parent: BswModuleDescription):
288
390
  for child_element in self.findall(element, "PROVIDED-ENTRYS/BSW-MODULE-ENTRY-REF-CONDITIONAL"):
289
- ref = self.getChildElementOptionalRefType(child_element, "BSW-MODULE-ENTRY-REF")
391
+ ref = self.getChildElementOptionalRefType(child_element, "BSW-MODULE-ENTRY-REF")
290
392
  if (ref is not None):
291
- parent.addImplementedEntry(ref)
393
+ parent.addImplementedEntryRef(ref)
292
394
  self.logger.debug("ImplementedEntry <%s> of BswModuleDescription <%s> has been added", ref.value, parent.getShortName())
293
395
 
294
396
  def readModeDeclarationGroupPrototype(self, element: ET.Element, prototype: ModeDeclarationGroupPrototype):
295
397
  self.readIdentifiable(element, prototype)
296
- prototype.type_tref = self.getChildElementOptionalRefType(element, "TYPE-TREF")
297
-
298
- def readProvidedModeGroup(self, element: ET.Element, parent: BswModuleDescription):
299
- for child_element in self.findall(element, "PROVIDED-MODE-GROUPS/MODE-DECLARATION-GROUP-PROTOTYPE"):
300
- short_name = self.getShortName(child_element)
301
- self.logger.debug("readProvidedModeGroup %s" % short_name)
398
+ prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
302
399
 
303
- mode_group = parent.createProvidedModeGroup(short_name)
304
- self.readModeDeclarationGroupPrototype(child_element, mode_group)
400
+ def readBswModuleDescriptionProvidedModeGroups(self, element: ET.Element, parent: BswModuleDescription):
401
+ for child_element in self.findall(element, "PROVIDED-MODE-GROUPS/*"):
402
+ tag_name = self.getTagName(child_element)
403
+ if tag_name == "MODE-DECLARATION-GROUP-PROTOTYPE":
404
+ mode_group = parent.createProvidedModeGroup(self.getShortName(child_element))
405
+ self.readModeDeclarationGroupPrototype(child_element, mode_group)
406
+ else:
407
+ self.notImplemented("Unsupported ProvidedModeGroup <%s>" % tag_name)
305
408
 
306
- def readRequiredModeGroup(self, element: ET.Element, parent: BswModuleDescription):
307
- for child_element in self.findall(element, "REQUIRED-MODE-GROUPS/MODE-DECLARATION-GROUP-PROTOTYPE"):
308
- short_name = self.getShortName(child_element)
309
- self.logger.debug("readRequiredModeGroup %s" % short_name)
310
- mode_group = parent.createProvidedModeGroup(short_name)
311
- mode_group.type_tref = self.getChildElementRefType(parent.getShortName(), child_element, "TYPE-TREF")
409
+ def readBswModuleDescriptionRequiredModeGroups(self, element: ET.Element, parent: BswModuleDescription):
410
+ for child_element in self.findall(element, "REQUIRED-MODE-GROUPS/*"):
411
+ tag_name = self.getTagName(child_element)
412
+ if tag_name == "MODE-DECLARATION-GROUP-PROTOTYPE":
413
+ prototype = parent.createProvidedModeGroup(self.getShortName(child_element))
414
+ self.readModeDeclarationGroupPrototype(child_element, prototype)
415
+ else:
416
+ self.notImplemented("Unsupported RequiredModeGroup <%s>" % tag_name)
312
417
 
313
418
  def readCanEnterExclusiveAreaRefs(self, element: ET.Element, entity: ExecutableEntity):
314
419
  for ref in self.getChildElementRefTypeList(element, "CAN-ENTER-EXCLUSIVE-AREA-REFS/CAN-ENTER-EXCLUSIVE-AREA-REF"):
@@ -321,8 +426,8 @@ class ARXMLParser(AbstractARXMLParser):
321
426
  entity.setMinimumStartInterval(self.getChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL")) \
322
427
  .setSwAddrMethodRef(self.getChildElementOptionalRefType(element, "SW-ADDR-METHOD-REF"))
323
428
 
324
- def readBswModuleEntityManagedModeGroup(self, element: ET.Element, entity: BswModuleEntity):
325
- for child_element in self.findall(element, "sMANAGED-MODE-GROUPS/MODE-DECLARATION-GROUP-PROTOTYPE-REF-CONDITIONAL"):
429
+ def readBswModuleEntityManagedModeGroups(self, element: ET.Element, entity: BswModuleEntity):
430
+ for child_element in self.findall(element, "MANAGED-MODE-GROUPS/MODE-DECLARATION-GROUP-PROTOTYPE-REF-CONDITIONAL"):
326
431
  ref_type = self.getChildElementOptionalRefType(child_element, "MODE-DECLARATION-GROUP-PROTOTYPE-REF")
327
432
  if ref_type is not None:
328
433
  entity.addManagedModeGroupRef(ref_type)
@@ -381,10 +486,22 @@ class ARXMLParser(AbstractARXMLParser):
381
486
  behavior.addDataTypeMappingRef(ref)
382
487
 
383
488
  def readInternalBehaviorConstantMemories(self, element: ET.Element, behavior: InternalBehavior):
384
- for child_element in self.findall(element, "CONSTANT-MEMORYS/PARAMETER-DATA-PROTOTYPE"):
385
- short_name = self.getShortName(child_element)
386
- prototype = behavior.createConstantMemory(short_name)
387
- self.readParameterDataPrototype(child_element, prototype)
489
+ for child_element in self.findall(element, "CONSTANT-MEMORYS/*"):
490
+ tag_name = self.getTagName(child_element)
491
+ if tag_name == "PARAMETER-DATA-PROTOTYPE":
492
+ prototype = behavior.createConstantMemory(self.getShortName(child_element))
493
+ self.readParameterDataPrototype(child_element, prototype)
494
+ else:
495
+ self.notImplemented("Unsupported constant memories <%s>" % tag_name)
496
+
497
+ def readInternalBehaviorStaticMemories(self, element: ET.Element, behavior: InternalBehavior):
498
+ for child_element in self.findall(element, "STATIC-MEMORYS/*"):
499
+ tag_name = self.getTagName(child_element)
500
+ if tag_name == "VARIABLE-DATA-PROTOTYPE":
501
+ prototype = behavior.createStaticMemory(self.getShortName(child_element))
502
+ self.readVariableDataPrototype(child_element, prototype)
503
+ else:
504
+ self.notImplemented("Unsupported static memories <%s>" % tag_name)
388
505
 
389
506
  def readInternalBehavior(self, element: ET.Element, behavior: InternalBehavior):
390
507
  self.readIdentifiable(element, behavior)
@@ -393,6 +510,7 @@ class ARXMLParser(AbstractARXMLParser):
393
510
  short_name = self.getShortName(child_element)
394
511
  behavior.createExclusiveArea(short_name)
395
512
  self.readDataTypeMappingRefs(element, behavior)
513
+ self.readInternalBehaviorStaticMemories(element, behavior)
396
514
 
397
515
  def getRoleBasedDataAssignment(self, element: ET.Element) -> RoleBasedDataAssignment:
398
516
  assignment = RoleBasedDataAssignment()
@@ -439,10 +557,8 @@ class ARXMLParser(AbstractARXMLParser):
439
557
  else:
440
558
  self.raiseError("Unsupported assigned ports <%s>" % tag_name)
441
559
 
442
- def readNvBlockNeeds(self, element: ET.Element, parent: SwcServiceDependency):
443
- short_name = self.getShortName(element)
444
- needs = parent.createNvBlockNeeds(short_name)
445
- self.logger.debug("read NvBlockNeeds %s" % short_name)
560
+ def readNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
561
+ self.logger.debug("Read NvBlockNeeds <%s>" % needs.getShortName())
446
562
  self.readIdentifiable(element, needs)
447
563
  needs.setCalcRamBlockCrc(self.getChildElementOptionalBooleanValue(element, "CALC-RAM-BLOCK-CRC")) \
448
564
  .setCheckStaticBlockId(self.getChildElementOptionalBooleanValue(element, "CHECK-STATIC-BLOCK-ID")) \
@@ -464,25 +580,19 @@ class ARXMLParser(AbstractARXMLParser):
464
580
  .setWritingFrequency(self.getChildElementOptionalPositiveInteger(element, "WRITING-FREQUENCY")) \
465
581
  .setWritingPriority(self.getChildElementOptionalLiteral(element, "WRITING-PRIORITY"))
466
582
 
467
- def reaDiagnosticCommunicationManagerNeeds(self, element: ET.Element, parent: SwcServiceDependency):
468
- short_name = self.getShortName(element)
469
- needs = parent.createDiagnosticCommunicationManagerNeeds(short_name)
470
- self.logger.debug("read DiagnosticCommunicationManagerNeeds %s" % short_name)
583
+ def reaDiagnosticCommunicationManagerNeeds(self, element: ET.Element, needs: DiagnosticCommunicationManagerNeeds):
584
+ self.logger.debug("Read DiagnosticCommunicationManagerNeeds <%s>" % needs.getShortName())
471
585
  self.readIdentifiable(element, needs)
472
586
  needs.setServiceRequestCallbackType(self.getChildElementOptionalLiteral(element, "SERVICE-REQUEST-CALLBACK-TYPE"))
473
587
 
474
- def readDiagnosticRoutineNeeds(self, element: ET.Element, parent: SwcServiceDependency):
475
- short_name = self.getShortName(element)
476
- needs = parent.createDiagnosticRoutineNeeds(short_name)
477
- self.logger.debug("read DiagnosticRoutineNeeds %s" % short_name)
588
+ def readDiagnosticRoutineNeeds(self, element: ET.Element, needs: DiagnosticRoutineNeeds):
589
+ self.logger.debug("Read DiagnosticRoutineNeeds %s" % needs.getShortName())
478
590
  self.readIdentifiable(element, needs)
479
591
  needs.setDiagRoutineType(self.getChildElementOptionalLiteral(element, "DIAG-ROUTINE-TYPE")) \
480
592
  .setRidNumber(self.getChildElementOptionalIntegerValue(element, "RID-NUMBER"))
481
593
 
482
- def readDiagnosticValueNeeds(self, element: ET.Element, parent: SwcServiceDependency):
483
- short_name = self.getShortName(element)
484
- needs = parent.createDiagnosticValueNeeds(short_name)
485
- self.logger.debug("read DiagnosticValueNeeds %s" % short_name)
594
+ def readDiagnosticValueNeeds(self, element: ET.Element, needs: DiagnosticValueNeeds):
595
+ self.logger.debug("Read DiagnosticValueNeeds %s" % needs.getShortName())
486
596
  self.readIdentifiable(element, needs)
487
597
  needs.setDataLength(self.getChildElementOptionalPositiveInteger(element, "DATA-LENGTH")) \
488
598
  .setDiagnosticValueAccess(self.getChildElementOptionalLiteral(element, "DIAGNOSTIC-VALUE-ACCESS")) \
@@ -502,54 +612,54 @@ class ARXMLParser(AbstractARXMLParser):
502
612
  else:
503
613
  self.notImplemented("Unsupported DiagEventDebounceAlgorithm <%s>" % tag_name)
504
614
 
505
- def readDiagnosticEventNeeds(self, element: ET.Element, parent: SwcServiceDependency):
506
- short_name = self.getShortName(element)
507
- needs = parent.createDiagnosticEventNeeds(short_name)
508
- self.logger.debug("Read DiagnosticEventNeeds %s" % short_name)
615
+ def readDiagnosticEventNeeds(self, element: ET.Element, needs: DiagnosticEventNeeds):
616
+ self.logger.debug("Read DiagnosticEventNeeds <%s>" % needs.getShortName())
509
617
  self.readIdentifiable(element, needs)
510
618
  self.readDiagEventDebounceAlgorithm(element, needs)
511
619
  needs.setDtcKind(self.getChildElementOptionalLiteral(element, "DTC-KIND")) \
512
620
  .setUdsDtcNumber(self.getChildElementOptionalIntegerValue(element, "UDS-DTC-NUMBER"))
513
621
 
514
- def readDiagnosticEventInfoNeeds(self, element: ET.Element, parent: SwcServiceDependency):
515
- short_name = self.getShortName(element)
516
- needs = parent.createDiagnosticEventInfoNeeds(short_name)
517
- self.logger.debug("Read DiagnosticEventInfoNeeds %s" % short_name)
622
+ def readDiagnosticEventInfoNeeds(self, element: ET.Element, needs: DiagnosticEventInfoNeeds):
623
+ self.logger.debug("Read DiagnosticEventInfoNeeds <%s>" % needs.getShortName())
518
624
  self.readIdentifiable(element, needs)
519
625
  needs.setUdsDtcNumber(self.getChildElementOptionalPositiveInteger(element, "UDS-DTC-NUMBER"))
520
626
 
521
- def readCryptoServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
522
- short_name = self.getShortName(element)
523
- needs = parent.createCryptoServiceNeeds(short_name)
524
- self.logger.debug("Read DiagnosticValueNeeds %s" % short_name)
627
+ def readCryptoServiceNeeds(self, element: ET.Element, needs: CryptoServiceNeeds):
628
+ self.logger.debug("Read CryptoServiceNeeds <%s>" % needs.getShortName())
525
629
  self.readIdentifiable(element, needs)
526
630
  needs.setMaximumKeyLength(self.getChildElementOptionalPositiveInteger(element, "MAXIMUM-KEY-LENGTH"))
527
631
 
528
- def readEcuStateMgrUserNeeds(self, element: ET.Element, parent: SwcServiceDependency):
529
- short_name = self.getShortName(element)
530
- needs = parent.createEcuStateMgrUserNeeds(short_name)
531
- self.logger.debug("read DiagnosticValueNeeds %s" % short_name)
632
+ def readEcuStateMgrUserNeeds(self, element: ET.Element, needs: EcuStateMgrUserNeeds):
633
+ self.logger.debug("read EcuStateMgrUserNeeds %s" % needs.getShortName())
532
634
  self.readIdentifiable(element, needs)
533
635
 
534
636
  def readSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
535
637
  for child_element in self.findall(element, "SERVICE-NEEDS/*"):
536
638
  tag_name = self.getTagName(child_element)
537
639
  if tag_name == "NV-BLOCK-NEEDS":
538
- self.readNvBlockNeeds(child_element, parent)
640
+ needs = parent.createNvBlockNeeds(self.getShortName(child_element))
641
+ self.readNvBlockNeeds(child_element, needs)
539
642
  elif tag_name == "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS":
540
- self.reaDiagnosticCommunicationManagerNeeds(child_element, parent)
643
+ needs = parent.createDiagnosticCommunicationManagerNeeds(self.getShortName(child_element))
644
+ self.reaDiagnosticCommunicationManagerNeeds(child_element, needs)
541
645
  elif tag_name == "DIAGNOSTIC-ROUTINE-NEEDS":
542
- self.readDiagnosticRoutineNeeds(child_element, parent)
646
+ needs = parent.createDiagnosticRoutineNeeds(self.getShortName(child_element))
647
+ self.readDiagnosticRoutineNeeds(child_element, needs)
543
648
  elif tag_name == "DIAGNOSTIC-VALUE-NEEDS":
544
- self.readDiagnosticValueNeeds(child_element, parent)
649
+ needs = parent.createDiagnosticValueNeeds(self.getShortName(child_element))
650
+ self.readDiagnosticValueNeeds(child_element, needs)
545
651
  elif tag_name == "DIAGNOSTIC-EVENT-NEEDS":
546
- self.readDiagnosticEventNeeds(child_element, parent)
652
+ needs = parent.createDiagnosticEventNeeds(self.getShortName(child_element))
653
+ self.readDiagnosticEventNeeds(child_element, needs)
547
654
  elif tag_name == "DIAGNOSTIC-EVENT-INFO-NEEDS":
548
- self.readDiagnosticEventInfoNeeds(child_element, parent)
655
+ needs = parent.createDiagnosticEventInfoNeeds(self.getShortName(child_element))
656
+ self.readDiagnosticEventInfoNeeds(child_element, needs)
549
657
  elif tag_name == "CRYPTO-SERVICE-NEEDS":
550
- self.readCryptoServiceNeeds(child_element, parent)
658
+ needs = parent.createCryptoServiceNeeds(self.getShortName(child_element))
659
+ self.readCryptoServiceNeeds(child_element, needs)
551
660
  elif tag_name == "ECU-STATE-MGR-USER-NEEDS":
552
- self.readEcuStateMgrUserNeeds(child_element, parent)
661
+ needs = parent.createEcuStateMgrUserNeeds(self.getShortName(child_element))
662
+ self.readEcuStateMgrUserNeeds(child_element, needs)
553
663
  else:
554
664
  self.notImplemented("Unsupported service needs <%s>" % tag_name)
555
665
 
@@ -592,28 +702,47 @@ class ARXMLParser(AbstractARXMLParser):
592
702
  prototype = behavior.createSharedParameter(short_name)
593
703
  self.readParameterDataPrototype(child_element, prototype)
594
704
 
595
- def readSwcInternalBehavior(self, element: ET.Element, parent: AtomicSwComponentType):
596
- for child_element in self.findall(element, "INTERNAL-BEHAVIORS/SWC-INTERNAL-BEHAVIOR"):
597
- short_name = self.getShortName(child_element)
598
- behavior = parent.createSwcInternalBehavior(short_name)
599
- self.logger.debug("readSwcInternalBehavior %s" % behavior.full_name)
705
+ def readIncludedModeDeclarationGroupSet(self, element: ET.Element, group_set: IncludedModeDeclarationGroupSet):
706
+ for ref in self.getChildElementRefTypeList(element, "MODE-DECLARATION-GROUP-REFS/MODE-DECLARATION-GROUP-REF"):
707
+ group_set.addModeDeclarationGroupRef(ref)
708
+ group_set.setPrefix(self.getChildElementOptionalLiteral(element, "PREFIX"))
600
709
 
601
- # read the internal behavior
602
- self.readInternalBehavior(child_element, behavior)
603
-
604
- # read the extra SwcInternalBehavior
605
- self.readSwcInternalBehaviorArTypedPerInstanceMemories(child_element, behavior)
606
- self.readSwcInternalBehaviorRunnables(child_element, behavior)
607
- self.readSwcInternalBehaviorEvents(child_element, behavior)
608
- self.readSwcInternalBehaviorServiceDependencies(child_element, behavior)
609
- self.readExplicitInterRunnableVariables(child_element, behavior)
610
-
611
- behavior.setHandleTerminationAndRestart(self.getChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART"))
612
- self.readPerInstanceMemories(child_element, behavior)
613
- self.readPerInstanceParameters(child_element, behavior)
614
- self.readPortAPIOptions(child_element, behavior)
615
- self.readSwcInternalBehaviorSharedParameters(child_element, behavior)
616
- behavior.setSupportsMultipleInstantiation(self.getChildElementOptionalBooleanValue(child_element, "SUPPORTS-MULTIPLE-INSTANTIATION"))
710
+ def readSwcInternalBehaviorIncludedModeDeclarationGroupSets(self, element: ET.Element, behavior: SwcInternalBehavior):
711
+ for child_element in self.findall(element, "INCLUDED-MODE-DECLARATION-GROUP-SETS/*"):
712
+ tag_name = self.getTagName(child_element)
713
+ if tag_name == "INCLUDED-MODE-DECLARATION-GROUP-SET":
714
+ group_set = IncludedModeDeclarationGroupSet()
715
+ self.readIncludedModeDeclarationGroupSet(child_element, group_set)
716
+ behavior.addIncludedModeDeclarationGroupSet(group_set)
717
+ else:
718
+ self.notImplemented("Unsupported IncludedModeDeclarationGroupSet <%s>" % tag_name)
719
+
720
+ def readSwcInternalBehavior(self, element: ET.Element, behavior: SwcInternalBehavior):
721
+ # read the internal behavior
722
+ self.readInternalBehavior(element, behavior)
723
+
724
+ # read the extra SwcInternalBehavior
725
+ self.readSwcInternalBehaviorArTypedPerInstanceMemories(element, behavior)
726
+ self.readSwcInternalBehaviorEvents(element, behavior)
727
+ self.readSwcInternalBehaviorExplicitInterRunnableVariables(element, behavior)
728
+ behavior.setHandleTerminationAndRestart(self.getChildElementOptionalLiteral(element, "HANDLE-TERMINATION-AND-RESTART"))
729
+ self.readSwcInternalBehaviorIncludedModeDeclarationGroupSets(element, behavior)
730
+ self.readSwcInternalBehaviorPerInstanceMemories(element, behavior)
731
+ self.readSwcInternalBehaviorPerInstanceParameters(element, behavior)
732
+ self.readSwcInternalBehaviorPortAPIOptions(element, behavior)
733
+ self.readSwcInternalBehaviorRunnables(element, behavior)
734
+ self.readSwcInternalBehaviorServiceDependencies(element, behavior)
735
+ self.readSwcInternalBehaviorSharedParameters(element, behavior)
736
+ behavior.setSupportsMultipleInstantiation(self.getChildElementOptionalBooleanValue(element, "SUPPORTS-MULTIPLE-INSTANTIATION"))
737
+
738
+ def readAtomicSwComponentTypeSwcInternalBehavior(self, element: ET.Element, parent: AtomicSwComponentType):
739
+ for child_element in self.findall(element, "INTERNAL-BEHAVIORS/*"):
740
+ tag_name = self.getTagName(child_element)
741
+ if tag_name == "SWC-INTERNAL-BEHAVIOR":
742
+ behavior = parent.createSwcInternalBehavior(self.getShortName(child_element))
743
+ self.readSwcInternalBehavior(child_element, behavior)
744
+ else:
745
+ self.notImplemented("Unsupported Internal Behaviors <%s>" % tag_name)
617
746
 
618
747
  def getIncludedModeDeclarationGroupSets(self, element: ET.Element) -> List[IncludedModeDeclarationGroupSet]:
619
748
  group_sets = []
@@ -624,10 +753,39 @@ class ARXMLParser(AbstractARXMLParser):
624
753
  group_sets.append(group_set)
625
754
  return group_sets
626
755
 
756
+ def readBswVariableAccess(self, element: ET.Element, access: BswVariableAccess):
757
+ self.readReferrable(element, access)
758
+ access.setAccessedVariableRef(self.getChildElementOptionalRefType(element, "ACCESSED-VARIABLE-REF"))
759
+
760
+ def readBswModuleEntityDataSendPoints(self, element: ET.Element, entity: BswModuleEntity):
761
+ for child_element in self.findall(element, "DATA-SEND-POINTS/*"):
762
+ tag_name = self.getTagName(child_element)
763
+ if tag_name == "BSW-VARIABLE-ACCESS":
764
+ point = entity.createDataSendPoint(self.getShortName(child_element))
765
+ self.readBswVariableAccess(child_element, point)
766
+ else:
767
+ self.notImplemented("Unsupported Data Send Point <%s>" % tag_name)
768
+
769
+ def readBswModuleEntityDataReceiverPoints(self, element: ET.Element, entity: BswModuleEntity):
770
+ for child_element in self.findall(element, "DATA-RECEIVE-POINTS/*"):
771
+ tag_name = self.getTagName(child_element)
772
+ if tag_name == "BSW-VARIABLE-ACCESS":
773
+ point = entity.createDataReceivePoint(self.getShortName(child_element))
774
+ self.readBswVariableAccess(child_element, point)
775
+ else:
776
+ self.notImplemented("Unsupported Data Receive Point <%s>" % tag_name)
777
+
778
+ def readBswModuleEntityIssuedTriggerRefs(self, element: ET.Element, entity: BswModuleEntity):
779
+ for ref in self.getChildElementRefTypeList(element, "ISSUED-TRIGGERS/TRIGGER-REF-CONDITIONAL/TRIGGER-REF"):
780
+ entity.addIssuedTriggerRef(ref)
781
+
627
782
  def readBswModuleEntity(self, element: ET.Element, entity: BswModuleEntity):
628
783
  self.readExecutableEntity(element, entity)
784
+ self.readBswModuleEntityDataReceiverPoints(element, entity)
785
+ self.readBswModuleEntityDataSendPoints(element, entity)
629
786
  entity.setImplementedEntryRef(self.getChildElementRefType(entity.getShortName(), element, "IMPLEMENTED-ENTRY-REF"))
630
- self.readBswModuleEntityManagedModeGroup(element, entity)
787
+ self.readBswModuleEntityManagedModeGroups(element, entity)
788
+ self.readBswModuleEntityIssuedTriggerRefs(element, entity)
631
789
 
632
790
  def readBswCalledEntity(self, element: ET.Element, entity: BswCalledEntity):
633
791
  self.logger.debug("read BswCalledEntity %s" % entity.getShortName())
@@ -649,7 +807,7 @@ class ARXMLParser(AbstractARXMLParser):
649
807
  if tag_name == "BSW-CALLED-ENTITY":
650
808
  entity = behavior.createBswCalledEntity(self.getShortName(child_element))
651
809
  self.readBswCalledEntity(child_element, entity)
652
- elif tag_name == "BSW-SCHEDULABLE-ENTITY":
810
+ elif tag_name == "BSW-SCHEDULABLE-ENTITY":
653
811
  entity = behavior.createBswSchedulableEntity(self.getShortName(child_element))
654
812
  self.readBswSchedulableEntity(child_element, entity)
655
813
  elif tag_name == "BSW-INTERRUPT-ENTITY":
@@ -665,13 +823,17 @@ class ARXMLParser(AbstractARXMLParser):
665
823
  self.readBswScheduleEvent(element, event)
666
824
  event.setTriggerRef(self.getChildElementOptionalRefType(element, "TRIGGER-REF"))
667
825
 
826
+ def readBswOperationInvokedEvent(self, element: ET.Element, event: BswOperationInvokedEvent):
827
+ self.readBswEvent(element, event)
828
+ event.setEntryRef(self.getChildElementOptionalRefType(element, "ENTRY-REF"))
829
+
668
830
  def readBswInternalBehaviorEvents(self, element: ET.Element, behavior: BswInternalBehavior):
669
831
  for child_element in self.findall(element, "EVENTS/*"):
670
832
  tag_name = self.getTagName(child_element)
671
833
  if tag_name == "BSW-MODE-SWITCH-EVENT":
672
834
  event = behavior.createBswModeSwitchEvent(self.getShortName(child_element))
673
835
  self.readBswModeSwitchEvent(child_element, event)
674
- elif tag_name == "BSW-TIMING-EVENT":
836
+ elif tag_name == "BSW-TIMING-EVENT":
675
837
  event = behavior.createBswTimingEvent(self.getShortName(child_element))
676
838
  self.readBswTimingEvent(child_element, event)
677
839
  elif tag_name == "BSW-DATA-RECEIVED-EVENT":
@@ -686,35 +848,110 @@ class ARXMLParser(AbstractARXMLParser):
686
848
  elif tag_name == "BSW-EXTERNAL-TRIGGER-OCCURRED-EVENT":
687
849
  event = behavior.createBswExternalTriggerOccurredEvent(self.getShortName(child_element))
688
850
  self.readBswExternalTriggerOccurredEvent(child_element, event)
851
+ elif tag_name == "BSW-OPERATION-INVOKED-EVENT":
852
+ event = behavior.createBswOperationInvokedEvent(self.getShortName(child_element))
853
+ self.readBswOperationInvokedEvent(child_element, event)
689
854
  else:
690
855
  self.notImplemented("Unsupported BswModuleEntity <%s>" % tag_name)
691
856
 
692
- def readBswInternalBehavior(self, element: ET.Element, parent: BswModuleDescription):
693
- for child_element in self.findall(element, "INTERNAL-BEHAVIORS/BSW-INTERNAL-BEHAVIOR"):
694
- short_name = self.getShortName(child_element)
695
- behavior = parent.createBswInternalBehavior(short_name)
696
- self.logger.debug("read BswInternalBehavior %s" % behavior.full_name)
697
-
698
- # read the internal behavior
699
- self.readInternalBehavior(child_element, behavior)
700
- self.readBswInternalBehaviorEntities(child_element, behavior)
701
- self.readBswInternalBehaviorEvents(child_element, behavior)
702
- self.readBswInternalBehaviorModeSenderPolicy(child_element, behavior)
703
- for group_set in self.getIncludedModeDeclarationGroupSets(child_element):
704
- behavior.addIncludedModeDeclarationGroupSet(group_set)
857
+ def readBswApiOptions(self, element: ET.Element, options: BswApiOptions):
858
+ self.readARObjectAttributes(element, options)
859
+ options.setEnableTakeAddress(self.getChildElementOptionalBooleanValue(element, "ENABLE-TAKE-ADDRESS"))
860
+
861
+ def readBswDataReceptionPolicy(self, element: ET.Element, policy: BswDataReceptionPolicy):
862
+ self.readBswApiOptions(element, policy)
863
+ policy.setReceivedDataRef(self.getChildElementOptionalRefType(element, "RECEIVED-DATA-REF"))
864
+
865
+ def readBswQueuedDataReceptionPolicy(self, element: ET.Element, policy: BswQueuedDataReceptionPolicy):
866
+ self.readBswDataReceptionPolicy(element, policy)
867
+ policy.setQueueLength(self.getChildElementOptionalPositiveInteger(element, "QUEUE-LENGTH"))
868
+
869
+ def readBswInternalBehaviorReceptionPolicies(self, element: ET.Element, behavior: BswInternalBehavior):
870
+ for child_element in self.findall(element, "RECEPTION-POLICYS/*"):
871
+ tag_name = self.getTagName(child_element)
872
+ if tag_name == "BSW-QUEUED-DATA-RECEPTION-POLICY":
873
+ policy = BswQueuedDataReceptionPolicy()
874
+ self.readBswQueuedDataReceptionPolicy(child_element, policy)
875
+ behavior.addReceptionPolicy(policy)
876
+ else:
877
+ self.notImplemented("Unsupported Reception Policies <%s>" % tag_name)
878
+
879
+ def readBswInternalBehavior(self, element: ET.Element, behavior: BswInternalBehavior):
880
+ self.logger.debug("Read BswInternalBehavior <%s>" % behavior.full_name)
881
+
882
+ # read the internal behavior
883
+ self.readInternalBehavior(element, behavior)
884
+ self.readBswInternalBehaviorEntities(element, behavior)
885
+ self.readBswInternalBehaviorEvents(element, behavior)
886
+ self.readBswInternalBehaviorModeSenderPolicy(element, behavior)
887
+ for group_set in self.getIncludedModeDeclarationGroupSets(element):
888
+ behavior.addIncludedModeDeclarationGroupSet(group_set)
889
+ self.readBswInternalBehaviorReceptionPolicies(element, behavior)
890
+
891
+ def readBswModuleDescriptionBswInternalBehaviors(self, element: ET.Element, desc: BswModuleDescription):
892
+ for child_element in self.findall(element, "INTERNAL-BEHAVIORS/*"):
893
+ tag_name = self.getTagName(child_element)
894
+ if tag_name == "BSW-INTERNAL-BEHAVIOR":
895
+ behavior = desc.createBswInternalBehavior(self.getShortName(child_element))
896
+ self.readBswInternalBehavior(child_element, behavior)
897
+ else:
898
+ self.notImplemented("Unsupported Internal Behavior <%s>" % tag_name)
899
+
900
+ def readTrigger(self, element: ET.Element, trigger: Trigger):
901
+ self.readIdentifiable(element, trigger)
902
+
903
+ def readBswModuleDescriptionReleasedTriggers(self, element: ET.Element, desc: BswModuleDescription):
904
+ for child_element in self.findall(element, "RELEASED-TRIGGERS/*"):
905
+ tag_name = self.getTagName(child_element)
906
+ if tag_name == "TRIGGER":
907
+ trigger = desc.createReleasedTrigger(self.getShortName(child_element))
908
+ self.readTrigger(child_element, trigger)
909
+ else:
910
+ self.notImplemented("Unsupported Released Trigger <%s>" % tag_name)
911
+
912
+ def readBswModuleDescriptionRequiredTriggers(self, element: ET.Element, desc: BswModuleDescription):
913
+ for child_element in self.findall(element, "REQUIRED-TRIGGERS/*"):
914
+ tag_name = self.getTagName(child_element)
915
+ if tag_name == "TRIGGER":
916
+ trigger = desc.createRequiredTrigger(self.getShortName(child_element))
917
+ self.readTrigger(child_element, trigger)
918
+ else:
919
+ self.notImplemented("Unsupported Required Trigger <%s>" % tag_name)
920
+
921
+ def readBswModuleDescriptionProvidedDatas(self, element: ET.Element, desc: BswModuleDescription):
922
+ for child_element in self.findall(element, "PROVIDED-DATAS/*"):
923
+ tag_name = self.getTagName(child_element)
924
+ if tag_name == "VARIABLE-DATA-PROTOTYPE":
925
+ data = desc.createProvidedData(self.getShortName(child_element))
926
+ self.readVariableDataPrototype(child_element, data)
927
+ else:
928
+ self.notImplemented("Unsupported Provided Data <%s>" % tag_name)
929
+
930
+ def readBswModuleDescriptionRequiredDatas(self, element: ET.Element, desc: BswModuleDescription):
931
+ for child_element in self.findall(element, "REQUIRED-DATAS/*"):
932
+ tag_name = self.getTagName(child_element)
933
+ if tag_name == "VARIABLE-DATA-PROTOTYPE":
934
+ data = desc.createRequiredData(self.getShortName(child_element))
935
+ self.readVariableDataPrototype(child_element, data)
936
+ else:
937
+ self.notImplemented("Unsupported Required Data <%s>" % tag_name)
705
938
 
706
939
  def readBswModuleDescription(self, element: ET.Element, desc: BswModuleDescription):
707
940
  self.logger.debug("Read BswModuleDescription <%s>" % desc.getShortName())
708
941
 
709
942
  self.readIdentifiable(element, desc)
710
943
  desc.setModuleId(self.getChildElementOptionalNumericalValue(element, "MODULE-ID"))
711
- self.readBswModuleDescriptionImplementedEntry(element, desc)
712
- self.readProvidedModeGroup(element, desc)
713
- self.readRequiredModeGroup(element, desc)
714
- self.readBswInternalBehavior(element, desc)
944
+ self.readBswModuleDescriptionImplementedEntryRefs(element, desc)
945
+ self.readBswModuleDescriptionProvidedModeGroups(element, desc)
946
+ self.readBswModuleDescriptionRequiredModeGroups(element, desc)
947
+ self.readBswModuleDescriptionReleasedTriggers(element, desc)
948
+ self.readBswModuleDescriptionRequiredTriggers(element, desc)
949
+ self.readBswModuleDescriptionProvidedDatas(element, desc)
950
+ self.readBswModuleDescriptionRequiredDatas(element, desc)
951
+ self.readBswModuleDescriptionBswInternalBehaviors(element, desc)
715
952
 
716
953
  def readSwServiceArg(self, element: ET.Element, arg: SwServiceArg):
717
- self.logger.debug("Read SwServiceArg <%s>" % arg.getShortName())
954
+ self.readIdentifiable(element, arg)
718
955
  arg.setDirection(self.getChildElementOptionalLiteral(element, "DIRECTION")) \
719
956
  .setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
720
957
 
@@ -778,7 +1015,7 @@ class ARXMLParser(AbstractARXMLParser):
778
1015
  memory_section = consumption.createMemorySection(self.getShortName(child_element))
779
1016
  self.readIdentifiable(child_element, memory_section)
780
1017
  memory_section.setAlignment(self.getChildElementOptionalLiteral(child_element, "ALIGNMENT")) \
781
- .setMemClassSymbol(self.getChildElementOptionalLiteral(child_element, "MEM-CLASS-SYMBOL"))
1018
+ .setMemClassSymbol(self.getChildElementOptionalLiteral(child_element, "MEM-CLASS-SYMBOL"))
782
1019
  self.readMemorySectionOptions(child_element, memory_section)
783
1020
  memory_section.setSize(self.getChildElementOptionalNumericalValue(child_element, "SIZE")) \
784
1021
  .setSwAddrMethodRef(self.getChildElementOptionalRefType(child_element, "SW-ADDRMETHOD-REF")) \
@@ -830,7 +1067,8 @@ class ARXMLParser(AbstractARXMLParser):
830
1067
  self.logger.debug("Read BswImplementation <%s>" % impl.getShortName())
831
1068
  self.readImplementation(element, impl)
832
1069
  impl.setArReleaseVersion(self.getChildElementOptionalLiteral(element, "AR-RELEASE-VERSION")) \
833
- .setBehaviorRef(self.getChildElementOptionalRefType(element, "BEHAVIOR-REF"))
1070
+ .setBehaviorRef(self.getChildElementOptionalRefType(element, "BEHAVIOR-REF")) \
1071
+ .setVendorApiInfix(self.getChildElementOptionalLiteral(element, "VENDOR-API-INFIX"))
834
1072
  self.readBswImplementationVendorSpecificModuleDefRefs(element, impl)
835
1073
  AUTOSAR.getInstance().addImplementationBehaviorMap(impl.getFullName(), impl.getBehaviorRef().getValue())
836
1074
 
@@ -840,19 +1078,19 @@ class ARXMLParser(AbstractARXMLParser):
840
1078
  impl.setBehaviorRef(self.getChildElementOptionalRefType(element, "BEHAVIOR-REF"))
841
1079
  AUTOSAR.getInstance().addImplementationBehaviorMap(impl.getFullName(), impl.getBehaviorRef().getValue())
842
1080
 
843
- def readDataReceivePointByArguments(self, element, parent: RunnableEntity):
1081
+ def readRunnableEntityDataReceivePointByArguments(self, element, parent: RunnableEntity):
844
1082
  self._readVariableAccesses(element, parent, "DATA-RECEIVE-POINT-BY-ARGUMENTS")
845
1083
 
846
- def readDataReceivePointByValues(self, element: ET.Element, parent: RunnableEntity):
1084
+ def readRunnableEntityDataReceivePointByValues(self, element: ET.Element, parent: RunnableEntity):
847
1085
  self._readVariableAccesses(element, parent, "DATA-RECEIVE-POINT-BY-VALUES")
848
1086
 
849
- def readDataReadAccesses(self, element: ET.Element, parent: RunnableEntity):
1087
+ def readRunnableEntityDataReadAccesses(self, element: ET.Element, parent: RunnableEntity):
850
1088
  self._readVariableAccesses(element, parent, "DATA-READ-ACCESSS")
851
1089
 
852
- def readDataWriteAccesses(self, element: ET.Element, parent: RunnableEntity):
1090
+ def readRunnableEntityDataWriteAccesses(self, element: ET.Element, parent: RunnableEntity):
853
1091
  self._readVariableAccesses(element, parent, "DATA-WRITE-ACCESSS")
854
1092
 
855
- def readDataSendPoints(self, element: ET.Element, parent: RunnableEntity):
1093
+ def readRunnableEntityDataSendPoints(self, element: ET.Element, parent: RunnableEntity):
856
1094
  self._readVariableAccesses(element, parent, "DATA-SEND-POINTS")
857
1095
 
858
1096
  def getRunnableEntityArgument(self, element: ET.Element) -> RunnableEntityArgument:
@@ -868,17 +1106,17 @@ class ARXMLParser(AbstractARXMLParser):
868
1106
  parameter.setLocalParameterRef(self.getChildElementOptionalRefType(child_element, "LOCAL-PARAMETER-REF"))
869
1107
  return parameter
870
1108
 
871
- def readParameterAccesses(self, element: ET.Element, parent: RunnableEntity):
1109
+ def readRunnableEntityParameterAccesses(self, element: ET.Element, parent: RunnableEntity):
872
1110
  for child_element in self.findall(element, "PARAMETER-ACCESSS/PARAMETER-ACCESS"):
873
1111
  short_name = self.getShortName(child_element)
874
1112
  self.logger.debug("readParameterAccesses %s" % short_name)
875
1113
  parameter_access = parent.createParameterAccess(short_name)
876
1114
  parameter_access.setAccessedParameter(self.getAutosarParameterRef(child_element, "ACCESSED-PARAMETER"))
877
1115
 
878
- def readWrittenLocalVariables(self, element: ET.Element, parent: RunnableEntity):
1116
+ def readRunnableEntityWrittenLocalVariables(self, element: ET.Element, parent: RunnableEntity):
879
1117
  self._readVariableAccesses(element, parent, "WRITTEN-LOCAL-VARIABLES")
880
1118
 
881
- def readReadLocalVariables(self, element: ET.Element, parent: RunnableEntity):
1119
+ def readRunnableEntityReadLocalVariables(self, element: ET.Element, parent: RunnableEntity):
882
1120
  self._readVariableAccesses(element, parent, "READ-LOCAL-VARIABLES")
883
1121
 
884
1122
  def readROperationIRef(self, element: ET.Element, key: str, parent: ServerCallPoint):
@@ -903,7 +1141,7 @@ class ARXMLParser(AbstractARXMLParser):
903
1141
  mode_iref = RModeInAtomicSwcInstanceRef()
904
1142
  mode_iref.setContextPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF")) \
905
1143
  .setContextModeDeclarationGroupPrototypeRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF")) \
906
- .setTargetModeDeclarationRef(self.getChildElementOptionalRefType(child_element, "TARGET-MODE-DECLARATION-REF"))
1144
+ .setTargetModeDeclarationRef(self.getChildElementOptionalRefType(child_element, "TARGET-MODE-DECLARATION-REF")) # NOQA E501
907
1145
  parent.addModeIRef(mode_iref)
908
1146
 
909
1147
  def readSynchronousServerCallPoint(self, element: ET.Element, parent: RunnableEntity):
@@ -922,7 +1160,7 @@ class ARXMLParser(AbstractARXMLParser):
922
1160
  server_call_point.setTimeout(self.getChildElementOptionalFloatValue(element, "TIMEOUT"))
923
1161
  self.readROperationIRef(element, "OPERATION-IREF", server_call_point)
924
1162
 
925
- def readInternalBehaviorServerCallPoint(self, element: ET.Element, parent: RunnableEntity):
1163
+ def readRunnableEntityInternalBehaviorServerCallPoint(self, element: ET.Element, parent: RunnableEntity):
926
1164
  for child_element in self.findall(element, "SERVER-CALL-POINTS/*"):
927
1165
  tag_name = self.getTagName(child_element)
928
1166
  if tag_name == "SYNCHRONOUS-SERVER-CALL-POINT":
@@ -932,48 +1170,73 @@ class ARXMLParser(AbstractARXMLParser):
932
1170
  else:
933
1171
  self.raiseError("Unsupported server call point type <%s>" % tag_name)
934
1172
 
935
- def readInternalTriggeringPoints(self, element: ET.Element, parent: RunnableEntity):
1173
+ def readRunnableEntityInternalTriggeringPoints(self, element: ET.Element, parent: RunnableEntity):
936
1174
  for child_element in self.findall(element, "INTERNAL-TRIGGERING-POINTS/INTERNAL-TRIGGERING-POINT"):
937
1175
  short_name = self.getShortName(child_element)
938
1176
  point = parent.createInternalTriggeringPoint(short_name)
939
1177
  point.sw_impl_policy = self.getChildElementOptionalLiteral(child_element, "SW-IMPL-POLICY")
940
1178
 
941
- def getRModeInAtomicSwcInstanceRef(self, element: ET.Element) -> RModeInAtomicSwcInstanceRef:
942
- iref = RModeInAtomicSwcInstanceRef()
943
- iref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF")) \
944
- .setContextPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-PORT-REF")) \
945
- .setContextModeDeclarationGroupPrototypeRef(self.getChildElementOptionalRefType(element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF")) \
946
- .setTargetModeDeclarationRef(self.getChildElementOptionalRefType(element, "TARGET-MODE-DECLARATION-REF"))
947
- return iref
948
-
949
- def getRModeGroupInAtomicSWCInstanceRef(self, element: ET.Element) -> RModeGroupInAtomicSWCInstanceRef:
950
- child_element = self.find(element, "MODE-GROUP-IREF/R-MODE-GROUP-IN-ATOMIC-SWC-INSTANCE-REF")
951
- iref = None
952
- if child_element is not None:
953
- iref = RModeGroupInAtomicSWCInstanceRef()
954
- iref.setContextRPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF")) \
955
- .setTargetModeGroupRef(self.getChildElementOptionalRefType(child_element, "TARGET-MODE-GROUP-REF"))
956
- return iref
957
-
958
- def getPModeGroupInAtomicSWCInstanceRef(self, element: ET.Element) -> PModeGroupInAtomicSwcInstanceRef:
1179
+ def readModeGroupInAtomicSwcInstanceRef(self, element: ET.Element, instance_ref: ModeGroupInAtomicSwcInstanceRef):
1180
+ instance_ref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF")) \
1181
+ .setContextPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-PORT-REF"))
1182
+
1183
+ def readRModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, instance_ref: RModeGroupInAtomicSWCInstanceRef):
1184
+ self.readModeGroupInAtomicSwcInstanceRef(element, instance_ref)
1185
+ instance_ref.setContextRPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-R-PORT-REF")) \
1186
+ .setTargetModeGroupRef(self.getChildElementOptionalRefType(element, "TARGET-MODE-GROUP-REF"))
1187
+
1188
+ def readPModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, instance_ref: PModeGroupInAtomicSwcInstanceRef):
1189
+ self.readModeGroupInAtomicSwcInstanceRef(element, instance_ref)
1190
+ instance_ref.setContextPPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-P-PORT-REF")) \
1191
+ .setTargetModeGroupRef(self.getChildElementOptionalRefType(element, "TARGET-MODE-GROUP-REF"))
1192
+
1193
+ def getModeGroupIRef(self, element: ET.Element, key: str) -> ModeGroupInAtomicSwcInstanceRef:
1194
+ instance_ref = None
1195
+ for child_element in self.findall(element, "%s/*" % key):
1196
+ tag_name = self.getTagName(child_element)
1197
+ if tag_name == "P-MODE-GROUP-IN-ATOMIC-SWC-INSTANCE-REF":
1198
+ instance_ref = PModeGroupInAtomicSwcInstanceRef()
1199
+ self.readPModeGroupInAtomicSWCInstanceRef(child_element, instance_ref)
1200
+ elif tag_name == "R-MODE-GROUP-IN-ATOMIC-SWC-INSTANCE-REF":
1201
+ instance_ref = RModeGroupInAtomicSWCInstanceRef()
1202
+ self.readRModeGroupInAtomicSWCInstanceRef(child_element, instance_ref)
1203
+ else:
1204
+ self.notImplemented("Unsupported Mode Group IRef <%s>" % tag_name)
1205
+ return instance_ref
1206
+
1207
+ def readModeAccessPoint(self, element: ET.Element, point: ModeAccessPoint):
1208
+ self.readARObjectAttributes(element, point)
1209
+ point.setModeGroupIRef(self.getModeGroupIRef(element, "MODE-GROUP-IREF"))
1210
+
1211
+ def readRunnableEntityModeAccessPoints(self, element: ET.Element, entity: RunnableEntity):
1212
+ for child_element in self.findall(element, "MODE-ACCESS-POINTS/*"):
1213
+ tag_name = self.getTagName(child_element)
1214
+ if tag_name == "MODE-ACCESS-POINT":
1215
+ point = ModeAccessPoint()
1216
+ self.readModeAccessPoint(child_element, point)
1217
+ entity.addModeAccessPoint(point)
1218
+ else:
1219
+ self.notImplemented("Unsupported Mode Access Point <%s>" % tag_name)
1220
+
1221
+ def readModeSwitchPointModeGroupIRef(self, element: ET.Element, point: ModeSwitchPoint):
959
1222
  child_element = self.find(element, "MODE-GROUP-IREF")
960
- iref = None
961
1223
  if child_element is not None:
962
- iref = PModeGroupInAtomicSwcInstanceRef()
963
- iref.setContextPPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-P-PORT-REF")) \
964
- .setTargetModeGroupRef(self.getChildElementOptionalRefType(child_element, "TARGET-MODE-GROUP-REF"))
965
- return iref
1224
+ instance_ref = PModeGroupInAtomicSwcInstanceRef()
1225
+ self.readPModeGroupInAtomicSWCInstanceRef(child_element, instance_ref)
1226
+ point.setModeGroupIRef(instance_ref)
966
1227
 
967
- def readModeAccessPoints(self, element: ET.Element, parent: RunnableEntity):
968
- for child_element in self.findall(element, "MODE-ACCESS-POINTS/MODE-ACCESS-POINT"):
969
- point = ModeAccessPoint()
970
- point.setModeGroupIRef(self.getRModeGroupInAtomicSWCInstanceRef(child_element))
971
- parent.addModeAccessPoint(point)
972
-
973
- def readModeSwitchPoints(self, element: ET.Element, parent: RunnableEntity):
974
- for child_element in self.findall(element, "MODE-SWITCH-POINTS/MODE-SWITCH-POINT"):
975
- point = parent.createModeSwitchPoint(self.getShortName(child_element))
976
- point.setModeGroupIRef(self.getPModeGroupInAtomicSWCInstanceRef(child_element))
1228
+ def readModeSwitchPoint(self, element: ET.Element, point: ModeSwitchPoint):
1229
+ self.readARObjectAttributes(element, point)
1230
+ self.readModeSwitchPointModeGroupIRef(element, point)
1231
+
1232
+ def readRunnableEntityModeSwitchPoints(self, element: ET.Element, parent: RunnableEntity):
1233
+ for child_element in self.findall(element, "MODE-SWITCH-POINTS/*"):
1234
+ tag_name = self.getTagName(child_element)
1235
+ if tag_name == "MODE-SWITCH-POINT":
1236
+ point = parent.createModeSwitchPoint(self.getShortName(child_element))
1237
+ self.readModeSwitchPoint(child_element, point)
1238
+ else:
1239
+ self.notImplemented("Unsupported Mode Switch Point <%s>" % tag_name)
977
1240
 
978
1241
  def readRunnableEntityArguments(self, element: ET.Element, entity: RunnableEntity):
979
1242
  for child_element in self.findall(element, "ARGUMENTS/*"):
@@ -983,7 +1246,7 @@ class ARXMLParser(AbstractARXMLParser):
983
1246
  else:
984
1247
  self.notImplemented("Unsupported Arguments of runnable entity <%s>" % tag_name)
985
1248
 
986
- def readAsynchronousServerCallResultPoint(self, element: ET.Element, entity: RunnableEntity):
1249
+ def readRunnableEntityAsynchronousServerCallResultPoint(self, element: ET.Element, entity: RunnableEntity):
987
1250
  for child_element in self.findall(element, "ASYNCHRONOUS-SERVER-CALL-RESULT-POINTS/ASYNCHRONOUS-SERVER-CALL-RESULT-POINT"):
988
1251
  point = entity.createAsynchronousServerCallResultPoint(self.getShortName(child_element))
989
1252
  self.readIdentifiable(child_element, point)
@@ -993,38 +1256,39 @@ class ARXMLParser(AbstractARXMLParser):
993
1256
  self.readExecutableEntity(element, entity)
994
1257
  self.readRunnableEntityArguments(element, entity)
995
1258
 
996
- self.readAsynchronousServerCallResultPoint(element, entity)
1259
+ self.readRunnableEntityAsynchronousServerCallResultPoint(element, entity)
997
1260
  entity.setCanBeInvokedConcurrently(self.getChildElementOptionalBooleanValue(element, "CAN-BE-INVOKED-CONCURRENTLY"))
998
- self.readDataReadAccesses(element, entity)
999
- self.readDataReceivePointByArguments(element, entity)
1000
- self.readDataReceivePointByValues(element, entity)
1001
- self.readDataWriteAccesses(element, entity)
1002
- self.readDataSendPoints(element, entity)
1003
- self.readInternalBehaviorServerCallPoint(element, entity)
1004
- self.readInternalTriggeringPoints(element, entity)
1005
- self.readModeAccessPoints(element, entity)
1006
- self.readModeSwitchPoints(element, entity)
1007
- self.readParameterAccesses(element, entity)
1008
- self.readReadLocalVariables(element, entity)
1009
- self.readWrittenLocalVariables(element, entity)
1261
+ self.readRunnableEntityDataReadAccesses(element, entity)
1262
+ self.readRunnableEntityDataReceivePointByArguments(element, entity)
1263
+ self.readRunnableEntityDataReceivePointByValues(element, entity)
1264
+ self.readRunnableEntityDataWriteAccesses(element, entity)
1265
+ self.readRunnableEntityDataSendPoints(element, entity)
1266
+ self.readRunnableEntityInternalBehaviorServerCallPoint(element, entity)
1267
+ self.readRunnableEntityInternalTriggeringPoints(element, entity)
1268
+ self.readRunnableEntityModeAccessPoints(element, entity)
1269
+ self.readRunnableEntityModeSwitchPoints(element, entity)
1270
+ self.readRunnableEntityParameterAccesses(element, entity)
1271
+ self.readRunnableEntityReadLocalVariables(element, entity)
1272
+ self.readRunnableEntityWrittenLocalVariables(element, entity)
1010
1273
 
1011
1274
  entity.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
1012
1275
 
1013
1276
  def readSwcInternalBehaviorRunnables(self, element: ET.Element, parent: SwcInternalBehavior):
1014
- for child_element in self.findall(element, "RUNNABLES/RUNNABLE-ENTITY"):
1015
- short_name = self.getShortName(child_element)
1016
- entity = parent.createRunnableEntity(short_name)
1017
- self.logger.debug("readRunnableEntities %s" % short_name)
1018
-
1019
- self.readRunnableEntity(child_element, entity)
1277
+ for child_element in self.findall(element, "RUNNABLES/*"):
1278
+ tag_name = self.getTagName(child_element)
1279
+ if tag_name == "RUNNABLE-ENTITY":
1280
+ entity = parent.createRunnableEntity(self.getShortName(child_element))
1281
+ self.readRunnableEntity(child_element, entity)
1282
+ else:
1283
+ self.notImplemented("Unsupported Runnables <%s>" % tag_name)
1020
1284
 
1021
1285
  def getRModeInAtomicSwcInstanceRef(self, element: ET.Element) -> RModeInAtomicSwcInstanceRef:
1022
- iref = RModeInAtomicSwcInstanceRef()
1023
- iref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF")) \
1286
+ instance_ref = RModeInAtomicSwcInstanceRef()
1287
+ instance_ref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF")) \
1024
1288
  .setContextPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-PORT-REF")) \
1025
1289
  .setContextModeDeclarationGroupPrototypeRef(self.getChildElementOptionalRefType(element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF")) \
1026
- .setTargetModeDeclarationRef(self.getChildElementOptionalRefType(element, "TARGET-MODE-DECLARATION-REF"))
1027
- return iref
1290
+ .setTargetModeDeclarationRef(self.getChildElementOptionalRefType(element, "TARGET-MODE-DECLARATION-REF")) # NOQA E501
1291
+ return instance_ref
1028
1292
 
1029
1293
  def readRTEEvent(self, element: ET.Element, event: RTEEvent):
1030
1294
  self.readIdentifiable(element, event)
@@ -1039,7 +1303,7 @@ class ARXMLParser(AbstractARXMLParser):
1039
1303
  operation_iref = POperationInAtomicSwcInstanceRef()
1040
1304
  self.readARObjectAttributes(child_element, operation_iref)
1041
1305
  operation_iref.setContextPPortRef(self.getChildElementRefType(parent.getShortName(), child_element, "CONTEXT-P-PORT-REF")) \
1042
- .setTargetProvidedOperationRef(self.getChildElementRefType(parent.getShortName(), child_element, "TARGET-PROVIDED-OPERATION-REF"))
1306
+ .setTargetProvidedOperationRef(self.getChildElementRefType(parent.getShortName(), child_element, "TARGET-PROVIDED-OPERATION-REF")) # NOQA E501
1043
1307
  parent.setOperationIRef(operation_iref)
1044
1308
 
1045
1309
  def readOperationInvokedEvent(self, element: ET.Element, event: OperationInvokedEvent):
@@ -1051,13 +1315,13 @@ class ARXMLParser(AbstractARXMLParser):
1051
1315
  self.readAutosarDataPrototype(element, prototype)
1052
1316
  prototype.setInitValue(self.getInitValue(element))
1053
1317
 
1054
- def readExplicitInterRunnableVariables(self, element: ET.Element, parent: SwcInternalBehavior):
1318
+ def readSwcInternalBehaviorExplicitInterRunnableVariables(self, element: ET.Element, parent: SwcInternalBehavior):
1055
1319
  for child_element in self.findall(element, "EXPLICIT-INTER-RUNNABLE-VARIABLES/VARIABLE-DATA-PROTOTYPE"):
1056
1320
  short_name = self.getShortName(child_element)
1057
1321
  prototype = parent.createExplicitInterRunnableVariable(short_name)
1058
1322
  self.readVariableDataPrototype(child_element, prototype)
1059
1323
 
1060
- def readPerInstanceMemories(self, element: ET.Element, behavior: SwcInternalBehavior):
1324
+ def readSwcInternalBehaviorPerInstanceMemories(self, element: ET.Element, behavior: SwcInternalBehavior):
1061
1325
  for child_element in self.findall(element, "PER-INSTANCE-MEMORYS/PER-INSTANCE-MEMORY"):
1062
1326
  short_name = self.getShortName(child_element)
1063
1327
  memory = behavior.createPerInstanceMemory(short_name)
@@ -1072,11 +1336,10 @@ class ARXMLParser(AbstractARXMLParser):
1072
1336
  prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
1073
1337
 
1074
1338
  def readParameterDataPrototype(self, element: ET.Element, prototype: ParameterDataPrototype):
1075
- self.readIdentifiable(element, prototype)
1076
1339
  self.readAutosarDataPrototype(element, prototype)
1077
1340
  prototype.setInitValue(self.getInitValue(element))
1078
1341
 
1079
- def readPerInstanceParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
1342
+ def readSwcInternalBehaviorPerInstanceParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
1080
1343
  for child_element in self.findall(element, "PER-INSTANCE-PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
1081
1344
  short_name = self.getShortName(child_element)
1082
1345
  prototype = behavior.createPerInstanceParameter(short_name)
@@ -1090,7 +1353,7 @@ class ARXMLParser(AbstractARXMLParser):
1090
1353
  argument_value.setValueTypeTRef(self.getChildElementOptionalRefType(element, "VALUE-TYPE-TREF"))
1091
1354
  return argument_value
1092
1355
 
1093
- def readPortAPIOptions(self, element: ET.Element, behavior: SwcInternalBehavior):
1356
+ def readSwcInternalBehaviorPortAPIOptions(self, element: ET.Element, behavior: SwcInternalBehavior):
1094
1357
  for child_element in self.findall(element, "PORT-API-OPTIONS/PORT-API-OPTION"):
1095
1358
  option = PortAPIOption()
1096
1359
  option.setEnableTakeAddress(self.getChildElementOptionalBooleanValue(child_element, "ENABLE-TAKE-ADDRESS")) \
@@ -1195,7 +1458,7 @@ class ARXMLParser(AbstractARXMLParser):
1195
1458
  self.readARObjectAttributes(element, specific)
1196
1459
  specific.value = element.text
1197
1460
  if 'L' in element.attrib:
1198
- specific.l = element.attrib['L']
1461
+ specific.l = element.attrib['L'] # noqa E741
1199
1462
 
1200
1463
  def getLParagraphs(self, element: ET.Element, key: str) -> List[LParagraph]:
1201
1464
  results = []
@@ -1204,7 +1467,7 @@ class ARXMLParser(AbstractARXMLParser):
1204
1467
  self.readLanguageSpecific(child_element, l1)
1205
1468
  results.append(l1)
1206
1469
  return results
1207
-
1470
+
1208
1471
  def getMultiLanguageParagraphs(self, element: ET.Element, key: str) -> List[MultiLanguageParagraph]:
1209
1472
  paragraphs = []
1210
1473
  for child_element in self.findall(element, key):
@@ -1235,7 +1498,7 @@ class ARXMLParser(AbstractARXMLParser):
1235
1498
  for block in self.getDocumentationBlockList(child_element, "ITEM"):
1236
1499
  list.addItem(block)
1237
1500
  result.append(list)
1238
- return result
1501
+ return result
1239
1502
 
1240
1503
  def getMultiLanguagePlainText(self, element: ET.Element, key: str) -> MultiLanguagePlainText:
1241
1504
  paragraph = None
@@ -1277,10 +1540,14 @@ class ARXMLParser(AbstractARXMLParser):
1277
1540
 
1278
1541
  def getAnnotations(self, element: ET.Element) -> List[Annotation]:
1279
1542
  annotations = []
1280
- for child_element in self.findall(element, "ANNOTATIONS/ANNOTATION"):
1281
- annotation = Annotation()
1282
- self.readGeneralAnnotation(child_element, annotation)
1283
- annotations.append(annotation)
1543
+ for child_element in self.findall(element, "ANNOTATIONS/*"):
1544
+ tag_name = self.getTagName(child_element)
1545
+ if tag_name == "ANNOTATION":
1546
+ annotation = Annotation()
1547
+ self.readGeneralAnnotation(child_element, annotation)
1548
+ annotations.append(annotation)
1549
+ else:
1550
+ self.notImplemented("Unsupported Annotation <%s>" % tag_name)
1284
1551
  return annotations
1285
1552
 
1286
1553
  def getSwAxisIndividual(self, element: ET.Element) -> SwAxisIndividual:
@@ -1349,12 +1616,12 @@ class ARXMLParser(AbstractARXMLParser):
1349
1616
  .setSwPointerTargetProps(self.getSwPointerTargetProps(conditional_tag, "SW-POINTER-TARGET-PROPS")) \
1350
1617
  .setSwRecordLayoutRef(self.getChildElementOptionalRefType(conditional_tag, "SW-RECORD-LAYOUT-REF")) \
1351
1618
  .setValueAxisDataTypeRef(self.getChildElementOptionalRefType(conditional_tag, "VALUE-AXIS-DATA-TYPE-REF")) \
1352
- .setUnitRef(self.getChildElementOptionalRefType(conditional_tag, "UNIT-REF"))
1619
+ .setUnitRef(self.getChildElementOptionalRefType(conditional_tag, "UNIT-REF"))
1353
1620
  self.readSwDataDefProsInvalidValue(conditional_tag, sw_data_def_props)
1354
- #self.readSwPointerTargetProps(conditional_tag, sw_data_def_props)
1621
+ # self.readSwPointerTargetProps(conditional_tag, sw_data_def_props)
1355
1622
  self.readARObjectAttributes(conditional_tag, sw_data_def_props.conditional)
1356
1623
  return sw_data_def_props
1357
-
1624
+
1358
1625
  def readAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
1359
1626
  self.readIdentifiable(element, data_type)
1360
1627
  data_type.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
@@ -1363,22 +1630,24 @@ class ARXMLParser(AbstractARXMLParser):
1363
1630
  self.logger.debug("Read ApplicationPrimitiveDataType <%s>" % data_type.getShortName())
1364
1631
  self.readAutosarDataType(element, data_type)
1365
1632
 
1366
- def readApplicationCompositeElementDataPrototype(self, element: ET.Element, prototype: ApplicationCompositeElementDataPrototype):
1367
- prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
1633
+ def readApplicationRecordElement(self, element: ET.Element, record_element: ApplicationRecordElement):
1634
+ self.logger.debug("read ApplicationRecordElement %s" % record_element.getShortName())
1635
+ self.readApplicationCompositeElementDataPrototype(element, record_element)
1368
1636
 
1369
- def readApplicationRecordElements(self, element: ET.Element, parent: ApplicationRecordDataType):
1370
- for child_element in self.findall(element, "ELEMENTS/APPLICATION-RECORD-ELEMENT"):
1371
- short_name = self.getShortName(child_element)
1372
- record_element = parent.createApplicationRecordElement(short_name)
1373
- self.logger.debug("readApplicationRecordElements %s" % short_name)
1374
- self.readIdentifiable(child_element, record_element)
1375
- self.readApplicationCompositeElementDataPrototype(child_element, record_element)
1637
+ def readApplicationRecordDataTypeElements(self, element: ET.Element, parent: ApplicationRecordDataType):
1638
+ for child_element in self.findall(element, "ELEMENTS/*"):
1639
+ tag_name = self.getTagName(child_element)
1640
+ if tag_name == "APPLICATION-RECORD-ELEMENT":
1641
+ record_element = parent.createApplicationRecordElement(self.getShortName(child_element))
1642
+ self.readApplicationRecordElement(child_element, record_element)
1643
+ else:
1644
+ self.notImplemented("Unsupported ApplicationRecordDataType Element <%s>" % tag_name)
1376
1645
 
1377
1646
  def readApplicationRecordDataType(self, element: ET.Element, data_type: ApplicationRecordDataType):
1378
1647
  self.logger.debug("Read ApplicationRecordDataType <%s>" % data_type.getShortName())
1379
1648
  self.readIdentifiable(element, data_type)
1380
1649
  data_type.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
1381
- self.readApplicationRecordElements(element, data_type)
1650
+ self.readApplicationRecordDataTypeElements(element, data_type)
1382
1651
 
1383
1652
  def readImplementationDataTypeElements(self, element: ET.Element, parent: ImplementationDataType):
1384
1653
  for child_element in self.findall(element, "SUB-ELEMENTS/IMPLEMENTATION-DATA-TYPE-ELEMENT"):
@@ -1410,7 +1679,8 @@ class ARXMLParser(AbstractARXMLParser):
1410
1679
  self.readIdentifiable(element, data_type)
1411
1680
  self.readBaseTypeDirectDefinition(element, data_type.getBaseTypeDefinition())
1412
1681
 
1413
- def getApplicationCompositeElementInPortInterfaceInstanceRef(self, element: ET.Element, key:str) -> ApplicationCompositeElementInPortInterfaceInstanceRef:
1682
+ def getApplicationCompositeElementInPortInterfaceInstanceRef(self, element: ET.Element, key: str) \
1683
+ -> ApplicationCompositeElementInPortInterfaceInstanceRef:
1414
1684
  child_element = self.find(element, key)
1415
1685
  iref = None
1416
1686
  if child_element is not None:
@@ -1480,7 +1750,6 @@ class ARXMLParser(AbstractARXMLParser):
1480
1750
  value_spec = None
1481
1751
  child_element = self.find(element, "INIT-VALUE/*")
1482
1752
  if child_element is not None:
1483
- self.logger.debug("getInitValue")
1484
1753
  value_spec = self.getValueSpecification(child_element, self.getTagName(child_element))
1485
1754
  return value_spec
1486
1755
 
@@ -1514,7 +1783,7 @@ class ARXMLParser(AbstractARXMLParser):
1514
1783
 
1515
1784
  def getNonqueuedReceiverComSpec(self, element: ET.Element) -> NonqueuedReceiverComSpec:
1516
1785
  com_spec = NonqueuedReceiverComSpec()
1517
- self.readARObjectAttributes(element, com_spec)
1786
+ self.readARObjectAttributes(element, com_spec)
1518
1787
  self.readReceiverComSpec(element, com_spec)
1519
1788
  com_spec.setAliveTimeout(self.getChildElementOptionalFloatValue(element, "ALIVE-TIMEOUT")) \
1520
1789
  .setEnableUpdated(self.getChildElementOptionalBooleanValue(element, "ENABLE-UPDATE")) \
@@ -1543,10 +1812,8 @@ class ARXMLParser(AbstractARXMLParser):
1543
1812
  def readAbstractRequiredPortPrototype(self, element: ET.Element, prototype: AbstractRequiredPortPrototype):
1544
1813
  self.readProvidedComSpec(element, prototype)
1545
1814
 
1546
- def readPPortPrototype(self, element: ET.Element, parent: AtomicSwComponentType):
1547
- short_name = self.getShortName(element)
1548
- self.logger.debug("readPPortPrototype %s" % short_name)
1549
- prototype = parent.createPPortPrototype(short_name)
1815
+ def readPPortPrototype(self, element: ET.Element, prototype: PPortPrototype):
1816
+ self.logger.debug("Read PPortPrototype %s" % prototype.getShortName())
1550
1817
  self.readIdentifiable(element, prototype)
1551
1818
  self.readAbstractRequiredPortPrototype(element, prototype)
1552
1819
  prototype.setProvidedInterfaceTRef(self.getChildElementOptionalRefType(element, "PROVIDED-INTERFACE-TREF"))
@@ -1554,34 +1821,33 @@ class ARXMLParser(AbstractARXMLParser):
1554
1821
  def readAbstractProvidedPortPrototype(self, element: ET.Element, prototype: AbstractProvidedPortPrototype):
1555
1822
  self.readRequiredComSpec(element, prototype)
1556
1823
 
1557
- def readRPortPrototype(self, element: ET.Element, parent: AtomicSwComponentType):
1558
- short_name = self.getShortName(element)
1559
- self.logger.debug("read RPortPrototype %s" % short_name)
1560
- prototype = parent.createRPortPrototype(short_name)
1824
+ def readRPortPrototype(self, element: ET.Element, prototype: RPortPrototype):
1825
+ self.logger.debug("Read RPortPrototype %s" % prototype.getShortName())
1561
1826
  self.readIdentifiable(element, prototype)
1562
1827
  self.readAbstractProvidedPortPrototype(element, prototype)
1563
1828
  prototype.setRequiredInterfaceTRef(self.getChildElementOptionalRefType(element, "REQUIRED-INTERFACE-TREF"))
1564
1829
 
1565
- def readPRPortPrototype(self, element: ET.Element, parent: AtomicSwComponentType):
1566
- short_name = self.getShortName(element)
1567
- self.logger.debug("read PRPortPrototype %s" % short_name)
1568
- prototype = parent.createPRPortPrototype(short_name)
1830
+ def readPRPortPrototype(self, element: ET.Element, prototype: PRPortPrototype):
1831
+ self.logger.debug("Read PRPortPrototype %s" % prototype.getShortName())
1569
1832
  self.readIdentifiable(element, prototype)
1570
1833
  self.readAbstractRequiredPortPrototype(element, prototype)
1571
1834
  self.readAbstractProvidedPortPrototype(element, prototype)
1572
1835
  prototype.setProvidedRequiredInterface(self.getChildElementOptionalRefType(element, "PROVIDED-REQUIRED-INTERFACE-TREF"))
1573
1836
 
1574
- def readAtomicSwComponentTypePorts(self, element: ET.Element, sw_component: AtomicSwComponentType):
1837
+ def readSwComponentTypePorts(self, element: ET.Element, sw_component: SwComponentType):
1575
1838
  for child_element in self.findall(element, "PORTS/*"):
1576
1839
  tag_name = self.getTagName(child_element)
1577
1840
  if tag_name == "P-PORT-PROTOTYPE":
1578
- self.readPPortPrototype(child_element, sw_component)
1841
+ prototype = sw_component.createPPortPrototype(self.getShortName(child_element))
1842
+ self.readPPortPrototype(child_element, prototype)
1579
1843
  elif tag_name == "R-PORT-PROTOTYPE":
1580
- self.readRPortPrototype(child_element, sw_component)
1844
+ prototype = sw_component.createRPortPrototype(self.getShortName(child_element))
1845
+ self.readRPortPrototype(child_element, prototype)
1581
1846
  elif tag_name == "PR-PORT-PROTOTYPE":
1582
- self.readPRPortPrototype(child_element, sw_component)
1847
+ prototype = sw_component.createPRPortPrototype(self.getShortName(child_element))
1848
+ self.readPRPortPrototype(child_element, prototype)
1583
1849
  else:
1584
- self.raiseError("Unsupported Port Prototype <%s>" % tag_name)
1850
+ self.notImplemented("Unsupported Port Prototype <%s>" % tag_name)
1585
1851
 
1586
1852
  def readTransmissionAcknowledgementRequest(self, element: ET.Element) -> TransmissionAcknowledgementRequest:
1587
1853
  child_element = self.find(element, "TRANSMISSION-ACKNOWLEDGE")
@@ -1592,7 +1858,7 @@ class ARXMLParser(AbstractARXMLParser):
1592
1858
  return acknowledge
1593
1859
  return None
1594
1860
 
1595
- def readSenderComSpec(self, element:ET.Element, com_spec: SenderComSpec):
1861
+ def readSenderComSpec(self, element: ET.Element, com_spec: SenderComSpec):
1596
1862
  self.readARObjectAttributes(element, com_spec)
1597
1863
  for child_element in self.findall(element, "COMPOSITE-NETWORK-REPRESENTATIONS/COMPOSITE-NETWORK-REPRESENTATION"):
1598
1864
  com_spec.addCompositeNetworkRepresentation(self.getCompositeNetworkRepresentation(child_element))
@@ -1602,20 +1868,20 @@ class ARXMLParser(AbstractARXMLParser):
1602
1868
  .setTransmissionAcknowledge(self.readTransmissionAcknowledgementRequest(element)) \
1603
1869
  .setUsesEndToEndProtection(self.getChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION"))
1604
1870
 
1605
- def getNonqueuedSenderComSpec(self, element:ET.Element) -> NonqueuedSenderComSpec:
1871
+ def getNonqueuedSenderComSpec(self, element: ET.Element) -> NonqueuedSenderComSpec:
1606
1872
  com_spec = NonqueuedSenderComSpec()
1607
1873
  self.readSenderComSpec(element, com_spec)
1608
1874
  com_spec.setInitValue(self.getInitValue(element))
1609
1875
  return com_spec
1610
1876
 
1611
- def getServerComSpec(self, element:ET.Element) -> ServerComSpec:
1877
+ def getServerComSpec(self, element: ET.Element) -> ServerComSpec:
1612
1878
  com_spec = ServerComSpec()
1613
1879
  self.readARObjectAttributes(element, com_spec)
1614
1880
  com_spec.setOperationRef(self.getChildElementOptionalRefType(element, "OPERATION-REF")) \
1615
1881
  .setQueueLength(self.getChildElementOptionalNumericalValue(element, "QUEUE-LENGTH"))
1616
1882
  return com_spec
1617
1883
 
1618
- def getQueuedSenderComSpec(self, element:ET.Element) -> QueuedSenderComSpec:
1884
+ def getQueuedSenderComSpec(self, element: ET.Element) -> QueuedSenderComSpec:
1619
1885
  com_spec = QueuedSenderComSpec()
1620
1886
  self.readSenderComSpec(element, com_spec)
1621
1887
  return com_spec
@@ -1652,7 +1918,7 @@ class ARXMLParser(AbstractARXMLParser):
1652
1918
  def readPortGroupInnerGroupIRefs(self, element: ET.Element, parent: PortGroup):
1653
1919
  for child_element in self.findall(element, "INNER-GROUP-IREFS/INNER-GROUP-IREF"):
1654
1920
  inner_group_iref = InnerPortGroupInCompositionInstanceRef()
1655
- #inner_group_iref.contextRef = self.getChildElementOptionalRefType(child_element, "CONTEXT-REF")
1921
+ # inner_group_iref.contextRef = self.getChildElementOptionalRefType(child_element, "CONTEXT-REF")
1656
1922
  inner_group_iref.setTargetRef(self.getChildElementOptionalRefType(child_element, "TARGET-REF"))
1657
1923
  parent.addInnerGroupIRef(inner_group_iref)
1658
1924
 
@@ -1678,12 +1944,12 @@ class ARXMLParser(AbstractARXMLParser):
1678
1944
 
1679
1945
  def readSwComponentType(self, element: ET.Element, parent: SwComponentType):
1680
1946
  self.readIdentifiable(element, parent)
1681
- self.readAtomicSwComponentTypePorts(element, parent)
1947
+ self.readSwComponentTypePorts(element, parent)
1682
1948
  self.readSwComponentTypePortGroups(element, parent)
1683
1949
 
1684
1950
  def readAtomicSwComponentType(self, element, parent: AtomicSwComponentType):
1685
1951
  self.readSwComponentType(element, parent)
1686
- self.readSwcInternalBehavior(element, parent)
1952
+ self.readAtomicSwComponentTypeSwcInternalBehavior(element, parent)
1687
1953
 
1688
1954
  def readEcuAbstractionSwComponentType(self, element, sw_component: EcuAbstractionSwComponentType):
1689
1955
  self.logger.debug("Read EcuAbstractionSwComponentType <%s>" % sw_component.getShortName())
@@ -1711,9 +1977,11 @@ class ARXMLParser(AbstractARXMLParser):
1711
1977
 
1712
1978
  self.logger.debug("PPortInCompositionInstanceRef")
1713
1979
  self.logger.debug(" CONTEXT-COMPONENT-REF DEST: %s, %s"
1714
- % (p_port_in_composition_instance_ref.getContextComponentRef().getDest(), p_port_in_composition_instance_ref.getContextComponentRef().getValue()))
1715
- self.logger.debug(" TARGET-P-PORT-REF DEST: %s, %s"
1716
- % (p_port_in_composition_instance_ref.getTargetPPortRef().getDest(), p_port_in_composition_instance_ref.getTargetPPortRef().getValue()))
1980
+ % (p_port_in_composition_instance_ref.getContextComponentRef().getDest(),
1981
+ p_port_in_composition_instance_ref.getContextComponentRef().getValue()))
1982
+ self.logger.debug(" TARGET-P-PORT-REF DEST: %s, %s"
1983
+ % (p_port_in_composition_instance_ref.getTargetPPortRef().getDest(),
1984
+ p_port_in_composition_instance_ref.getTargetPPortRef().getValue()))
1717
1985
 
1718
1986
  def readRPortInCompositionInstanceRef(self, element, r_port_in_composition_instance_ref: RPortInCompositionInstanceRef):
1719
1987
  r_port_in_composition_instance_ref.setContextComponentRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPONENT-REF")) \
@@ -1721,9 +1989,11 @@ class ARXMLParser(AbstractARXMLParser):
1721
1989
 
1722
1990
  self.logger.debug("RPortInCompositionInstanceRef")
1723
1991
  self.logger.debug(" CONTEXT-COMPONENT-REF DEST: %s, %s"
1724
- % (r_port_in_composition_instance_ref.getContextComponentRef().getDest(), r_port_in_composition_instance_ref.getContextComponentRef().getValue()))
1725
- self.logger.debug(" TARGET-P-PORT-REF DEST: %s, %s"
1726
- % (r_port_in_composition_instance_ref.getTargetRPortRef().getDest(), r_port_in_composition_instance_ref.getTargetRPortRef().getValue()))
1992
+ % (r_port_in_composition_instance_ref.getContextComponentRef().getDest(),
1993
+ r_port_in_composition_instance_ref.getContextComponentRef().getValue()))
1994
+ self.logger.debug(" TARGET-P-PORT-REF DEST: %s, %s"
1995
+ % (r_port_in_composition_instance_ref.getTargetRPortRef().getDest(),
1996
+ r_port_in_composition_instance_ref.getTargetRPortRef().getValue()))
1727
1997
 
1728
1998
  def readAssemblySwConnectorProviderIRef(self, element: ET.Element, parent: AssemblySwConnector):
1729
1999
  child_element = self.find(element, "PROVIDER-IREF")
@@ -1741,16 +2011,27 @@ class ARXMLParser(AbstractARXMLParser):
1741
2011
  self.readRPortInCompositionInstanceRef(child_element, requester_iref)
1742
2012
  parent.setRequesterIRef(requester_iref)
1743
2013
 
1744
- def readAssemblySwConnectors(self, element: ET.Element, parent: CompositionSwComponentType):
1745
- for child_element in self.findall(element, "CONNECTORS/ASSEMBLY-SW-CONNECTOR"):
1746
- short_name = self.getShortName(child_element)
1747
- self.logger.debug("readAssemblySwConnectors %s" % short_name)
2014
+ def readSwConnector(self, element: ET.Element, connector: SwConnector):
2015
+ self.readIdentifiable(element, connector)
2016
+ connector.setMappingRef(self.getChildElementOptionalRefType(element, "MAPPING-REF"))
1748
2017
 
1749
- connector = parent.createAssemblySwConnector(short_name)
1750
- self.readIdentifiable(child_element, connector)
1751
- connector.setMappingRef(self.getChildElementOptionalRefType(child_element, "MAPPING-REF"))
1752
- self.readAssemblySwConnectorProviderIRef(child_element, connector)
1753
- self.readAssemblySwConnectorRequesterIRef(child_element, connector)
2018
+ def readAssemblySwConnector(self, element: ET.Element, connector: AssemblySwConnector):
2019
+ self.logger.debug("Read AssemblySwConnectors %s" % connector.getShortName())
2020
+ self.readSwConnector(element, connector)
2021
+ self.readAssemblySwConnectorProviderIRef(element, connector)
2022
+ self.readAssemblySwConnectorRequesterIRef(element, connector)
2023
+
2024
+ def readCompositionSwComponentTypeSwConnectors(self, element: ET.Element, parent: CompositionSwComponentType):
2025
+ for child_element in self.findall(element, "CONNECTORS/*"):
2026
+ tag_name = self.getTagName(child_element)
2027
+ if tag_name == "ASSEMBLY-SW-CONNECTOR":
2028
+ connector = parent.createAssemblySwConnector(self.getShortName(child_element))
2029
+ self.readAssemblySwConnector(child_element, connector)
2030
+ elif tag_name == "DELEGATION-SW-CONNECTOR":
2031
+ connector = parent.createDelegationSwConnector(self.getShortName(child_element))
2032
+ self.readDelegationSwConnector(child_element, connector)
2033
+ else:
2034
+ self.notImplemented("Unsupported SwConnector <%s>" % tag_name)
1754
2035
 
1755
2036
  def readDelegationSwConnectorInnerPortIRef(self, element, parent: DelegationSwConnector):
1756
2037
  inner_port_iref_element = self.find(element, "INNER-PORT-IREF")
@@ -1771,45 +2052,45 @@ class ARXMLParser(AbstractARXMLParser):
1771
2052
 
1772
2053
  self.raiseError("Unsupported child element of INNER-PORT-IREF")
1773
2054
 
1774
- def readDelegationSwConnectors(self, element, parent: CompositionSwComponentType):
1775
- for child_element in self.findall(element, "CONNECTORS/DELEGATION-SW-CONNECTOR"):
1776
- short_name = self.getShortName(child_element)
1777
- self.logger.debug("readDelegationSwConnectors %s" % short_name)
2055
+ def readDelegationSwConnector(self, element, connector: DelegationSwConnector):
2056
+ self.logger.debug("Read DelegationSwConnectors %s" % connector.getShortName())
2057
+ self.readSwConnector(element, connector)
2058
+ self.readDelegationSwConnectorInnerPortIRef(element, connector)
1778
2059
 
1779
- connector = parent.createDelegationSwConnector(short_name)
1780
- self.readIdentifiable(child_element, connector)
1781
- self.readDelegationSwConnectorInnerPortIRef(child_element, connector)
2060
+ if connector.getInnerPortIRref() is None and connector.getOuterPortRef() is None:
2061
+ self.raiseError("Invalid PortPrototype of DELEGATION-SW-CONNECTOR")
1782
2062
 
1783
- if connector.getInnerPortIRref() == None and connector.getOuterPortRef() == None:
1784
- self.raiseError("Invalid PortPrototype of DELEGATION-SW-CONNECTOR")
2063
+ connector.setOuterPortRef(self.getChildElementOptionalRefType(element, "OUTER-PORT-REF"))
2064
+ self.logger.debug("OUTER-PORT-REF DEST: %s, %s" % (connector.getOuterPortRef().getDest(), connector.getOuterPortRef().getValue()))
1785
2065
 
1786
- connector.setOuterPortRef(self.getChildElementOptionalRefType(child_element, "OUTER-PORT-REF"))
1787
- self.logger.debug("OUTER-PORT-REF DEST: %s, %s"
1788
- % (connector.getOuterPortRef().getDest(), connector.getOuterPortRef().getValue()))
2066
+ def readSwComponentPrototype(self, element: ET.Element, prototype: SwComponentPrototype):
2067
+ self.logger.debug("Read SwComponentPrototypes <%s>" % prototype.getShortName())
2068
+ self.readIdentifiable(element, prototype)
2069
+ prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
1789
2070
 
1790
- def readSwComponentPrototypes(self, element: ET.Element, parent: CompositionSwComponentType):
1791
- for child_element in element.findall("./xmlns:COMPONENTS/xmlns:SW-COMPONENT-PROTOTYPE", self.nsmap):
1792
- short_name = self.getShortName(child_element)
1793
- self.logger.debug("readSwComponentPrototypes %s" % short_name)
1794
- prototype = parent.createSwComponentPrototype(short_name)
1795
- self.readIdentifiable(child_element, prototype)
1796
- prototype.typeTRef = self.getChildElementOptionalRefType(child_element, "TYPE-TREF")
2071
+ def readCompositionSwComponentTypeComponents(self, element: ET.Element, parent: CompositionSwComponentType):
2072
+ for child_element in self.findall(element, "COMPONENTS/*"):
2073
+ tag_name = self.getTagName(child_element)
2074
+ if tag_name == "SW-COMPONENT-PROTOTYPE":
2075
+ prototype = parent.createSwComponentPrototype(self.getShortName(child_element))
2076
+ self.readSwComponentPrototype(child_element, prototype)
2077
+ else:
2078
+ self.notImplemented("Unsupported Component <%s>" % tag_name)
1797
2079
 
1798
2080
  def readCompositionSwComponentTypeDataTypeMappingSet(self, element: ET.Element, parent: CompositionSwComponentType):
1799
- child_element = element.find("./xmlns:DATA-TYPE-MAPPING-REFS", self.nsmap)
2081
+ child_element = self.find(element, "DATA-TYPE-MAPPING-REFS")
1800
2082
  self.logger.debug("readDataTypeMappingSet")
1801
2083
  if child_element is not None:
1802
- for ref in self.getChildElementRefTypeList(child_element, "./DATA-TYPE-MAPPING-REF"):
2084
+ for ref in self.getChildElementRefTypeList(child_element, "DATA-TYPE-MAPPING-REF"):
1803
2085
  parent.addDataTypeMapping(ref)
1804
2086
 
1805
2087
  def readCompositionSwComponentType(self, element: ET.Element, type: CompositionSwComponentType):
1806
2088
  self.logger.debug("Read CompositionSwComponentType: <%s>" % type.getShortName())
1807
- self.readIdentifiable(element, type)
1808
2089
  self.readSwComponentType(element, type)
1809
- self.readSwComponentPrototypes(element, type)
1810
- self.readAssemblySwConnectors(element, type)
1811
- self.readDelegationSwConnectors(element, type)
2090
+ self.readCompositionSwComponentTypeComponents(element, type)
2091
+ self.readCompositionSwComponentTypeSwConnectors(element, type)
1812
2092
  self.readCompositionSwComponentTypeDataTypeMappingSet(element, type)
2093
+ AUTOSAR.getInstance().addCompositionSwComponentType(type)
1813
2094
 
1814
2095
  def readDataTypeMaps(self, element: ET.Element, parent: DataTypeMappingSet):
1815
2096
  for child_element in element.findall("./xmlns:DATA-TYPE-MAPS/xmlns:DATA-TYPE-MAP", self.nsmap):
@@ -1836,13 +2117,15 @@ class ARXMLParser(AbstractARXMLParser):
1836
2117
  self.readModeRequestTypeMaps(element, mapping_set)
1837
2118
 
1838
2119
  def readSenderReceiverInterfaceDataElements(self, element: ET.Element, sr_interface: SenderReceiverInterface):
1839
- for child_element in self.findall(element, "DATA-ELEMENTS/VARIABLE-DATA-PROTOTYPE"):
1840
- short_name = self.getShortName(child_element)
1841
- prototype = sr_interface.createDataElement(short_name)
1842
- self.readIdentifiable(child_element, prototype)
1843
- prototype.swDataDefProps = self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")
1844
- self.readAutosarDataPrototype(child_element, prototype)
1845
- prototype.initValue = self.getInitValue(child_element)
2120
+ for child_element in self.findall(element, "DATA-ELEMENTS/*"):
2121
+ tag_name = self.getTagName(child_element)
2122
+ if tag_name == "VARIABLE-DATA-PROTOTYPE":
2123
+ prototype = sr_interface.createDataElement(self.getShortName(child_element))
2124
+ self.readVariableDataPrototype(child_element, prototype)
2125
+ # prototype.swDataDefProps = self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")
2126
+ # self.readAutosarDataPrototype(child_element, prototype)
2127
+ else:
2128
+ self.notImplemented("Unsupported Data Element <%s>" % tag_name)
1846
2129
 
1847
2130
  def readSenderReceiverInterfaceInvalidationPolicies(self, element: ET.Element, sr_interface: SenderReceiverInterface):
1848
2131
  for child_element in self.findall(element, "INVALIDATION-POLICYS/INVALIDATION-POLICY"):
@@ -1866,16 +2149,19 @@ class ARXMLParser(AbstractARXMLParser):
1866
2149
  self.readSenderReceiverInterfaceDataElements(element, sr_interface)
1867
2150
  self.readSenderReceiverInterfaceInvalidationPolicies(element, sr_interface)
1868
2151
 
1869
- def readArgumentDataPrototypes(self, element: ET.Element, parent: ClientServerOperation):
1870
- for child_element in self.findall(element, "ARGUMENTS/ARGUMENT-DATA-PROTOTYPE"):
1871
- short_name = self.getShortName(child_element)
1872
- prototype = ArgumentDataPrototype(property, short_name)
1873
- self.readIdentifiable(child_element, prototype)
1874
- prototype.swDataDefProps = self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")
1875
- prototype.typeTRef = self.getChildElementOptionalRefType(child_element, "TYPE-TREF")
1876
- prototype.direction = self.getChildElementOptionalLiteral(child_element, "DIRECTION")
1877
- prototype.serverArgumentImplPolicy = self.getChildElementOptionalLiteral(child_element, "SERVER-ARGUMENT-IMPL-POLICY")
1878
- parent.addArgumentDataPrototype(prototype)
2152
+ def readArgumentDataPrototype(self, element: ET.Element, prototype: ArgumentDataPrototype):
2153
+ self.readAutosarDataPrototype(element, prototype)
2154
+ prototype.setDirection(self.getChildElementOptionalLiteral(element, "DIRECTION")) \
2155
+ .setServerArgumentImplPolicy(self.getChildElementOptionalLiteral(element, "SERVER-ARGUMENT-IMPL-POLICY"))
2156
+
2157
+ def readClientServerOperationArguments(self, element: ET.Element, operation: ClientServerOperation):
2158
+ for child_element in self.findall(element, "ARGUMENTS/*"):
2159
+ tag_name = self.getTagName(child_element)
2160
+ if tag_name == "ARGUMENT-DATA-PROTOTYPE":
2161
+ prototype = operation.createArgumentDataPrototype(self.getShortName(child_element))
2162
+ self.readArgumentDataPrototype(child_element, prototype)
2163
+ else:
2164
+ self.notImplemented("Unsupported Argument <%s>" % tag_name)
1879
2165
 
1880
2166
  def readPossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
1881
2167
  child_element = self.find(element, "POSSIBLE-ERROR-REFS")
@@ -1883,41 +2169,53 @@ class ARXMLParser(AbstractARXMLParser):
1883
2169
  for ref in self.getChildElementRefTypeList(child_element, "POSSIBLE-ERROR-REF"):
1884
2170
  parent.addPossibleErrorRef(ref)
1885
2171
 
1886
- def readOperations(self, element: ET.Element, parent: ClientServerInterface):
1887
- for child_element in self.findall(element, "OPERATIONS/CLIENT-SERVER-OPERATION"):
1888
- short_name = self.getShortName(child_element)
1889
- operation = parent.createOperation(short_name)
1890
- self.readIdentifiable(child_element, operation)
1891
- self.readArgumentDataPrototypes(child_element, operation)
1892
- self.readPossibleErrorRefs(child_element, operation)
2172
+ def readClientServerOperation(self, element: ET.Element, operation: ClientServerOperation):
2173
+ self.readIdentifiable(element, operation)
2174
+ self.readClientServerOperationArguments(element, operation)
2175
+ self.readPossibleErrorRefs(element, operation)
2176
+
2177
+ def readClientServerInterfaceOperations(self, element: ET.Element, parent: ClientServerInterface):
2178
+ for child_element in self.findall(element, "OPERATIONS/*"):
2179
+ tag_name = self.getTagName(child_element)
2180
+ if tag_name == "CLIENT-SERVER-OPERATION":
2181
+ operation = parent.createOperation(self.getShortName(child_element))
2182
+ self.readClientServerOperation(child_element, operation)
2183
+ else:
2184
+ self.notImplemented("Unsupported Operation <%s>" % tag_name)
1893
2185
 
1894
2186
  def readPossibleErrors(self, element: ET.Element, parent: ClientServerInterface):
1895
2187
  for child_element in self.findall(element, "POSSIBLE-ERRORS/APPLICATION-ERROR"):
1896
2188
  short_name = self.getShortName(child_element)
1897
2189
  error = parent.createApplicationError(short_name)
1898
- self.readIdentifiable(child_element, error) # some errors has its uuid
2190
+ self.readIdentifiable(child_element, error) # some errors has its uuid
1899
2191
  error.error_code = self.getChildElementOptionalNumericalValue(child_element, "ERROR-CODE")
1900
2192
 
1901
2193
  def readPortInterface(self, element: ET.Element, port_interface: PortInterface):
1902
2194
  self.readIdentifiable(element, port_interface)
1903
- port_interface.isService = self.getChildElementOptionalBooleanValue(element, "IS-SERVICE")
1904
- port_interface.serviceKind = self.getChildElementOptionalLiteral(element, "SERVICE-KIND")
2195
+ port_interface.setIsService(self.getChildElementOptionalBooleanValue(element, "IS-SERVICE"))\
2196
+ .setServiceKind(self.getChildElementOptionalLiteral(element, "SERVICE-KIND"))
1905
2197
 
1906
2198
  def readParameterInterfaceParameters(self, element: ET.Element, param_interface: ParameterInterface):
1907
- for child_element in self.findall(element, "PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
1908
- short_name = self.getShortName(child_element)
1909
- prototype = param_interface.createParameter(short_name)
1910
- self.readParameterDataPrototype(child_element, prototype)
2199
+ for child_element in self.findall(element, "PARAMETERS/*"):
2200
+ tag_name = self.getTagName(child_element)
2201
+ if tag_name == "PARAMETER-DATA-PROTOTYPE":
2202
+ prototype = param_interface.createParameterDataPrototype(self.getShortName(child_element))
2203
+ self.readParameterDataPrototype(child_element, prototype)
2204
+ else:
2205
+ self.notImplemented("Unsupported Parameter <%s>" % tag_name)
2206
+
2207
+ def readDataInterface(self, element: ET.Element, interface: DataInterface):
2208
+ self.readPortInterface(element, interface)
1911
2209
 
1912
- def readParameterInterface(self, element: ET.Element, param_interface: ParameterInterface):
1913
- self.logger.debug("Read ParameterInterface <%s>" % param_interface.getShortName())
1914
- self.readPortInterface(element, param_interface)
1915
- self.readParameterInterfaceParameters(element, param_interface)
2210
+ def readParameterInterface(self, element: ET.Element, interface: ParameterInterface):
2211
+ self.logger.debug("Read ParameterInterface <%s>" % interface.getShortName())
2212
+ self.readDataInterface(element, interface)
2213
+ self.readParameterInterfaceParameters(element, interface)
1916
2214
 
1917
2215
  def readClientServerInterface(self, element: ET.Element, cs_interface: ClientServerInterface):
1918
2216
  self.logger.debug("Read readClientServerInterface <%s>" % cs_interface.getShortName())
1919
2217
  self.readPortInterface(element, cs_interface)
1920
- self.readOperations(element, cs_interface)
2218
+ self.readClientServerInterfaceOperations(element, cs_interface)
1921
2219
  self.readPossibleErrors(element, cs_interface)
1922
2220
 
1923
2221
  def getCompuConstContent(self, element: ET.Element) -> CompuConstContent:
@@ -1979,6 +2277,15 @@ class ARXMLParser(AbstractARXMLParser):
1979
2277
  self.readCompuConst(element, parent)
1980
2278
  self.readCompuRationCoeffs(element, parent)
1981
2279
 
2280
+ def readCompuScale(self, element: ET.Element, compu_scale: CompuScale):
2281
+ self.readARObjectAttributes(element, compu_scale)
2282
+ compu_scale.setLowerLimit(self.getChildLimitElement(element, "LOWER-LIMIT")) \
2283
+ .setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
2284
+ .setDesc(self.getMultiLanguageOverviewParagraph(element, "DESC")) \
2285
+ .setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL")) \
2286
+ .setUpperLimit(self.getChildLimitElement(element, "UPPER-LIMIT"))
2287
+ self.readCompuScaleContents(element, compu_scale)
2288
+
1982
2289
  def getCompuScales(self, element: ET.Element) -> CompuScales:
1983
2290
  compu_scales = None
1984
2291
  compu_scales_tag = self.find(element, "COMPU-SCALES")
@@ -1986,13 +2293,7 @@ class ARXMLParser(AbstractARXMLParser):
1986
2293
  compu_scales = CompuScales()
1987
2294
  for child_element in self.findall(compu_scales_tag, 'COMPU-SCALE'):
1988
2295
  compu_scale = CompuScale()
1989
- self.readARObjectAttributes(child_element, compu_scale)
1990
- compu_scale.setLowerLimit(self.getChildLimitElement(child_element, "LOWER-LIMIT")) \
1991
- .setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
1992
- .setDesc(self.getMultiLanguageOverviewParagraph(child_element, "DESC")) \
1993
- .setSymbol(self.getChildElementOptionalLiteral(child_element, "SYMBOL")) \
1994
- .setUpperLimit(self.getChildLimitElement(child_element, "UPPER-LIMIT"))
1995
- self.readCompuScaleContents(child_element, compu_scale)
2296
+ self.readCompuScale(child_element, compu_scale)
1996
2297
  compu_scales.addCompuScale(compu_scale)
1997
2298
  return compu_scales
1998
2299
 
@@ -2002,7 +2303,7 @@ class ARXMLParser(AbstractARXMLParser):
2002
2303
  if (child_element is not None):
2003
2304
  compu = Compu()
2004
2305
  self.readARObjectAttributes(child_element, compu)
2005
- compu.setCompuContent(self.getCompuScales(child_element))
2306
+ compu.setCompuContent(self.getCompuScales(child_element))
2006
2307
  compu.setCompuDefaultValue(self.getCompuConst(child_element, "COMPU-DEFAULT-VALUE"))
2007
2308
  return compu
2008
2309
 
@@ -2030,10 +2331,9 @@ class ARXMLParser(AbstractARXMLParser):
2030
2331
  def readValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
2031
2332
  self.readARObjectAttributes(element, value_spec)
2032
2333
  value_spec.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL"))
2033
- self.logger.debug("readValueSpecification")
2334
+ # self.logger.debug("read ValueSpecification")
2034
2335
 
2035
2336
  def getApplicationValueSpecification(self, element: ET.Element) -> ApplicationValueSpecification:
2036
- self.logger.debug("getApplicationValueSpecification")
2037
2337
  value_spec = ApplicationValueSpecification()
2038
2338
  self.readValueSpecification(element, value_spec)
2039
2339
  value_spec.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY")) \
@@ -2042,7 +2342,6 @@ class ARXMLParser(AbstractARXMLParser):
2042
2342
  return value_spec
2043
2343
 
2044
2344
  def getNumericalValueSpecification(self, element: ET.Element) -> NumericalValueSpecification:
2045
- self.logger.debug("getNumericalValueSpecification")
2046
2345
  value_spec = NumericalValueSpecification()
2047
2346
  self.readValueSpecification(element, value_spec)
2048
2347
  value_spec.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
@@ -2071,7 +2370,7 @@ class ARXMLParser(AbstractARXMLParser):
2071
2370
  value_spec = ConstantReference()
2072
2371
  self.readValueSpecification(element, value_spec)
2073
2372
  value_spec.setConstantRef(self.getChildElementOptionalRefType(element, "CONSTANT-REF"))
2074
- return value_spec
2373
+ return value_spec
2075
2374
 
2076
2375
  def getValueSpecification(self, element: ET.Element, tag_name: str) -> ValueSpecification:
2077
2376
  if tag_name == "APPLICATION-VALUE-SPECIFICATION":
@@ -2148,59 +2447,80 @@ class ARXMLParser(AbstractARXMLParser):
2148
2447
  .setOffsetSiToUnit(self.getChildElementOptionalFloatValue(element, "OFFSET-SI-TO-UNIT")) \
2149
2448
  .setPhysicalDimensionRef(self.getChildElementOptionalRefType(element, "PHYSICAL-DIMENSION-REF"))
2150
2449
 
2151
- def readEndToEndDescriptionDataId(self, element: ET.Element, parent: EndToEndDescription):
2152
- child_element = element.find("./xmlns:DATA-IDS", self.nsmap)
2450
+ def readEndToEndDescriptionDataIds(self, element: ET.Element, parent: EndToEndDescription):
2451
+ child_element = self.find(element, "DATA-IDS")
2153
2452
  if child_element is not None:
2154
2453
  for value in self.getChildElementNumericalValueList(child_element, "DATA-ID"):
2155
2454
  parent.addDataId(value)
2156
2455
 
2157
2456
  def getEndToEndDescription(self, element: ET.Element, key: str) -> EndToEndDescription:
2158
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
2457
+ child_element = self.find(element, key)
2159
2458
  desc = None
2160
2459
  if (child_element is not None):
2161
2460
  desc = EndToEndDescription()
2162
- desc.category = self.getChildElementOptionalLiteral(child_element, "CATEGORY")
2163
- self.readEndToEndDescriptionDataId(child_element, desc)
2164
- desc.dataIdMode = self.getChildElementOptionalNumericalValue(child_element, "DATA-ID-MODE")
2165
- desc.maxDeltaCounterInit = self.getChildElementOptionalNumericalValue(child_element, "MAX-DELTA-COUNTER-INIT")
2166
- desc.crcOffset = self.getChildElementOptionalNumericalValue(child_element, "CRC-OFFSET")
2167
- desc.counterOffset = self.getChildElementOptionalNumericalValue(child_element, "COUNTER-OFFSET")
2461
+ self.readARObjectAttributes(child_element, desc)
2462
+ desc.setCategory(self.getChildElementOptionalLiteral(child_element, "CATEGORY"))
2463
+ self.readEndToEndDescriptionDataIds(child_element, desc)
2464
+ desc.setDataIdMode(self.getChildElementOptionalPositiveInteger(child_element, "DATA-ID-MODE")) \
2465
+ .setDataLength(self.getChildElementOptionalPositiveInteger(child_element, "DATA-LENGTH")) \
2466
+ .setMaxDeltaCounterInit(self.getChildElementOptionalPositiveInteger(child_element, "MAX-DELTA-COUNTER-INIT")) \
2467
+ .setCrcOffset(self.getChildElementOptionalPositiveInteger(child_element, "CRC-OFFSET")) \
2468
+ .setCounterOffset(self.getChildElementOptionalPositiveInteger(child_element, "COUNTER-OFFSET"))
2168
2469
  return desc
2169
2470
 
2170
2471
  def getVariableDataPrototypeInSystemInstanceRef(self, element: ET.Element) -> VariableDataPrototypeInSystemInstanceRef:
2171
- iref = None
2472
+ instance_ref = None
2172
2473
  if element is not None:
2173
- iref = VariableDataPrototypeInSystemInstanceRef()
2174
- #iref.addContextComponentRef() = self.getChildElementOptionalRefType(element, "CONTEXT-COMPONENT-REF")
2175
- iref.setContextCompositionRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPOSITION-REF")) \
2176
- .setContextPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-PORT-REF")) \
2177
- .setTargetDataPrototypeRef(self.getChildElementOptionalRefType(element, "TARGET-DATA-PROTOTYPE-REF"))
2178
- return iref
2474
+ instance_ref = VariableDataPrototypeInSystemInstanceRef()
2475
+ for ref in self.getChildElementRefTypeList(element, "CONTEXT-COMPONENT-REF"):
2476
+ instance_ref.addContextComponentRef(ref)
2477
+ instance_ref.setContextCompositionRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPOSITION-REF")) \
2478
+ .setContextPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-PORT-REF")) \
2479
+ .setTargetDataPrototypeRef(self.getChildElementOptionalRefType(element, "TARGET-DATA-PROTOTYPE-REF"))
2480
+ return instance_ref
2179
2481
 
2180
- def getEndToEndProtectionVariablePrototype(self, element: ET.Element) -> EndToEndProtectionVariablePrototype:
2181
- prototype = EndToEndProtectionVariablePrototype()
2182
- for child_element in element.findall("./xmlns:RECEIVER-IREFS/xmlns:RECEIVER-IREF", self.nsmap):
2482
+ def readEndToEndProtectionVariablePrototype(self, element: ET.Element, prototype: EndToEndProtectionVariablePrototype):
2483
+ self.readARObjectAttributes(element, prototype)
2484
+ for child_element in self.findall(element, "RECEIVER-IREFS/RECEIVER-IREF"):
2183
2485
  prototype.addReceiverIref(self.getVariableDataPrototypeInSystemInstanceRef(child_element))
2184
- child_element = element.find("./xmlns:SENDER-IREF", self.nsmap)
2486
+ child_element = self.find(element, "SENDER-IREF")
2185
2487
  if child_element is not None:
2186
2488
  prototype.senderIRef = self.getVariableDataPrototypeInSystemInstanceRef(child_element)
2187
2489
  return prototype
2188
2490
 
2189
- def readEndToEndProtectionVariablePrototypes(self, element: ET.Element, parent: EndToEndProtection):
2190
- for child_element in element.findall("./xmlns:END-TO-END-PROTECTION-VARIABLE-PROTOTYPES/*", self.nsmap):
2491
+ def readEndToEndProtectionEndToEndProtectionVariablePrototypes(self, element: ET.Element, protection: EndToEndProtection):
2492
+ for child_element in self.findall(element, "END-TO-END-PROTECTION-VARIABLE-PROTOTYPES/*"):
2191
2493
  tag_name = self.getTagName(child_element)
2192
2494
  if tag_name == "END-TO-END-PROTECTION-VARIABLE-PROTOTYPE":
2193
- parent.addEndToEndProtectionVariablePrototype(self.getEndToEndProtectionVariablePrototype(child_element))
2495
+ prototype = EndToEndProtectionVariablePrototype()
2496
+ self.readEndToEndProtectionVariablePrototype(child_element, prototype)
2497
+ protection.addEndToEndProtectionVariablePrototype(prototype)
2194
2498
  else:
2195
2499
  self.raiseError("Unsupported End To End Protection Variable Prototype <%s>" % tag_name)
2196
2500
 
2501
+ def readEndToEndProtectionISignalIPdu(self, element: ET.Element, ipdu: EndToEndProtectionISignalIPdu):
2502
+ ipdu.setDataOffset(self.getChildElementOptionalIntegerValue(element, "DATA-OFFSET")) \
2503
+ .setISignalGroupRef(self.getChildElementOptionalRefType(element, "I-SIGNAL-GROUP-REF")) \
2504
+ .setISignalIPduRef(self.getChildElementOptionalRefType(element, "I-SIGNAL-I-PDU-REF"))
2505
+
2506
+ def readEndToEndProtectionEndToEndProtectionISignalIPdus(self, element: ET.Element, protection: EndToEndProtection):
2507
+ for child_element in self.findall(element, "END-TO-END-PROTECTION-I-SIGNAL-I-PDUS/*"):
2508
+ tag_name = self.getTagName(child_element)
2509
+ if tag_name == "END-TO-END-PROTECTION-I-SIGNAL-I-PDU":
2510
+ ipdu = EndToEndProtectionISignalIPdu()
2511
+ self.readEndToEndProtectionISignalIPdu(child_element, ipdu)
2512
+ protection.addEndToEndProtectionISignalIPdu(ipdu)
2513
+ else:
2514
+ self.notImplemented("Unsupported EndToEndProtectionISignalIPdu <%s>" % tag_name)
2515
+
2197
2516
  def readEndToEndProtection(self, element: ET.Element, parent: EndToEndProtectionSet):
2198
2517
  short_name = self.getShortName(element)
2199
2518
  self.logger.debug("readEndToEndProtection %s" % short_name)
2200
2519
  protection = parent.createEndToEndProtection(short_name)
2201
2520
  self.readIdentifiable(element, protection)
2202
- protection.endToEndProfile = self.getEndToEndDescription(element, "END-TO-END-PROFILE")
2203
- self.readEndToEndProtectionVariablePrototypes(element, protection)
2521
+ protection.setEndToEndProfile(self.getEndToEndDescription(element, "END-TO-END-PROFILE"))
2522
+ self.readEndToEndProtectionEndToEndProtectionISignalIPdus(element, protection)
2523
+ self.readEndToEndProtectionEndToEndProtectionVariablePrototypes(element, protection)
2204
2524
 
2205
2525
  def readEndToEndProtections(self, element: ET.Element, parent: EndToEndProtectionSet):
2206
2526
  for child_element in self.findall(element, "END-TO-END-PROTECTIONS/*"):
@@ -2215,10 +2535,6 @@ class ARXMLParser(AbstractARXMLParser):
2215
2535
  self.readIdentifiable(element, protection_set)
2216
2536
  self.readEndToEndProtections(element, protection_set)
2217
2537
 
2218
- def readAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
2219
- self.readIdentifiable(element, data_type)
2220
- data_type.swDataDefProps = self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS")
2221
-
2222
2538
  def readImplementationProps(self, element: ET.Element, props: ImplementationProps):
2223
2539
  props.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
2224
2540
 
@@ -2246,10 +2562,10 @@ class ARXMLParser(AbstractARXMLParser):
2246
2562
  prototype.typeTRef = self.getChildElementOptionalRefType(element, "TYPE-TREF")
2247
2563
 
2248
2564
  def readApplicationArrayElement(self, element: ET.Element, parent: ApplicationArrayDataType):
2249
- child_element = element.find("./xmlns:ELEMENT", self.nsmap)
2565
+ child_element = self.find(element, "ELEMENT")
2250
2566
  if child_element is not None:
2251
2567
  short_name = self.getShortName(child_element)
2252
- self.logger.debug("readApplicationArrayElement %s" % short_name)
2568
+ self.logger.debug("Read ApplicationArrayElement %s" % short_name)
2253
2569
  array_element = parent.createApplicationArrayElement(short_name)
2254
2570
  self.readApplicationCompositeElementDataPrototype(child_element, array_element)
2255
2571
  array_element.setArraySizeHandling(self.getChildElementOptionalLiteral(child_element, "ARRAY-SIZE-HANDLING"))
@@ -2257,13 +2573,13 @@ class ARXMLParser(AbstractARXMLParser):
2257
2573
  array_element.setMaxNumberOfElements(self.getChildElementOptionalNumericalValue(child_element, "MAX-NUMBER-OF-ELEMENTS"))
2258
2574
 
2259
2575
  def readApplicationArrayDataType(self, element: ET.Element, data_type: ApplicationArrayDataType):
2260
- self.logger.debug("Read ApplicationArrayDataType <%s>" % data_type)
2576
+ self.logger.debug("Read ApplicationArrayDataType <%s>" % data_type.getShortName())
2261
2577
  self.readApplicationCompositeDataType(element, data_type)
2262
2578
  data_type.setDynamicArraySizeProfile(self.getChildElementOptionalLiteral(element, "DYNAMIC-ARRAY-SIZE-PROFILE"))
2263
2579
  self.readApplicationArrayElement(element, data_type)
2264
2580
 
2265
2581
  def getSwRecordLayoutV(self, element: ET.Element, key: str) -> SwRecordLayoutV:
2266
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
2582
+ child_element = self.find(element, key)
2267
2583
  layout_v = None
2268
2584
  if child_element is not None:
2269
2585
  layout_v = SwRecordLayoutV()
@@ -2272,7 +2588,6 @@ class ARXMLParser(AbstractARXMLParser):
2272
2588
  .setSwRecordLayoutVAxis(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-AXIS")) \
2273
2589
  .setSwRecordLayoutVProp(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-PROP")) \
2274
2590
  .setSwRecordLayoutVIndex(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-INDEX"))
2275
- #print(layout_v.getShortLabel())
2276
2591
  return layout_v
2277
2592
 
2278
2593
  def readSwRecordLayoutGroupSwRecordLayoutGroupContentType(self, element: ET.Element, group: SwRecordLayoutGroup):
@@ -2282,19 +2597,19 @@ class ARXMLParser(AbstractARXMLParser):
2282
2597
  group.setSwRecordLayoutGroupContentType(content)
2283
2598
 
2284
2599
  def getSwRecordLayoutGroup(self, element: ET.Element, key: str) -> SwRecordLayoutGroup:
2285
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
2600
+ child_element = self.find(element, key)
2286
2601
  group = None
2287
2602
  if child_element is not None:
2288
2603
  group = SwRecordLayoutGroup()
2289
2604
  group.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
2290
- .setCategory(self.getChildElementOptionalLiteral(child_element, "CATEGORY"))
2291
- self.readSwRecordLayoutGroupSwRecordLayoutGroupContentType(child_element, group)
2292
- group.setSwRecordLayoutGroupAxis(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS")) \
2605
+ .setCategory(self.getChildElementOptionalLiteral(child_element, "CATEGORY")) \
2606
+ .setSwRecordLayoutGroupAxis(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS")) \
2293
2607
  .setSwRecordLayoutGroupIndex(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-INDEX")) \
2294
2608
  .setSwRecordLayoutGroupFrom(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-FROM")) \
2295
2609
  .setSwRecordLayoutGroupStep(self.getChildElementOptionalIntegerValue(child_element, "SW-RECORD-LAYOUT-GROUP-STEP")) \
2296
2610
  .setSwRecordLayoutGroupTo(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-TO"))
2297
- #print(group.getShortLabel())
2611
+ self.readSwRecordLayoutGroupSwRecordLayoutGroupContentType(child_element, group)
2612
+
2298
2613
  return group
2299
2614
 
2300
2615
  def readSwRecordLayout(self, element: ET.Element, layout: SwRecordLayout):
@@ -2305,7 +2620,7 @@ class ARXMLParser(AbstractARXMLParser):
2305
2620
  def readSwAddrMethod(self, element: ET.Element, method: SwAddrMethod):
2306
2621
  self.logger.debug("Read SwAddrMethod <%s>" % method.getShortName())
2307
2622
  self.readIdentifiable(element, method)
2308
- method.setMemoryAllocationKeywordPolicy(self.getChildElementOptionalLiteral(element, "MEMORY-ALLOCATION-KEYWORD-POLICY"))
2623
+ method.setMemoryAllocationKeywordPolicy(self.getChildElementOptionalLiteral(element, "MEMORY-ALLOCATION-KEYWORD-POLICY"))
2309
2624
  for option in self.getChildElementLiteralValueList(element, "OPTIONS/OPTION"):
2310
2625
  method.addOption(option)
2311
2626
  method.setSectionInitializationPolicy(self.getChildElementOptionalLiteral(element, "SECTION-INITIALIZATION-POLICY")) \
@@ -2379,6 +2694,7 @@ class ARXMLParser(AbstractARXMLParser):
2379
2694
  self.readTimingExtension(element, timing)
2380
2695
 
2381
2696
  def readFrameTriggering(self, element: ET.Element, triggering: FrameTriggering):
2697
+ self.readIdentifiable(element, triggering)
2382
2698
  for ref in self.getChildElementRefTypeList(element, 'FRAME-PORT-REFS/FRAME-PORT-REF'):
2383
2699
  triggering.addFramePortRef(ref)
2384
2700
  triggering.setFrameRef(self.getChildElementOptionalRefType(element, "FRAME-REF"))
@@ -2387,7 +2703,6 @@ class ARXMLParser(AbstractARXMLParser):
2387
2703
 
2388
2704
  def readCanFrameTriggering(self, element: ET.Element, triggering: CanFrameTriggering):
2389
2705
  self.logger.debug("Read CanFrameTriggering %s" % triggering.getShortName())
2390
- self.readIdentifiable(element, triggering)
2391
2706
  self.readFrameTriggering(element, triggering)
2392
2707
  triggering.setCanAddressingMode(self.getChildElementOptionalLiteral(element, "CAN-ADDRESSING-MODE")) \
2393
2708
  .setCanFdFrameSupport(self.getChildElementOptionalBooleanValue(element, "CAN-FD-FRAME-SUPPORT")) \
@@ -2396,13 +2711,52 @@ class ARXMLParser(AbstractARXMLParser):
2396
2711
  .setIdentifier(self.getChildElementOptionalNumericalValue(element, "IDENTIFIER")) \
2397
2712
  .setRxIdentifierRange(self.getChildElementRxIdentifierRange(element, "RX-IDENTIFIER-RANGE"))
2398
2713
 
2399
-
2400
2714
  def readLinFrameTriggering(self, element: ET.Element, triggering: LinFrameTriggering):
2401
2715
  self.logger.debug("Read LinFrameTriggering %s" % triggering.getShortName())
2402
- self.readIdentifiable(element, triggering)
2403
2716
  self.readFrameTriggering(element, triggering)
2404
2717
  triggering.setIdentifier(self.getChildElementOptionalNumericalValue(element, "IDENTIFIER")) \
2405
2718
  .setLinChecksum(self.getChildElementOptionalLiteral(element, "LIN-CHECKSUM"))
2719
+
2720
+ def readCommunicationCycle(self, element: ET.Element, cycle: CommunicationCycle):
2721
+ self.readARObjectAttributes(element, cycle)
2722
+
2723
+ def readCycleRepetition(self, element: ET.Element, cycle: CycleRepetition):
2724
+ self.readCommunicationCycle(element, cycle)
2725
+ cycle.setBaseCycle(self.getChildElementOptionalIntegerValue(element, "BASE-CYCLE")) \
2726
+ .setCycleRepetition(self.getChildElementOptionalLiteral(element, "CYCLE-REPETITION"))
2727
+
2728
+ def readFlexrayAbsolutelyScheduledTimingCommunicationCycle(self, element: ET.Element, timing: FlexrayAbsolutelyScheduledTiming):
2729
+ for child_element in self.findall(element, "COMMUNICATION-CYCLE/*"):
2730
+ tag_name = self.getTagName(child_element)
2731
+ if tag_name == "CYCLE-REPETITION":
2732
+ repetition = CycleRepetition()
2733
+ self.readCycleRepetition(child_element, repetition)
2734
+ timing.setCommunicationCycle(repetition)
2735
+ else:
2736
+ self.notImplemented("Unsupported CommunicationCycle <%s>" % tag_name)
2737
+
2738
+ def readFlexrayAbsolutelyScheduledTiming(self, element: ET.Element, timing: FlexrayAbsolutelyScheduledTiming):
2739
+ self.readARObjectAttributes(element, timing)
2740
+ self.readFlexrayAbsolutelyScheduledTimingCommunicationCycle(element, timing)
2741
+ timing.setSlotID(self.getChildElementOptionalPositiveInteger(element, "SLOT-ID"))
2742
+
2743
+ def readFlexrayFrameTriggeringAbsolutelyScheduledTimings(self, element: ET.Element, triggering: FlexrayFrameTriggering):
2744
+ for child_element in self.findall(element, "ABSOLUTELY-SCHEDULED-TIMINGS/*"):
2745
+ tag_name = self.getTagName(child_element)
2746
+ if tag_name == "FLEXRAY-ABSOLUTELY-SCHEDULED-TIMING":
2747
+ timing = FlexrayAbsolutelyScheduledTiming()
2748
+ self.readFlexrayAbsolutelyScheduledTiming(child_element, timing)
2749
+ triggering.addAbsolutelyScheduledTiming(timing)
2750
+ else:
2751
+ self.notImplemented("Unsupported AbsolutelyScheduledTiming <%s>" % tag_name)
2752
+
2753
+ def readFlexrayFrameTriggering(self, element: ET.Element, triggering: FlexrayFrameTriggering):
2754
+ self.logger.debug("Read FlexrayFrameTriggering %s" % triggering.getShortName())
2755
+ self.readFrameTriggering(element, triggering)
2756
+ self.readFlexrayFrameTriggeringAbsolutelyScheduledTimings(element, triggering)
2757
+ triggering.setAllowDynamicLSduLength(self.getChildElementOptionalBooleanValue(element, "ALLOW-DYNAMIC-L-SDU-LENGTH")) \
2758
+ .setMessageId(self.getChildElementOptionalPositiveInteger(element, "MESSAGE-ID")) \
2759
+ .setPayloadPreambleIndicator(self.getChildElementOptionalBooleanValue(element, "PAYLOAD-PREAMBLE-INDICATOR"))
2406
2760
 
2407
2761
  def readISignalTriggering(self, element: ET.Element, triggering: ISignalTriggering):
2408
2762
  self.logger.debug("Read ISignalTriggering %s" % triggering.getShortName())
@@ -2421,10 +2775,11 @@ class ARXMLParser(AbstractARXMLParser):
2421
2775
  for child_element in self.findall(element, 'I-SIGNAL-TRIGGERINGS/I-SIGNAL-TRIGGERING-REF-CONDITIONAL'):
2422
2776
  triggering.addISignalTriggeringRef(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-TRIGGERING-REF"))
2423
2777
 
2424
- def readPhysicalChannel(self, element: ET.Element, channel: PhysicalChannel):
2778
+ def readPhysicalChannelCommConnectorRefs(self, element: ET.Element, channel: PhysicalChannel):
2425
2779
  for child_element in self.findall(element, 'COMM-CONNECTORS/COMMUNICATION-CONNECTOR-REF-CONDITIONAL'):
2426
2780
  channel.addCommConnectorRef(self.getChildElementOptionalRefType(child_element, "COMMUNICATION-CONNECTOR-REF"))
2427
-
2781
+
2782
+ def readPhysicalChannelFrameTriggerings(self, element: ET.Element, channel: PhysicalChannel):
2428
2783
  for child_element in self.findall(element, "FRAME-TRIGGERINGS/*"):
2429
2784
  tag_name = self.getTagName(child_element)
2430
2785
  if tag_name == "CAN-FRAME-TRIGGERING":
@@ -2433,9 +2788,13 @@ class ARXMLParser(AbstractARXMLParser):
2433
2788
  elif tag_name == "LIN-FRAME-TRIGGERING":
2434
2789
  triggering = channel.createLinFrameTriggering(self.getShortName(child_element))
2435
2790
  self.readLinFrameTriggering(child_element, triggering)
2791
+ elif tag_name == "FLEXRAY-FRAME-TRIGGERING":
2792
+ triggering = channel.createFlexrayFrameTriggering(self.getShortName(child_element))
2793
+ self.readFlexrayFrameTriggering(child_element, triggering)
2436
2794
  else:
2437
2795
  self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
2438
-
2796
+
2797
+ def readPhysicalChannelISignalTriggerings(self, element: ET.Element, channel: PhysicalChannel):
2439
2798
  for child_element in self.findall(element, "I-SIGNAL-TRIGGERINGS/*"):
2440
2799
  tag_name = self.getTagName(child_element)
2441
2800
  if tag_name == "I-SIGNAL-TRIGGERING":
@@ -2443,7 +2802,8 @@ class ARXMLParser(AbstractARXMLParser):
2443
2802
  self.readISignalTriggering(child_element, triggering)
2444
2803
  else:
2445
2804
  self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
2446
-
2805
+
2806
+ def readPhysicalChannelPduTriggerings(self, element, channel):
2447
2807
  for child_element in self.findall(element, "PDU-TRIGGERINGS/*"):
2448
2808
  tag_name = self.getTagName(child_element)
2449
2809
  if tag_name == "PDU-TRIGGERING":
@@ -2452,8 +2812,15 @@ class ARXMLParser(AbstractARXMLParser):
2452
2812
  else:
2453
2813
  self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
2454
2814
 
2455
- def readCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
2815
+ def readPhysicalChannel(self, element: ET.Element, channel: PhysicalChannel):
2456
2816
  self.readIdentifiable(element, channel)
2817
+
2818
+ self.readPhysicalChannelCommConnectorRefs(element, channel)
2819
+ self.readPhysicalChannelFrameTriggerings(element, channel)
2820
+ self.readPhysicalChannelISignalTriggerings(element, channel)
2821
+ self.readPhysicalChannelPduTriggerings(element, channel)
2822
+
2823
+ def readCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
2457
2824
  self.readPhysicalChannel(element, channel)
2458
2825
 
2459
2826
  def readScheduleTableEntry(self, element: ET.Element, entry: ScheduleTableEntry):
@@ -2492,7 +2859,6 @@ class ARXMLParser(AbstractARXMLParser):
2492
2859
  self.notImplemented("Unsupported Schedule Table <%s>" % tag_name)
2493
2860
 
2494
2861
  def readLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
2495
- self.readIdentifiable(element, channel)
2496
2862
  self.readPhysicalChannel(element, channel)
2497
2863
  self.readLinPhysicalChannelScheduleTables(element, channel)
2498
2864
 
@@ -2517,7 +2883,7 @@ class ARXMLParser(AbstractARXMLParser):
2517
2883
  else:
2518
2884
  self.notImplemented("Unsupported Network EndPoint Address <%s>" % tag_name)
2519
2885
 
2520
- def getDoIpEntity(self, element: ET.Element, key:str) -> DoIpEntity:
2886
+ def getDoIpEntity(self, element: ET.Element, key: str) -> DoIpEntity:
2521
2887
  entity = None
2522
2888
  child_element = self.find(element, key)
2523
2889
  if child_element is not None:
@@ -2525,7 +2891,7 @@ class ARXMLParser(AbstractARXMLParser):
2525
2891
  entity.setDoIpEntityRole(self.getChildElementOptionalLiteral(child_element, "DO-IP-ENTITY-ROLE"))
2526
2892
  return entity
2527
2893
 
2528
- def getInfrastructureServices(self, element: ET.Element, key:str) -> InfrastructureServices:
2894
+ def getInfrastructureServices(self, element: ET.Element, key: str) -> InfrastructureServices:
2529
2895
  services = None
2530
2896
  child_element = self.find(element, key)
2531
2897
  if child_element is not None:
@@ -2571,7 +2937,7 @@ class ARXMLParser(AbstractARXMLParser):
2571
2937
  connection = SocketConnection()
2572
2938
  connection.setClientIpAddrFromConnectionRequest(self.getChildElementOptionalBooleanValue(element, "CLIENT-IP-ADDR-FROM-CONNECTION-REQUEST")) \
2573
2939
  .setClientPortFromConnectionRequest(self.getChildElementOptionalBooleanValue(element, "CLIENT-PORT-FROM-CONNECTION-REQUEST")) \
2574
- .setClientPortRef(self.getChildElementOptionalRefType(element, "CLIENT-PORT-REF"))
2940
+ .setClientPortRef(self.getChildElementOptionalRefType(element, "CLIENT-PORT-REF")) # NOQA E501
2575
2941
  for pdu in self.getSocketConnectionPdus(element):
2576
2942
  connection.addPdu(pdu)
2577
2943
  connection.setPduCollectionMaxBufferSize(self.getChildElementOptionalPositiveInteger(element, "PDU-COLLECTION-MAX-BUFFER-SIZE")) \
@@ -2586,7 +2952,7 @@ class ARXMLParser(AbstractARXMLParser):
2586
2952
  tag_name = self.getTagName(child_element)
2587
2953
  if tag_name == "SOCKET-CONNECTION":
2588
2954
  bundle.addBundledConnection(self.getSocketConnection(child_element))
2589
- else:
2955
+ else:
2590
2956
  self.notImplemented("Unsupported Bundled Connection <%s>" % tag_name)
2591
2957
 
2592
2958
  def readSocketConnectionBundle(self, element: ET.Element, bundle: SocketConnectionBundle):
@@ -2616,12 +2982,11 @@ class ARXMLParser(AbstractARXMLParser):
2616
2982
 
2617
2983
  def readTcpTp(self, element: ET.Element, tp: TcpTp):
2618
2984
  tp.setKeepAliveInterval(self.getChildElementOptionalTimeValue(element, "KEEP-ALIVE-INTERVAL")) \
2619
- .setKeepAliveProbesMax(self.getChildElementOptionalPositiveInteger(element, "KEEP-ALIVE-PROBES-MAX")) \
2620
- .setKeepAliveTime(self.getChildElementOptionalTimeValue(element, "KEEP-ALIVE-TIME")) \
2621
- .setKeepAlives(self.getChildElementOptionalBooleanValue(element, "KEEP-ALIVES")) \
2622
- .setNaglesAlgorithm(self.getChildElementOptionalLiteral(element, "NAGLES-ALGORITHM")) \
2623
- .setTcpTpPort(self.getTpPort(element, "TCP-TP-PORT"))
2624
-
2985
+ .setKeepAliveProbesMax(self.getChildElementOptionalPositiveInteger(element, "KEEP-ALIVE-PROBES-MAX")) \
2986
+ .setKeepAliveTime(self.getChildElementOptionalTimeValue(element, "KEEP-ALIVE-TIME")) \
2987
+ .setKeepAlives(self.getChildElementOptionalBooleanValue(element, "KEEP-ALIVES")) \
2988
+ .setNaglesAlgorithm(self.getChildElementOptionalLiteral(element, "NAGLES-ALGORITHM")) \
2989
+ .setTcpTpPort(self.getTpPort(element, "TCP-TP-PORT"))
2625
2990
 
2626
2991
  def readGenericTp(self, element: ET.Element, tp: GenericTp):
2627
2992
  tp.setTpAddress(self.getChildElementOptionalLiteral(element, "TP-ADDRESS")) \
@@ -2657,17 +3022,6 @@ class ARXMLParser(AbstractARXMLParser):
2657
3022
  delay.setMaxValue(self.getChildElementOptionalTimeValue(child_element, "MAX-VALUE")) \
2658
3023
  .setMinValue(self.getChildElementOptionalTimeValue(child_element, "MIN-VALUE"))
2659
3024
  return delay
2660
-
2661
- def getInitialSdDelayConfig(self, element: ET.Element, key: str) -> InitialSdDelayConfig:
2662
- config = None
2663
- child_element = self.find(element, key)
2664
- if child_element is not None:
2665
- config = InitialSdDelayConfig()
2666
- config.setInitialDelayMaxValue(self.getChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MAX-VALUE")) \
2667
- .setInitialDelayMinValue(self.getChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MIN-VALUE")) \
2668
- .setInitialRepetitionsBaseDelay(self.getChildElementOptionalTimeValue(child_element, "INITIAL-REPETITIONS-BASE-DELAY")) \
2669
- .setInitialRepetitionsMax(self.getChildElementOptionalPositiveInteger(child_element, "INITIAL-REPETITIONS-MAX"))
2670
- return config
2671
3025
 
2672
3026
  def getSdClientConfig(self, element: ET.Element, key: str) -> SdClientConfig:
2673
3027
  config = None
@@ -2722,7 +3076,7 @@ class ARXMLParser(AbstractARXMLParser):
2722
3076
  .setInitialRepetitionsBaseDelay(self.getChildElementOptionalTimeValue(child_element, "INITIAL-REPETITIONS-BASE-DELAY")) \
2723
3077
  .setInitialRepetitionsMax(self.getChildElementOptionalPositiveInteger(child_element, "INITIAL-REPETITIONS-MAX"))
2724
3078
  return config
2725
-
3079
+
2726
3080
  def getSdServerConfig(self, element: ET.Element, key: str) -> SdServerConfig:
2727
3081
  config = None
2728
3082
  child_element = self.find(element, key)
@@ -2744,7 +3098,7 @@ class ARXMLParser(AbstractARXMLParser):
2744
3098
  handler.setMulticastThreshold(self.getChildElementOptionalPositiveInteger(element, "MULTICAST-THRESHOLD"))
2745
3099
  for ref in self.getChildElementRefTypeList(element, "ROUTING-GROUP-REFS/ROUTING-GROUP-REF"):
2746
3100
  handler.addRoutingGroupRef(ref)
2747
- handler.setSdServerConfig(self.getSdServerConfig(element, "SD-SERVER-CONFIG")) \
3101
+ handler.setSdServerConfig(self.getSdServerConfig(element, "SD-SERVER-CONFIG"))
2748
3102
 
2749
3103
  def readProvidedServiceInstanceEventHandlers(self, element: ET.Element, instance: ProvidedServiceInstance):
2750
3104
  for child_element in self.findall(element, "EVENT-HANDLERS/*"):
@@ -2785,7 +3139,6 @@ class ARXMLParser(AbstractARXMLParser):
2785
3139
  for ref in self.getChildElementRefTypeList(element, "MULTICAST-CONNECTOR-REFS/MULTICAST-CONNECTOR-REF"):
2786
3140
  address.addMulticastConnectorRef(ref)
2787
3141
 
2788
-
2789
3142
  def readSocketAddress(self, element: ET.Element, address: SocketAddress):
2790
3143
  self.readIdentifiable(element, address)
2791
3144
  self.readSocketAddressApplicationEndpoint(element, address)
@@ -2793,7 +3146,7 @@ class ARXMLParser(AbstractARXMLParser):
2793
3146
  address.setConnectorRef(self.getChildElementOptionalRefType(element, "CONNECTOR-REF")) \
2794
3147
  .setPortAddress(self.getChildElementOptionalPositiveInteger(element, "PORT-ADDRESS"))
2795
3148
 
2796
- def readSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
3149
+ def readSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
2797
3150
  for child_element in self.findall(element, "SOCKET-ADDRESSS/*"):
2798
3151
  tag_name = self.getTagName(child_element)
2799
3152
  if tag_name == "SOCKET-ADDRESS":
@@ -2818,12 +3171,15 @@ class ARXMLParser(AbstractARXMLParser):
2818
3171
  vlan.setVlanIdentifier(self.getChildElementOptionalPositiveInteger(child_element, "VLAN-IDENTIFIER"))
2819
3172
 
2820
3173
  def readEthernetPhysicalChannel(self, element: ET.Element, channel: EthernetPhysicalChannel):
2821
- self.readIdentifiable(element, channel)
2822
3174
  self.readPhysicalChannel(element, channel)
2823
3175
  self.readEthernetPhysicalChannelNetworkEndPoints(element, channel)
2824
3176
  channel.setSoAdConfig(self.getSoAdConfig(element, "SO-AD-CONFIG"))
2825
3177
  self.readEthernetPhysicalChannelVlan(element, channel)
2826
3178
 
3179
+ def readFlexrayPhysicalChannel(self, element: ET.Element, channel: FlexrayPhysicalChannel):
3180
+ self.readPhysicalChannel(element, channel)
3181
+ channel.setChannelName(self.getChildElementOptionalLiteral(element, "CHANNEL-NAME"))
3182
+
2827
3183
  def readCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
2828
3184
  for child_element in self.findall(element, "PHYSICAL-CHANNELS/*"):
2829
3185
  tag_name = self.getTagName(child_element)
@@ -2836,12 +3192,14 @@ class ARXMLParser(AbstractARXMLParser):
2836
3192
  elif tag_name == "ETHERNET-PHYSICAL-CHANNEL":
2837
3193
  channel = cluster.createEthernetPhysicalChannel(self.getShortName(child_element))
2838
3194
  self.readEthernetPhysicalChannel(child_element, channel)
3195
+ elif tag_name == "FLEXRAY-PHYSICAL-CHANNEL":
3196
+ channel = cluster.createFlexrayPhysicalChannel(self.getShortName(child_element))
3197
+ self.readFlexrayPhysicalChannel(child_element, channel)
2839
3198
  else:
2840
3199
  self.notImplemented("Unsupported Physical Channel <%s>" % tag_name)
2841
3200
 
2842
-
2843
3201
  def readCommunicationCluster(self, element: ET.Element, cluster: CommunicationCluster):
2844
- cluster.setBaudrate(self.getChildElementOptionalNumericalValue(element, "BAUDRATE"))
3202
+ cluster.setBaudrate(self.getChildElementOptionalNumericalValue(element, "BAUDRATE"))
2845
3203
  self.readCommunicationClusterPhysicalChannels(element, cluster)
2846
3204
  cluster.setProtocolName(self.getChildElementOptionalLiteral(element, "PROTOCOL-NAME")) \
2847
3205
  .setProtocolVersion(self.getChildElementOptionalLiteral(element, "PROTOCOL-VERSION"))
@@ -2857,6 +3215,7 @@ class ARXMLParser(AbstractARXMLParser):
2857
3215
  return recovery
2858
3216
 
2859
3217
  def readAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
3218
+ self.readCommunicationCluster(element, cluster)
2860
3219
  cluster.setBusOffRecovery(self.getCanClusterBusOffRecovery(element, "BUS-OFF-RECOVERY")) \
2861
3220
  .setCanFdBaudrate(self.getChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE")) \
2862
3221
  .setSpeed(self.getChildElementOptionalNumericalValue(element, "SPEED"))
@@ -2873,9 +3232,47 @@ class ARXMLParser(AbstractARXMLParser):
2873
3232
  self.readIdentifiable(element, cluster)
2874
3233
  child_element = self.find(element, "CAN-CLUSTER-VARIANTS/CAN-CLUSTER-CONDITIONAL")
2875
3234
  if child_element is not None:
2876
- self.readCommunicationCluster(child_element, cluster)
2877
3235
  self.readAbstractCanCluster(child_element, cluster)
2878
3236
 
3237
+ def readFlexrayCluster(self, element: ET.Element, cluster: FlexrayCluster):
3238
+ self.logger.debug("Read FlexrayCluster <%s>" % cluster.getShortName())
3239
+ self.readIdentifiable(element, cluster)
3240
+ child_element = self.find(element, "FLEXRAY-CLUSTER-VARIANTS/FLEXRAY-CLUSTER-CONDITIONAL")
3241
+ if child_element is not None:
3242
+ self.readCommunicationCluster(child_element, cluster)
3243
+ cluster.setActionPointOffset(self.getChildElementOptionalIntegerValue(child_element, "ACTION-POINT-OFFSET")) \
3244
+ .setBit(self.getChildElementOptionalTimeValue(child_element, "BIT")) \
3245
+ .setCasRxLowMax(self.getChildElementOptionalIntegerValue(child_element, "CAS-RX-LOW-MAX")) \
3246
+ .setColdStartAttempts(self.getChildElementOptionalIntegerValue(child_element, "COLD-START-ATTEMPTS")) \
3247
+ .setCycle(self.getChildElementOptionalTimeValue(child_element, "CYCLE")) \
3248
+ .setCycleCountMax(self.getChildElementOptionalIntegerValue(child_element, "CYCLE-COUNT-MAX")) \
3249
+ .setDetectNitError(self.getChildElementOptionalBooleanValue(child_element, "DETECT-NIT-ERROR")) \
3250
+ .setDynamicSlotIdlePhase(self.getChildElementOptionalIntegerValue(child_element, "DYNAMIC-SLOT-IDLE-PHASE")) \
3251
+ .setIgnoreAfterTx(self.getChildElementOptionalIntegerValue(child_element, "IGNORE-AFTER-TX")) \
3252
+ .setListenNoise(self.getChildElementOptionalIntegerValue(child_element, "LISTEN-NOISE")) \
3253
+ .setMacroPerCycle(self.getChildElementOptionalIntegerValue(child_element, "MACRO-PER-CYCLE")) \
3254
+ .setMacrotickDuration(self.getChildElementOptionalTimeValue(child_element, "MACROTICK-DURATION")) \
3255
+ .setMaxWithoutClockCorrectionFatal(self.getChildElementOptionalIntegerValue(child_element, "MAX-WITHOUT-CLOCK-CORRECTION-FATAL")) \
3256
+ .setMaxWithoutClockCorrectionPassive(self.getChildElementOptionalIntegerValue(child_element, "MAX-WITHOUT-CLOCK-CORRECTION-PASSIVE")) \
3257
+ .setMinislotActionPointOffset(self.getChildElementOptionalIntegerValue(child_element, "MINISLOT-ACTION-POINT-OFFSET")) \
3258
+ .setMinislotDuration(self.getChildElementOptionalIntegerValue(child_element, "MINISLOT-DURATION")) \
3259
+ .setNetworkIdleTime(self.getChildElementOptionalIntegerValue(child_element, "NETWORK-IDLE-TIME")) \
3260
+ .setNetworkManagementVectorLength(self.getChildElementOptionalIntegerValue(child_element, "NETWORK-MANAGEMENT-VECTOR-LENGTH")) \
3261
+ .setNumberOfMinislots(self.getChildElementOptionalIntegerValue(child_element, "NUMBER-OF-MINISLOTS")) \
3262
+ .setNumberOfStaticSlots(self.getChildElementOptionalIntegerValue(child_element, "NUMBER-OF-STATIC-SLOTS")) \
3263
+ .setOffsetCorrectionStart(self.getChildElementOptionalIntegerValue(child_element, "OFFSET-CORRECTION-START")) \
3264
+ .setPayloadLengthStatic(self.getChildElementOptionalIntegerValue(child_element, "PAYLOAD-LENGTH-STATIC")) \
3265
+ .setSafetyMargin(self.getChildElementOptionalIntegerValue(child_element, "SAFETY-MARGIN")) \
3266
+ .setSampleClockPeriod(self.getChildElementOptionalTimeValue(child_element, "SAMPLE-CLOCK-PERIOD")) \
3267
+ .setStaticSlotDuration(self.getChildElementOptionalIntegerValue(child_element, "STATIC-SLOT-DURATION")) \
3268
+ .setSyncFrameIdCountMax(self.getChildElementOptionalIntegerValue(child_element, "SYNC-FRAME-ID-COUNT-MAX")) \
3269
+ .setTransmissionStartSequenceDuration(self.getChildElementOptionalIntegerValue(child_element, "TRANSMISSION-START-SEQUENCE-DURATION")) \
3270
+ .setWakeupRxIdle(self.getChildElementOptionalIntegerValue(child_element, "WAKEUP-RX-IDLE")) \
3271
+ .setWakeupRxLow(self.getChildElementOptionalIntegerValue(child_element, "WAKEUP-RX-LOW")) \
3272
+ .setWakeupRxWindow(self.getChildElementOptionalIntegerValue(child_element, "WAKEUP-RX-WINDOW")) \
3273
+ .setWakeupTxActive(self.getChildElementOptionalIntegerValue(child_element, "WAKEUP-TX-ACTIVE")) \
3274
+ .setWakeupTxIdle(self.getChildElementOptionalIntegerValue(child_element, "WAKEUP-TX-IDLE")) # noqa E501
3275
+
2879
3276
  def readMacMulticastGroup(self, element: ET.Element, group: MacMulticastGroup):
2880
3277
  self.readIdentifiable(element, group)
2881
3278
  group.setMacMulticastAddress(self.getChildElementOptionalLiteral(element, "MAC-MULTICAST-ADDRESS",))
@@ -3082,6 +3479,53 @@ class ARXMLParser(AbstractARXMLParser):
3082
3479
  self.readDoIpTpConfigDoIpLogicAddresses(element, config)
3083
3480
  self.readDoIpTpConfigTpConnections(element, config)
3084
3481
 
3482
+ def readHwDescriptionEntityHwCategoryRefs(self, element: ET.Element, entity: HwDescriptionEntity):
3483
+ for ref in self.getChildElementRefTypeList(element, "HW-CATEGORY-REFS/HW-CATEGORY-REF"):
3484
+ entity.addHwCategoryRef(ref)
3485
+
3486
+ def readHwDescriptionEntity(self, element: ET.Element, entity: HwDescriptionEntity):
3487
+ self.readARElement(element, entity)
3488
+ self.readHwDescriptionEntityHwCategoryRefs(element, entity)
3489
+
3490
+ def readHwPinGroup(self, element: ET.SubElement, pin_group: HwPinGroup):
3491
+ self.readHwDescriptionEntity(element, pin_group)
3492
+
3493
+ def readHwElementHwPinGroups(self, element: ET.Element, hw_element: HwElement):
3494
+ for child_element in self.findall(element, "HW-PIN-GROUPS/*"):
3495
+ tag_name = self.getTagName(child_element)
3496
+ if tag_name == "HW-PIN-GROUP":
3497
+ pin_group = hw_element.createHwPinGroup(self.getShortName(child_element))
3498
+ self.readHwPinGroup(child_element, pin_group)
3499
+ else:
3500
+ self.notImplemented("Unsupported Hw Pin Group <%s>" % tag_name)
3501
+
3502
+ def readHwElement(self, element: ET.Element, hw_element: HwElement):
3503
+ self.logger.debug("Read HwElement <%s>" % hw_element.getShortName())
3504
+ self.readHwDescriptionEntity(element, hw_element)
3505
+ self.readHwElementHwPinGroups(element, hw_element)
3506
+
3507
+ def readHwAttributeDef(self, element: ET.Element, attribute_def: HwAttributeDef):
3508
+ self.readIdentifiable(element, attribute_def)
3509
+ attribute_def.setUnitRef(self.getChildElementOptionalRefType(element, "UNIT-REF"))
3510
+
3511
+ def readHwCategoryHwAttributeDef(self, element: ET.Element, hw_category: HwCategory):
3512
+ for child_element in self.findall(element, "HW-ATTRIBUTE-DEFS/*"):
3513
+ tag_name = self.getTagName(child_element)
3514
+ if tag_name == "HW-ATTRIBUTE-DEF":
3515
+ pin_group = hw_category.createHwAttributeDef(self.getShortName(child_element))
3516
+ self.readHwAttributeDef(child_element, pin_group)
3517
+ else:
3518
+ self.notImplemented("Unsupported Hw Attribute Defs <%s>" % tag_name)
3519
+
3520
+ def readHwCategory(self, element: ET.Element, hw_category: HwCategory):
3521
+ self.logger.debug("Read HwCategory <%s>" % hw_category.getShortName())
3522
+ self.readARElement(element, hw_category)
3523
+ self.readHwCategoryHwAttributeDef(element, hw_category)
3524
+
3525
+ def readHwType(self, element: ET.Element, type: HwType):
3526
+ self.logger.debug("Read HwType <%s>" % type.getShortName())
3527
+ self.readARElement(element, type)
3528
+
3085
3529
  def readPduToFrameMappings(self, element: ET.Element, parent: Frame):
3086
3530
  for child_element in self.findall(element, "PDU-TO-FRAME-MAPPINGS/PDU-TO-FRAME-MAPPING"):
3087
3531
  short_name = self.getShortName(child_element)
@@ -3153,7 +3597,7 @@ class ARXMLParser(AbstractARXMLParser):
3153
3597
  .setDataId(self.getChildElementOptionalPositiveInteger(child_element, "DATA-ID")) \
3154
3598
  .setFreshnessValueId(self.getChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-ID")) \
3155
3599
  .setFreshnessValueLength(self.getChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-LENGTH")) \
3156
- .setFreshnessValueTxLength(self.getChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-TX-LENGTH"))
3600
+ .setFreshnessValueTxLength(self.getChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-TX-LENGTH")) # NOQA E501
3157
3601
  return props
3158
3602
 
3159
3603
  def readSecuredIPdu(self, element: ET.Element, i_pdu: SecuredIPdu):
@@ -3176,7 +3620,6 @@ class ARXMLParser(AbstractARXMLParser):
3176
3620
  nm_node.addRxNmPduRef(ref)
3177
3621
  for ref in self.getChildElementRefTypeList(element, "TX-NM-PDU-REFS/TX-NM-PDU-REF"):
3178
3622
  nm_node.addTxNmPduRefs(ref)
3179
-
3180
3623
 
3181
3624
  def readCanNmNode(self, element: ET.Element, nm_node: CanNmNode):
3182
3625
  self.logger.debug("Read CanNmNode <%s>" % nm_node.getShortName())
@@ -3205,7 +3648,7 @@ class ARXMLParser(AbstractARXMLParser):
3205
3648
  self.notImplemented("Unsupported Nm Node <%s>" % tag_name)
3206
3649
 
3207
3650
  def getCanNmClusterCoupling(self, element: ET.Element) -> CanNmClusterCoupling:
3208
- coupling = CanNmClusterCoupling()
3651
+ coupling = CanNmClusterCoupling()
3209
3652
  for ref in self.getChildElementRefTypeList(element, "COUPLED-CLUSTER-REFS/COUPLED-CLUSTER-REF"):
3210
3653
  coupling.addCoupledClusterRef(ref)
3211
3654
  coupling.setNmBusloadReductionEnabled(self.getChildElementOptionalBooleanValue(element, "NM-BUSLOAD-REDUCTION-ENABLED")) \
@@ -3401,7 +3844,7 @@ class ARXMLParser(AbstractARXMLParser):
3401
3844
 
3402
3845
  def readCanTpEcu(self, element: ET.Element, tp_ecu: CanTpEcu):
3403
3846
  tp_ecu.setCycleTimeMainFunction(self.getChildElementOptionalTimeValue(element, "CYCLE-TIME-MAIN-FUNCTION")) \
3404
- .setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF"))
3847
+ .setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF"))
3405
3848
 
3406
3849
  def readCanTpConfigTpEcus(self, element: ET.Element, config: CanTpConfig):
3407
3850
  for child_element in self.findall(element, "TP-ECUS/*"):
@@ -3457,7 +3900,7 @@ class ARXMLParser(AbstractARXMLParser):
3457
3900
  self.readTpConnection(element, connection)
3458
3901
  connection.setDataPduRef(self.getChildElementOptionalRefType(element, "DATA-PDU-REF")) \
3459
3902
  .setFlowControlRef(self.getChildElementOptionalRefType(element, "FLOW-CONTROL-REF")) \
3460
- .setLinTpNSduRef(self.getChildElementOptionalRefType(element, "LIN-TP-N-SDU-REF"))
3903
+ .setLinTpNSduRef(self.getChildElementOptionalRefType(element, "LIN-TP-N-SDU-REF"))
3461
3904
  self.readTpConnectionReceiverRefs(element, connection)
3462
3905
  connection.setTimeoutAs(self.getChildElementOptionalTimeValue(element, "TIMEOUT-AS")) \
3463
3906
  .setTimeoutCr(self.getChildElementOptionalTimeValue(element, "TIMEOUT-CR")) \
@@ -3502,6 +3945,134 @@ class ARXMLParser(AbstractARXMLParser):
3502
3945
  self.logger.debug("Read CanFrame <%s>" % frame.getShortName())
3503
3946
  self.readFrame(element, frame)
3504
3947
 
3948
+ def readFlexrayFrame(self, element: ET.Element, frame: FlexrayFrame):
3949
+ self.logger.debug("Read FlexrayFrame <%s>" % frame.getShortName())
3950
+ self.readFrame(element, frame)
3951
+
3952
+ def readFlexrayCommunicationController(self, element: ET.Element, controller: FlexrayCommunicationController):
3953
+ self.logger.debug("Read CommunicationController <%s>" % controller.getShortName())
3954
+ self.readIdentifiable(element, controller)
3955
+ child_element = self.find(element, "FLEXRAY-COMMUNICATION-CONTROLLER-VARIANTS/FLEXRAY-COMMUNICATION-CONTROLLER-CONDITIONAL")
3956
+ if child_element is not None:
3957
+ self.readCommunicationController(element, controller)
3958
+ controller.setAcceptedStartupRange(self.getChildElementOptionalIntegerValue(child_element, "ACCEPTED-STARTUP-RANGE")) \
3959
+ .setAllowHaltDueToClock(self.getChildElementOptionalBooleanValue(child_element, "ALLOW-HALT-DUE-TO-CLOCK")) \
3960
+ .setAllowPassiveToActive(self.getChildElementOptionalIntegerValue(child_element, "ALLOW-PASSIVE-TO-ACTIVE")) \
3961
+ .setClusterDriftDamping(self.getChildElementOptionalIntegerValue(child_element, "CLUSTER-DRIFT-DAMPING")) \
3962
+ .setDecodingCorrection(self.getChildElementOptionalIntegerValue(child_element, "DECODING-CORRECTION")) \
3963
+ .setDelayCompensationA(self.getChildElementOptionalIntegerValue(child_element, "DELAY-COMPENSATION-A")) \
3964
+ .setDelayCompensationB(self.getChildElementOptionalIntegerValue(child_element, "DELAY-COMPENSATION-B")) \
3965
+ .setKeySlotOnlyEnabled(self.getChildElementOptionalBooleanValue(child_element, "KEY-SLOT-ONLY-ENABLED")) \
3966
+ .setKeySlotUsedForStartUp(self.getChildElementOptionalBooleanValue(child_element, "KEY-SLOT-USED-FOR-START-UP")) \
3967
+ .setKeySlotUsedForSync(self.getChildElementOptionalBooleanValue(child_element, "KEY-SLOT-USED-FOR-SYNC")) \
3968
+ .setLatestTX(self.getChildElementOptionalIntegerValue(child_element, "LATEST-TX")) \
3969
+ .setListenTimeout(self.getChildElementOptionalIntegerValue(child_element, "LISTEN-TIMEOUT")) \
3970
+ .setMacroInitialOffsetA(self.getChildElementOptionalIntegerValue(child_element, "MACRO-INITIAL-OFFSET-A")) \
3971
+ .setMacroInitialOffsetB(self.getChildElementOptionalIntegerValue(child_element, "MACRO-INITIAL-OFFSET-B")) \
3972
+ .setMaximumDynamicPayloadLength(self.getChildElementOptionalIntegerValue(child_element, "MAXIMUM-DYNAMIC-PAYLOAD-LENGTH")) \
3973
+ .setMicroInitialOffsetA(self.getChildElementOptionalIntegerValue(child_element, "MICRO-INITIAL-OFFSET-A")) \
3974
+ .setMicroInitialOffsetB(self.getChildElementOptionalIntegerValue(child_element, "MICRO-INITIAL-OFFSET-B")) \
3975
+ .setMicroPerCycle(self.getChildElementOptionalIntegerValue(child_element, "MICRO-PER-CYCLE")) \
3976
+ .setMicrotickDuration(self.getChildElementOptionalTimeValue(child_element, "MICROTICK-DURATION")) \
3977
+ .setOffsetCorrectionOut(self.getChildElementOptionalIntegerValue(child_element, "OFFSET-CORRECTION-OUT")) \
3978
+ .setRateCorrectionOut(self.getChildElementOptionalIntegerValue(child_element, "RATE-CORRECTION-OUT")) \
3979
+ .setSamplesPerMicrotick(self.getChildElementOptionalIntegerValue(child_element, "SAMPLES-PER-MICROTICK")) \
3980
+ .setWakeUpPattern(self.getChildElementOptionalIntegerValue(child_element, "WAKE-UP-PATTERN"))
3981
+
3982
+ def readDataTransformationTransformerChainRefs(self, element: ET.Element, dtf: DataTransformation):
3983
+ for ref in self.getChildElementRefTypeList(element, "TRANSFORMER-CHAIN-REFS/TRANSFORMER-CHAIN-REF"):
3984
+ dtf.addTransformerChainRef(ref)
3985
+
3986
+ def readDataTransformation(self, element: ET.Element, dtf: DataTransformation):
3987
+ self.readIdentifiable(element, dtf)
3988
+ dtf.setExecuteDespiteDataUnavailability(self.getChildElementOptionalBooleanValue(element, "EXECUTE-DESPITE-DATA-UNAVAILABILITY"))
3989
+ self.readDataTransformationTransformerChainRefs(element, dtf)
3990
+
3991
+ def readDataTransformationSetDataTransformations(self, element: ET.Element, dtf_set: DataTransformationSet):
3992
+ for child_element in self.findall(element, "DATA-TRANSFORMATIONS/*"):
3993
+ tag_name = self.getTagName(child_element)
3994
+ if tag_name == "DATA-TRANSFORMATION":
3995
+ dtf = dtf_set.createDataTransformation(self.getShortName(child_element))
3996
+ self.readDataTransformation(child_element, dtf)
3997
+ else:
3998
+ self.notImplemented("Unsupported DataTransformation <%s>" % tag_name)
3999
+
4000
+ def readBufferPropertiesBufferComputation(self, element: ET.Element, properties: BufferProperties):
4001
+ child_element = self.find(element, "BUFFER-COMPUTATION")
4002
+ if child_element is not None:
4003
+ scale = CompuScale()
4004
+ self.readCompuScale(child_element, scale)
4005
+ properties.setBufferComputation(scale)
4006
+
4007
+ def getBufferProperties(self, element: ET.Element, key: str) -> BufferProperties:
4008
+ properties = None
4009
+ child_element = self.find(element, key)
4010
+ if child_element is not None:
4011
+ properties = BufferProperties()
4012
+ self.readBufferPropertiesBufferComputation(child_element, properties)
4013
+ properties.setHeaderLength(self.getChildElementOptionalIntegerValue(child_element, "HEADER-LENGTH")) \
4014
+ .setInPlace(self.getChildElementOptionalBooleanValue(child_element, "IN-PLACE"))
4015
+ return properties
4016
+
4017
+ def readDescribable(self, element: ET.Element, desc: Describable):
4018
+ self.readARObjectAttributes(element, desc)
4019
+
4020
+ def readTransformationDescription(self, element: ET.Element, desc: TransformationDescription):
4021
+ self.readDescribable(element, desc)
4022
+
4023
+ def readEndToEndTransformationDescription(self, element: ET.Element, desc: EndToEndTransformationDescription):
4024
+ self.readTransformationDescription(element, desc)
4025
+ desc.setDataIdMode(self.getChildElementOptionalLiteral(element, "DATA-ID-MODE")) \
4026
+ .setMaxDeltaCounter(self.getChildElementOptionalPositiveInteger(element, "MAX-DELTA-COUNTER")) \
4027
+ .setMaxErrorStateInit(self.getChildElementOptionalPositiveInteger(element, "MAX-ERROR-STATE-INIT")) \
4028
+ .setMaxErrorStateInvalid(self.getChildElementOptionalPositiveInteger(element, "MAX-ERROR-STATE-INVALID")) \
4029
+ .setMaxErrorStateValid(self.getChildElementOptionalPositiveInteger(element, "MAX-ERROR-STATE-VALID")) \
4030
+ .setMaxNoNewOrRepeatedData(self.getChildElementOptionalPositiveInteger(element, "MAX-NO-NEW-OR-REPEATED-DATA")) \
4031
+ .setMinOkStateInit(self.getChildElementOptionalPositiveInteger(element, "MIN-OK-STATE-INIT")) \
4032
+ .setMinOkStateInvalid(self.getChildElementOptionalPositiveInteger(element, "MIN-OK-STATE-INVALID")) \
4033
+ .setMinOkStateValid(self.getChildElementOptionalPositiveInteger(element, "MIN-OK-STATE-VALID")) \
4034
+ .setProfileBehavior(self.getChildElementOptionalLiteral(element, "PROFILE-BEHAVIOR")) \
4035
+ .setProfileName(self.getChildElementOptionalLiteral(element, "PROFILE-NAME")) \
4036
+ .setSyncCounterInit(self.getChildElementOptionalPositiveInteger(element, "SYNC-COUNTER-INIT")) \
4037
+ .setUpperHeaderBitsToShift(self.getChildElementOptionalPositiveInteger(element, "UPPER-HEADER-BITS-TO-SHIFT")) \
4038
+ .setWindowSizeInit(self.getChildElementOptionalPositiveInteger(element, "WINDOW-SIZE-INIT")) \
4039
+ .setWindowSizeInvalid(self.getChildElementOptionalPositiveInteger(element, "WINDOW-SIZE-INVALID")) \
4040
+ .setWindowSizeValid(self.getChildElementOptionalPositiveInteger(element, "WINDOW-SIZE-VALID"))
4041
+
4042
+ def readTransformationTechnologyTransformationDescriptions(self, element: ET.Element, tech: TransformationTechnology):
4043
+ for child_element in self.findall(element, "TRANSFORMATION-DESCRIPTIONS/*"):
4044
+ tag_name = self.getTagName(child_element)
4045
+ if tag_name == "END-TO-END-TRANSFORMATION-DESCRIPTION":
4046
+ desc = EndToEndTransformationDescription()
4047
+ self.readEndToEndTransformationDescription(child_element, desc)
4048
+ tech.setTransformationDescription(desc)
4049
+ else:
4050
+ self.notImplemented("Unsupported TransformationDescription <%s>" % tag_name)
4051
+
4052
+ def readTransformationTechnology(self, element: ET.Element, tech: TransformationTechnology):
4053
+ self.readIdentifiable(element, tech)
4054
+ tech.setBufferProperties(self.getBufferProperties(element, "BUFFER-PROPERTIES")) \
4055
+ .setNeedsOriginalData(self.getChildElementOptionalBooleanValue(element, "NEEDS-ORIGINAL-DATA")) \
4056
+ .setProtocol(self.getChildElementOptionalLiteral(element, "PROTOCOL"))
4057
+ self.readTransformationTechnologyTransformationDescriptions(element, tech)
4058
+ tech.setTransformerClass(self.getChildElementOptionalLiteral(element, "TRANSFORMER-CLASS")) \
4059
+ .setVersion(self.getChildElementOptionalLiteral(element, "VERSION"))
4060
+
4061
+ def readDataTransformationSetTransformationTechnologies(self, element: ET.Element, dtf_set: DataTransformationSet):
4062
+ for child_element in self.findall(element, "TRANSFORMATION-TECHNOLOGYS/*"):
4063
+ tag_name = self.getTagName(child_element)
4064
+ if tag_name == "TRANSFORMATION-TECHNOLOGY":
4065
+ tech = dtf_set.createTransformationTechnology(self.getShortName(child_element))
4066
+ self.readTransformationTechnology(child_element, tech)
4067
+ else:
4068
+ self.notImplemented("Unsupported TransformationTechnology <%s>" % tag_name)
4069
+
4070
+ def readDataTransformationSet(self, element: ET.Element, dtf_set: DataTransformationSet):
4071
+ self.logger.debug("Read DataTransformationSet <%s>" % dtf_set.getShortName())
4072
+ self.readIdentifiable(element, dtf_set)
4073
+ self.readDataTransformationSetDataTransformations(element, dtf_set)
4074
+ self.readDataTransformationSetTransformationTechnologies(element, dtf_set)
4075
+
3505
4076
  def readCommunicationController(self, element: ET.Element, controller: CommunicationController):
3506
4077
  controller.setWakeUpByControllerSupported(self.getChildElementOptionalBooleanValue(element, "WAKE-UP-BY-CONTROLLER-SUPPORTED"))
3507
4078
 
@@ -3510,7 +4081,7 @@ class ARXMLParser(AbstractARXMLParser):
3510
4081
  child_element = self.find(element, key)
3511
4082
  if child_element is not None:
3512
4083
  configuration = CanControllerFdConfiguration()
3513
- #TODO: need to implemented
4084
+ # TODO: need to implemented
3514
4085
  return configuration
3515
4086
 
3516
4087
  def getCanControllerFdConfigurationRequirements(self, element: ET.Element, key: str) -> CanControllerFdConfigurationRequirements:
@@ -3526,7 +4097,7 @@ class ARXMLParser(AbstractARXMLParser):
3526
4097
  .setMinSamplePoint(self.getChildElementOptionalFloatValue(child_element, "MIN-SAMPLE-POINT")) \
3527
4098
  .setMinSyncJumpWidth(self.getChildElementOptionalFloatValue(child_element, "MIN-SYNC-JUMP-WIDTH")) \
3528
4099
  .setMinTrcvDelayCompensationOffset(self.getChildElementOptionalTimeValue(child_element, "MIN-TRCV-DELAY-COMPENSATION-OFFSET")) \
3529
- .setTxBitRateSwitch(self.getChildElementOptionalBooleanValue(child_element, "TX-BIT-RATE-SWITCH"))
4100
+ .setTxBitRateSwitch(self.getChildElementOptionalBooleanValue(child_element, "TX-BIT-RATE-SWITCH")) # NOQA E501
3530
4101
  return requirements
3531
4102
 
3532
4103
  def readAbstractCanCommunicationControllerAttributes(self, element: ET.Element, attributes: AbstractCanCommunicationControllerAttributes):
@@ -3616,9 +4187,9 @@ class ARXMLParser(AbstractARXMLParser):
3616
4187
  for child_element in self.findall(element, "VLAN-MEMBERSHIPS/*"):
3617
4188
  tag_name = self.getTagName(child_element)
3618
4189
  if tag_name == "VLAN-MEMBERSHIP":
3619
- membership = VlanMembership()
3620
- self.readVlanMembership(child_element, membership)
3621
- port.addVlanMembership(membership)
4190
+ membership = VlanMembership()
4191
+ self.readVlanMembership(child_element, membership)
4192
+ port.addVlanMembership(membership)
3622
4193
  else:
3623
4194
  self.notImplemented("Unsupported VlanMembership <%s>" % tag_name)
3624
4195
 
@@ -3657,7 +4228,6 @@ class ARXMLParser(AbstractARXMLParser):
3657
4228
  self.readLinCommunicationController(child_element, controller)
3658
4229
  controller.setTimeBase(self.getChildElementOptionalTimeValue(child_element, "TIME-BASE")) \
3659
4230
  .setTimeBaseJitter(self.getChildElementOptionalTimeValue(child_element, "TIME-BASE-JITTER"))
3660
-
3661
4231
 
3662
4232
  def readEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
3663
4233
  self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
@@ -3672,6 +4242,9 @@ class ARXMLParser(AbstractARXMLParser):
3672
4242
  elif tag_name == "LIN-MASTER":
3673
4243
  controller = instance.createLinMaster(self.getShortName(child_element))
3674
4244
  self.readLinMaster(child_element, controller)
4245
+ elif tag_name == "FLEXRAY-COMMUNICATION-CONTROLLER":
4246
+ controller = instance.createFlexrayCommunicationController(self.getShortName(child_element))
4247
+ self.readFlexrayCommunicationController(child_element, controller)
3675
4248
  else:
3676
4249
  self.raiseError("Unsupported Communication Controller <%s>" % tag_name)
3677
4250
 
@@ -3686,7 +4259,7 @@ class ARXMLParser(AbstractARXMLParser):
3686
4259
  self.readCommConnectorPort(element, port)
3687
4260
  port.setKeyId(self.getChildElementOptionalPositiveInteger(element, "KEY-ID")) \
3688
4261
  .setRxSecurityVerification(self.getChildElementOptionalBooleanValue(element, "RX-SECURITY-VERIFICATION")) \
3689
- .setUseAuthDataFreshness(self.getChildElementOptionalBooleanValue(element, "USE-AUTH-DATA-FRESHNESS")) \
4262
+ .setUseAuthDataFreshness(self.getChildElementOptionalBooleanValue(element, "USE-AUTH-DATA-FRESHNESS"))
3690
4263
 
3691
4264
  def readISignalPort(self, element: ET.Element, port: ISignalPort):
3692
4265
  self.readCommConnectorPort(element, port)
@@ -3706,7 +4279,7 @@ class ARXMLParser(AbstractARXMLParser):
3706
4279
  port = connector.createISignalPort(self.getShortName(child_element))
3707
4280
  self.readISignalPort(child_element, port)
3708
4281
  else:
3709
- self.raiseError("Unsupported EcuCommPortInstances <%s>" % tag_name)
4282
+ self.raiseError("Unsupported EcuCommPortInstances <%s>" % tag_name)
3710
4283
 
3711
4284
  def readCommunicationConnector(self, element: ET.Element, connector: CommunicationConnector):
3712
4285
  self.readIdentifiable(element, connector)
@@ -3729,6 +4302,9 @@ class ARXMLParser(AbstractARXMLParser):
3729
4302
  def readLinCommunicationConnector(self, element: ET.Element, connector: LinCommunicationConnector):
3730
4303
  self.readCommunicationConnector(element, connector)
3731
4304
 
4305
+ def readFlexrayCommunicationConnector(self, element: ET.Element, connector: FlexrayCommunicationConnector):
4306
+ self.readCommunicationConnector(element, connector)
4307
+
3732
4308
  def readEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
3733
4309
  self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
3734
4310
  for child_element in self.findall(element, "CONNECTORS/*"):
@@ -3742,6 +4318,9 @@ class ARXMLParser(AbstractARXMLParser):
3742
4318
  elif tag_name == "LIN-COMMUNICATION-CONNECTOR":
3743
4319
  connector = instance.createLinCommunicationConnector(self.getShortName(child_element))
3744
4320
  self.readLinCommunicationConnector(child_element, connector)
4321
+ elif tag_name == "FLEXRAY-COMMUNICATION-CONNECTOR":
4322
+ connector = instance.createFlexrayCommunicationConnector(self.getShortName(child_element))
4323
+ self.readFlexrayCommunicationConnector(child_element, connector)
3745
4324
  else:
3746
4325
  self.notImplemented("Unsupported Communication Connector <%s>" % tag_name)
3747
4326
 
@@ -3821,7 +4400,7 @@ class ARXMLParser(AbstractARXMLParser):
3821
4400
 
3822
4401
  def readEcucValueCollectionEcucValues(self, element: ET.Element, parent: EcucValueCollection):
3823
4402
  for child_element in self.findall(element, "ECUC-VALUES/ECUC-MODULE-CONFIGURATION-VALUES-REF-CONDITIONAL"):
3824
- ref = self.getChildElementOptionalRefType(child_element, "ECUC-MODULE-CONFIGURATION-VALUES-REF")
4403
+ ref = self.getChildElementOptionalRefType(child_element, "ECUC-MODULE-CONFIGURATION-VALUES-REF")
3825
4404
  if (ref is not None):
3826
4405
  parent.addEcucValueRef(ref)
3827
4406
  self.logger.debug("EcucValue <%s> of EcucValueCollection <%s> has been added", ref.value, parent.getShortName())
@@ -3875,7 +4454,7 @@ class ARXMLParser(AbstractARXMLParser):
3875
4454
  child_element = self.find(element, key)
3876
4455
  if child_element is not None:
3877
4456
  instance_ref = AnyInstanceRef()
3878
- instance_ref.setBaseRef(self.getChildElementOptionalRefType(child_element, "BASE-REF"))
4457
+ instance_ref.setBaseRef(self.getChildElementOptionalRefType(child_element, "BASE-REF"))
3879
4458
  for ref in self.getChildElementRefTypeList(child_element, "CONTEXT-ELEMENT-REF"):
3880
4459
  instance_ref.addContextElementRef(ref)
3881
4460
  instance_ref.setTargetRef(self.getChildElementOptionalRefType(child_element, "TARGET-REF"))
@@ -3916,7 +4495,7 @@ class ARXMLParser(AbstractARXMLParser):
3916
4495
  if tag_name == "ECUC-CONTAINER-VALUE":
3917
4496
  self.readEcucContainerValueEcucContainerValue(child_element, parent)
3918
4497
  else:
3919
- self.notImplemented("Unsupported Sub Container %s" % tag_name)
4498
+ self.notImplemented("Unsupported Sub Container %s" % tag_name)
3920
4499
 
3921
4500
  def readEcucModuleConfigurationValuesEcucContainerValue(self, element: ET.Element, parent: EcucModuleConfigurationValues):
3922
4501
  short_name = self.getShortName(element)
@@ -3930,7 +4509,7 @@ class ARXMLParser(AbstractARXMLParser):
3930
4509
  if tag_name == "ECUC-CONTAINER-VALUE":
3931
4510
  self.readEcucModuleConfigurationValuesEcucContainerValue(child_element, values)
3932
4511
  else:
3933
- self.notImplemented("Unsupported Container %s" % tag_name)
4512
+ self.notImplemented("Unsupported Container %s" % tag_name)
3934
4513
 
3935
4514
  def readEcucModuleConfigurationValues(self, element: ET.Element, values: EcucModuleConfigurationValues):
3936
4515
  self.logger.debug("Read EcucModuleConfigurationValues %s" % values.getShortName())
@@ -3961,12 +4540,47 @@ class ARXMLParser(AbstractARXMLParser):
3961
4540
  return mappings
3962
4541
  '''
3963
4542
 
4543
+ def readISignalGroupISignalRef(self, element: ET.Element, group: ISignalGroup):
4544
+ for ref_type in self.getChildElementRefTypeList(element, "I-SIGNAL-REFS/I-SIGNAL-REF"):
4545
+ group.addISignalRef(ref_type)
4546
+
4547
+ def readISignalGroupComBasedSignalGroupTransformation(self, element: ET.Element, group: ISignalGroup):
4548
+ for ref in self.getChildElementRefTypeList(element, "COM-BASED-SIGNAL-GROUP-TRANSFORMATIONS/DATA-TRANSFORMATION-REF-CONDITIONAL/DATA-TRANSFORMATION-REF"): # noqa E501
4549
+ group.addComBasedSignalGroupTransformationRef(ref)
4550
+
4551
+ def readTransformationISignalProps(self, element: ET.Element, props: TransformationISignalProps):
4552
+ self.readDescribable(element, props)
4553
+
4554
+ def readEndToEndTransformationISignalPropsDataIds(self, element: ET.Element, props: EndToEndTransformationISignalProps):
4555
+ child_element = self.find(element, "DATA-IDS")
4556
+ if child_element is not None:
4557
+ props.addDataId(self.getChildElementOptionalPositiveInteger(child_element, "DATA-ID"))
4558
+
4559
+ def readEndToEndTransformationISignalProps(self, element: ET.Element, props: EndToEndTransformationISignalProps):
4560
+ child_element = self.find(element, "END-TO-END-TRANSFORMATION-I-SIGNAL-PROPS-VARIANTS/END-TO-END-TRANSFORMATION-I-SIGNAL-PROPS-CONDITIONAL")
4561
+ if child_element is not None:
4562
+ self.readTransformationISignalProps(child_element, props)
4563
+ props.setTransformerRef(self.getChildElementOptionalRefType(child_element, "TRANSFORMER-REF"))
4564
+ self.readEndToEndTransformationISignalPropsDataIds(child_element, props)
4565
+ props.setDataLength(self.getChildElementOptionalPositiveInteger(child_element, "DATA-LENGTH"))
4566
+
4567
+ def readISignalGroupTransformationISignalProps(self, element: ET.Element, group: ISignalGroup):
4568
+ for child_element in self.findall(element, "TRANSFORMATION-I-SIGNAL-PROPSS/*"):
4569
+ tag_name = self.getTagName(child_element)
4570
+ if tag_name == "END-TO-END-TRANSFORMATION-I-SIGNAL-PROPS":
4571
+ props = EndToEndTransformationISignalProps()
4572
+ self.readEndToEndTransformationISignalProps(child_element, props)
4573
+ group.setTransformationISignalProps(props)
4574
+ else:
4575
+ self.notImplemented("Unsupported TransformationISignalProps %s" % tag_name)
4576
+
3964
4577
  def readISignalGroup(self, element: ET.Element, group: ISignalGroup):
3965
4578
  self.logger.debug("Read ISignalGroup <%s>" % group.getShortName())
3966
4579
  self.readIdentifiable(element, group)
3967
- for ref_type in self.getChildElementRefTypeList(element, "I-SIGNAL-REFS/I-SIGNAL-REF"):
3968
- group.addISignalRef(ref_type)
3969
- group.systemSignalGroupRef = self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-GROUP-REF")
4580
+ self.readISignalGroupComBasedSignalGroupTransformation(element, group)
4581
+ self.readISignalGroupISignalRef(element, group)
4582
+ group.setSystemSignalGroupRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-GROUP-REF"))
4583
+ self.readISignalGroupTransformationISignalProps(element, group)
3970
4584
 
3971
4585
  def readSystemSignal(self, element: ET.Element, signal: SystemSignal):
3972
4586
  self.logger.debug("Read SystemSignal <%s>" % signal.getShortName())
@@ -3999,7 +4613,7 @@ class ARXMLParser(AbstractARXMLParser):
3999
4613
  filter = DataFilter()
4000
4614
  filter.setDataFilterType(self.getChildElementOptionalLiteral(child_element, "DATA-FILTER-TYPE")) \
4001
4615
  .setMask(self.getChildElementOptionalIntegerValue(child_element, "MASK")) \
4002
- .setX(self.getChildElementOptionalIntegerValue(child_element, "X"))
4616
+ .setX(self.getChildElementOptionalIntegerValue(child_element, "X"))
4003
4617
 
4004
4618
  return filter
4005
4619
 
@@ -4012,7 +4626,7 @@ class ARXMLParser(AbstractARXMLParser):
4012
4626
  .setISignalInIPduRef(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-IN-I-PDU-REF"))
4013
4627
  result.append(condition)
4014
4628
  return result
4015
-
4629
+
4016
4630
  def getTimeRangeType(self, element: ET.Element, key: str) -> TimeRangeType:
4017
4631
  time_range = None
4018
4632
  child_element = self.find(element, key)
@@ -4020,7 +4634,7 @@ class ARXMLParser(AbstractARXMLParser):
4020
4634
  time_range = TimeRangeType()
4021
4635
  time_range.setValue(self.getChildElementOptionalTimeValue(child_element, "VALUE"))
4022
4636
  return time_range
4023
-
4637
+
4024
4638
  def getCyclicTiming(self, element: ET.Element, key: str) -> CyclicTiming:
4025
4639
  timing = None
4026
4640
  child_element = self.find(element, key)
@@ -4052,7 +4666,7 @@ class ARXMLParser(AbstractARXMLParser):
4052
4666
  def getTransmissionModeDeclaration(self, element: ET.Element, key: str) -> TransmissionModeDeclaration:
4053
4667
  decl = None
4054
4668
  child_element = self.find(element, key)
4055
- if child_element != None:
4669
+ if child_element is not None:
4056
4670
  decl = TransmissionModeDeclaration()
4057
4671
  for condition in self.getTransmissionModeConditions(child_element, "TRANSMISSION-MODE-CONDITIONS/TRANSMISSION-MODE-CONDITION"):
4058
4672
  decl.addTransmissionModeCondition(condition)
@@ -4078,7 +4692,7 @@ class ARXMLParser(AbstractARXMLParser):
4078
4692
  ipdu.setUnusedBitPattern(self.getChildElementOptionalIntegerValue(element, "UNUSED-BIT-PATTERN"))
4079
4693
 
4080
4694
  def getISignalIPduRefs(self, element: ET.Element) -> List[RefType]:
4081
- ref_types = []
4695
+ ref_types = []
4082
4696
  for child_element in self.findall(element, "I-SIGNAL-I-PDUS/I-SIGNAL-I-PDU-REF-CONDITIONAL"):
4083
4697
  ref_types.append(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-I-PDU-REF"))
4084
4698
  return ref_types
@@ -4093,26 +4707,61 @@ class ARXMLParser(AbstractARXMLParser):
4093
4707
  for ref_type in self.getISignalIPduRefs(element):
4094
4708
  group.addISignalIPduRef(ref_type)
4095
4709
 
4096
- def getSenderReceiverToSignalMapping(self, element: ET.Element) -> SenderReceiverToSignalMapping:
4097
- mapping = SenderReceiverToSignalMapping()
4710
+ def readSenderReceiverToSignalMapping(self, element: ET.Element, mapping: SenderReceiverToSignalMapping):
4098
4711
  mapping.setCommunicationDirection(self.getChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION")) \
4099
4712
  .setDataElementIRef(self.getVariableDataPrototypeInSystemInstanceRef(self.find(element, "DATA-ELEMENT-IREF"))) \
4100
4713
  .setSystemSignalRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF"))
4101
- return mapping
4102
4714
 
4103
- def getSenderReceiverToSignalGroupMapping(self, element: ET.Element) -> SenderReceiverToSignalGroupMapping:
4104
- mapping = SenderReceiverToSignalGroupMapping()
4715
+ def readSenderRecCompositeTypeMapping(self, element: ET.Element, mapping: SenderRecCompositeTypeMapping):
4716
+ self.readARObjectAttributes(element, mapping)
4717
+
4718
+ def readSenderRecRecordElementMapping(self, element: ET.Element, mapping: SenderRecRecordElementMapping):
4719
+ self.readARObjectAttributes(element, mapping)
4720
+ mapping.setApplicationRecordElementRef(self.getChildElementOptionalRefType(element, "APPLICATION-RECORD-ELEMENT-REF")) \
4721
+ .setImplementationRecordElementRef(self.getChildElementOptionalRefType(element, "IMPLEMENTATION-RECORD-ELEMENT-REF")) \
4722
+ .setSystemSignalRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF"))
4723
+
4724
+ def readSenderRecArrayTypeMappingRecordElementMapping(self, element: ET.Element, mapping: SenderRecRecordTypeMapping):
4725
+ for child_element in self.findall(element, "RECORD-ELEMENT-MAPPINGS/*"):
4726
+ tag_name = self.getTagName(child_element)
4727
+ if tag_name == "SENDER-REC-RECORD-ELEMENT-MAPPING":
4728
+ record_element_mapping = SenderRecRecordElementMapping()
4729
+ self.readSenderRecRecordElementMapping(child_element, record_element_mapping)
4730
+ mapping.addRecordElementMapping(record_element_mapping)
4731
+ else:
4732
+ self.notImplemented("Unsupported RecordElementMapping %s" % tag_name)
4733
+
4734
+ def readSenderRecRecordTypeMapping(self, element: ET.Element, mapping: SenderRecRecordTypeMapping):
4735
+ self.readSenderRecCompositeTypeMapping(element, mapping)
4736
+ self.readSenderRecArrayTypeMappingRecordElementMapping(element, mapping)
4737
+
4738
+ def readSenderReceiverToSignalGroupMappingTypeMapping(self, element: ET.Element, mapping: SenderReceiverToSignalGroupMapping):
4739
+ child_element = self.find(element, "TYPE-MAPPING/*")
4740
+ if child_element is not None:
4741
+ tag_name = self.getTagName(child_element)
4742
+ if tag_name == "SENDER-REC-RECORD-TYPE-MAPPING":
4743
+ type_mapping = SenderRecRecordTypeMapping()
4744
+ self.readSenderRecRecordTypeMapping(child_element, type_mapping)
4745
+ mapping.setTypeMapping(type_mapping)
4746
+ else:
4747
+ self.notImplemented("Unsupported Type Mapping %s" % tag_name)
4748
+
4749
+ def readSenderReceiverToSignalGroupMapping(self, element: ET.Element, mapping: SenderReceiverToSignalGroupMapping):
4105
4750
  mapping.setDataElementIRef(self.getVariableDataPrototypeInSystemInstanceRef(self.find(element, "DATA-ELEMENT-IREF")))
4106
4751
  mapping.setSignalGroupRef(self.getChildElementOptionalRefType(element, "SIGNAL-GROUP-REF"))
4107
- return mapping
4108
-
4752
+ self.readSenderReceiverToSignalGroupMappingTypeMapping(element, mapping)
4753
+
4109
4754
  def readSystemMappingDataMappings(self, element: ET.Element, mapping: SystemMapping):
4110
4755
  for child_element in self.findall(element, "DATA-MAPPINGS/*"):
4111
4756
  tag_name = self.getTagName(child_element)
4112
4757
  if tag_name == "SENDER-RECEIVER-TO-SIGNAL-MAPPING":
4113
- mapping.addDataMapping(self.getSenderReceiverToSignalMapping(child_element))
4758
+ signal_mapping = SenderReceiverToSignalMapping()
4759
+ self.readSenderReceiverToSignalMapping(child_element, signal_mapping)
4760
+ mapping.addDataMapping(signal_mapping)
4114
4761
  elif tag_name == "SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING":
4115
- mapping.addDataMapping(self.getSenderReceiverToSignalGroupMapping(child_element))
4762
+ signal_group_mapping = SenderReceiverToSignalGroupMapping()
4763
+ self.readSenderReceiverToSignalGroupMapping(child_element, signal_group_mapping)
4764
+ mapping.addDataMapping(signal_group_mapping)
4116
4765
  else:
4117
4766
  self.notImplemented("Unsupported Data Mapping %s" % tag_name)
4118
4767
 
@@ -4122,7 +4771,7 @@ class ARXMLParser(AbstractARXMLParser):
4122
4771
  for child_element in self.findall(element, "COMPONENT-IREFS/COMPONENT-IREF"):
4123
4772
  mapping.addComponentIRef(self.getComponentInSystemInstanceRef(child_element))
4124
4773
  mapping.setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF"))
4125
-
4774
+
4126
4775
  def readSystemMappingSwMappings(self, element: ET.Element, mapping: SystemMapping):
4127
4776
  for child_element in self.findall(element, "SW-MAPPINGS/*"):
4128
4777
  tag_name = self.getTagName(child_element)
@@ -4135,7 +4784,7 @@ class ARXMLParser(AbstractARXMLParser):
4135
4784
  def readEcuMapping(self, element: ET.Element, mapping: ECUMapping):
4136
4785
  self.readIdentifiable(element, mapping)
4137
4786
  mapping.setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF")) \
4138
- .setEcuRef(self.getChildElementOptionalRefType(element, "ECU-REF"))
4787
+ .setEcuRef(self.getChildElementOptionalRefType(element, "ECU-REF"))
4139
4788
 
4140
4789
  def readSystemMappingEcuResourceMappings(self, element: ET.Element, mapping: SystemMapping):
4141
4790
  for child_element in self.findall(element, "ECU-RESOURCE-MAPPINGS/*"):
@@ -4177,7 +4826,7 @@ class ARXMLParser(AbstractARXMLParser):
4177
4826
  self.readSystemMapping(child_element, mapping)
4178
4827
  else:
4179
4828
  self.notImplemented("Unsupported Mapping %s" % tag_name)
4180
-
4829
+
4181
4830
  def readRootSwCompositionPrototype(self, element: ET.Element, system: System):
4182
4831
  child_element = self.find(element, "ROOT-SOFTWARE-COMPOSITIONS/ROOT-SW-COMPOSITION-PROTOTYPE")
4183
4832
  if child_element is not None:
@@ -4188,7 +4837,7 @@ class ARXMLParser(AbstractARXMLParser):
4188
4837
  prototype.setFlatMapRef(self.getChildElementOptionalRefType(child_element, "FLAT-MAP-REF")) \
4189
4838
  .setSoftwareCompositionTRef(self.getChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF"))
4190
4839
  AUTOSAR.getInstance().setRootSwCompositionPrototype(prototype)
4191
-
4840
+
4192
4841
  def readSystemFibexElementRefs(self, element: ET.Element, system: System):
4193
4842
  for ref in self.getChildElementRefTypeList(element, "FIBEX-ELEMENTS/FIBEX-ELEMENT-REF-CONDITIONAL/FIBEX-ELEMENT-REF"):
4194
4843
  system.addFibexElementRef(ref)
@@ -4270,7 +4919,7 @@ class ARXMLParser(AbstractARXMLParser):
4270
4919
  type = parent.createComplexDeviceDriverSwComponentType(self.getShortName(child_element))
4271
4920
  self.readComplexDeviceDriverSwComponentType(child_element, type)
4272
4921
  elif tag_name == "SWC-IMPLEMENTATION":
4273
- impl = parent.createSwcImplementation(self.getShortName(child_element))
4922
+ impl = parent.createSwcImplementation(self.getShortName(child_element))
4274
4923
  self.readSwcImplementation(child_element, impl)
4275
4924
  elif tag_name == "APPLICATION-PRIMITIVE-DATA-TYPE":
4276
4925
  data_type = parent.createApplicationPrimitiveDataType(self.getShortName(child_element))
@@ -4309,7 +4958,7 @@ class ARXMLParser(AbstractARXMLParser):
4309
4958
  mapping = parent.createSwcBswMapping(self.getShortName(child_element))
4310
4959
  self.readSwcBswMapping(child_element, mapping)
4311
4960
  elif tag_name == "BSW-IMPLEMENTATION":
4312
- impl = parent.createBswImplementation(self.getShortName(child_element))
4961
+ impl = parent.createBswImplementation(self.getShortName(child_element))
4313
4962
  self.readBswImplementation(child_element, impl)
4314
4963
  elif tag_name == "IMPLEMENTATION-DATA-TYPE":
4315
4964
  data_type = parent.createImplementationDataType(self.getShortName(child_element))
@@ -4372,7 +5021,7 @@ class ARXMLParser(AbstractARXMLParser):
4372
5021
  i_pdu = parent.createSecuredIPdu(self.getShortName(child_element))
4373
5022
  self.readSecuredIPdu(child_element, i_pdu)
4374
5023
  elif tag_name == "NM-CONFIG":
4375
- config = parent.createNmConfig(self.getShortName(child_element))
5024
+ config = parent.createNmConfig(self.getShortName(child_element))
4376
5025
  self.readNmConfig(child_element, config)
4377
5026
  elif tag_name == "CAN-TP-CONFIG":
4378
5027
  config = parent.createCanTpConfig(self.getShortName(child_element))
@@ -4470,11 +5119,28 @@ class ARXMLParser(AbstractARXMLParser):
4470
5119
  elif tag_name == "DO-IP-TP-CONFIG":
4471
5120
  config = parent.createDoIpTpConfig(self.getShortName(child_element))
4472
5121
  self.readDoIpTpConfig(child_element, config)
5122
+ elif tag_name == "HW-ELEMENT":
5123
+ hw_element = parent.createHwElement(self.getShortName(child_element))
5124
+ self.readHwElement(child_element, hw_element)
5125
+ elif tag_name == "HW-CATEGORY":
5126
+ hw_category = parent.createHwCategory(self.getShortName(child_element))
5127
+ self.readHwCategory(child_element, hw_category)
5128
+ elif tag_name == "HW-TYPE":
5129
+ type = parent.createHwType(self.getShortName(child_element))
5130
+ self.readHwType(child_element, type)
5131
+ elif tag_name == "FLEXRAY-FRAME":
5132
+ frame = parent.createFlexrayFrame(self.getShortName(child_element))
5133
+ self.readFlexrayFrame(child_element, frame)
5134
+ elif tag_name == "FLEXRAY-CLUSTER":
5135
+ cluster = parent.createFlexrayCluster(self.getShortName(child_element))
5136
+ self.readFlexrayCluster(child_element, cluster)
5137
+ elif tag_name == "DATA-TRANSFORMATION-SET":
5138
+ transformation_set = parent.createDataTransformationSet(self.getShortName(child_element))
5139
+ self.readDataTransformationSet(child_element, transformation_set)
4473
5140
  else:
4474
5141
  self.notImplemented("Unsupported element type of ARPackage <%s>" % tag_name)
4475
5142
 
4476
5143
  def readReferenceBases(self, element: ET.Element, parent: ARPackage):
4477
- self.logger.debug("Read ReferenceBases")
4478
5144
  for child_element in self.findall(element, "REFERENCE-BASES/REFERENCE-BASE"):
4479
5145
  base = ReferenceBase()
4480
5146
  base.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
@@ -4484,17 +5150,22 @@ class ARXMLParser(AbstractARXMLParser):
4484
5150
  .setPackageRef(self.getChildElementOptionalRefType(child_element, "PACKAGE-REF"))
4485
5151
  parent.addReferenceBase(base)
4486
5152
 
4487
- def readARPackages(self, element: ET.Element, parent: ARPackage):
4488
- for child_element in element.findall("./xmlns:AR-PACKAGES/xmlns:AR-PACKAGE", self.nsmap):
4489
- short_name = self.getShortName(child_element)
4490
- ar_package = parent.createARPackage(short_name)
5153
+ def readARPackage(self, element: ET.Element, ar_package: ARPackage):
5154
+ self.logger.debug("Read ARPackages %s" % ar_package.getFullName())
4491
5155
 
4492
- self.logger.debug("readARPackages %s" % ar_package.full_name)
5156
+ self.readIdentifiable(element, ar_package)
5157
+ self.readARPackages(element, ar_package)
5158
+ self.readARPackageElements(element, ar_package)
5159
+ self.readReferenceBases(element, ar_package)
4493
5160
 
4494
- self.readIdentifiable(child_element, ar_package)
4495
- self.readARPackages(child_element, ar_package)
4496
- self.readARPackageElements(child_element, ar_package)
4497
- self.readReferenceBases(child_element, ar_package)
5161
+ def readARPackages(self, element: ET.Element, parent: ARPackage):
5162
+ for child_element in self.findall(element, "AR-PACKAGES/*"):
5163
+ tag_name = self.getTagName(child_element)
5164
+ if tag_name == "AR-PACKAGE":
5165
+ ar_package = parent.createARPackage(self.getShortName(child_element))
5166
+ self.readARPackage(child_element, ar_package)
5167
+ else:
5168
+ self.notImplemented("Unsupported ARPackage <%s>" % tag_name)
4498
5169
 
4499
5170
  def load(self, filename, document: AUTOSAR):
4500
5171
  self.logger.info("Loading %s ..." % os.path.realpath(filename))
@@ -4505,7 +5176,7 @@ class ARXMLParser(AbstractARXMLParser):
4505
5176
  self.raiseError("Invalid ARXML file <%s>" % filename)
4506
5177
 
4507
5178
  self.getAUTOSARInfo(root, document)
4508
- document.setAdminData(self.getAdminData(root, "ADMIN-DATA"))
5179
+ document.setAdminData(self.getAdminData(root, "ADMIN-DATA"))
4509
5180
  self.readARPackages(root, document)
4510
5181
 
4511
5182
  document.reload()