armodel 1.7.7__py3-none-any.whl → 1.7.9__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 (73) 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 +84 -28
  4. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +410 -61
  5. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +80 -9
  6. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +141 -35
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +10 -8
  8. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +17 -6
  9. armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +38 -3
  10. armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +91 -18
  11. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/BlueprintDedicated/PortPrototypeBlueprint.py +73 -0
  12. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/BlueprintDedicated/__init__.py +0 -0
  13. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/Keyword.py +45 -0
  14. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/__init__.py +0 -0
  15. armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +45 -2
  16. armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +20 -19
  17. armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/HwElementCategory.py +59 -0
  18. armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/__init__.py +145 -0
  19. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +243 -156
  20. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ElementCollection.py +73 -0
  21. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +60 -32
  22. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +35 -14
  23. armodel/models/M2/AUTOSARTemplates/GenericStructure/LifeCycles.py +151 -1
  24. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +66 -42
  25. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +1 -0
  26. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +13 -6
  27. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +166 -50
  28. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SoftwareComponentDocumentation.py +80 -0
  29. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AccessCount.py +9 -1
  30. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +5 -4
  31. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +11 -1
  32. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +16 -2
  33. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +9 -1
  34. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +167 -5
  35. armodel/models/M2/AUTOSARTemplates/SystemTemplate/{ECUResourceMapping.py → EcuResourceMapping.py} +4 -3
  36. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +31 -21
  37. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetFrame.py +5 -3
  38. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +18 -6
  39. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayCommunication.py +76 -0
  40. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayTopology.py +654 -0
  41. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/__init__.py +0 -0
  42. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +64 -31
  43. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +158 -40
  44. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +19 -6
  45. armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +2 -0
  46. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Transformer/__init__.py +524 -0
  47. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +15 -13
  48. armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +10 -1
  49. armodel/models/M2/MSR/Documentation/BlockElements/Figure.py +163 -0
  50. armodel/models/M2/MSR/Documentation/BlockElements/__init__.py +0 -0
  51. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/ListElements.py +5 -3
  52. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/PaginationAndView.py +22 -1
  53. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/__init__.py +94 -9
  54. armodel/models/__init__.py +7 -1
  55. armodel/parser/abstract_arxml_parser.py +39 -32
  56. armodel/parser/arxml_parser.py +1439 -551
  57. armodel/parser/file_parser.py +5 -3
  58. armodel/tests/test_armodel/models/test_ar_package.py +6 -11
  59. armodel/tests/test_armodel/models/test_port_interface.py +116 -117
  60. armodel/tests/test_armodel/parser/test_bsw_module_descriiption.py +109 -109
  61. armodel/tests/test_armodel/parser/test_sw_components.py +301 -28
  62. armodel/tests/test_armodel/parser/test_system.py +2 -8
  63. armodel/transformer/__init__.py +0 -0
  64. armodel/transformer/abstract.py +6 -0
  65. armodel/transformer/admin_data.py +31 -0
  66. armodel/writer/abstract_arxml_writer.py +22 -29
  67. armodel/writer/arxml_writer.py +1500 -526
  68. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/METADATA +61 -1
  69. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/RECORD +73 -57
  70. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/LICENSE +0 -0
  71. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/WHEEL +0 -0
  72. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/entry_points.txt +0 -0
  73. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/top_level.txt +0 -0
@@ -2,14 +2,14 @@ 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
-
5
+ from armodel.models.M2.MSR.Documentation.TextModel.BlockElements.PaginationAndView import DocumentViewSelectable, Paginateable
8
6
 
9
7
  from ..models.M2.MSR.AsamHdo.AdminData import AdminData
10
8
  from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition, SwBaseType
11
9
  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
10
+ from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuConstContent, CompuConstFormulaContent, CompuConstNumericContent, CompuMethod, Compu
11
+ from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuConst, CompuConstTextContent, CompuNominatorDenominator, CompuRationalCoeffs, CompuScale
12
+ from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
13
13
  from ..models.M2.MSR.AsamHdo.SpecialData import Sdg, Sd
14
14
  from ..models.M2.MSR.AsamHdo.Units import PhysicalDimension, Unit
15
15
  from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValueCont, SwValues
@@ -23,86 +23,190 @@ from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayoutGroup
23
23
  from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxisSet
24
24
  from ..models.M2.MSR.DataDictionary.ServiceProcessTask import SwServiceArg
25
25
  from ..models.M2.MSR.Documentation.Annotation import Annotation, GeneralAnnotation
26
+ from ..models.M2.MSR.Documentation.BlockElements.Figure import Graphic, LGraphic, MlFigure
26
27
  from ..models.M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
27
- from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
28
+ from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ARList
28
29
  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
30
+ from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultiLanguagePlainText
31
+ from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultilanguageLongName
30
32
 
31
33
  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
33
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
34
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswApiOptions, BswAsynchronousServerCallPoint, BswBackgroundEvent
35
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswCalledEntity, BswDataReceivedEvent, BswModuleCallPoint
36
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalTriggeringPoint, BswOperationInvokedEvent
37
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswDataReceptionPolicy, BswExternalTriggerOccurredEvent, BswInternalBehavior
38
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalTriggerOccurredEvent, BswInterruptEntity, BswModeSwitchEvent
39
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswModuleEntity, BswQueuedDataReceptionPolicy, BswSchedulableEntity
40
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswScheduleEvent, BswModeSenderPolicy, BswTimingEvent, BswVariableAccess
41
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleClientServerEntry, BswModuleEntry
34
42
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
35
43
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
36
- from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, ConstantSpecification, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
44
+ from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference
45
+ from ..models.M2.AUTOSARTemplates.CommonStructure import ConstantSpecification, NumericalValueSpecification, RecordValueSpecification
46
+ from ..models.M2.AUTOSARTemplates.CommonStructure import TextValueSpecification, ValueSpecification
37
47
  from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
38
48
  from ..models.M2.AUTOSARTemplates.CommonStructure.FlatMap import FlatInstanceDescriptor, FlatMap
39
49
  from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import ImplementationProps, Code
50
+ from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity, InternalBehavior
40
51
  from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroup, ModeRequestTypeMap, ModeDeclarationGroupPrototype
41
52
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
42
53
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.MemorySectionUsage import MemorySection
43
54
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import RoughEstimateStackUsage, StackUsage
44
- from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity, InternalBehavior
45
55
  from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
46
- from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceAlgorithm, DiagEventDebounceMonitorInternal, DiagnosticEventNeeds, RoleBasedDataAssignment, RoleBasedDataTypeAssignment, ServiceDependency
56
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal
57
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticCapabilityElement, DtcStatusChangeNotificationNeeds
58
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticCommunicationManagerNeeds, DiagnosticEventInfoNeeds
59
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds
60
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import EcuStateMgrUserNeeds, NvBlockNeeds, RoleBasedDataAssignment
61
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import RoleBasedDataTypeAssignment, ServiceDependency
62
+ from ..models.M2.AUTOSARTemplates.CommonStructure.StandardizationTemplate.BlueprintDedicated.PortPrototypeBlueprint import PortPrototypeBlueprint
63
+ from ..models.M2.AUTOSARTemplates.CommonStructure.StandardizationTemplate.Keyword import Keyword, KeywordSet
47
64
  from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
48
65
  from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
49
66
  from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import ExecutionOrderConstraint
50
67
  from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming, TimingExtension
68
+ from ..models.M2.AUTOSARTemplates.CommonStructure.TriggerDeclaration import Trigger
51
69
  from ..models.M2.AUTOSARTemplates.DiagnosticExtract.DiagnosticContribution import DiagnosticServiceTable
52
- from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
70
+ from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue
71
+ from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue
72
+ from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
73
+ from ..models.M2.AUTOSARTemplates.EcuResourceTemplate import HwDescriptionEntity, HwElement, HwPinGroup
74
+ from ..models.M2.AUTOSARTemplates.EcuResourceTemplate.HwElementCategory import HwAttributeDef, HwCategory, HwType
53
75
  from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyInstanceRef
54
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable, MultilanguageReferrable, Referrable
76
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ElementCollection import Collection
77
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Describable, Identifiable
78
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Referrable, MultilanguageReferrable
55
79
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
56
80
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage, ReferenceBase
57
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Ip6AddressString, RefType, ARLiteral
58
- 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
81
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral
82
+ from ..models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfo, LifeCycleInfoSet, LifeCyclePeriod
83
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationPrimitiveDataType, ApplicationRecordDataType
84
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType, ApplicationCompositeDataType
85
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationDataType, AutosarDataType, DataTypeMap, DataTypeMappingSet
86
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionISignalIPdu, EndToEndProtectionSet
87
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndDescription, EndToEndProtection
88
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionVariablePrototype
89
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef
90
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
64
91
  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
92
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, ModeSwitchedAckRequest
93
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import TransmissionAcknowledgementRequest
94
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec
95
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import NonqueuedReceiverComSpec, NonqueuedSenderComSpec, ParameterRequireComSpec
96
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import QueuedReceiverComSpec, QueuedSenderComSpec, ReceiverComSpec, SenderComSpec
97
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ServerComSpec
98
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, PRPortPrototype
99
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import ApplicationSwComponentType, ComplexDeviceDriverSwComponentType
100
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import CompositionSwComponentType, EcuAbstractionSwComponentType, PortGroup
101
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import SensorActuatorSwComponentType, ServiceSwComponentType, SwComponentType
102
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import SymbolProps, PPortPrototype, RPortPrototype
103
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType
104
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef
105
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import ModeGroupInAtomicSwcInstanceRef
106
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import PModeGroupInAtomicSwcInstanceRef
107
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import RModeGroupInAtomicSWCInstanceRef
108
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import RModeInAtomicSwcInstanceRef
109
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import RVariableInAtomicSwcInstanceRef
110
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector, SwComponentPrototype, SwConnector
111
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationCompositeElementDataPrototype
112
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationRecordElement, AutosarDataPrototype
113
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import DataPrototype, ParameterDataPrototype, VariableDataPrototype
114
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerInterfaceMapping
115
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ClientServerOperation, ClientServerOperationMapping
116
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import DataPrototypeMapping, InvalidationPolicy, ModeSwitchInterface
117
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ParameterInterface, PortInterface, PortInterfaceMappingSet
118
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import SenderReceiverInterface, TriggerInterface, DataInterface
119
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import VariableAndParameterInterfaceMapping
120
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import SwcImplementation
70
121
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument, SwcInternalBehavior
71
122
  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
123
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
124
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef
125
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import VariableInAtomicSWCTypeInstanceRef
126
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet
127
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import ModeAccessPoint, ModeSwitchPoint
128
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption, PortDefinedArgumentValue
129
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import AsynchronousServerCallReturnsEvent, BackgroundEvent
130
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent
131
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import ModeSwitchedAckEvent, OperationInvokedEvent, RTEEvent
132
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import SwcModeSwitchEvent, TimingEvent
75
133
  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
134
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
81
135
 
82
- from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping , System, SystemMapping
136
+ from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping, System, SystemMapping
137
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderRecCompositeTypeMapping
138
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderRecRecordElementMapping, SenderRecRecordTypeMapping
83
139
  from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
84
140
  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
141
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.EcuResourceMapping import ECUMapping
94
142
  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
143
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import AbstractCanCommunicationController
144
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import AbstractCanCommunicationControllerAttributes
145
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
146
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanControllerConfigurationRequirements
147
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanControllerFdConfiguration
148
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanControllerFdConfigurationRequirements
149
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SoAdRoutingGroup, SocketConnection
150
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SocketConnectionBundle
151
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SocketConnectionIpduIdentifier
97
152
  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
153
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import CouplingPort, CouplingPortDetails, CouplingPortFifo
154
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import CouplingPortScheduler, CouplingPortStructuralElement
155
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCluster, EthernetCommunicationConnector
156
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCommunicationController
157
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetPriorityRegeneration, InitialSdDelayConfig
158
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import MacMulticastGroup, RequestResponseDelay, SdClientConfig
159
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import VlanMembership
160
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import DoIpEntity, InfrastructureServices, Ipv6Configuration
161
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import NetworkEndpoint
162
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ApplicationEndpoint, ConsumedEventGroup
163
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ConsumedServiceInstance, EventHandler, GenericTp
164
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ProvidedServiceInstance, SdServerConfig, SoAdConfig
165
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import SocketAddress, TcpTp, TpPort
166
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import TransportProtocolConfiguration, UdpTp
167
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayCommunication import FlexrayAbsolutelyScheduledTiming, FlexrayFrame
168
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayCommunication import FlexrayFrameTriggering
169
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayTopology import FlexrayCluster, FlexrayCommunicationConnector
170
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayTopology import FlexrayCommunicationController
171
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import ApplicationEntry, LinFrameTriggering, LinScheduleTable
172
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinUnconditionalFrame, ScheduleTableEntry
173
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinTopology import LinCommunicationConnector, LinCommunicationController, LinMaster
101
174
  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
175
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import DcmIPdu, DynamicPart, DynamicPartAlternative, Frame
176
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import FrameTriggering, GeneralPurposeIPdu, GeneralPurposePdu
177
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import IPdu, IPduTiming, ISignal, ISignalGroup, ISignalIPdu
178
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import ISignalIPduGroup, ISignalToIPduMapping, ISignalTriggering
179
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import MultiplexedIPdu, MultiplexedPart, NPdu, NmPdu, Pdu
180
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import PduTriggering, SecureCommunicationAuthenticationProps
181
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import SecureCommunicationFreshnessProps, SecureCommunicationProps
182
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import SecureCommunicationPropsSet, SecuredIPdu, SegmentPosition
183
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import StaticPart, SystemSignal, SystemSignalGroup
184
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import UserDefinedIPdu, UserDefinedPdu
185
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, CanClusterBusOffRecovery
186
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import FlexrayPhysicalChannel, CycleRepetition, CommunicationCycle
187
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import CanPhysicalChannel, CommConnectorPort, CommunicationCluster
188
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import CommunicationConnector, CommunicationController
189
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort
190
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import LinCluster, LinPhysicalChannel, PhysicalChannel
191
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
192
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType
193
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import TransmissionModeCondition, TransmissionModeDeclaration
194
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import TransmissionModeTiming
195
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
196
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmEcu
197
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import NmNode, UdpNmCluster, UdpNmClusterCoupling, UdpNmEcu, UdpNmNode
198
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.SWmapping import SwcToImplMapping
199
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import BufferProperties, DataTransformation, DataTransformationSet
200
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import EndToEndTransformationISignalProps, TransformationISignalProps
201
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import EndToEndTransformationDescription, TransformationDescription
202
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import TransformationTechnology
203
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpAddress, CanTpChannel, CanTpConfig, CanTpConnection, CanTpEcu
204
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpNode, DoIpLogicAddress, DoIpTpConfig, DoIpTpConnection, LinTpConfig
205
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import LinTpConnection, LinTpNode, TpAddress, TpConfig, TpConnection
103
206
 
104
207
  from .abstract_arxml_parser import AbstractARXMLParser
105
208
 
209
+
106
210
  class ARXMLParser(AbstractARXMLParser):
107
211
  def __init__(self, options=None) -> None:
108
212
  super().__init__(options)
@@ -115,7 +219,7 @@ class ARXMLParser(AbstractARXMLParser):
115
219
  range.setLowerCanId(self.getChildElementOptionalNumericalValue(child_element, "LOWER-CAN-ID")) \
116
220
  .setUpperCanId(self.getChildElementOptionalNumericalValue(child_element, "UPPER-CAN-ID"))
117
221
  return range
118
-
222
+
119
223
  def readSd(self, element: ET.Element, sdg: Sdg):
120
224
  for child_element in self.findall(element, "./SD"):
121
225
  sd = Sd()
@@ -124,12 +228,12 @@ class ARXMLParser(AbstractARXMLParser):
124
228
  sd.setValue(child_element.text)
125
229
  sdg.addSd(sd)
126
230
 
127
- def readSdgCaption(self, element: ET.Element, sdg:Sdg):
231
+ def readSdgCaption(self, element: ET.Element, sdg: Sdg):
128
232
  child_element = self.find(element, "SDG-CAPTION")
129
233
  if child_element is not None:
130
234
  sdg.createSdgCaption(self.getShortName(child_element))
131
235
 
132
- def readSdgSdxRefs(self, element: ET.SubElement, sdg:Sdg):
236
+ def readSdgSdxRefs(self, element: ET.SubElement, sdg: Sdg):
133
237
  for ref in self.getChildElementRefTypeList(element, "SDX-REF"):
134
238
  sdg.addSdxRef(ref)
135
239
 
@@ -143,16 +247,20 @@ class ARXMLParser(AbstractARXMLParser):
143
247
  sdg.addSdgContentsType(self.getSdg(child_element))
144
248
  self.readSdgSdxRefs(element, sdg)
145
249
  return sdg
146
-
250
+
147
251
  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))
252
+ for child_element in self.findall(element, "SDGS/*"):
253
+ tag_name = self.getTagName(child_element)
254
+ if tag_name == "SDG":
255
+ admin_data.addSdg(self.getSdg(child_element))
256
+ else:
257
+ self.notImplemented("Unsupported SDG <%s>" % tag_name)
150
258
 
151
259
  def getAdminData(self, element: ET.Element, key: str) -> AdminData:
152
260
  admin_data = None
153
261
  child_element = self.find(element, key)
154
262
  if child_element is not None:
155
- self.logger.debug("readAdminData")
263
+ # self.logger.debug("Read AdminData")
156
264
  admin_data = AdminData()
157
265
  admin_data.setLanguage(self.getChildElementOptionalLiteral(child_element, "LANGUAGE")) \
158
266
  .setUsedLanguages(self.getMultiLanguagePlainText(child_element, "USED-LANGUAGES"))
@@ -176,8 +284,11 @@ class ARXMLParser(AbstractARXMLParser):
176
284
  identifiable.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY")) \
177
285
  .setDesc(self.getMultiLanguageOverviewParagraph(element, "DESC")) \
178
286
  .setIntroduction(self.getDocumentationBlock(element, "INTRODUCTION"))
179
-
287
+
180
288
  identifiable.setAdminData(self.getAdminData(element, "ADMIN-DATA"))
289
+
290
+ def readARElement(self, element: ET.Element, ar_element: ARElement):
291
+ self.readIdentifiable(element, ar_element)
181
292
 
182
293
  def readLLongName(self, element: ET.Element, long_name: MultilanguageLongName):
183
294
  for child_element in self.findall(element, "L-4"):
@@ -185,7 +296,7 @@ class ARXMLParser(AbstractARXMLParser):
185
296
  self.readARObjectAttributes(child_element, l4)
186
297
  l4.value = child_element.text
187
298
  if 'L' in child_element.attrib:
188
- l4.l = child_element.attrib['L']
299
+ l4.l = child_element.attrib['L'] # noqa: E741
189
300
  long_name.addL4(l4)
190
301
 
191
302
  def getMultilanguageLongName(self, element: ET.Element, key: str) -> MultilanguageLongName:
@@ -203,7 +314,7 @@ class ARXMLParser(AbstractARXMLParser):
203
314
  self.readARObjectAttributes(child_element, l2)
204
315
  l2.value = child_element.text
205
316
  if 'L' in child_element.attrib:
206
- l2.l = child_element.attrib['L']
317
+ l2.l = child_element.attrib['L'] # noqa: E741
207
318
  paragraph.addL2(l2)
208
319
 
209
320
  def getMultiLanguageOverviewParagraph(self, element: ET.Element, key: str) -> MultiLanguageOverviewParagraph:
@@ -216,37 +327,37 @@ class ARXMLParser(AbstractARXMLParser):
216
327
  return paragraph
217
328
 
218
329
  def getVariableInAtomicSWCTypeInstanceRef(self, element: ET.Element) -> VariableInAtomicSWCTypeInstanceRef:
219
- iref = None
330
+ instance_ref = None
220
331
  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
332
+ instance_ref = VariableInAtomicSWCTypeInstanceRef()
333
+ self.readARObjectAttributes(element, instance_ref)
334
+ instance_ref.setPortPrototypeRef(self.getChildElementOptionalRefType(element, "PORT-PROTOTYPE-REF"))
335
+ instance_ref.setTargetDataPrototypeRef(self.getChildElementOptionalRefType(element, "TARGET-DATA-PROTOTYPE-REF"))
336
+ return instance_ref
226
337
 
227
338
  def getComponentInSystemInstanceRef(self, element: ET.Element) -> ComponentInSystemInstanceRef:
228
- iref = None
339
+ instance_ref = None
229
340
  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
341
+ instance_ref = ComponentInSystemInstanceRef()
342
+ self.readARObjectAttributes(element, instance_ref)
343
+ instance_ref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF"))
344
+ instance_ref.setContextCompositionRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPOSITION-REF"))
345
+ instance_ref.setTargetComponentRef(self.getChildElementOptionalRefType(element, "TARGET-COMPONENT-REF"))
346
+ return instance_ref
236
347
 
237
- def getAutosarVariableRef(self, element: ET.Element, key: str) -> AutosarVariableRef:
348
+ def getAutosarVariableRef(self, element: ET.Element, key: str) -> AutosarVariableRef:
238
349
  child_element = self.find(element, key)
239
- ref = None
350
+ instance_ref = None
240
351
  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
352
+ instance_ref = AutosarVariableRef()
353
+ # self.readARObjectAttributes(child_element, ref)
354
+ instance_ref.setAutosarVariableIRef(self.getVariableInAtomicSWCTypeInstanceRef(self.find(child_element, "AUTOSAR-VARIABLE-IREF"))) \
355
+ .setLocalVariableRef(self.getChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF"))
356
+ return instance_ref
246
357
 
247
- def getLocalVariableRef(self, element: ET.Element, key: str) -> AutosarVariableRef:
358
+ def getLocalVariableRef(self, element: ET.Element, key: str) -> AutosarVariableRef:
248
359
  child_element = self.find(element, key)
249
- ref = None
360
+ ref = None
250
361
  if (child_element is not None):
251
362
  ref = AutosarVariableRef()
252
363
  ref.setLocalVariableRef(self.getChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF"))
@@ -284,31 +395,34 @@ class ARXMLParser(AbstractARXMLParser):
284
395
 
285
396
  self.readIdentifiable(child_element, variable_access)
286
397
 
287
- def readBswModuleDescriptionImplementedEntry(self, element: ET.Element, parent: BswModuleDescription):
398
+ def readBswModuleDescriptionImplementedEntryRefs(self, element: ET.Element, parent: BswModuleDescription):
288
399
  for child_element in self.findall(element, "PROVIDED-ENTRYS/BSW-MODULE-ENTRY-REF-CONDITIONAL"):
289
- ref = self.getChildElementOptionalRefType(child_element, "BSW-MODULE-ENTRY-REF")
400
+ ref = self.getChildElementOptionalRefType(child_element, "BSW-MODULE-ENTRY-REF")
290
401
  if (ref is not None):
291
- parent.addImplementedEntry(ref)
402
+ parent.addImplementedEntryRef(ref)
292
403
  self.logger.debug("ImplementedEntry <%s> of BswModuleDescription <%s> has been added", ref.value, parent.getShortName())
293
404
 
294
405
  def readModeDeclarationGroupPrototype(self, element: ET.Element, prototype: ModeDeclarationGroupPrototype):
295
406
  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)
407
+ prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
302
408
 
303
- mode_group = parent.createProvidedModeGroup(short_name)
304
- self.readModeDeclarationGroupPrototype(child_element, mode_group)
409
+ def readBswModuleDescriptionProvidedModeGroups(self, element: ET.Element, parent: BswModuleDescription):
410
+ for child_element in self.findall(element, "PROVIDED-MODE-GROUPS/*"):
411
+ tag_name = self.getTagName(child_element)
412
+ if tag_name == "MODE-DECLARATION-GROUP-PROTOTYPE":
413
+ mode_group = parent.createProvidedModeGroup(self.getShortName(child_element))
414
+ self.readModeDeclarationGroupPrototype(child_element, mode_group)
415
+ else:
416
+ self.notImplemented("Unsupported ProvidedModeGroup <%s>" % tag_name)
305
417
 
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")
418
+ def readBswModuleDescriptionRequiredModeGroups(self, element: ET.Element, parent: BswModuleDescription):
419
+ for child_element in self.findall(element, "REQUIRED-MODE-GROUPS/*"):
420
+ tag_name = self.getTagName(child_element)
421
+ if tag_name == "MODE-DECLARATION-GROUP-PROTOTYPE":
422
+ prototype = parent.createProvidedModeGroup(self.getShortName(child_element))
423
+ self.readModeDeclarationGroupPrototype(child_element, prototype)
424
+ else:
425
+ self.notImplemented("Unsupported RequiredModeGroup <%s>" % tag_name)
312
426
 
313
427
  def readCanEnterExclusiveAreaRefs(self, element: ET.Element, entity: ExecutableEntity):
314
428
  for ref in self.getChildElementRefTypeList(element, "CAN-ENTER-EXCLUSIVE-AREA-REFS/CAN-ENTER-EXCLUSIVE-AREA-REF"):
@@ -321,8 +435,8 @@ class ARXMLParser(AbstractARXMLParser):
321
435
  entity.setMinimumStartInterval(self.getChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL")) \
322
436
  .setSwAddrMethodRef(self.getChildElementOptionalRefType(element, "SW-ADDR-METHOD-REF"))
323
437
 
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"):
438
+ def readBswModuleEntityManagedModeGroups(self, element: ET.Element, entity: BswModuleEntity):
439
+ for child_element in self.findall(element, "MANAGED-MODE-GROUPS/MODE-DECLARATION-GROUP-PROTOTYPE-REF-CONDITIONAL"):
326
440
  ref_type = self.getChildElementOptionalRefType(child_element, "MODE-DECLARATION-GROUP-PROTOTYPE-REF")
327
441
  if ref_type is not None:
328
442
  entity.addManagedModeGroupRef(ref_type)
@@ -381,10 +495,22 @@ class ARXMLParser(AbstractARXMLParser):
381
495
  behavior.addDataTypeMappingRef(ref)
382
496
 
383
497
  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)
498
+ for child_element in self.findall(element, "CONSTANT-MEMORYS/*"):
499
+ tag_name = self.getTagName(child_element)
500
+ if tag_name == "PARAMETER-DATA-PROTOTYPE":
501
+ prototype = behavior.createConstantMemory(self.getShortName(child_element))
502
+ self.readParameterDataPrototype(child_element, prototype)
503
+ else:
504
+ self.notImplemented("Unsupported constant memories <%s>" % tag_name)
505
+
506
+ def readInternalBehaviorStaticMemories(self, element: ET.Element, behavior: InternalBehavior):
507
+ for child_element in self.findall(element, "STATIC-MEMORYS/*"):
508
+ tag_name = self.getTagName(child_element)
509
+ if tag_name == "VARIABLE-DATA-PROTOTYPE":
510
+ prototype = behavior.createStaticMemory(self.getShortName(child_element))
511
+ self.readVariableDataPrototype(child_element, prototype)
512
+ else:
513
+ self.notImplemented("Unsupported static memories <%s>" % tag_name)
388
514
 
389
515
  def readInternalBehavior(self, element: ET.Element, behavior: InternalBehavior):
390
516
  self.readIdentifiable(element, behavior)
@@ -393,6 +519,7 @@ class ARXMLParser(AbstractARXMLParser):
393
519
  short_name = self.getShortName(child_element)
394
520
  behavior.createExclusiveArea(short_name)
395
521
  self.readDataTypeMappingRefs(element, behavior)
522
+ self.readInternalBehaviorStaticMemories(element, behavior)
396
523
 
397
524
  def getRoleBasedDataAssignment(self, element: ET.Element) -> RoleBasedDataAssignment:
398
525
  assignment = RoleBasedDataAssignment()
@@ -439,10 +566,8 @@ class ARXMLParser(AbstractARXMLParser):
439
566
  else:
440
567
  self.raiseError("Unsupported assigned ports <%s>" % tag_name)
441
568
 
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)
569
+ def readNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
570
+ self.logger.debug("Read NvBlockNeeds <%s>" % needs.getShortName())
446
571
  self.readIdentifiable(element, needs)
447
572
  needs.setCalcRamBlockCrc(self.getChildElementOptionalBooleanValue(element, "CALC-RAM-BLOCK-CRC")) \
448
573
  .setCheckStaticBlockId(self.getChildElementOptionalBooleanValue(element, "CHECK-STATIC-BLOCK-ID")) \
@@ -464,26 +589,23 @@ class ARXMLParser(AbstractARXMLParser):
464
589
  .setWritingFrequency(self.getChildElementOptionalPositiveInteger(element, "WRITING-FREQUENCY")) \
465
590
  .setWritingPriority(self.getChildElementOptionalLiteral(element, "WRITING-PRIORITY"))
466
591
 
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)
592
+ def readDiagnosticCapabilityElement(self, element: ET.Element, needs: DiagnosticCapabilityElement):
471
593
  self.readIdentifiable(element, needs)
594
+
595
+ def readDiagnosticCommunicationManagerNeeds(self, element: ET.Element, needs: DiagnosticCommunicationManagerNeeds):
596
+ self.logger.debug("Read DiagnosticCommunicationManagerNeeds <%s>" % needs.getShortName())
597
+ self.readDiagnosticCapabilityElement(element, needs)
472
598
  needs.setServiceRequestCallbackType(self.getChildElementOptionalLiteral(element, "SERVICE-REQUEST-CALLBACK-TYPE"))
473
599
 
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)
478
- self.readIdentifiable(element, needs)
600
+ def readDiagnosticRoutineNeeds(self, element: ET.Element, needs: DiagnosticRoutineNeeds):
601
+ self.logger.debug("Read DiagnosticRoutineNeeds %s" % needs.getShortName())
602
+ self.readDiagnosticCapabilityElement(element, needs)
479
603
  needs.setDiagRoutineType(self.getChildElementOptionalLiteral(element, "DIAG-ROUTINE-TYPE")) \
480
604
  .setRidNumber(self.getChildElementOptionalIntegerValue(element, "RID-NUMBER"))
481
605
 
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)
486
- self.readIdentifiable(element, needs)
606
+ def readDiagnosticValueNeeds(self, element: ET.Element, needs: DiagnosticValueNeeds):
607
+ self.logger.debug("Read DiagnosticValueNeeds %s" % needs.getShortName())
608
+ self.readDiagnosticCapabilityElement(element, needs)
487
609
  needs.setDataLength(self.getChildElementOptionalPositiveInteger(element, "DATA-LENGTH")) \
488
610
  .setDiagnosticValueAccess(self.getChildElementOptionalLiteral(element, "DIAGNOSTIC-VALUE-ACCESS")) \
489
611
  .setDidNumber(self.getChildElementOptionalIntegerValue(element, "DID-NUMBER")) \
@@ -491,7 +613,7 @@ class ARXMLParser(AbstractARXMLParser):
491
613
  .setProcessingStyle(self.getChildElementOptionalLiteral(element, "PROCESSING-STYLE"))
492
614
 
493
615
  def readDiagEventDebounceMonitorInternal(self, element: ET.Element, algorithm: DiagEventDebounceMonitorInternal):
494
- self.readIdentifiable(element, algorithm)
616
+ self.readDiagnosticCapabilityElement(element, algorithm)
495
617
 
496
618
  def readDiagEventDebounceAlgorithm(self, element: ET.Element, needs: DiagnosticEventNeeds):
497
619
  for child_element in self.findall(element, "DIAG-EVENT-DEBOUNCE-ALGORITHM/*"):
@@ -502,54 +624,63 @@ class ARXMLParser(AbstractARXMLParser):
502
624
  else:
503
625
  self.notImplemented("Unsupported DiagEventDebounceAlgorithm <%s>" % tag_name)
504
626
 
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)
509
- self.readIdentifiable(element, needs)
627
+ def readDiagnosticEventNeeds(self, element: ET.Element, needs: DiagnosticEventNeeds):
628
+ self.logger.debug("Read DiagnosticEventNeeds <%s>" % needs.getShortName())
629
+ self.readDiagnosticCapabilityElement(element, needs)
510
630
  self.readDiagEventDebounceAlgorithm(element, needs)
511
631
  needs.setDtcKind(self.getChildElementOptionalLiteral(element, "DTC-KIND")) \
512
632
  .setUdsDtcNumber(self.getChildElementOptionalIntegerValue(element, "UDS-DTC-NUMBER"))
513
633
 
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)
518
- self.readIdentifiable(element, needs)
634
+ def readDiagnosticEventInfoNeeds(self, element: ET.Element, needs: DiagnosticEventInfoNeeds):
635
+ self.logger.debug("Read DiagnosticEventInfoNeeds <%s>" % needs.getShortName())
636
+ self.readDiagnosticCapabilityElement(element, needs)
637
+ needs.setDtcKind(self.getChildElementOptionalLiteral(element, "DTC-KIND"))
519
638
  needs.setUdsDtcNumber(self.getChildElementOptionalPositiveInteger(element, "UDS-DTC-NUMBER"))
520
639
 
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)
640
+ def readCryptoServiceNeeds(self, element: ET.Element, needs: CryptoServiceNeeds):
641
+ self.logger.debug("Read CryptoServiceNeeds <%s>" % needs.getShortName())
525
642
  self.readIdentifiable(element, needs)
526
643
  needs.setMaximumKeyLength(self.getChildElementOptionalPositiveInteger(element, "MAXIMUM-KEY-LENGTH"))
527
644
 
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)
645
+ def readEcuStateMgrUserNeeds(self, element: ET.Element, needs: EcuStateMgrUserNeeds):
646
+ self.logger.debug("Read EcuStateMgrUserNeeds %s" % needs.getShortName())
532
647
  self.readIdentifiable(element, needs)
533
648
 
649
+ def readDtcStatusChangeNotificationNeeds(self, element: ET.Element, needs: DtcStatusChangeNotificationNeeds):
650
+ self.logger.debug("Read DtcStatusChangeNotificationNeeds %s" % needs.getShortName())
651
+ self.readDiagnosticCapabilityElement(element, needs)
652
+ needs.setDtcFormatType(self.getChildElementOptionalLiteral(element, "DTC-FORMAT-TYPE"))
653
+
534
654
  def readSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
535
655
  for child_element in self.findall(element, "SERVICE-NEEDS/*"):
536
656
  tag_name = self.getTagName(child_element)
537
657
  if tag_name == "NV-BLOCK-NEEDS":
538
- self.readNvBlockNeeds(child_element, parent)
658
+ needs = parent.createNvBlockNeeds(self.getShortName(child_element))
659
+ self.readNvBlockNeeds(child_element, needs)
539
660
  elif tag_name == "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS":
540
- self.reaDiagnosticCommunicationManagerNeeds(child_element, parent)
661
+ needs = parent.createDiagnosticCommunicationManagerNeeds(self.getShortName(child_element))
662
+ self.readDiagnosticCommunicationManagerNeeds(child_element, needs)
541
663
  elif tag_name == "DIAGNOSTIC-ROUTINE-NEEDS":
542
- self.readDiagnosticRoutineNeeds(child_element, parent)
664
+ needs = parent.createDiagnosticRoutineNeeds(self.getShortName(child_element))
665
+ self.readDiagnosticRoutineNeeds(child_element, needs)
543
666
  elif tag_name == "DIAGNOSTIC-VALUE-NEEDS":
544
- self.readDiagnosticValueNeeds(child_element, parent)
667
+ needs = parent.createDiagnosticValueNeeds(self.getShortName(child_element))
668
+ self.readDiagnosticValueNeeds(child_element, needs)
545
669
  elif tag_name == "DIAGNOSTIC-EVENT-NEEDS":
546
- self.readDiagnosticEventNeeds(child_element, parent)
670
+ needs = parent.createDiagnosticEventNeeds(self.getShortName(child_element))
671
+ self.readDiagnosticEventNeeds(child_element, needs)
547
672
  elif tag_name == "DIAGNOSTIC-EVENT-INFO-NEEDS":
548
- self.readDiagnosticEventInfoNeeds(child_element, parent)
673
+ needs = parent.createDiagnosticEventInfoNeeds(self.getShortName(child_element))
674
+ self.readDiagnosticEventInfoNeeds(child_element, needs)
549
675
  elif tag_name == "CRYPTO-SERVICE-NEEDS":
550
- self.readCryptoServiceNeeds(child_element, parent)
676
+ needs = parent.createCryptoServiceNeeds(self.getShortName(child_element))
677
+ self.readCryptoServiceNeeds(child_element, needs)
551
678
  elif tag_name == "ECU-STATE-MGR-USER-NEEDS":
552
- self.readEcuStateMgrUserNeeds(child_element, parent)
679
+ needs = parent.createEcuStateMgrUserNeeds(self.getShortName(child_element))
680
+ self.readEcuStateMgrUserNeeds(child_element, needs)
681
+ elif tag_name == "DTC-STATUS-CHANGE-NOTIFICATION-NEEDS":
682
+ needs = parent.createDtcStatusChangeNotificationNeeds(self.getShortName(child_element))
683
+ self.readDtcStatusChangeNotificationNeeds(child_element, needs)
553
684
  else:
554
685
  self.notImplemented("Unsupported service needs <%s>" % tag_name)
555
686
 
@@ -592,28 +723,47 @@ class ARXMLParser(AbstractARXMLParser):
592
723
  prototype = behavior.createSharedParameter(short_name)
593
724
  self.readParameterDataPrototype(child_element, prototype)
594
725
 
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)
726
+ def readIncludedModeDeclarationGroupSet(self, element: ET.Element, group_set: IncludedModeDeclarationGroupSet):
727
+ for ref in self.getChildElementRefTypeList(element, "MODE-DECLARATION-GROUP-REFS/MODE-DECLARATION-GROUP-REF"):
728
+ group_set.addModeDeclarationGroupRef(ref)
729
+ group_set.setPrefix(self.getChildElementOptionalLiteral(element, "PREFIX"))
600
730
 
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"))
731
+ def readSwcInternalBehaviorIncludedModeDeclarationGroupSets(self, element: ET.Element, behavior: SwcInternalBehavior):
732
+ for child_element in self.findall(element, "INCLUDED-MODE-DECLARATION-GROUP-SETS/*"):
733
+ tag_name = self.getTagName(child_element)
734
+ if tag_name == "INCLUDED-MODE-DECLARATION-GROUP-SET":
735
+ group_set = IncludedModeDeclarationGroupSet()
736
+ self.readIncludedModeDeclarationGroupSet(child_element, group_set)
737
+ behavior.addIncludedModeDeclarationGroupSet(group_set)
738
+ else:
739
+ self.notImplemented("Unsupported IncludedModeDeclarationGroupSet <%s>" % tag_name)
740
+
741
+ def readSwcInternalBehavior(self, element: ET.Element, behavior: SwcInternalBehavior):
742
+ # read the internal behavior
743
+ self.readInternalBehavior(element, behavior)
744
+
745
+ # read the extra SwcInternalBehavior
746
+ self.readSwcInternalBehaviorArTypedPerInstanceMemories(element, behavior)
747
+ self.readSwcInternalBehaviorEvents(element, behavior)
748
+ self.readSwcInternalBehaviorExplicitInterRunnableVariables(element, behavior)
749
+ behavior.setHandleTerminationAndRestart(self.getChildElementOptionalLiteral(element, "HANDLE-TERMINATION-AND-RESTART"))
750
+ self.readSwcInternalBehaviorIncludedModeDeclarationGroupSets(element, behavior)
751
+ self.readSwcInternalBehaviorPerInstanceMemories(element, behavior)
752
+ self.readSwcInternalBehaviorPerInstanceParameters(element, behavior)
753
+ self.readSwcInternalBehaviorPortAPIOptions(element, behavior)
754
+ self.readSwcInternalBehaviorRunnables(element, behavior)
755
+ self.readSwcInternalBehaviorServiceDependencies(element, behavior)
756
+ self.readSwcInternalBehaviorSharedParameters(element, behavior)
757
+ behavior.setSupportsMultipleInstantiation(self.getChildElementOptionalBooleanValue(element, "SUPPORTS-MULTIPLE-INSTANTIATION"))
758
+
759
+ def readAtomicSwComponentTypeSwcInternalBehavior(self, element: ET.Element, parent: AtomicSwComponentType):
760
+ for child_element in self.findall(element, "INTERNAL-BEHAVIORS/*"):
761
+ tag_name = self.getTagName(child_element)
762
+ if tag_name == "SWC-INTERNAL-BEHAVIOR":
763
+ behavior = parent.createSwcInternalBehavior(self.getShortName(child_element))
764
+ self.readSwcInternalBehavior(child_element, behavior)
765
+ else:
766
+ self.notImplemented("Unsupported Internal Behaviors <%s>" % tag_name)
617
767
 
618
768
  def getIncludedModeDeclarationGroupSets(self, element: ET.Element) -> List[IncludedModeDeclarationGroupSet]:
619
769
  group_sets = []
@@ -624,10 +774,61 @@ class ARXMLParser(AbstractARXMLParser):
624
774
  group_sets.append(group_set)
625
775
  return group_sets
626
776
 
777
+ def readBswVariableAccess(self, element: ET.Element, access: BswVariableAccess):
778
+ self.readReferrable(element, access)
779
+ access.setAccessedVariableRef(self.getChildElementOptionalRefType(element, "ACCESSED-VARIABLE-REF"))
780
+
781
+ def readBswModuleEntityDataSendPoints(self, element: ET.Element, entity: BswModuleEntity):
782
+ for child_element in self.findall(element, "DATA-SEND-POINTS/*"):
783
+ tag_name = self.getTagName(child_element)
784
+ if tag_name == "BSW-VARIABLE-ACCESS":
785
+ point = entity.createDataSendPoint(self.getShortName(child_element))
786
+ self.readBswVariableAccess(child_element, point)
787
+ else:
788
+ self.notImplemented("Unsupported Data Send Point <%s>" % tag_name)
789
+
790
+ def readBswModuleEntityDataReceiverPoints(self, element: ET.Element, entity: BswModuleEntity):
791
+ for child_element in self.findall(element, "DATA-RECEIVE-POINTS/*"):
792
+ tag_name = self.getTagName(child_element)
793
+ if tag_name == "BSW-VARIABLE-ACCESS":
794
+ point = entity.createDataReceivePoint(self.getShortName(child_element))
795
+ self.readBswVariableAccess(child_element, point)
796
+ else:
797
+ self.notImplemented("Unsupported Data Receive Point <%s>" % tag_name)
798
+
799
+ def readBswModuleEntityIssuedTriggerRefs(self, element: ET.Element, entity: BswModuleEntity):
800
+ for ref in self.getChildElementRefTypeList(element, "ISSUED-TRIGGERS/TRIGGER-REF-CONDITIONAL/TRIGGER-REF"):
801
+ entity.addIssuedTriggerRef(ref)
802
+
803
+ def readBswModuleEntityActivationPointRefs(self, element: ET.Element, entity: BswModuleEntity):
804
+ for ref in self.getChildElementRefTypeList(element, "ACTIVATION-POINTS/BSW-INTERNAL-TRIGGERING-POINT-REF-CONDITIONAL/BSW-INTERNAL-TRIGGERING-POINT-REF"): # noqa E501
805
+ entity.addActivationPointRef(ref)
806
+
807
+ def readBswModuleCallPoint(self, element: ET.Element, point: BswModuleCallPoint):
808
+ self.readReferrable(element, point)
809
+
810
+ def readBswAsynchronousServerCallPoint(self, element: ET.Element, point: BswAsynchronousServerCallPoint):
811
+ self.readBswModuleCallPoint(element, point)
812
+ point.setCalledEntryRef(self.getChildElementOptionalRefType(element, "CALLED-ENTRY-REF"))
813
+
814
+ def readBswModuleEntityCallPoints(self, element: ET.Element, entity: BswModuleEntity):
815
+ for child_element in self.findall(element, "CALL-POINTS/*"):
816
+ tag_name = self.getTagName(child_element)
817
+ if tag_name == "BSW-ASYNCHRONOUS-SERVER-CALL-POINT":
818
+ point = entity.createBswAsynchronousServerCallPoint(self.getShortName(child_element))
819
+ self.readBswAsynchronousServerCallPoint(child_element, point)
820
+ else:
821
+ self.notImplemented("Unsupported Call Point <%s>" % tag_name)
822
+
627
823
  def readBswModuleEntity(self, element: ET.Element, entity: BswModuleEntity):
628
824
  self.readExecutableEntity(element, entity)
825
+ self.readBswModuleEntityActivationPointRefs(element, entity)
826
+ self.readBswModuleEntityCallPoints(element, entity)
827
+ self.readBswModuleEntityDataReceiverPoints(element, entity)
828
+ self.readBswModuleEntityDataSendPoints(element, entity)
629
829
  entity.setImplementedEntryRef(self.getChildElementRefType(entity.getShortName(), element, "IMPLEMENTED-ENTRY-REF"))
630
- self.readBswModuleEntityManagedModeGroup(element, entity)
830
+ self.readBswModuleEntityManagedModeGroups(element, entity)
831
+ self.readBswModuleEntityIssuedTriggerRefs(element, entity)
631
832
 
632
833
  def readBswCalledEntity(self, element: ET.Element, entity: BswCalledEntity):
633
834
  self.logger.debug("read BswCalledEntity %s" % entity.getShortName())
@@ -649,7 +850,7 @@ class ARXMLParser(AbstractARXMLParser):
649
850
  if tag_name == "BSW-CALLED-ENTITY":
650
851
  entity = behavior.createBswCalledEntity(self.getShortName(child_element))
651
852
  self.readBswCalledEntity(child_element, entity)
652
- elif tag_name == "BSW-SCHEDULABLE-ENTITY":
853
+ elif tag_name == "BSW-SCHEDULABLE-ENTITY":
653
854
  entity = behavior.createBswSchedulableEntity(self.getShortName(child_element))
654
855
  self.readBswSchedulableEntity(child_element, entity)
655
856
  elif tag_name == "BSW-INTERRUPT-ENTITY":
@@ -665,13 +866,17 @@ class ARXMLParser(AbstractARXMLParser):
665
866
  self.readBswScheduleEvent(element, event)
666
867
  event.setTriggerRef(self.getChildElementOptionalRefType(element, "TRIGGER-REF"))
667
868
 
869
+ def readBswOperationInvokedEvent(self, element: ET.Element, event: BswOperationInvokedEvent):
870
+ self.readBswEvent(element, event)
871
+ event.setEntryRef(self.getChildElementOptionalRefType(element, "ENTRY-REF"))
872
+
668
873
  def readBswInternalBehaviorEvents(self, element: ET.Element, behavior: BswInternalBehavior):
669
874
  for child_element in self.findall(element, "EVENTS/*"):
670
875
  tag_name = self.getTagName(child_element)
671
876
  if tag_name == "BSW-MODE-SWITCH-EVENT":
672
877
  event = behavior.createBswModeSwitchEvent(self.getShortName(child_element))
673
878
  self.readBswModeSwitchEvent(child_element, event)
674
- elif tag_name == "BSW-TIMING-EVENT":
879
+ elif tag_name == "BSW-TIMING-EVENT":
675
880
  event = behavior.createBswTimingEvent(self.getShortName(child_element))
676
881
  self.readBswTimingEvent(child_element, event)
677
882
  elif tag_name == "BSW-DATA-RECEIVED-EVENT":
@@ -686,35 +891,148 @@ class ARXMLParser(AbstractARXMLParser):
686
891
  elif tag_name == "BSW-EXTERNAL-TRIGGER-OCCURRED-EVENT":
687
892
  event = behavior.createBswExternalTriggerOccurredEvent(self.getShortName(child_element))
688
893
  self.readBswExternalTriggerOccurredEvent(child_element, event)
894
+ elif tag_name == "BSW-OPERATION-INVOKED-EVENT":
895
+ event = behavior.createBswOperationInvokedEvent(self.getShortName(child_element))
896
+ self.readBswOperationInvokedEvent(child_element, event)
689
897
  else:
690
898
  self.notImplemented("Unsupported BswModuleEntity <%s>" % tag_name)
691
899
 
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)
900
+ def readBswApiOptions(self, element: ET.Element, options: BswApiOptions):
901
+ self.readARObjectAttributes(element, options)
902
+ options.setEnableTakeAddress(self.getChildElementOptionalBooleanValue(element, "ENABLE-TAKE-ADDRESS"))
903
+
904
+ def readBswDataReceptionPolicy(self, element: ET.Element, policy: BswDataReceptionPolicy):
905
+ self.readBswApiOptions(element, policy)
906
+ policy.setReceivedDataRef(self.getChildElementOptionalRefType(element, "RECEIVED-DATA-REF"))
907
+
908
+ def readBswQueuedDataReceptionPolicy(self, element: ET.Element, policy: BswQueuedDataReceptionPolicy):
909
+ self.readBswDataReceptionPolicy(element, policy)
910
+ policy.setQueueLength(self.getChildElementOptionalPositiveInteger(element, "QUEUE-LENGTH"))
911
+
912
+ def readBswInternalBehaviorReceptionPolicies(self, element: ET.Element, behavior: BswInternalBehavior):
913
+ for child_element in self.findall(element, "RECEPTION-POLICYS/*"):
914
+ tag_name = self.getTagName(child_element)
915
+ if tag_name == "BSW-QUEUED-DATA-RECEPTION-POLICY":
916
+ policy = BswQueuedDataReceptionPolicy()
917
+ self.readBswQueuedDataReceptionPolicy(child_element, policy)
918
+ behavior.addReceptionPolicy(policy)
919
+ else:
920
+ self.notImplemented("Unsupported Reception Policies <%s>" % tag_name)
921
+
922
+ def readBswInternalTriggeringPoint(self, element: ET.Element, point: BswInternalTriggeringPoint):
923
+ self.readIdentifiable(element, point)
924
+
925
+ def readBswInternalBehaviorInternalTriggeringPoints(self, element: ET.Element, behavior: BswInternalBehavior):
926
+ for child_element in self.findall(element, "INTERNAL-TRIGGERING-POINTS/*"):
927
+ tag_name = self.getTagName(child_element)
928
+ if tag_name == "BSW-INTERNAL-TRIGGERING-POINT":
929
+ point = behavior.createBswInternalTriggeringPoint(self.getShortName(child_element))
930
+ self.readBswInternalTriggeringPoint(child_element, point)
931
+ else:
932
+ self.notImplemented("Unsupported Internal Triggering Points <%s>" % tag_name)
933
+
934
+ def readBswInternalBehavior(self, element: ET.Element, behavior: BswInternalBehavior):
935
+ self.logger.debug("Read BswInternalBehavior <%s>" % behavior.full_name)
936
+
937
+ # read the internal behavior
938
+ self.readInternalBehavior(element, behavior)
939
+ self.readBswInternalBehaviorInternalTriggeringPoints(element, behavior)
940
+ self.readBswInternalBehaviorEntities(element, behavior)
941
+ self.readBswInternalBehaviorEvents(element, behavior)
942
+ self.readBswInternalBehaviorModeSenderPolicy(element, behavior)
943
+ for group_set in self.getIncludedModeDeclarationGroupSets(element):
944
+ behavior.addIncludedModeDeclarationGroupSet(group_set)
945
+ self.readBswInternalBehaviorReceptionPolicies(element, behavior)
946
+
947
+ def readBswModuleDescriptionBswInternalBehaviors(self, element: ET.Element, desc: BswModuleDescription):
948
+ for child_element in self.findall(element, "INTERNAL-BEHAVIORS/*"):
949
+ tag_name = self.getTagName(child_element)
950
+ if tag_name == "BSW-INTERNAL-BEHAVIOR":
951
+ behavior = desc.createBswInternalBehavior(self.getShortName(child_element))
952
+ self.readBswInternalBehavior(child_element, behavior)
953
+ else:
954
+ self.notImplemented("Unsupported Internal Behavior <%s>" % tag_name)
955
+
956
+ def readTrigger(self, element: ET.Element, trigger: Trigger):
957
+ self.readIdentifiable(element, trigger)
958
+
959
+ def readBswModuleDescriptionReleasedTriggers(self, element: ET.Element, desc: BswModuleDescription):
960
+ for child_element in self.findall(element, "RELEASED-TRIGGERS/*"):
961
+ tag_name = self.getTagName(child_element)
962
+ if tag_name == "TRIGGER":
963
+ trigger = desc.createReleasedTrigger(self.getShortName(child_element))
964
+ self.readTrigger(child_element, trigger)
965
+ else:
966
+ self.notImplemented("Unsupported Released Trigger <%s>" % tag_name)
967
+
968
+ def readBswModuleDescriptionRequiredTriggers(self, element: ET.Element, desc: BswModuleDescription):
969
+ for child_element in self.findall(element, "REQUIRED-TRIGGERS/*"):
970
+ tag_name = self.getTagName(child_element)
971
+ if tag_name == "TRIGGER":
972
+ trigger = desc.createRequiredTrigger(self.getShortName(child_element))
973
+ self.readTrigger(child_element, trigger)
974
+ else:
975
+ self.notImplemented("Unsupported Required Trigger <%s>" % tag_name)
976
+
977
+ def readBswModuleDescriptionProvidedDatas(self, element: ET.Element, desc: BswModuleDescription):
978
+ for child_element in self.findall(element, "PROVIDED-DATAS/*"):
979
+ tag_name = self.getTagName(child_element)
980
+ if tag_name == "VARIABLE-DATA-PROTOTYPE":
981
+ data = desc.createProvidedData(self.getShortName(child_element))
982
+ self.readVariableDataPrototype(child_element, data)
983
+ else:
984
+ self.notImplemented("Unsupported Provided Data <%s>" % tag_name)
985
+
986
+ def readBswModuleDescriptionRequiredDatas(self, element: ET.Element, desc: BswModuleDescription):
987
+ for child_element in self.findall(element, "REQUIRED-DATAS/*"):
988
+ tag_name = self.getTagName(child_element)
989
+ if tag_name == "VARIABLE-DATA-PROTOTYPE":
990
+ data = desc.createRequiredData(self.getShortName(child_element))
991
+ self.readVariableDataPrototype(child_element, data)
992
+ else:
993
+ self.notImplemented("Unsupported Required Data <%s>" % tag_name)
994
+
995
+ def readBswModuleClientServerEntry(self, element: ET.Element, entry: BswModuleClientServerEntry):
996
+ self.readReferrable(element, entry)
997
+ entry.setEncapsulatedEntryRef(self.getChildElementOptionalRefType(element, "ENCAPSULATED-ENTRY-REF")) \
998
+ .setIsReentrant(self.getChildElementOptionalBooleanValue(element, "IS-REENTRANT")) \
999
+ .setIsSynchronous(self.getChildElementOptionalBooleanValue(element, "IS-SYNCHRONOUS"))
1000
+
1001
+ def readBswModuleDescriptionProvidedClientServerEntries(self, element: ET.Element, desc: BswModuleDescription):
1002
+ for child_element in self.findall(element, "PROVIDED-CLIENT-SERVER-ENTRYS/*"):
1003
+ tag_name = self.getTagName(child_element)
1004
+ if tag_name == "BSW-MODULE-CLIENT-SERVER-ENTRY":
1005
+ entry = desc.createProvidedClientServerEntry(self.getShortName(child_element))
1006
+ self.readBswModuleClientServerEntry(child_element, entry)
1007
+ else:
1008
+ self.notImplemented("Unsupported Provided Client Server Entry <%s>" % tag_name)
1009
+
1010
+ def readBswModuleDescriptionRequiredClientServerEntries(self, element: ET.Element, desc: BswModuleDescription):
1011
+ for child_element in self.findall(element, "REQUIRED-CLIENT-SERVER-ENTRYS/*"):
1012
+ tag_name = self.getTagName(child_element)
1013
+ if tag_name == "BSW-MODULE-CLIENT-SERVER-ENTRY":
1014
+ entry = desc.createRequiredClientServerEntry(self.getShortName(child_element))
1015
+ self.readBswModuleClientServerEntry(child_element, entry)
1016
+ else:
1017
+ self.notImplemented("Unsupported Required Client Server Entry <%s>" % tag_name)
705
1018
 
706
1019
  def readBswModuleDescription(self, element: ET.Element, desc: BswModuleDescription):
707
1020
  self.logger.debug("Read BswModuleDescription <%s>" % desc.getShortName())
708
1021
 
709
1022
  self.readIdentifiable(element, desc)
710
1023
  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)
1024
+ self.readBswModuleDescriptionImplementedEntryRefs(element, desc)
1025
+ self.readBswModuleDescriptionProvidedModeGroups(element, desc)
1026
+ self.readBswModuleDescriptionRequiredModeGroups(element, desc)
1027
+ self.readBswModuleDescriptionProvidedClientServerEntries(element, desc)
1028
+ self.readBswModuleDescriptionRequiredClientServerEntries(element, desc)
1029
+ self.readBswModuleDescriptionProvidedDatas(element, desc)
1030
+ self.readBswModuleDescriptionRequiredDatas(element, desc)
1031
+ self.readBswModuleDescriptionBswInternalBehaviors(element, desc)
1032
+ self.readBswModuleDescriptionRequiredTriggers(element, desc)
715
1033
 
716
1034
  def readSwServiceArg(self, element: ET.Element, arg: SwServiceArg):
717
- self.logger.debug("Read SwServiceArg <%s>" % arg.getShortName())
1035
+ self.readIdentifiable(element, arg)
718
1036
  arg.setDirection(self.getChildElementOptionalLiteral(element, "DIRECTION")) \
719
1037
  .setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
720
1038
 
@@ -757,7 +1075,7 @@ class ARXMLParser(AbstractARXMLParser):
757
1075
  if tag_name == "AUTOSAR-ENGINEERING-OBJECT":
758
1076
  code_desc.addArtifactDescriptor(self.getAutosarEngineeringObject(child_element))
759
1077
  else:
760
- self.raiseError("Unsupported Artifact Descriptor <%s>" % tag_name)
1078
+ self.notImplemented("Unsupported Artifact Descriptor <%s>" % tag_name)
761
1079
 
762
1080
  def readCodeDescriptor(self, element: ET.Element, impl: Implementation):
763
1081
  for child_element in self.findall(element, "CODE-DESCRIPTORS/CODE"):
@@ -778,7 +1096,7 @@ class ARXMLParser(AbstractARXMLParser):
778
1096
  memory_section = consumption.createMemorySection(self.getShortName(child_element))
779
1097
  self.readIdentifiable(child_element, memory_section)
780
1098
  memory_section.setAlignment(self.getChildElementOptionalLiteral(child_element, "ALIGNMENT")) \
781
- .setMemClassSymbol(self.getChildElementOptionalLiteral(child_element, "MEM-CLASS-SYMBOL"))
1099
+ .setMemClassSymbol(self.getChildElementOptionalLiteral(child_element, "MEM-CLASS-SYMBOL"))
782
1100
  self.readMemorySectionOptions(child_element, memory_section)
783
1101
  memory_section.setSize(self.getChildElementOptionalNumericalValue(child_element, "SIZE")) \
784
1102
  .setSwAddrMethodRef(self.getChildElementOptionalRefType(child_element, "SW-ADDRMETHOD-REF")) \
@@ -830,7 +1148,8 @@ class ARXMLParser(AbstractARXMLParser):
830
1148
  self.logger.debug("Read BswImplementation <%s>" % impl.getShortName())
831
1149
  self.readImplementation(element, impl)
832
1150
  impl.setArReleaseVersion(self.getChildElementOptionalLiteral(element, "AR-RELEASE-VERSION")) \
833
- .setBehaviorRef(self.getChildElementOptionalRefType(element, "BEHAVIOR-REF"))
1151
+ .setBehaviorRef(self.getChildElementOptionalRefType(element, "BEHAVIOR-REF")) \
1152
+ .setVendorApiInfix(self.getChildElementOptionalLiteral(element, "VENDOR-API-INFIX"))
834
1153
  self.readBswImplementationVendorSpecificModuleDefRefs(element, impl)
835
1154
  AUTOSAR.getInstance().addImplementationBehaviorMap(impl.getFullName(), impl.getBehaviorRef().getValue())
836
1155
 
@@ -840,19 +1159,19 @@ class ARXMLParser(AbstractARXMLParser):
840
1159
  impl.setBehaviorRef(self.getChildElementOptionalRefType(element, "BEHAVIOR-REF"))
841
1160
  AUTOSAR.getInstance().addImplementationBehaviorMap(impl.getFullName(), impl.getBehaviorRef().getValue())
842
1161
 
843
- def readDataReceivePointByArguments(self, element, parent: RunnableEntity):
1162
+ def readRunnableEntityDataReceivePointByArguments(self, element, parent: RunnableEntity):
844
1163
  self._readVariableAccesses(element, parent, "DATA-RECEIVE-POINT-BY-ARGUMENTS")
845
1164
 
846
- def readDataReceivePointByValues(self, element: ET.Element, parent: RunnableEntity):
1165
+ def readRunnableEntityDataReceivePointByValues(self, element: ET.Element, parent: RunnableEntity):
847
1166
  self._readVariableAccesses(element, parent, "DATA-RECEIVE-POINT-BY-VALUES")
848
1167
 
849
- def readDataReadAccesses(self, element: ET.Element, parent: RunnableEntity):
1168
+ def readRunnableEntityDataReadAccesses(self, element: ET.Element, parent: RunnableEntity):
850
1169
  self._readVariableAccesses(element, parent, "DATA-READ-ACCESSS")
851
1170
 
852
- def readDataWriteAccesses(self, element: ET.Element, parent: RunnableEntity):
1171
+ def readRunnableEntityDataWriteAccesses(self, element: ET.Element, parent: RunnableEntity):
853
1172
  self._readVariableAccesses(element, parent, "DATA-WRITE-ACCESSS")
854
1173
 
855
- def readDataSendPoints(self, element: ET.Element, parent: RunnableEntity):
1174
+ def readRunnableEntityDataSendPoints(self, element: ET.Element, parent: RunnableEntity):
856
1175
  self._readVariableAccesses(element, parent, "DATA-SEND-POINTS")
857
1176
 
858
1177
  def getRunnableEntityArgument(self, element: ET.Element) -> RunnableEntityArgument:
@@ -868,17 +1187,17 @@ class ARXMLParser(AbstractARXMLParser):
868
1187
  parameter.setLocalParameterRef(self.getChildElementOptionalRefType(child_element, "LOCAL-PARAMETER-REF"))
869
1188
  return parameter
870
1189
 
871
- def readParameterAccesses(self, element: ET.Element, parent: RunnableEntity):
1190
+ def readRunnableEntityParameterAccesses(self, element: ET.Element, parent: RunnableEntity):
872
1191
  for child_element in self.findall(element, "PARAMETER-ACCESSS/PARAMETER-ACCESS"):
873
1192
  short_name = self.getShortName(child_element)
874
1193
  self.logger.debug("readParameterAccesses %s" % short_name)
875
1194
  parameter_access = parent.createParameterAccess(short_name)
876
1195
  parameter_access.setAccessedParameter(self.getAutosarParameterRef(child_element, "ACCESSED-PARAMETER"))
877
1196
 
878
- def readWrittenLocalVariables(self, element: ET.Element, parent: RunnableEntity):
1197
+ def readRunnableEntityWrittenLocalVariables(self, element: ET.Element, parent: RunnableEntity):
879
1198
  self._readVariableAccesses(element, parent, "WRITTEN-LOCAL-VARIABLES")
880
1199
 
881
- def readReadLocalVariables(self, element: ET.Element, parent: RunnableEntity):
1200
+ def readRunnableEntityReadLocalVariables(self, element: ET.Element, parent: RunnableEntity):
882
1201
  self._readVariableAccesses(element, parent, "READ-LOCAL-VARIABLES")
883
1202
 
884
1203
  def readROperationIRef(self, element: ET.Element, key: str, parent: ServerCallPoint):
@@ -903,7 +1222,7 @@ class ARXMLParser(AbstractARXMLParser):
903
1222
  mode_iref = RModeInAtomicSwcInstanceRef()
904
1223
  mode_iref.setContextPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF")) \
905
1224
  .setContextModeDeclarationGroupPrototypeRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF")) \
906
- .setTargetModeDeclarationRef(self.getChildElementOptionalRefType(child_element, "TARGET-MODE-DECLARATION-REF"))
1225
+ .setTargetModeDeclarationRef(self.getChildElementOptionalRefType(child_element, "TARGET-MODE-DECLARATION-REF")) # NOQA E501
907
1226
  parent.addModeIRef(mode_iref)
908
1227
 
909
1228
  def readSynchronousServerCallPoint(self, element: ET.Element, parent: RunnableEntity):
@@ -922,7 +1241,7 @@ class ARXMLParser(AbstractARXMLParser):
922
1241
  server_call_point.setTimeout(self.getChildElementOptionalFloatValue(element, "TIMEOUT"))
923
1242
  self.readROperationIRef(element, "OPERATION-IREF", server_call_point)
924
1243
 
925
- def readInternalBehaviorServerCallPoint(self, element: ET.Element, parent: RunnableEntity):
1244
+ def readRunnableEntityInternalBehaviorServerCallPoint(self, element: ET.Element, parent: RunnableEntity):
926
1245
  for child_element in self.findall(element, "SERVER-CALL-POINTS/*"):
927
1246
  tag_name = self.getTagName(child_element)
928
1247
  if tag_name == "SYNCHRONOUS-SERVER-CALL-POINT":
@@ -932,48 +1251,73 @@ class ARXMLParser(AbstractARXMLParser):
932
1251
  else:
933
1252
  self.raiseError("Unsupported server call point type <%s>" % tag_name)
934
1253
 
935
- def readInternalTriggeringPoints(self, element: ET.Element, parent: RunnableEntity):
1254
+ def readRunnableEntityInternalTriggeringPoints(self, element: ET.Element, parent: RunnableEntity):
936
1255
  for child_element in self.findall(element, "INTERNAL-TRIGGERING-POINTS/INTERNAL-TRIGGERING-POINT"):
937
1256
  short_name = self.getShortName(child_element)
938
1257
  point = parent.createInternalTriggeringPoint(short_name)
939
1258
  point.sw_impl_policy = self.getChildElementOptionalLiteral(child_element, "SW-IMPL-POLICY")
940
1259
 
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:
1260
+ def readModeGroupInAtomicSwcInstanceRef(self, element: ET.Element, instance_ref: ModeGroupInAtomicSwcInstanceRef):
1261
+ instance_ref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF")) \
1262
+ .setContextPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-PORT-REF"))
1263
+
1264
+ def readRModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, instance_ref: RModeGroupInAtomicSWCInstanceRef):
1265
+ self.readModeGroupInAtomicSwcInstanceRef(element, instance_ref)
1266
+ instance_ref.setContextRPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-R-PORT-REF")) \
1267
+ .setTargetModeGroupRef(self.getChildElementOptionalRefType(element, "TARGET-MODE-GROUP-REF"))
1268
+
1269
+ def readPModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, instance_ref: PModeGroupInAtomicSwcInstanceRef):
1270
+ self.readModeGroupInAtomicSwcInstanceRef(element, instance_ref)
1271
+ instance_ref.setContextPPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-P-PORT-REF")) \
1272
+ .setTargetModeGroupRef(self.getChildElementOptionalRefType(element, "TARGET-MODE-GROUP-REF"))
1273
+
1274
+ def getModeGroupIRef(self, element: ET.Element, key: str) -> ModeGroupInAtomicSwcInstanceRef:
1275
+ instance_ref = None
1276
+ for child_element in self.findall(element, "%s/*" % key):
1277
+ tag_name = self.getTagName(child_element)
1278
+ if tag_name == "P-MODE-GROUP-IN-ATOMIC-SWC-INSTANCE-REF":
1279
+ instance_ref = PModeGroupInAtomicSwcInstanceRef()
1280
+ self.readPModeGroupInAtomicSWCInstanceRef(child_element, instance_ref)
1281
+ elif tag_name == "R-MODE-GROUP-IN-ATOMIC-SWC-INSTANCE-REF":
1282
+ instance_ref = RModeGroupInAtomicSWCInstanceRef()
1283
+ self.readRModeGroupInAtomicSWCInstanceRef(child_element, instance_ref)
1284
+ else:
1285
+ self.notImplemented("Unsupported Mode Group IRef <%s>" % tag_name)
1286
+ return instance_ref
1287
+
1288
+ def readModeAccessPoint(self, element: ET.Element, point: ModeAccessPoint):
1289
+ self.readARObjectAttributes(element, point)
1290
+ point.setModeGroupIRef(self.getModeGroupIRef(element, "MODE-GROUP-IREF"))
1291
+
1292
+ def readRunnableEntityModeAccessPoints(self, element: ET.Element, entity: RunnableEntity):
1293
+ for child_element in self.findall(element, "MODE-ACCESS-POINTS/*"):
1294
+ tag_name = self.getTagName(child_element)
1295
+ if tag_name == "MODE-ACCESS-POINT":
1296
+ point = ModeAccessPoint()
1297
+ self.readModeAccessPoint(child_element, point)
1298
+ entity.addModeAccessPoint(point)
1299
+ else:
1300
+ self.notImplemented("Unsupported Mode Access Point <%s>" % tag_name)
1301
+
1302
+ def readModeSwitchPointModeGroupIRef(self, element: ET.Element, point: ModeSwitchPoint):
959
1303
  child_element = self.find(element, "MODE-GROUP-IREF")
960
- iref = None
961
1304
  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
1305
+ instance_ref = PModeGroupInAtomicSwcInstanceRef()
1306
+ self.readPModeGroupInAtomicSWCInstanceRef(child_element, instance_ref)
1307
+ point.setModeGroupIRef(instance_ref)
966
1308
 
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))
1309
+ def readModeSwitchPoint(self, element: ET.Element, point: ModeSwitchPoint):
1310
+ self.readARObjectAttributes(element, point)
1311
+ self.readModeSwitchPointModeGroupIRef(element, point)
1312
+
1313
+ def readRunnableEntityModeSwitchPoints(self, element: ET.Element, parent: RunnableEntity):
1314
+ for child_element in self.findall(element, "MODE-SWITCH-POINTS/*"):
1315
+ tag_name = self.getTagName(child_element)
1316
+ if tag_name == "MODE-SWITCH-POINT":
1317
+ point = parent.createModeSwitchPoint(self.getShortName(child_element))
1318
+ self.readModeSwitchPoint(child_element, point)
1319
+ else:
1320
+ self.notImplemented("Unsupported Mode Switch Point <%s>" % tag_name)
977
1321
 
978
1322
  def readRunnableEntityArguments(self, element: ET.Element, entity: RunnableEntity):
979
1323
  for child_element in self.findall(element, "ARGUMENTS/*"):
@@ -983,7 +1327,7 @@ class ARXMLParser(AbstractARXMLParser):
983
1327
  else:
984
1328
  self.notImplemented("Unsupported Arguments of runnable entity <%s>" % tag_name)
985
1329
 
986
- def readAsynchronousServerCallResultPoint(self, element: ET.Element, entity: RunnableEntity):
1330
+ def readRunnableEntityAsynchronousServerCallResultPoint(self, element: ET.Element, entity: RunnableEntity):
987
1331
  for child_element in self.findall(element, "ASYNCHRONOUS-SERVER-CALL-RESULT-POINTS/ASYNCHRONOUS-SERVER-CALL-RESULT-POINT"):
988
1332
  point = entity.createAsynchronousServerCallResultPoint(self.getShortName(child_element))
989
1333
  self.readIdentifiable(child_element, point)
@@ -993,38 +1337,39 @@ class ARXMLParser(AbstractARXMLParser):
993
1337
  self.readExecutableEntity(element, entity)
994
1338
  self.readRunnableEntityArguments(element, entity)
995
1339
 
996
- self.readAsynchronousServerCallResultPoint(element, entity)
1340
+ self.readRunnableEntityAsynchronousServerCallResultPoint(element, entity)
997
1341
  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)
1342
+ self.readRunnableEntityDataReadAccesses(element, entity)
1343
+ self.readRunnableEntityDataReceivePointByArguments(element, entity)
1344
+ self.readRunnableEntityDataReceivePointByValues(element, entity)
1345
+ self.readRunnableEntityDataWriteAccesses(element, entity)
1346
+ self.readRunnableEntityDataSendPoints(element, entity)
1347
+ self.readRunnableEntityInternalBehaviorServerCallPoint(element, entity)
1348
+ self.readRunnableEntityInternalTriggeringPoints(element, entity)
1349
+ self.readRunnableEntityModeAccessPoints(element, entity)
1350
+ self.readRunnableEntityModeSwitchPoints(element, entity)
1351
+ self.readRunnableEntityParameterAccesses(element, entity)
1352
+ self.readRunnableEntityReadLocalVariables(element, entity)
1353
+ self.readRunnableEntityWrittenLocalVariables(element, entity)
1010
1354
 
1011
1355
  entity.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
1012
1356
 
1013
1357
  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)
1358
+ for child_element in self.findall(element, "RUNNABLES/*"):
1359
+ tag_name = self.getTagName(child_element)
1360
+ if tag_name == "RUNNABLE-ENTITY":
1361
+ entity = parent.createRunnableEntity(self.getShortName(child_element))
1362
+ self.readRunnableEntity(child_element, entity)
1363
+ else:
1364
+ self.notImplemented("Unsupported Runnables <%s>" % tag_name)
1020
1365
 
1021
1366
  def getRModeInAtomicSwcInstanceRef(self, element: ET.Element) -> RModeInAtomicSwcInstanceRef:
1022
- iref = RModeInAtomicSwcInstanceRef()
1023
- iref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF")) \
1367
+ instance_ref = RModeInAtomicSwcInstanceRef()
1368
+ instance_ref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF")) \
1024
1369
  .setContextPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-PORT-REF")) \
1025
1370
  .setContextModeDeclarationGroupPrototypeRef(self.getChildElementOptionalRefType(element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF")) \
1026
- .setTargetModeDeclarationRef(self.getChildElementOptionalRefType(element, "TARGET-MODE-DECLARATION-REF"))
1027
- return iref
1371
+ .setTargetModeDeclarationRef(self.getChildElementOptionalRefType(element, "TARGET-MODE-DECLARATION-REF")) # NOQA E501
1372
+ return instance_ref
1028
1373
 
1029
1374
  def readRTEEvent(self, element: ET.Element, event: RTEEvent):
1030
1375
  self.readIdentifiable(element, event)
@@ -1039,7 +1384,7 @@ class ARXMLParser(AbstractARXMLParser):
1039
1384
  operation_iref = POperationInAtomicSwcInstanceRef()
1040
1385
  self.readARObjectAttributes(child_element, operation_iref)
1041
1386
  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"))
1387
+ .setTargetProvidedOperationRef(self.getChildElementRefType(parent.getShortName(), child_element, "TARGET-PROVIDED-OPERATION-REF")) # NOQA E501
1043
1388
  parent.setOperationIRef(operation_iref)
1044
1389
 
1045
1390
  def readOperationInvokedEvent(self, element: ET.Element, event: OperationInvokedEvent):
@@ -1051,13 +1396,13 @@ class ARXMLParser(AbstractARXMLParser):
1051
1396
  self.readAutosarDataPrototype(element, prototype)
1052
1397
  prototype.setInitValue(self.getInitValue(element))
1053
1398
 
1054
- def readExplicitInterRunnableVariables(self, element: ET.Element, parent: SwcInternalBehavior):
1399
+ def readSwcInternalBehaviorExplicitInterRunnableVariables(self, element: ET.Element, parent: SwcInternalBehavior):
1055
1400
  for child_element in self.findall(element, "EXPLICIT-INTER-RUNNABLE-VARIABLES/VARIABLE-DATA-PROTOTYPE"):
1056
1401
  short_name = self.getShortName(child_element)
1057
1402
  prototype = parent.createExplicitInterRunnableVariable(short_name)
1058
1403
  self.readVariableDataPrototype(child_element, prototype)
1059
1404
 
1060
- def readPerInstanceMemories(self, element: ET.Element, behavior: SwcInternalBehavior):
1405
+ def readSwcInternalBehaviorPerInstanceMemories(self, element: ET.Element, behavior: SwcInternalBehavior):
1061
1406
  for child_element in self.findall(element, "PER-INSTANCE-MEMORYS/PER-INSTANCE-MEMORY"):
1062
1407
  short_name = self.getShortName(child_element)
1063
1408
  memory = behavior.createPerInstanceMemory(short_name)
@@ -1072,11 +1417,10 @@ class ARXMLParser(AbstractARXMLParser):
1072
1417
  prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
1073
1418
 
1074
1419
  def readParameterDataPrototype(self, element: ET.Element, prototype: ParameterDataPrototype):
1075
- self.readIdentifiable(element, prototype)
1076
1420
  self.readAutosarDataPrototype(element, prototype)
1077
1421
  prototype.setInitValue(self.getInitValue(element))
1078
1422
 
1079
- def readPerInstanceParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
1423
+ def readSwcInternalBehaviorPerInstanceParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
1080
1424
  for child_element in self.findall(element, "PER-INSTANCE-PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
1081
1425
  short_name = self.getShortName(child_element)
1082
1426
  prototype = behavior.createPerInstanceParameter(short_name)
@@ -1090,7 +1434,7 @@ class ARXMLParser(AbstractARXMLParser):
1090
1434
  argument_value.setValueTypeTRef(self.getChildElementOptionalRefType(element, "VALUE-TYPE-TREF"))
1091
1435
  return argument_value
1092
1436
 
1093
- def readPortAPIOptions(self, element: ET.Element, behavior: SwcInternalBehavior):
1437
+ def readSwcInternalBehaviorPortAPIOptions(self, element: ET.Element, behavior: SwcInternalBehavior):
1094
1438
  for child_element in self.findall(element, "PORT-API-OPTIONS/PORT-API-OPTION"):
1095
1439
  option = PortAPIOption()
1096
1440
  option.setEnableTakeAddress(self.getChildElementOptionalBooleanValue(child_element, "ENABLE-TAKE-ADDRESS")) \
@@ -1195,7 +1539,7 @@ class ARXMLParser(AbstractARXMLParser):
1195
1539
  self.readARObjectAttributes(element, specific)
1196
1540
  specific.value = element.text
1197
1541
  if 'L' in element.attrib:
1198
- specific.l = element.attrib['L']
1542
+ specific.l = element.attrib['L'] # noqa E741
1199
1543
 
1200
1544
  def getLParagraphs(self, element: ET.Element, key: str) -> List[LParagraph]:
1201
1545
  results = []
@@ -1204,7 +1548,7 @@ class ARXMLParser(AbstractARXMLParser):
1204
1548
  self.readLanguageSpecific(child_element, l1)
1205
1549
  results.append(l1)
1206
1550
  return results
1207
-
1551
+
1208
1552
  def getMultiLanguageParagraphs(self, element: ET.Element, key: str) -> List[MultiLanguageParagraph]:
1209
1553
  paragraphs = []
1210
1554
  for child_element in self.findall(element, key):
@@ -1223,19 +1567,54 @@ class ARXMLParser(AbstractARXMLParser):
1223
1567
  results.append(l1)
1224
1568
  return results
1225
1569
 
1226
- def getListElements(self, element: ET.Element, key: str) -> List[ListElement]:
1570
+ def getListElements(self, element: ET.Element, key: str) -> List[ARList]:
1227
1571
  '''
1228
1572
  Read the DocumentationBlock List
1229
1573
  '''
1230
1574
  result = []
1231
1575
  for child_element in self.findall(element, key):
1232
- list = ListElement()
1576
+ list = ARList()
1233
1577
  if 'TYPE' in child_element.attrib:
1234
1578
  list.setType(child_element.attrib['TYPE'])
1235
1579
  for block in self.getDocumentationBlockList(child_element, "ITEM"):
1236
1580
  list.addItem(block)
1237
1581
  result.append(list)
1238
- return result
1582
+ return result
1583
+
1584
+ def getGraphic(self, element: ET.Element, key: str) -> Graphic:
1585
+ graphic = None
1586
+ child_element = self.find(element, key)
1587
+ if child_element is not None:
1588
+ graphic = Graphic()
1589
+ if "FILENAME" in child_element.attrib:
1590
+ graphic.setFilename(child_element.attrib["FILENAME"])
1591
+ return graphic
1592
+
1593
+ def readMlFigureLGraphics(self, element: ET.Element, figure: MlFigure):
1594
+ for child_element in self.findall(element, "L-GRAPHIC"):
1595
+ graphic = LGraphic()
1596
+ if "L" in child_element.attrib:
1597
+ graphic.setL(child_element.attrib["L"])
1598
+ graphic.setGraphic(self.getGraphic(child_element, "GRAPHIC"))
1599
+ figure.addLGraphics(graphic)
1600
+
1601
+ def readDocumentViewSelectable(self, element: ET.Element, selectable: DocumentViewSelectable):
1602
+ self.readARObjectAttributes(element, selectable)
1603
+
1604
+ def readPaginateable(self, element: ET.Element, paginateable: Paginateable):
1605
+ self.readDocumentViewSelectable(element, paginateable)
1606
+
1607
+ def readMlFigure(self, element: ET.Element, figure: MlFigure):
1608
+ self.readPaginateable(element, figure)
1609
+ self.readMlFigureLGraphics(element, figure)
1610
+
1611
+ def getMlFigures(self, element: ET.Element, key: str) -> List[MlFigure]:
1612
+ result = []
1613
+ for child_element in self.findall(element, key):
1614
+ figure = MlFigure()
1615
+ self.readMlFigure(child_element, figure)
1616
+ result.append(figure)
1617
+ return result
1239
1618
 
1240
1619
  def getMultiLanguagePlainText(self, element: ET.Element, key: str) -> MultiLanguagePlainText:
1241
1620
  paragraph = None
@@ -1246,13 +1625,15 @@ class ARXMLParser(AbstractARXMLParser):
1246
1625
  for l10 in self.getLPlainTexts(child_element, "L-10"):
1247
1626
  paragraph.addL10(l10)
1248
1627
  return paragraph
1249
-
1628
+
1250
1629
  def readDocumentationBlock(self, element: ET.Element, block: DocumentationBlock):
1251
1630
  self.readARObjectAttributes(element, block)
1252
1631
  for paragraph in self.getMultiLanguageParagraphs(element, "P"):
1253
1632
  block.addP(paragraph)
1254
1633
  for list in self.getListElements(element, "LIST"):
1255
1634
  block.addList(list)
1635
+ for figure in self.getMlFigures(element, "FIGURE"):
1636
+ block.addFigure(figure)
1256
1637
 
1257
1638
  def getDocumentationBlock(self, element: ET.Element, key: str) -> DocumentationBlock:
1258
1639
  block = None
@@ -1277,10 +1658,14 @@ class ARXMLParser(AbstractARXMLParser):
1277
1658
 
1278
1659
  def getAnnotations(self, element: ET.Element) -> List[Annotation]:
1279
1660
  annotations = []
1280
- for child_element in self.findall(element, "ANNOTATIONS/ANNOTATION"):
1281
- annotation = Annotation()
1282
- self.readGeneralAnnotation(child_element, annotation)
1283
- annotations.append(annotation)
1661
+ for child_element in self.findall(element, "ANNOTATIONS/*"):
1662
+ tag_name = self.getTagName(child_element)
1663
+ if tag_name == "ANNOTATION":
1664
+ annotation = Annotation()
1665
+ self.readGeneralAnnotation(child_element, annotation)
1666
+ annotations.append(annotation)
1667
+ else:
1668
+ self.notImplemented("Unsupported Annotation <%s>" % tag_name)
1284
1669
  return annotations
1285
1670
 
1286
1671
  def getSwAxisIndividual(self, element: ET.Element) -> SwAxisIndividual:
@@ -1349,12 +1734,12 @@ class ARXMLParser(AbstractARXMLParser):
1349
1734
  .setSwPointerTargetProps(self.getSwPointerTargetProps(conditional_tag, "SW-POINTER-TARGET-PROPS")) \
1350
1735
  .setSwRecordLayoutRef(self.getChildElementOptionalRefType(conditional_tag, "SW-RECORD-LAYOUT-REF")) \
1351
1736
  .setValueAxisDataTypeRef(self.getChildElementOptionalRefType(conditional_tag, "VALUE-AXIS-DATA-TYPE-REF")) \
1352
- .setUnitRef(self.getChildElementOptionalRefType(conditional_tag, "UNIT-REF"))
1737
+ .setUnitRef(self.getChildElementOptionalRefType(conditional_tag, "UNIT-REF"))
1353
1738
  self.readSwDataDefProsInvalidValue(conditional_tag, sw_data_def_props)
1354
- #self.readSwPointerTargetProps(conditional_tag, sw_data_def_props)
1739
+ # self.readSwPointerTargetProps(conditional_tag, sw_data_def_props)
1355
1740
  self.readARObjectAttributes(conditional_tag, sw_data_def_props.conditional)
1356
1741
  return sw_data_def_props
1357
-
1742
+
1358
1743
  def readAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
1359
1744
  self.readIdentifiable(element, data_type)
1360
1745
  data_type.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
@@ -1363,22 +1748,24 @@ class ARXMLParser(AbstractARXMLParser):
1363
1748
  self.logger.debug("Read ApplicationPrimitiveDataType <%s>" % data_type.getShortName())
1364
1749
  self.readAutosarDataType(element, data_type)
1365
1750
 
1366
- def readApplicationCompositeElementDataPrototype(self, element: ET.Element, prototype: ApplicationCompositeElementDataPrototype):
1367
- prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
1751
+ def readApplicationRecordElement(self, element: ET.Element, record_element: ApplicationRecordElement):
1752
+ self.logger.debug("read ApplicationRecordElement %s" % record_element.getShortName())
1753
+ self.readApplicationCompositeElementDataPrototype(element, record_element)
1368
1754
 
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)
1755
+ def readApplicationRecordDataTypeElements(self, element: ET.Element, parent: ApplicationRecordDataType):
1756
+ for child_element in self.findall(element, "ELEMENTS/*"):
1757
+ tag_name = self.getTagName(child_element)
1758
+ if tag_name == "APPLICATION-RECORD-ELEMENT":
1759
+ record_element = parent.createApplicationRecordElement(self.getShortName(child_element))
1760
+ self.readApplicationRecordElement(child_element, record_element)
1761
+ else:
1762
+ self.notImplemented("Unsupported ApplicationRecordDataType Element <%s>" % tag_name)
1376
1763
 
1377
1764
  def readApplicationRecordDataType(self, element: ET.Element, data_type: ApplicationRecordDataType):
1378
1765
  self.logger.debug("Read ApplicationRecordDataType <%s>" % data_type.getShortName())
1379
1766
  self.readIdentifiable(element, data_type)
1380
1767
  data_type.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
1381
- self.readApplicationRecordElements(element, data_type)
1768
+ self.readApplicationRecordDataTypeElements(element, data_type)
1382
1769
 
1383
1770
  def readImplementationDataTypeElements(self, element: ET.Element, parent: ImplementationDataType):
1384
1771
  for child_element in self.findall(element, "SUB-ELEMENTS/IMPLEMENTATION-DATA-TYPE-ELEMENT"):
@@ -1410,7 +1797,8 @@ class ARXMLParser(AbstractARXMLParser):
1410
1797
  self.readIdentifiable(element, data_type)
1411
1798
  self.readBaseTypeDirectDefinition(element, data_type.getBaseTypeDefinition())
1412
1799
 
1413
- def getApplicationCompositeElementInPortInterfaceInstanceRef(self, element: ET.Element, key:str) -> ApplicationCompositeElementInPortInterfaceInstanceRef:
1800
+ def getApplicationCompositeElementInPortInterfaceInstanceRef(self, element: ET.Element, key: str) \
1801
+ -> ApplicationCompositeElementInPortInterfaceInstanceRef:
1414
1802
  child_element = self.find(element, key)
1415
1803
  iref = None
1416
1804
  if child_element is not None:
@@ -1480,7 +1868,6 @@ class ARXMLParser(AbstractARXMLParser):
1480
1868
  value_spec = None
1481
1869
  child_element = self.find(element, "INIT-VALUE/*")
1482
1870
  if child_element is not None:
1483
- self.logger.debug("getInitValue")
1484
1871
  value_spec = self.getValueSpecification(child_element, self.getTagName(child_element))
1485
1872
  return value_spec
1486
1873
 
@@ -1514,7 +1901,7 @@ class ARXMLParser(AbstractARXMLParser):
1514
1901
 
1515
1902
  def getNonqueuedReceiverComSpec(self, element: ET.Element) -> NonqueuedReceiverComSpec:
1516
1903
  com_spec = NonqueuedReceiverComSpec()
1517
- self.readARObjectAttributes(element, com_spec)
1904
+ self.readARObjectAttributes(element, com_spec)
1518
1905
  self.readReceiverComSpec(element, com_spec)
1519
1906
  com_spec.setAliveTimeout(self.getChildElementOptionalFloatValue(element, "ALIVE-TIMEOUT")) \
1520
1907
  .setEnableUpdated(self.getChildElementOptionalBooleanValue(element, "ENABLE-UPDATE")) \
@@ -1543,10 +1930,8 @@ class ARXMLParser(AbstractARXMLParser):
1543
1930
  def readAbstractRequiredPortPrototype(self, element: ET.Element, prototype: AbstractRequiredPortPrototype):
1544
1931
  self.readProvidedComSpec(element, prototype)
1545
1932
 
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)
1933
+ def readPPortPrototype(self, element: ET.Element, prototype: PPortPrototype):
1934
+ self.logger.debug("Read PPortPrototype %s" % prototype.getShortName())
1550
1935
  self.readIdentifiable(element, prototype)
1551
1936
  self.readAbstractRequiredPortPrototype(element, prototype)
1552
1937
  prototype.setProvidedInterfaceTRef(self.getChildElementOptionalRefType(element, "PROVIDED-INTERFACE-TREF"))
@@ -1554,34 +1939,33 @@ class ARXMLParser(AbstractARXMLParser):
1554
1939
  def readAbstractProvidedPortPrototype(self, element: ET.Element, prototype: AbstractProvidedPortPrototype):
1555
1940
  self.readRequiredComSpec(element, prototype)
1556
1941
 
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)
1942
+ def readRPortPrototype(self, element: ET.Element, prototype: RPortPrototype):
1943
+ self.logger.debug("Read RPortPrototype %s" % prototype.getShortName())
1561
1944
  self.readIdentifiable(element, prototype)
1562
1945
  self.readAbstractProvidedPortPrototype(element, prototype)
1563
1946
  prototype.setRequiredInterfaceTRef(self.getChildElementOptionalRefType(element, "REQUIRED-INTERFACE-TREF"))
1564
1947
 
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)
1948
+ def readPRPortPrototype(self, element: ET.Element, prototype: PRPortPrototype):
1949
+ self.logger.debug("Read PRPortPrototype %s" % prototype.getShortName())
1569
1950
  self.readIdentifiable(element, prototype)
1570
1951
  self.readAbstractRequiredPortPrototype(element, prototype)
1571
1952
  self.readAbstractProvidedPortPrototype(element, prototype)
1572
1953
  prototype.setProvidedRequiredInterface(self.getChildElementOptionalRefType(element, "PROVIDED-REQUIRED-INTERFACE-TREF"))
1573
1954
 
1574
- def readAtomicSwComponentTypePorts(self, element: ET.Element, sw_component: AtomicSwComponentType):
1955
+ def readSwComponentTypePorts(self, element: ET.Element, sw_component: SwComponentType):
1575
1956
  for child_element in self.findall(element, "PORTS/*"):
1576
1957
  tag_name = self.getTagName(child_element)
1577
1958
  if tag_name == "P-PORT-PROTOTYPE":
1578
- self.readPPortPrototype(child_element, sw_component)
1959
+ prototype = sw_component.createPPortPrototype(self.getShortName(child_element))
1960
+ self.readPPortPrototype(child_element, prototype)
1579
1961
  elif tag_name == "R-PORT-PROTOTYPE":
1580
- self.readRPortPrototype(child_element, sw_component)
1962
+ prototype = sw_component.createRPortPrototype(self.getShortName(child_element))
1963
+ self.readRPortPrototype(child_element, prototype)
1581
1964
  elif tag_name == "PR-PORT-PROTOTYPE":
1582
- self.readPRPortPrototype(child_element, sw_component)
1965
+ prototype = sw_component.createPRPortPrototype(self.getShortName(child_element))
1966
+ self.readPRPortPrototype(child_element, prototype)
1583
1967
  else:
1584
- self.raiseError("Unsupported Port Prototype <%s>" % tag_name)
1968
+ self.notImplemented("Unsupported Port Prototype <%s>" % tag_name)
1585
1969
 
1586
1970
  def readTransmissionAcknowledgementRequest(self, element: ET.Element) -> TransmissionAcknowledgementRequest:
1587
1971
  child_element = self.find(element, "TRANSMISSION-ACKNOWLEDGE")
@@ -1592,7 +1976,7 @@ class ARXMLParser(AbstractARXMLParser):
1592
1976
  return acknowledge
1593
1977
  return None
1594
1978
 
1595
- def readSenderComSpec(self, element:ET.Element, com_spec: SenderComSpec):
1979
+ def readSenderComSpec(self, element: ET.Element, com_spec: SenderComSpec):
1596
1980
  self.readARObjectAttributes(element, com_spec)
1597
1981
  for child_element in self.findall(element, "COMPOSITE-NETWORK-REPRESENTATIONS/COMPOSITE-NETWORK-REPRESENTATION"):
1598
1982
  com_spec.addCompositeNetworkRepresentation(self.getCompositeNetworkRepresentation(child_element))
@@ -1602,20 +1986,20 @@ class ARXMLParser(AbstractARXMLParser):
1602
1986
  .setTransmissionAcknowledge(self.readTransmissionAcknowledgementRequest(element)) \
1603
1987
  .setUsesEndToEndProtection(self.getChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION"))
1604
1988
 
1605
- def getNonqueuedSenderComSpec(self, element:ET.Element) -> NonqueuedSenderComSpec:
1989
+ def getNonqueuedSenderComSpec(self, element: ET.Element) -> NonqueuedSenderComSpec:
1606
1990
  com_spec = NonqueuedSenderComSpec()
1607
1991
  self.readSenderComSpec(element, com_spec)
1608
1992
  com_spec.setInitValue(self.getInitValue(element))
1609
1993
  return com_spec
1610
1994
 
1611
- def getServerComSpec(self, element:ET.Element) -> ServerComSpec:
1995
+ def getServerComSpec(self, element: ET.Element) -> ServerComSpec:
1612
1996
  com_spec = ServerComSpec()
1613
1997
  self.readARObjectAttributes(element, com_spec)
1614
1998
  com_spec.setOperationRef(self.getChildElementOptionalRefType(element, "OPERATION-REF")) \
1615
1999
  .setQueueLength(self.getChildElementOptionalNumericalValue(element, "QUEUE-LENGTH"))
1616
2000
  return com_spec
1617
2001
 
1618
- def getQueuedSenderComSpec(self, element:ET.Element) -> QueuedSenderComSpec:
2002
+ def getQueuedSenderComSpec(self, element: ET.Element) -> QueuedSenderComSpec:
1619
2003
  com_spec = QueuedSenderComSpec()
1620
2004
  self.readSenderComSpec(element, com_spec)
1621
2005
  return com_spec
@@ -1652,7 +2036,7 @@ class ARXMLParser(AbstractARXMLParser):
1652
2036
  def readPortGroupInnerGroupIRefs(self, element: ET.Element, parent: PortGroup):
1653
2037
  for child_element in self.findall(element, "INNER-GROUP-IREFS/INNER-GROUP-IREF"):
1654
2038
  inner_group_iref = InnerPortGroupInCompositionInstanceRef()
1655
- #inner_group_iref.contextRef = self.getChildElementOptionalRefType(child_element, "CONTEXT-REF")
2039
+ # inner_group_iref.contextRef = self.getChildElementOptionalRefType(child_element, "CONTEXT-REF")
1656
2040
  inner_group_iref.setTargetRef(self.getChildElementOptionalRefType(child_element, "TARGET-REF"))
1657
2041
  parent.addInnerGroupIRef(inner_group_iref)
1658
2042
 
@@ -1678,12 +2062,12 @@ class ARXMLParser(AbstractARXMLParser):
1678
2062
 
1679
2063
  def readSwComponentType(self, element: ET.Element, parent: SwComponentType):
1680
2064
  self.readIdentifiable(element, parent)
1681
- self.readAtomicSwComponentTypePorts(element, parent)
2065
+ self.readSwComponentTypePorts(element, parent)
1682
2066
  self.readSwComponentTypePortGroups(element, parent)
1683
2067
 
1684
2068
  def readAtomicSwComponentType(self, element, parent: AtomicSwComponentType):
1685
2069
  self.readSwComponentType(element, parent)
1686
- self.readSwcInternalBehavior(element, parent)
2070
+ self.readAtomicSwComponentTypeSwcInternalBehavior(element, parent)
1687
2071
 
1688
2072
  def readEcuAbstractionSwComponentType(self, element, sw_component: EcuAbstractionSwComponentType):
1689
2073
  self.logger.debug("Read EcuAbstractionSwComponentType <%s>" % sw_component.getShortName())
@@ -1711,9 +2095,11 @@ class ARXMLParser(AbstractARXMLParser):
1711
2095
 
1712
2096
  self.logger.debug("PPortInCompositionInstanceRef")
1713
2097
  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()))
2098
+ % (p_port_in_composition_instance_ref.getContextComponentRef().getDest(),
2099
+ p_port_in_composition_instance_ref.getContextComponentRef().getValue()))
2100
+ self.logger.debug(" TARGET-P-PORT-REF DEST: %s, %s"
2101
+ % (p_port_in_composition_instance_ref.getTargetPPortRef().getDest(),
2102
+ p_port_in_composition_instance_ref.getTargetPPortRef().getValue()))
1717
2103
 
1718
2104
  def readRPortInCompositionInstanceRef(self, element, r_port_in_composition_instance_ref: RPortInCompositionInstanceRef):
1719
2105
  r_port_in_composition_instance_ref.setContextComponentRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPONENT-REF")) \
@@ -1721,9 +2107,11 @@ class ARXMLParser(AbstractARXMLParser):
1721
2107
 
1722
2108
  self.logger.debug("RPortInCompositionInstanceRef")
1723
2109
  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()))
2110
+ % (r_port_in_composition_instance_ref.getContextComponentRef().getDest(),
2111
+ r_port_in_composition_instance_ref.getContextComponentRef().getValue()))
2112
+ self.logger.debug(" TARGET-P-PORT-REF DEST: %s, %s"
2113
+ % (r_port_in_composition_instance_ref.getTargetRPortRef().getDest(),
2114
+ r_port_in_composition_instance_ref.getTargetRPortRef().getValue()))
1727
2115
 
1728
2116
  def readAssemblySwConnectorProviderIRef(self, element: ET.Element, parent: AssemblySwConnector):
1729
2117
  child_element = self.find(element, "PROVIDER-IREF")
@@ -1741,16 +2129,27 @@ class ARXMLParser(AbstractARXMLParser):
1741
2129
  self.readRPortInCompositionInstanceRef(child_element, requester_iref)
1742
2130
  parent.setRequesterIRef(requester_iref)
1743
2131
 
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)
2132
+ def readSwConnector(self, element: ET.Element, connector: SwConnector):
2133
+ self.readIdentifiable(element, connector)
2134
+ connector.setMappingRef(self.getChildElementOptionalRefType(element, "MAPPING-REF"))
2135
+
2136
+ def readAssemblySwConnector(self, element: ET.Element, connector: AssemblySwConnector):
2137
+ self.logger.debug("Read AssemblySwConnectors %s" % connector.getShortName())
2138
+ self.readSwConnector(element, connector)
2139
+ self.readAssemblySwConnectorProviderIRef(element, connector)
2140
+ self.readAssemblySwConnectorRequesterIRef(element, connector)
1748
2141
 
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)
2142
+ def readCompositionSwComponentTypeSwConnectors(self, element: ET.Element, parent: CompositionSwComponentType):
2143
+ for child_element in self.findall(element, "CONNECTORS/*"):
2144
+ tag_name = self.getTagName(child_element)
2145
+ if tag_name == "ASSEMBLY-SW-CONNECTOR":
2146
+ connector = parent.createAssemblySwConnector(self.getShortName(child_element))
2147
+ self.readAssemblySwConnector(child_element, connector)
2148
+ elif tag_name == "DELEGATION-SW-CONNECTOR":
2149
+ connector = parent.createDelegationSwConnector(self.getShortName(child_element))
2150
+ self.readDelegationSwConnector(child_element, connector)
2151
+ else:
2152
+ self.notImplemented("Unsupported SwConnector <%s>" % tag_name)
1754
2153
 
1755
2154
  def readDelegationSwConnectorInnerPortIRef(self, element, parent: DelegationSwConnector):
1756
2155
  inner_port_iref_element = self.find(element, "INNER-PORT-IREF")
@@ -1771,45 +2170,45 @@ class ARXMLParser(AbstractARXMLParser):
1771
2170
 
1772
2171
  self.raiseError("Unsupported child element of INNER-PORT-IREF")
1773
2172
 
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)
2173
+ def readDelegationSwConnector(self, element, connector: DelegationSwConnector):
2174
+ self.logger.debug("Read DelegationSwConnectors %s" % connector.getShortName())
2175
+ self.readSwConnector(element, connector)
2176
+ self.readDelegationSwConnectorInnerPortIRef(element, connector)
1778
2177
 
1779
- connector = parent.createDelegationSwConnector(short_name)
1780
- self.readIdentifiable(child_element, connector)
1781
- self.readDelegationSwConnectorInnerPortIRef(child_element, connector)
2178
+ if connector.getInnerPortIRref() is None and connector.getOuterPortRef() is None:
2179
+ self.raiseError("Invalid PortPrototype of DELEGATION-SW-CONNECTOR")
1782
2180
 
1783
- if connector.getInnerPortIRref() == None and connector.getOuterPortRef() == None:
1784
- self.raiseError("Invalid PortPrototype of DELEGATION-SW-CONNECTOR")
2181
+ connector.setOuterPortRef(self.getChildElementOptionalRefType(element, "OUTER-PORT-REF"))
2182
+ self.logger.debug("OUTER-PORT-REF DEST: %s, %s" % (connector.getOuterPortRef().getDest(), connector.getOuterPortRef().getValue()))
1785
2183
 
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()))
2184
+ def readSwComponentPrototype(self, element: ET.Element, prototype: SwComponentPrototype):
2185
+ self.logger.debug("Read SwComponentPrototypes <%s>" % prototype.getShortName())
2186
+ self.readIdentifiable(element, prototype)
2187
+ prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
1789
2188
 
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")
2189
+ def readCompositionSwComponentTypeComponents(self, element: ET.Element, parent: CompositionSwComponentType):
2190
+ for child_element in self.findall(element, "COMPONENTS/*"):
2191
+ tag_name = self.getTagName(child_element)
2192
+ if tag_name == "SW-COMPONENT-PROTOTYPE":
2193
+ prototype = parent.createSwComponentPrototype(self.getShortName(child_element))
2194
+ self.readSwComponentPrototype(child_element, prototype)
2195
+ else:
2196
+ self.notImplemented("Unsupported Component <%s>" % tag_name)
1797
2197
 
1798
2198
  def readCompositionSwComponentTypeDataTypeMappingSet(self, element: ET.Element, parent: CompositionSwComponentType):
1799
- child_element = element.find("./xmlns:DATA-TYPE-MAPPING-REFS", self.nsmap)
2199
+ child_element = self.find(element, "DATA-TYPE-MAPPING-REFS")
1800
2200
  self.logger.debug("readDataTypeMappingSet")
1801
2201
  if child_element is not None:
1802
- for ref in self.getChildElementRefTypeList(child_element, "./DATA-TYPE-MAPPING-REF"):
2202
+ for ref in self.getChildElementRefTypeList(child_element, "DATA-TYPE-MAPPING-REF"):
1803
2203
  parent.addDataTypeMapping(ref)
1804
2204
 
1805
2205
  def readCompositionSwComponentType(self, element: ET.Element, type: CompositionSwComponentType):
1806
2206
  self.logger.debug("Read CompositionSwComponentType: <%s>" % type.getShortName())
1807
- self.readIdentifiable(element, type)
1808
2207
  self.readSwComponentType(element, type)
1809
- self.readSwComponentPrototypes(element, type)
1810
- self.readAssemblySwConnectors(element, type)
1811
- self.readDelegationSwConnectors(element, type)
2208
+ self.readCompositionSwComponentTypeComponents(element, type)
2209
+ self.readCompositionSwComponentTypeSwConnectors(element, type)
1812
2210
  self.readCompositionSwComponentTypeDataTypeMappingSet(element, type)
2211
+ AUTOSAR.getInstance().addCompositionSwComponentType(type)
1813
2212
 
1814
2213
  def readDataTypeMaps(self, element: ET.Element, parent: DataTypeMappingSet):
1815
2214
  for child_element in element.findall("./xmlns:DATA-TYPE-MAPS/xmlns:DATA-TYPE-MAP", self.nsmap):
@@ -1836,13 +2235,15 @@ class ARXMLParser(AbstractARXMLParser):
1836
2235
  self.readModeRequestTypeMaps(element, mapping_set)
1837
2236
 
1838
2237
  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)
2238
+ for child_element in self.findall(element, "DATA-ELEMENTS/*"):
2239
+ tag_name = self.getTagName(child_element)
2240
+ if tag_name == "VARIABLE-DATA-PROTOTYPE":
2241
+ prototype = sr_interface.createDataElement(self.getShortName(child_element))
2242
+ self.readVariableDataPrototype(child_element, prototype)
2243
+ # prototype.swDataDefProps = self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")
2244
+ # self.readAutosarDataPrototype(child_element, prototype)
2245
+ else:
2246
+ self.notImplemented("Unsupported Data Element <%s>" % tag_name)
1846
2247
 
1847
2248
  def readSenderReceiverInterfaceInvalidationPolicies(self, element: ET.Element, sr_interface: SenderReceiverInterface):
1848
2249
  for child_element in self.findall(element, "INVALIDATION-POLICYS/INVALIDATION-POLICY"):
@@ -1866,16 +2267,19 @@ class ARXMLParser(AbstractARXMLParser):
1866
2267
  self.readSenderReceiverInterfaceDataElements(element, sr_interface)
1867
2268
  self.readSenderReceiverInterfaceInvalidationPolicies(element, sr_interface)
1868
2269
 
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)
2270
+ def readArgumentDataPrototype(self, element: ET.Element, prototype: ArgumentDataPrototype):
2271
+ self.readAutosarDataPrototype(element, prototype)
2272
+ prototype.setDirection(self.getChildElementOptionalLiteral(element, "DIRECTION")) \
2273
+ .setServerArgumentImplPolicy(self.getChildElementOptionalLiteral(element, "SERVER-ARGUMENT-IMPL-POLICY"))
2274
+
2275
+ def readClientServerOperationArguments(self, element: ET.Element, operation: ClientServerOperation):
2276
+ for child_element in self.findall(element, "ARGUMENTS/*"):
2277
+ tag_name = self.getTagName(child_element)
2278
+ if tag_name == "ARGUMENT-DATA-PROTOTYPE":
2279
+ prototype = operation.createArgumentDataPrototype(self.getShortName(child_element))
2280
+ self.readArgumentDataPrototype(child_element, prototype)
2281
+ else:
2282
+ self.notImplemented("Unsupported Argument <%s>" % tag_name)
1879
2283
 
1880
2284
  def readPossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
1881
2285
  child_element = self.find(element, "POSSIBLE-ERROR-REFS")
@@ -1883,41 +2287,53 @@ class ARXMLParser(AbstractARXMLParser):
1883
2287
  for ref in self.getChildElementRefTypeList(child_element, "POSSIBLE-ERROR-REF"):
1884
2288
  parent.addPossibleErrorRef(ref)
1885
2289
 
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)
2290
+ def readClientServerOperation(self, element: ET.Element, operation: ClientServerOperation):
2291
+ self.readIdentifiable(element, operation)
2292
+ self.readClientServerOperationArguments(element, operation)
2293
+ self.readPossibleErrorRefs(element, operation)
2294
+
2295
+ def readClientServerInterfaceOperations(self, element: ET.Element, parent: ClientServerInterface):
2296
+ for child_element in self.findall(element, "OPERATIONS/*"):
2297
+ tag_name = self.getTagName(child_element)
2298
+ if tag_name == "CLIENT-SERVER-OPERATION":
2299
+ operation = parent.createOperation(self.getShortName(child_element))
2300
+ self.readClientServerOperation(child_element, operation)
2301
+ else:
2302
+ self.notImplemented("Unsupported Operation <%s>" % tag_name)
1893
2303
 
1894
2304
  def readPossibleErrors(self, element: ET.Element, parent: ClientServerInterface):
1895
2305
  for child_element in self.findall(element, "POSSIBLE-ERRORS/APPLICATION-ERROR"):
1896
2306
  short_name = self.getShortName(child_element)
1897
2307
  error = parent.createApplicationError(short_name)
1898
- self.readIdentifiable(child_element, error) # some errors has its uuid
2308
+ self.readIdentifiable(child_element, error) # some errors has its uuid
1899
2309
  error.error_code = self.getChildElementOptionalNumericalValue(child_element, "ERROR-CODE")
1900
2310
 
1901
2311
  def readPortInterface(self, element: ET.Element, port_interface: PortInterface):
1902
2312
  self.readIdentifiable(element, port_interface)
1903
- port_interface.isService = self.getChildElementOptionalBooleanValue(element, "IS-SERVICE")
1904
- port_interface.serviceKind = self.getChildElementOptionalLiteral(element, "SERVICE-KIND")
2313
+ port_interface.setIsService(self.getChildElementOptionalBooleanValue(element, "IS-SERVICE"))\
2314
+ .setServiceKind(self.getChildElementOptionalLiteral(element, "SERVICE-KIND"))
1905
2315
 
1906
2316
  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)
2317
+ for child_element in self.findall(element, "PARAMETERS/*"):
2318
+ tag_name = self.getTagName(child_element)
2319
+ if tag_name == "PARAMETER-DATA-PROTOTYPE":
2320
+ prototype = param_interface.createParameterDataPrototype(self.getShortName(child_element))
2321
+ self.readParameterDataPrototype(child_element, prototype)
2322
+ else:
2323
+ self.notImplemented("Unsupported Parameter <%s>" % tag_name)
2324
+
2325
+ def readDataInterface(self, element: ET.Element, interface: DataInterface):
2326
+ self.readPortInterface(element, interface)
1911
2327
 
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)
2328
+ def readParameterInterface(self, element: ET.Element, interface: ParameterInterface):
2329
+ self.logger.debug("Read ParameterInterface <%s>" % interface.getShortName())
2330
+ self.readDataInterface(element, interface)
2331
+ self.readParameterInterfaceParameters(element, interface)
1916
2332
 
1917
2333
  def readClientServerInterface(self, element: ET.Element, cs_interface: ClientServerInterface):
1918
2334
  self.logger.debug("Read readClientServerInterface <%s>" % cs_interface.getShortName())
1919
2335
  self.readPortInterface(element, cs_interface)
1920
- self.readOperations(element, cs_interface)
2336
+ self.readClientServerInterfaceOperations(element, cs_interface)
1921
2337
  self.readPossibleErrors(element, cs_interface)
1922
2338
 
1923
2339
  def getCompuConstContent(self, element: ET.Element) -> CompuConstContent:
@@ -1979,6 +2395,15 @@ class ARXMLParser(AbstractARXMLParser):
1979
2395
  self.readCompuConst(element, parent)
1980
2396
  self.readCompuRationCoeffs(element, parent)
1981
2397
 
2398
+ def readCompuScale(self, element: ET.Element, compu_scale: CompuScale):
2399
+ self.readARObjectAttributes(element, compu_scale)
2400
+ compu_scale.setLowerLimit(self.getChildLimitElement(element, "LOWER-LIMIT")) \
2401
+ .setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
2402
+ .setDesc(self.getMultiLanguageOverviewParagraph(element, "DESC")) \
2403
+ .setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL")) \
2404
+ .setUpperLimit(self.getChildLimitElement(element, "UPPER-LIMIT"))
2405
+ self.readCompuScaleContents(element, compu_scale)
2406
+
1982
2407
  def getCompuScales(self, element: ET.Element) -> CompuScales:
1983
2408
  compu_scales = None
1984
2409
  compu_scales_tag = self.find(element, "COMPU-SCALES")
@@ -1986,13 +2411,7 @@ class ARXMLParser(AbstractARXMLParser):
1986
2411
  compu_scales = CompuScales()
1987
2412
  for child_element in self.findall(compu_scales_tag, 'COMPU-SCALE'):
1988
2413
  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)
2414
+ self.readCompuScale(child_element, compu_scale)
1996
2415
  compu_scales.addCompuScale(compu_scale)
1997
2416
  return compu_scales
1998
2417
 
@@ -2002,7 +2421,7 @@ class ARXMLParser(AbstractARXMLParser):
2002
2421
  if (child_element is not None):
2003
2422
  compu = Compu()
2004
2423
  self.readARObjectAttributes(child_element, compu)
2005
- compu.setCompuContent(self.getCompuScales(child_element))
2424
+ compu.setCompuContent(self.getCompuScales(child_element))
2006
2425
  compu.setCompuDefaultValue(self.getCompuConst(child_element, "COMPU-DEFAULT-VALUE"))
2007
2426
  return compu
2008
2427
 
@@ -2030,10 +2449,9 @@ class ARXMLParser(AbstractARXMLParser):
2030
2449
  def readValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
2031
2450
  self.readARObjectAttributes(element, value_spec)
2032
2451
  value_spec.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL"))
2033
- self.logger.debug("readValueSpecification")
2452
+ # self.logger.debug("read ValueSpecification")
2034
2453
 
2035
2454
  def getApplicationValueSpecification(self, element: ET.Element) -> ApplicationValueSpecification:
2036
- self.logger.debug("getApplicationValueSpecification")
2037
2455
  value_spec = ApplicationValueSpecification()
2038
2456
  self.readValueSpecification(element, value_spec)
2039
2457
  value_spec.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY")) \
@@ -2042,7 +2460,6 @@ class ARXMLParser(AbstractARXMLParser):
2042
2460
  return value_spec
2043
2461
 
2044
2462
  def getNumericalValueSpecification(self, element: ET.Element) -> NumericalValueSpecification:
2045
- self.logger.debug("getNumericalValueSpecification")
2046
2463
  value_spec = NumericalValueSpecification()
2047
2464
  self.readValueSpecification(element, value_spec)
2048
2465
  value_spec.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
@@ -2071,7 +2488,7 @@ class ARXMLParser(AbstractARXMLParser):
2071
2488
  value_spec = ConstantReference()
2072
2489
  self.readValueSpecification(element, value_spec)
2073
2490
  value_spec.setConstantRef(self.getChildElementOptionalRefType(element, "CONSTANT-REF"))
2074
- return value_spec
2491
+ return value_spec
2075
2492
 
2076
2493
  def getValueSpecification(self, element: ET.Element, tag_name: str) -> ValueSpecification:
2077
2494
  if tag_name == "APPLICATION-VALUE-SPECIFICATION":
@@ -2148,59 +2565,80 @@ class ARXMLParser(AbstractARXMLParser):
2148
2565
  .setOffsetSiToUnit(self.getChildElementOptionalFloatValue(element, "OFFSET-SI-TO-UNIT")) \
2149
2566
  .setPhysicalDimensionRef(self.getChildElementOptionalRefType(element, "PHYSICAL-DIMENSION-REF"))
2150
2567
 
2151
- def readEndToEndDescriptionDataId(self, element: ET.Element, parent: EndToEndDescription):
2152
- child_element = element.find("./xmlns:DATA-IDS", self.nsmap)
2568
+ def readEndToEndDescriptionDataIds(self, element: ET.Element, parent: EndToEndDescription):
2569
+ child_element = self.find(element, "DATA-IDS")
2153
2570
  if child_element is not None:
2154
2571
  for value in self.getChildElementNumericalValueList(child_element, "DATA-ID"):
2155
2572
  parent.addDataId(value)
2156
2573
 
2157
2574
  def getEndToEndDescription(self, element: ET.Element, key: str) -> EndToEndDescription:
2158
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
2575
+ child_element = self.find(element, key)
2159
2576
  desc = None
2160
2577
  if (child_element is not None):
2161
2578
  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")
2579
+ self.readARObjectAttributes(child_element, desc)
2580
+ desc.setCategory(self.getChildElementOptionalLiteral(child_element, "CATEGORY"))
2581
+ self.readEndToEndDescriptionDataIds(child_element, desc)
2582
+ desc.setDataIdMode(self.getChildElementOptionalPositiveInteger(child_element, "DATA-ID-MODE")) \
2583
+ .setDataLength(self.getChildElementOptionalPositiveInteger(child_element, "DATA-LENGTH")) \
2584
+ .setMaxDeltaCounterInit(self.getChildElementOptionalPositiveInteger(child_element, "MAX-DELTA-COUNTER-INIT")) \
2585
+ .setCrcOffset(self.getChildElementOptionalPositiveInteger(child_element, "CRC-OFFSET")) \
2586
+ .setCounterOffset(self.getChildElementOptionalPositiveInteger(child_element, "COUNTER-OFFSET"))
2168
2587
  return desc
2169
2588
 
2170
2589
  def getVariableDataPrototypeInSystemInstanceRef(self, element: ET.Element) -> VariableDataPrototypeInSystemInstanceRef:
2171
- iref = None
2590
+ instance_ref = None
2172
2591
  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
2592
+ instance_ref = VariableDataPrototypeInSystemInstanceRef()
2593
+ for ref in self.getChildElementRefTypeList(element, "CONTEXT-COMPONENT-REF"):
2594
+ instance_ref.addContextComponentRef(ref)
2595
+ instance_ref.setContextCompositionRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPOSITION-REF")) \
2596
+ .setContextPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-PORT-REF")) \
2597
+ .setTargetDataPrototypeRef(self.getChildElementOptionalRefType(element, "TARGET-DATA-PROTOTYPE-REF"))
2598
+ return instance_ref
2179
2599
 
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):
2600
+ def readEndToEndProtectionVariablePrototype(self, element: ET.Element, prototype: EndToEndProtectionVariablePrototype):
2601
+ self.readARObjectAttributes(element, prototype)
2602
+ for child_element in self.findall(element, "RECEIVER-IREFS/RECEIVER-IREF"):
2183
2603
  prototype.addReceiverIref(self.getVariableDataPrototypeInSystemInstanceRef(child_element))
2184
- child_element = element.find("./xmlns:SENDER-IREF", self.nsmap)
2604
+ child_element = self.find(element, "SENDER-IREF")
2185
2605
  if child_element is not None:
2186
2606
  prototype.senderIRef = self.getVariableDataPrototypeInSystemInstanceRef(child_element)
2187
2607
  return prototype
2188
2608
 
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):
2609
+ def readEndToEndProtectionEndToEndProtectionVariablePrototypes(self, element: ET.Element, protection: EndToEndProtection):
2610
+ for child_element in self.findall(element, "END-TO-END-PROTECTION-VARIABLE-PROTOTYPES/*"):
2191
2611
  tag_name = self.getTagName(child_element)
2192
2612
  if tag_name == "END-TO-END-PROTECTION-VARIABLE-PROTOTYPE":
2193
- parent.addEndToEndProtectionVariablePrototype(self.getEndToEndProtectionVariablePrototype(child_element))
2613
+ prototype = EndToEndProtectionVariablePrototype()
2614
+ self.readEndToEndProtectionVariablePrototype(child_element, prototype)
2615
+ protection.addEndToEndProtectionVariablePrototype(prototype)
2194
2616
  else:
2195
2617
  self.raiseError("Unsupported End To End Protection Variable Prototype <%s>" % tag_name)
2196
2618
 
2619
+ def readEndToEndProtectionISignalIPdu(self, element: ET.Element, ipdu: EndToEndProtectionISignalIPdu):
2620
+ ipdu.setDataOffset(self.getChildElementOptionalIntegerValue(element, "DATA-OFFSET")) \
2621
+ .setISignalGroupRef(self.getChildElementOptionalRefType(element, "I-SIGNAL-GROUP-REF")) \
2622
+ .setISignalIPduRef(self.getChildElementOptionalRefType(element, "I-SIGNAL-I-PDU-REF"))
2623
+
2624
+ def readEndToEndProtectionEndToEndProtectionISignalIPdus(self, element: ET.Element, protection: EndToEndProtection):
2625
+ for child_element in self.findall(element, "END-TO-END-PROTECTION-I-SIGNAL-I-PDUS/*"):
2626
+ tag_name = self.getTagName(child_element)
2627
+ if tag_name == "END-TO-END-PROTECTION-I-SIGNAL-I-PDU":
2628
+ ipdu = EndToEndProtectionISignalIPdu()
2629
+ self.readEndToEndProtectionISignalIPdu(child_element, ipdu)
2630
+ protection.addEndToEndProtectionISignalIPdu(ipdu)
2631
+ else:
2632
+ self.notImplemented("Unsupported EndToEndProtectionISignalIPdu <%s>" % tag_name)
2633
+
2197
2634
  def readEndToEndProtection(self, element: ET.Element, parent: EndToEndProtectionSet):
2198
2635
  short_name = self.getShortName(element)
2199
2636
  self.logger.debug("readEndToEndProtection %s" % short_name)
2200
2637
  protection = parent.createEndToEndProtection(short_name)
2201
2638
  self.readIdentifiable(element, protection)
2202
- protection.endToEndProfile = self.getEndToEndDescription(element, "END-TO-END-PROFILE")
2203
- self.readEndToEndProtectionVariablePrototypes(element, protection)
2639
+ protection.setEndToEndProfile(self.getEndToEndDescription(element, "END-TO-END-PROFILE"))
2640
+ self.readEndToEndProtectionEndToEndProtectionISignalIPdus(element, protection)
2641
+ self.readEndToEndProtectionEndToEndProtectionVariablePrototypes(element, protection)
2204
2642
 
2205
2643
  def readEndToEndProtections(self, element: ET.Element, parent: EndToEndProtectionSet):
2206
2644
  for child_element in self.findall(element, "END-TO-END-PROTECTIONS/*"):
@@ -2215,10 +2653,6 @@ class ARXMLParser(AbstractARXMLParser):
2215
2653
  self.readIdentifiable(element, protection_set)
2216
2654
  self.readEndToEndProtections(element, protection_set)
2217
2655
 
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
2656
  def readImplementationProps(self, element: ET.Element, props: ImplementationProps):
2223
2657
  props.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
2224
2658
 
@@ -2246,10 +2680,10 @@ class ARXMLParser(AbstractARXMLParser):
2246
2680
  prototype.typeTRef = self.getChildElementOptionalRefType(element, "TYPE-TREF")
2247
2681
 
2248
2682
  def readApplicationArrayElement(self, element: ET.Element, parent: ApplicationArrayDataType):
2249
- child_element = element.find("./xmlns:ELEMENT", self.nsmap)
2683
+ child_element = self.find(element, "ELEMENT")
2250
2684
  if child_element is not None:
2251
2685
  short_name = self.getShortName(child_element)
2252
- self.logger.debug("readApplicationArrayElement %s" % short_name)
2686
+ self.logger.debug("Read ApplicationArrayElement %s" % short_name)
2253
2687
  array_element = parent.createApplicationArrayElement(short_name)
2254
2688
  self.readApplicationCompositeElementDataPrototype(child_element, array_element)
2255
2689
  array_element.setArraySizeHandling(self.getChildElementOptionalLiteral(child_element, "ARRAY-SIZE-HANDLING"))
@@ -2257,13 +2691,13 @@ class ARXMLParser(AbstractARXMLParser):
2257
2691
  array_element.setMaxNumberOfElements(self.getChildElementOptionalNumericalValue(child_element, "MAX-NUMBER-OF-ELEMENTS"))
2258
2692
 
2259
2693
  def readApplicationArrayDataType(self, element: ET.Element, data_type: ApplicationArrayDataType):
2260
- self.logger.debug("Read ApplicationArrayDataType <%s>" % data_type)
2694
+ self.logger.debug("Read ApplicationArrayDataType <%s>" % data_type.getShortName())
2261
2695
  self.readApplicationCompositeDataType(element, data_type)
2262
2696
  data_type.setDynamicArraySizeProfile(self.getChildElementOptionalLiteral(element, "DYNAMIC-ARRAY-SIZE-PROFILE"))
2263
2697
  self.readApplicationArrayElement(element, data_type)
2264
2698
 
2265
2699
  def getSwRecordLayoutV(self, element: ET.Element, key: str) -> SwRecordLayoutV:
2266
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
2700
+ child_element = self.find(element, key)
2267
2701
  layout_v = None
2268
2702
  if child_element is not None:
2269
2703
  layout_v = SwRecordLayoutV()
@@ -2272,7 +2706,6 @@ class ARXMLParser(AbstractARXMLParser):
2272
2706
  .setSwRecordLayoutVAxis(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-AXIS")) \
2273
2707
  .setSwRecordLayoutVProp(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-PROP")) \
2274
2708
  .setSwRecordLayoutVIndex(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-INDEX"))
2275
- #print(layout_v.getShortLabel())
2276
2709
  return layout_v
2277
2710
 
2278
2711
  def readSwRecordLayoutGroupSwRecordLayoutGroupContentType(self, element: ET.Element, group: SwRecordLayoutGroup):
@@ -2282,19 +2715,19 @@ class ARXMLParser(AbstractARXMLParser):
2282
2715
  group.setSwRecordLayoutGroupContentType(content)
2283
2716
 
2284
2717
  def getSwRecordLayoutGroup(self, element: ET.Element, key: str) -> SwRecordLayoutGroup:
2285
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
2718
+ child_element = self.find(element, key)
2286
2719
  group = None
2287
2720
  if child_element is not None:
2288
2721
  group = SwRecordLayoutGroup()
2289
2722
  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")) \
2723
+ .setCategory(self.getChildElementOptionalLiteral(child_element, "CATEGORY")) \
2724
+ .setSwRecordLayoutGroupAxis(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS")) \
2293
2725
  .setSwRecordLayoutGroupIndex(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-INDEX")) \
2294
2726
  .setSwRecordLayoutGroupFrom(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-FROM")) \
2295
2727
  .setSwRecordLayoutGroupStep(self.getChildElementOptionalIntegerValue(child_element, "SW-RECORD-LAYOUT-GROUP-STEP")) \
2296
2728
  .setSwRecordLayoutGroupTo(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-TO"))
2297
- #print(group.getShortLabel())
2729
+ self.readSwRecordLayoutGroupSwRecordLayoutGroupContentType(child_element, group)
2730
+
2298
2731
  return group
2299
2732
 
2300
2733
  def readSwRecordLayout(self, element: ET.Element, layout: SwRecordLayout):
@@ -2305,7 +2738,7 @@ class ARXMLParser(AbstractARXMLParser):
2305
2738
  def readSwAddrMethod(self, element: ET.Element, method: SwAddrMethod):
2306
2739
  self.logger.debug("Read SwAddrMethod <%s>" % method.getShortName())
2307
2740
  self.readIdentifiable(element, method)
2308
- method.setMemoryAllocationKeywordPolicy(self.getChildElementOptionalLiteral(element, "MEMORY-ALLOCATION-KEYWORD-POLICY"))
2741
+ method.setMemoryAllocationKeywordPolicy(self.getChildElementOptionalLiteral(element, "MEMORY-ALLOCATION-KEYWORD-POLICY"))
2309
2742
  for option in self.getChildElementLiteralValueList(element, "OPTIONS/OPTION"):
2310
2743
  method.addOption(option)
2311
2744
  method.setSectionInitializationPolicy(self.getChildElementOptionalLiteral(element, "SECTION-INITIALIZATION-POLICY")) \
@@ -2379,6 +2812,7 @@ class ARXMLParser(AbstractARXMLParser):
2379
2812
  self.readTimingExtension(element, timing)
2380
2813
 
2381
2814
  def readFrameTriggering(self, element: ET.Element, triggering: FrameTriggering):
2815
+ self.readIdentifiable(element, triggering)
2382
2816
  for ref in self.getChildElementRefTypeList(element, 'FRAME-PORT-REFS/FRAME-PORT-REF'):
2383
2817
  triggering.addFramePortRef(ref)
2384
2818
  triggering.setFrameRef(self.getChildElementOptionalRefType(element, "FRAME-REF"))
@@ -2387,7 +2821,6 @@ class ARXMLParser(AbstractARXMLParser):
2387
2821
 
2388
2822
  def readCanFrameTriggering(self, element: ET.Element, triggering: CanFrameTriggering):
2389
2823
  self.logger.debug("Read CanFrameTriggering %s" % triggering.getShortName())
2390
- self.readIdentifiable(element, triggering)
2391
2824
  self.readFrameTriggering(element, triggering)
2392
2825
  triggering.setCanAddressingMode(self.getChildElementOptionalLiteral(element, "CAN-ADDRESSING-MODE")) \
2393
2826
  .setCanFdFrameSupport(self.getChildElementOptionalBooleanValue(element, "CAN-FD-FRAME-SUPPORT")) \
@@ -2396,13 +2829,52 @@ class ARXMLParser(AbstractARXMLParser):
2396
2829
  .setIdentifier(self.getChildElementOptionalNumericalValue(element, "IDENTIFIER")) \
2397
2830
  .setRxIdentifierRange(self.getChildElementRxIdentifierRange(element, "RX-IDENTIFIER-RANGE"))
2398
2831
 
2399
-
2400
2832
  def readLinFrameTriggering(self, element: ET.Element, triggering: LinFrameTriggering):
2401
2833
  self.logger.debug("Read LinFrameTriggering %s" % triggering.getShortName())
2402
- self.readIdentifiable(element, triggering)
2403
2834
  self.readFrameTriggering(element, triggering)
2404
2835
  triggering.setIdentifier(self.getChildElementOptionalNumericalValue(element, "IDENTIFIER")) \
2405
2836
  .setLinChecksum(self.getChildElementOptionalLiteral(element, "LIN-CHECKSUM"))
2837
+
2838
+ def readCommunicationCycle(self, element: ET.Element, cycle: CommunicationCycle):
2839
+ self.readARObjectAttributes(element, cycle)
2840
+
2841
+ def readCycleRepetition(self, element: ET.Element, cycle: CycleRepetition):
2842
+ self.readCommunicationCycle(element, cycle)
2843
+ cycle.setBaseCycle(self.getChildElementOptionalIntegerValue(element, "BASE-CYCLE")) \
2844
+ .setCycleRepetition(self.getChildElementOptionalLiteral(element, "CYCLE-REPETITION"))
2845
+
2846
+ def readFlexrayAbsolutelyScheduledTimingCommunicationCycle(self, element: ET.Element, timing: FlexrayAbsolutelyScheduledTiming):
2847
+ for child_element in self.findall(element, "COMMUNICATION-CYCLE/*"):
2848
+ tag_name = self.getTagName(child_element)
2849
+ if tag_name == "CYCLE-REPETITION":
2850
+ repetition = CycleRepetition()
2851
+ self.readCycleRepetition(child_element, repetition)
2852
+ timing.setCommunicationCycle(repetition)
2853
+ else:
2854
+ self.notImplemented("Unsupported CommunicationCycle <%s>" % tag_name)
2855
+
2856
+ def readFlexrayAbsolutelyScheduledTiming(self, element: ET.Element, timing: FlexrayAbsolutelyScheduledTiming):
2857
+ self.readARObjectAttributes(element, timing)
2858
+ self.readFlexrayAbsolutelyScheduledTimingCommunicationCycle(element, timing)
2859
+ timing.setSlotID(self.getChildElementOptionalPositiveInteger(element, "SLOT-ID"))
2860
+
2861
+ def readFlexrayFrameTriggeringAbsolutelyScheduledTimings(self, element: ET.Element, triggering: FlexrayFrameTriggering):
2862
+ for child_element in self.findall(element, "ABSOLUTELY-SCHEDULED-TIMINGS/*"):
2863
+ tag_name = self.getTagName(child_element)
2864
+ if tag_name == "FLEXRAY-ABSOLUTELY-SCHEDULED-TIMING":
2865
+ timing = FlexrayAbsolutelyScheduledTiming()
2866
+ self.readFlexrayAbsolutelyScheduledTiming(child_element, timing)
2867
+ triggering.addAbsolutelyScheduledTiming(timing)
2868
+ else:
2869
+ self.notImplemented("Unsupported AbsolutelyScheduledTiming <%s>" % tag_name)
2870
+
2871
+ def readFlexrayFrameTriggering(self, element: ET.Element, triggering: FlexrayFrameTriggering):
2872
+ self.logger.debug("Read FlexrayFrameTriggering %s" % triggering.getShortName())
2873
+ self.readFrameTriggering(element, triggering)
2874
+ self.readFlexrayFrameTriggeringAbsolutelyScheduledTimings(element, triggering)
2875
+ triggering.setAllowDynamicLSduLength(self.getChildElementOptionalBooleanValue(element, "ALLOW-DYNAMIC-L-SDU-LENGTH")) \
2876
+ .setMessageId(self.getChildElementOptionalPositiveInteger(element, "MESSAGE-ID")) \
2877
+ .setPayloadPreambleIndicator(self.getChildElementOptionalBooleanValue(element, "PAYLOAD-PREAMBLE-INDICATOR"))
2406
2878
 
2407
2879
  def readISignalTriggering(self, element: ET.Element, triggering: ISignalTriggering):
2408
2880
  self.logger.debug("Read ISignalTriggering %s" % triggering.getShortName())
@@ -2421,10 +2893,11 @@ class ARXMLParser(AbstractARXMLParser):
2421
2893
  for child_element in self.findall(element, 'I-SIGNAL-TRIGGERINGS/I-SIGNAL-TRIGGERING-REF-CONDITIONAL'):
2422
2894
  triggering.addISignalTriggeringRef(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-TRIGGERING-REF"))
2423
2895
 
2424
- def readPhysicalChannel(self, element: ET.Element, channel: PhysicalChannel):
2896
+ def readPhysicalChannelCommConnectorRefs(self, element: ET.Element, channel: PhysicalChannel):
2425
2897
  for child_element in self.findall(element, 'COMM-CONNECTORS/COMMUNICATION-CONNECTOR-REF-CONDITIONAL'):
2426
2898
  channel.addCommConnectorRef(self.getChildElementOptionalRefType(child_element, "COMMUNICATION-CONNECTOR-REF"))
2427
-
2899
+
2900
+ def readPhysicalChannelFrameTriggerings(self, element: ET.Element, channel: PhysicalChannel):
2428
2901
  for child_element in self.findall(element, "FRAME-TRIGGERINGS/*"):
2429
2902
  tag_name = self.getTagName(child_element)
2430
2903
  if tag_name == "CAN-FRAME-TRIGGERING":
@@ -2433,9 +2906,13 @@ class ARXMLParser(AbstractARXMLParser):
2433
2906
  elif tag_name == "LIN-FRAME-TRIGGERING":
2434
2907
  triggering = channel.createLinFrameTriggering(self.getShortName(child_element))
2435
2908
  self.readLinFrameTriggering(child_element, triggering)
2909
+ elif tag_name == "FLEXRAY-FRAME-TRIGGERING":
2910
+ triggering = channel.createFlexrayFrameTriggering(self.getShortName(child_element))
2911
+ self.readFlexrayFrameTriggering(child_element, triggering)
2436
2912
  else:
2437
2913
  self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
2438
-
2914
+
2915
+ def readPhysicalChannelISignalTriggerings(self, element: ET.Element, channel: PhysicalChannel):
2439
2916
  for child_element in self.findall(element, "I-SIGNAL-TRIGGERINGS/*"):
2440
2917
  tag_name = self.getTagName(child_element)
2441
2918
  if tag_name == "I-SIGNAL-TRIGGERING":
@@ -2443,7 +2920,8 @@ class ARXMLParser(AbstractARXMLParser):
2443
2920
  self.readISignalTriggering(child_element, triggering)
2444
2921
  else:
2445
2922
  self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
2446
-
2923
+
2924
+ def readPhysicalChannelPduTriggerings(self, element, channel):
2447
2925
  for child_element in self.findall(element, "PDU-TRIGGERINGS/*"):
2448
2926
  tag_name = self.getTagName(child_element)
2449
2927
  if tag_name == "PDU-TRIGGERING":
@@ -2452,8 +2930,15 @@ class ARXMLParser(AbstractARXMLParser):
2452
2930
  else:
2453
2931
  self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
2454
2932
 
2455
- def readCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
2933
+ def readPhysicalChannel(self, element: ET.Element, channel: PhysicalChannel):
2456
2934
  self.readIdentifiable(element, channel)
2935
+
2936
+ self.readPhysicalChannelCommConnectorRefs(element, channel)
2937
+ self.readPhysicalChannelFrameTriggerings(element, channel)
2938
+ self.readPhysicalChannelISignalTriggerings(element, channel)
2939
+ self.readPhysicalChannelPduTriggerings(element, channel)
2940
+
2941
+ def readCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
2457
2942
  self.readPhysicalChannel(element, channel)
2458
2943
 
2459
2944
  def readScheduleTableEntry(self, element: ET.Element, entry: ScheduleTableEntry):
@@ -2492,7 +2977,6 @@ class ARXMLParser(AbstractARXMLParser):
2492
2977
  self.notImplemented("Unsupported Schedule Table <%s>" % tag_name)
2493
2978
 
2494
2979
  def readLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
2495
- self.readIdentifiable(element, channel)
2496
2980
  self.readPhysicalChannel(element, channel)
2497
2981
  self.readLinPhysicalChannelScheduleTables(element, channel)
2498
2982
 
@@ -2517,7 +3001,7 @@ class ARXMLParser(AbstractARXMLParser):
2517
3001
  else:
2518
3002
  self.notImplemented("Unsupported Network EndPoint Address <%s>" % tag_name)
2519
3003
 
2520
- def getDoIpEntity(self, element: ET.Element, key:str) -> DoIpEntity:
3004
+ def getDoIpEntity(self, element: ET.Element, key: str) -> DoIpEntity:
2521
3005
  entity = None
2522
3006
  child_element = self.find(element, key)
2523
3007
  if child_element is not None:
@@ -2525,7 +3009,7 @@ class ARXMLParser(AbstractARXMLParser):
2525
3009
  entity.setDoIpEntityRole(self.getChildElementOptionalLiteral(child_element, "DO-IP-ENTITY-ROLE"))
2526
3010
  return entity
2527
3011
 
2528
- def getInfrastructureServices(self, element: ET.Element, key:str) -> InfrastructureServices:
3012
+ def getInfrastructureServices(self, element: ET.Element, key: str) -> InfrastructureServices:
2529
3013
  services = None
2530
3014
  child_element = self.find(element, key)
2531
3015
  if child_element is not None:
@@ -2571,7 +3055,7 @@ class ARXMLParser(AbstractARXMLParser):
2571
3055
  connection = SocketConnection()
2572
3056
  connection.setClientIpAddrFromConnectionRequest(self.getChildElementOptionalBooleanValue(element, "CLIENT-IP-ADDR-FROM-CONNECTION-REQUEST")) \
2573
3057
  .setClientPortFromConnectionRequest(self.getChildElementOptionalBooleanValue(element, "CLIENT-PORT-FROM-CONNECTION-REQUEST")) \
2574
- .setClientPortRef(self.getChildElementOptionalRefType(element, "CLIENT-PORT-REF"))
3058
+ .setClientPortRef(self.getChildElementOptionalRefType(element, "CLIENT-PORT-REF")) # NOQA E501
2575
3059
  for pdu in self.getSocketConnectionPdus(element):
2576
3060
  connection.addPdu(pdu)
2577
3061
  connection.setPduCollectionMaxBufferSize(self.getChildElementOptionalPositiveInteger(element, "PDU-COLLECTION-MAX-BUFFER-SIZE")) \
@@ -2586,7 +3070,7 @@ class ARXMLParser(AbstractARXMLParser):
2586
3070
  tag_name = self.getTagName(child_element)
2587
3071
  if tag_name == "SOCKET-CONNECTION":
2588
3072
  bundle.addBundledConnection(self.getSocketConnection(child_element))
2589
- else:
3073
+ else:
2590
3074
  self.notImplemented("Unsupported Bundled Connection <%s>" % tag_name)
2591
3075
 
2592
3076
  def readSocketConnectionBundle(self, element: ET.Element, bundle: SocketConnectionBundle):
@@ -2616,12 +3100,11 @@ class ARXMLParser(AbstractARXMLParser):
2616
3100
 
2617
3101
  def readTcpTp(self, element: ET.Element, tp: TcpTp):
2618
3102
  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
-
3103
+ .setKeepAliveProbesMax(self.getChildElementOptionalPositiveInteger(element, "KEEP-ALIVE-PROBES-MAX")) \
3104
+ .setKeepAliveTime(self.getChildElementOptionalTimeValue(element, "KEEP-ALIVE-TIME")) \
3105
+ .setKeepAlives(self.getChildElementOptionalBooleanValue(element, "KEEP-ALIVES")) \
3106
+ .setNaglesAlgorithm(self.getChildElementOptionalLiteral(element, "NAGLES-ALGORITHM")) \
3107
+ .setTcpTpPort(self.getTpPort(element, "TCP-TP-PORT"))
2625
3108
 
2626
3109
  def readGenericTp(self, element: ET.Element, tp: GenericTp):
2627
3110
  tp.setTpAddress(self.getChildElementOptionalLiteral(element, "TP-ADDRESS")) \
@@ -2657,17 +3140,6 @@ class ARXMLParser(AbstractARXMLParser):
2657
3140
  delay.setMaxValue(self.getChildElementOptionalTimeValue(child_element, "MAX-VALUE")) \
2658
3141
  .setMinValue(self.getChildElementOptionalTimeValue(child_element, "MIN-VALUE"))
2659
3142
  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
3143
 
2672
3144
  def getSdClientConfig(self, element: ET.Element, key: str) -> SdClientConfig:
2673
3145
  config = None
@@ -2722,7 +3194,7 @@ class ARXMLParser(AbstractARXMLParser):
2722
3194
  .setInitialRepetitionsBaseDelay(self.getChildElementOptionalTimeValue(child_element, "INITIAL-REPETITIONS-BASE-DELAY")) \
2723
3195
  .setInitialRepetitionsMax(self.getChildElementOptionalPositiveInteger(child_element, "INITIAL-REPETITIONS-MAX"))
2724
3196
  return config
2725
-
3197
+
2726
3198
  def getSdServerConfig(self, element: ET.Element, key: str) -> SdServerConfig:
2727
3199
  config = None
2728
3200
  child_element = self.find(element, key)
@@ -2744,7 +3216,7 @@ class ARXMLParser(AbstractARXMLParser):
2744
3216
  handler.setMulticastThreshold(self.getChildElementOptionalPositiveInteger(element, "MULTICAST-THRESHOLD"))
2745
3217
  for ref in self.getChildElementRefTypeList(element, "ROUTING-GROUP-REFS/ROUTING-GROUP-REF"):
2746
3218
  handler.addRoutingGroupRef(ref)
2747
- handler.setSdServerConfig(self.getSdServerConfig(element, "SD-SERVER-CONFIG")) \
3219
+ handler.setSdServerConfig(self.getSdServerConfig(element, "SD-SERVER-CONFIG"))
2748
3220
 
2749
3221
  def readProvidedServiceInstanceEventHandlers(self, element: ET.Element, instance: ProvidedServiceInstance):
2750
3222
  for child_element in self.findall(element, "EVENT-HANDLERS/*"):
@@ -2785,7 +3257,6 @@ class ARXMLParser(AbstractARXMLParser):
2785
3257
  for ref in self.getChildElementRefTypeList(element, "MULTICAST-CONNECTOR-REFS/MULTICAST-CONNECTOR-REF"):
2786
3258
  address.addMulticastConnectorRef(ref)
2787
3259
 
2788
-
2789
3260
  def readSocketAddress(self, element: ET.Element, address: SocketAddress):
2790
3261
  self.readIdentifiable(element, address)
2791
3262
  self.readSocketAddressApplicationEndpoint(element, address)
@@ -2793,7 +3264,7 @@ class ARXMLParser(AbstractARXMLParser):
2793
3264
  address.setConnectorRef(self.getChildElementOptionalRefType(element, "CONNECTOR-REF")) \
2794
3265
  .setPortAddress(self.getChildElementOptionalPositiveInteger(element, "PORT-ADDRESS"))
2795
3266
 
2796
- def readSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
3267
+ def readSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
2797
3268
  for child_element in self.findall(element, "SOCKET-ADDRESSS/*"):
2798
3269
  tag_name = self.getTagName(child_element)
2799
3270
  if tag_name == "SOCKET-ADDRESS":
@@ -2818,12 +3289,15 @@ class ARXMLParser(AbstractARXMLParser):
2818
3289
  vlan.setVlanIdentifier(self.getChildElementOptionalPositiveInteger(child_element, "VLAN-IDENTIFIER"))
2819
3290
 
2820
3291
  def readEthernetPhysicalChannel(self, element: ET.Element, channel: EthernetPhysicalChannel):
2821
- self.readIdentifiable(element, channel)
2822
3292
  self.readPhysicalChannel(element, channel)
2823
3293
  self.readEthernetPhysicalChannelNetworkEndPoints(element, channel)
2824
3294
  channel.setSoAdConfig(self.getSoAdConfig(element, "SO-AD-CONFIG"))
2825
3295
  self.readEthernetPhysicalChannelVlan(element, channel)
2826
3296
 
3297
+ def readFlexrayPhysicalChannel(self, element: ET.Element, channel: FlexrayPhysicalChannel):
3298
+ self.readPhysicalChannel(element, channel)
3299
+ channel.setChannelName(self.getChildElementOptionalLiteral(element, "CHANNEL-NAME"))
3300
+
2827
3301
  def readCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
2828
3302
  for child_element in self.findall(element, "PHYSICAL-CHANNELS/*"):
2829
3303
  tag_name = self.getTagName(child_element)
@@ -2836,12 +3310,14 @@ class ARXMLParser(AbstractARXMLParser):
2836
3310
  elif tag_name == "ETHERNET-PHYSICAL-CHANNEL":
2837
3311
  channel = cluster.createEthernetPhysicalChannel(self.getShortName(child_element))
2838
3312
  self.readEthernetPhysicalChannel(child_element, channel)
3313
+ elif tag_name == "FLEXRAY-PHYSICAL-CHANNEL":
3314
+ channel = cluster.createFlexrayPhysicalChannel(self.getShortName(child_element))
3315
+ self.readFlexrayPhysicalChannel(child_element, channel)
2839
3316
  else:
2840
3317
  self.notImplemented("Unsupported Physical Channel <%s>" % tag_name)
2841
3318
 
2842
-
2843
3319
  def readCommunicationCluster(self, element: ET.Element, cluster: CommunicationCluster):
2844
- cluster.setBaudrate(self.getChildElementOptionalNumericalValue(element, "BAUDRATE"))
3320
+ cluster.setBaudrate(self.getChildElementOptionalNumericalValue(element, "BAUDRATE"))
2845
3321
  self.readCommunicationClusterPhysicalChannels(element, cluster)
2846
3322
  cluster.setProtocolName(self.getChildElementOptionalLiteral(element, "PROTOCOL-NAME")) \
2847
3323
  .setProtocolVersion(self.getChildElementOptionalLiteral(element, "PROTOCOL-VERSION"))
@@ -2857,6 +3333,7 @@ class ARXMLParser(AbstractARXMLParser):
2857
3333
  return recovery
2858
3334
 
2859
3335
  def readAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
3336
+ self.readCommunicationCluster(element, cluster)
2860
3337
  cluster.setBusOffRecovery(self.getCanClusterBusOffRecovery(element, "BUS-OFF-RECOVERY")) \
2861
3338
  .setCanFdBaudrate(self.getChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE")) \
2862
3339
  .setSpeed(self.getChildElementOptionalNumericalValue(element, "SPEED"))
@@ -2873,9 +3350,47 @@ class ARXMLParser(AbstractARXMLParser):
2873
3350
  self.readIdentifiable(element, cluster)
2874
3351
  child_element = self.find(element, "CAN-CLUSTER-VARIANTS/CAN-CLUSTER-CONDITIONAL")
2875
3352
  if child_element is not None:
2876
- self.readCommunicationCluster(child_element, cluster)
2877
3353
  self.readAbstractCanCluster(child_element, cluster)
2878
3354
 
3355
+ def readFlexrayCluster(self, element: ET.Element, cluster: FlexrayCluster):
3356
+ self.logger.debug("Read FlexrayCluster <%s>" % cluster.getShortName())
3357
+ self.readIdentifiable(element, cluster)
3358
+ child_element = self.find(element, "FLEXRAY-CLUSTER-VARIANTS/FLEXRAY-CLUSTER-CONDITIONAL")
3359
+ if child_element is not None:
3360
+ self.readCommunicationCluster(child_element, cluster)
3361
+ cluster.setActionPointOffset(self.getChildElementOptionalIntegerValue(child_element, "ACTION-POINT-OFFSET")) \
3362
+ .setBit(self.getChildElementOptionalTimeValue(child_element, "BIT")) \
3363
+ .setCasRxLowMax(self.getChildElementOptionalIntegerValue(child_element, "CAS-RX-LOW-MAX")) \
3364
+ .setColdStartAttempts(self.getChildElementOptionalIntegerValue(child_element, "COLD-START-ATTEMPTS")) \
3365
+ .setCycle(self.getChildElementOptionalTimeValue(child_element, "CYCLE")) \
3366
+ .setCycleCountMax(self.getChildElementOptionalIntegerValue(child_element, "CYCLE-COUNT-MAX")) \
3367
+ .setDetectNitError(self.getChildElementOptionalBooleanValue(child_element, "DETECT-NIT-ERROR")) \
3368
+ .setDynamicSlotIdlePhase(self.getChildElementOptionalIntegerValue(child_element, "DYNAMIC-SLOT-IDLE-PHASE")) \
3369
+ .setIgnoreAfterTx(self.getChildElementOptionalIntegerValue(child_element, "IGNORE-AFTER-TX")) \
3370
+ .setListenNoise(self.getChildElementOptionalIntegerValue(child_element, "LISTEN-NOISE")) \
3371
+ .setMacroPerCycle(self.getChildElementOptionalIntegerValue(child_element, "MACRO-PER-CYCLE")) \
3372
+ .setMacrotickDuration(self.getChildElementOptionalTimeValue(child_element, "MACROTICK-DURATION")) \
3373
+ .setMaxWithoutClockCorrectionFatal(self.getChildElementOptionalIntegerValue(child_element, "MAX-WITHOUT-CLOCK-CORRECTION-FATAL")) \
3374
+ .setMaxWithoutClockCorrectionPassive(self.getChildElementOptionalIntegerValue(child_element, "MAX-WITHOUT-CLOCK-CORRECTION-PASSIVE")) \
3375
+ .setMinislotActionPointOffset(self.getChildElementOptionalIntegerValue(child_element, "MINISLOT-ACTION-POINT-OFFSET")) \
3376
+ .setMinislotDuration(self.getChildElementOptionalIntegerValue(child_element, "MINISLOT-DURATION")) \
3377
+ .setNetworkIdleTime(self.getChildElementOptionalIntegerValue(child_element, "NETWORK-IDLE-TIME")) \
3378
+ .setNetworkManagementVectorLength(self.getChildElementOptionalIntegerValue(child_element, "NETWORK-MANAGEMENT-VECTOR-LENGTH")) \
3379
+ .setNumberOfMinislots(self.getChildElementOptionalIntegerValue(child_element, "NUMBER-OF-MINISLOTS")) \
3380
+ .setNumberOfStaticSlots(self.getChildElementOptionalIntegerValue(child_element, "NUMBER-OF-STATIC-SLOTS")) \
3381
+ .setOffsetCorrectionStart(self.getChildElementOptionalIntegerValue(child_element, "OFFSET-CORRECTION-START")) \
3382
+ .setPayloadLengthStatic(self.getChildElementOptionalIntegerValue(child_element, "PAYLOAD-LENGTH-STATIC")) \
3383
+ .setSafetyMargin(self.getChildElementOptionalIntegerValue(child_element, "SAFETY-MARGIN")) \
3384
+ .setSampleClockPeriod(self.getChildElementOptionalTimeValue(child_element, "SAMPLE-CLOCK-PERIOD")) \
3385
+ .setStaticSlotDuration(self.getChildElementOptionalIntegerValue(child_element, "STATIC-SLOT-DURATION")) \
3386
+ .setSyncFrameIdCountMax(self.getChildElementOptionalIntegerValue(child_element, "SYNC-FRAME-ID-COUNT-MAX")) \
3387
+ .setTransmissionStartSequenceDuration(self.getChildElementOptionalIntegerValue(child_element, "TRANSMISSION-START-SEQUENCE-DURATION")) \
3388
+ .setWakeupRxIdle(self.getChildElementOptionalIntegerValue(child_element, "WAKEUP-RX-IDLE")) \
3389
+ .setWakeupRxLow(self.getChildElementOptionalIntegerValue(child_element, "WAKEUP-RX-LOW")) \
3390
+ .setWakeupRxWindow(self.getChildElementOptionalIntegerValue(child_element, "WAKEUP-RX-WINDOW")) \
3391
+ .setWakeupTxActive(self.getChildElementOptionalIntegerValue(child_element, "WAKEUP-TX-ACTIVE")) \
3392
+ .setWakeupTxIdle(self.getChildElementOptionalIntegerValue(child_element, "WAKEUP-TX-IDLE")) # noqa E501
3393
+
2879
3394
  def readMacMulticastGroup(self, element: ET.Element, group: MacMulticastGroup):
2880
3395
  self.readIdentifiable(element, group)
2881
3396
  group.setMacMulticastAddress(self.getChildElementOptionalLiteral(element, "MAC-MULTICAST-ADDRESS",))
@@ -3082,6 +3597,53 @@ class ARXMLParser(AbstractARXMLParser):
3082
3597
  self.readDoIpTpConfigDoIpLogicAddresses(element, config)
3083
3598
  self.readDoIpTpConfigTpConnections(element, config)
3084
3599
 
3600
+ def readHwDescriptionEntityHwCategoryRefs(self, element: ET.Element, entity: HwDescriptionEntity):
3601
+ for ref in self.getChildElementRefTypeList(element, "HW-CATEGORY-REFS/HW-CATEGORY-REF"):
3602
+ entity.addHwCategoryRef(ref)
3603
+
3604
+ def readHwDescriptionEntity(self, element: ET.Element, entity: HwDescriptionEntity):
3605
+ self.readARElement(element, entity)
3606
+ self.readHwDescriptionEntityHwCategoryRefs(element, entity)
3607
+
3608
+ def readHwPinGroup(self, element: ET.SubElement, pin_group: HwPinGroup):
3609
+ self.readHwDescriptionEntity(element, pin_group)
3610
+
3611
+ def readHwElementHwPinGroups(self, element: ET.Element, hw_element: HwElement):
3612
+ for child_element in self.findall(element, "HW-PIN-GROUPS/*"):
3613
+ tag_name = self.getTagName(child_element)
3614
+ if tag_name == "HW-PIN-GROUP":
3615
+ pin_group = hw_element.createHwPinGroup(self.getShortName(child_element))
3616
+ self.readHwPinGroup(child_element, pin_group)
3617
+ else:
3618
+ self.notImplemented("Unsupported Hw Pin Group <%s>" % tag_name)
3619
+
3620
+ def readHwElement(self, element: ET.Element, hw_element: HwElement):
3621
+ self.logger.debug("Read HwElement <%s>" % hw_element.getShortName())
3622
+ self.readHwDescriptionEntity(element, hw_element)
3623
+ self.readHwElementHwPinGroups(element, hw_element)
3624
+
3625
+ def readHwAttributeDef(self, element: ET.Element, attribute_def: HwAttributeDef):
3626
+ self.readIdentifiable(element, attribute_def)
3627
+ attribute_def.setUnitRef(self.getChildElementOptionalRefType(element, "UNIT-REF"))
3628
+
3629
+ def readHwCategoryHwAttributeDef(self, element: ET.Element, hw_category: HwCategory):
3630
+ for child_element in self.findall(element, "HW-ATTRIBUTE-DEFS/*"):
3631
+ tag_name = self.getTagName(child_element)
3632
+ if tag_name == "HW-ATTRIBUTE-DEF":
3633
+ pin_group = hw_category.createHwAttributeDef(self.getShortName(child_element))
3634
+ self.readHwAttributeDef(child_element, pin_group)
3635
+ else:
3636
+ self.notImplemented("Unsupported Hw Attribute Defs <%s>" % tag_name)
3637
+
3638
+ def readHwCategory(self, element: ET.Element, hw_category: HwCategory):
3639
+ self.logger.debug("Read HwCategory <%s>" % hw_category.getShortName())
3640
+ self.readARElement(element, hw_category)
3641
+ self.readHwCategoryHwAttributeDef(element, hw_category)
3642
+
3643
+ def readHwType(self, element: ET.Element, type: HwType):
3644
+ self.logger.debug("Read HwType <%s>" % type.getShortName())
3645
+ self.readARElement(element, type)
3646
+
3085
3647
  def readPduToFrameMappings(self, element: ET.Element, parent: Frame):
3086
3648
  for child_element in self.findall(element, "PDU-TO-FRAME-MAPPINGS/PDU-TO-FRAME-MAPPING"):
3087
3649
  short_name = self.getShortName(child_element)
@@ -3153,7 +3715,7 @@ class ARXMLParser(AbstractARXMLParser):
3153
3715
  .setDataId(self.getChildElementOptionalPositiveInteger(child_element, "DATA-ID")) \
3154
3716
  .setFreshnessValueId(self.getChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-ID")) \
3155
3717
  .setFreshnessValueLength(self.getChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-LENGTH")) \
3156
- .setFreshnessValueTxLength(self.getChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-TX-LENGTH"))
3718
+ .setFreshnessValueTxLength(self.getChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-TX-LENGTH")) # NOQA E501
3157
3719
  return props
3158
3720
 
3159
3721
  def readSecuredIPdu(self, element: ET.Element, i_pdu: SecuredIPdu):
@@ -3176,7 +3738,6 @@ class ARXMLParser(AbstractARXMLParser):
3176
3738
  nm_node.addRxNmPduRef(ref)
3177
3739
  for ref in self.getChildElementRefTypeList(element, "TX-NM-PDU-REFS/TX-NM-PDU-REF"):
3178
3740
  nm_node.addTxNmPduRefs(ref)
3179
-
3180
3741
 
3181
3742
  def readCanNmNode(self, element: ET.Element, nm_node: CanNmNode):
3182
3743
  self.logger.debug("Read CanNmNode <%s>" % nm_node.getShortName())
@@ -3205,7 +3766,7 @@ class ARXMLParser(AbstractARXMLParser):
3205
3766
  self.notImplemented("Unsupported Nm Node <%s>" % tag_name)
3206
3767
 
3207
3768
  def getCanNmClusterCoupling(self, element: ET.Element) -> CanNmClusterCoupling:
3208
- coupling = CanNmClusterCoupling()
3769
+ coupling = CanNmClusterCoupling()
3209
3770
  for ref in self.getChildElementRefTypeList(element, "COUPLED-CLUSTER-REFS/COUPLED-CLUSTER-REF"):
3210
3771
  coupling.addCoupledClusterRef(ref)
3211
3772
  coupling.setNmBusloadReductionEnabled(self.getChildElementOptionalBooleanValue(element, "NM-BUSLOAD-REDUCTION-ENABLED")) \
@@ -3401,7 +3962,7 @@ class ARXMLParser(AbstractARXMLParser):
3401
3962
 
3402
3963
  def readCanTpEcu(self, element: ET.Element, tp_ecu: CanTpEcu):
3403
3964
  tp_ecu.setCycleTimeMainFunction(self.getChildElementOptionalTimeValue(element, "CYCLE-TIME-MAIN-FUNCTION")) \
3404
- .setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF"))
3965
+ .setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF"))
3405
3966
 
3406
3967
  def readCanTpConfigTpEcus(self, element: ET.Element, config: CanTpConfig):
3407
3968
  for child_element in self.findall(element, "TP-ECUS/*"):
@@ -3457,7 +4018,7 @@ class ARXMLParser(AbstractARXMLParser):
3457
4018
  self.readTpConnection(element, connection)
3458
4019
  connection.setDataPduRef(self.getChildElementOptionalRefType(element, "DATA-PDU-REF")) \
3459
4020
  .setFlowControlRef(self.getChildElementOptionalRefType(element, "FLOW-CONTROL-REF")) \
3460
- .setLinTpNSduRef(self.getChildElementOptionalRefType(element, "LIN-TP-N-SDU-REF"))
4021
+ .setLinTpNSduRef(self.getChildElementOptionalRefType(element, "LIN-TP-N-SDU-REF"))
3461
4022
  self.readTpConnectionReceiverRefs(element, connection)
3462
4023
  connection.setTimeoutAs(self.getChildElementOptionalTimeValue(element, "TIMEOUT-AS")) \
3463
4024
  .setTimeoutCr(self.getChildElementOptionalTimeValue(element, "TIMEOUT-CR")) \
@@ -3502,6 +4063,179 @@ class ARXMLParser(AbstractARXMLParser):
3502
4063
  self.logger.debug("Read CanFrame <%s>" % frame.getShortName())
3503
4064
  self.readFrame(element, frame)
3504
4065
 
4066
+ def readFlexrayFrame(self, element: ET.Element, frame: FlexrayFrame):
4067
+ self.logger.debug("Read FlexrayFrame <%s>" % frame.getShortName())
4068
+ self.readFrame(element, frame)
4069
+
4070
+ def readFlexrayCommunicationController(self, element: ET.Element, controller: FlexrayCommunicationController):
4071
+ self.logger.debug("Read CommunicationController <%s>" % controller.getShortName())
4072
+ self.readIdentifiable(element, controller)
4073
+ child_element = self.find(element, "FLEXRAY-COMMUNICATION-CONTROLLER-VARIANTS/FLEXRAY-COMMUNICATION-CONTROLLER-CONDITIONAL")
4074
+ if child_element is not None:
4075
+ self.readCommunicationController(element, controller)
4076
+ controller.setAcceptedStartupRange(self.getChildElementOptionalIntegerValue(child_element, "ACCEPTED-STARTUP-RANGE")) \
4077
+ .setAllowHaltDueToClock(self.getChildElementOptionalBooleanValue(child_element, "ALLOW-HALT-DUE-TO-CLOCK")) \
4078
+ .setAllowPassiveToActive(self.getChildElementOptionalIntegerValue(child_element, "ALLOW-PASSIVE-TO-ACTIVE")) \
4079
+ .setClusterDriftDamping(self.getChildElementOptionalIntegerValue(child_element, "CLUSTER-DRIFT-DAMPING")) \
4080
+ .setDecodingCorrection(self.getChildElementOptionalIntegerValue(child_element, "DECODING-CORRECTION")) \
4081
+ .setDelayCompensationA(self.getChildElementOptionalIntegerValue(child_element, "DELAY-COMPENSATION-A")) \
4082
+ .setDelayCompensationB(self.getChildElementOptionalIntegerValue(child_element, "DELAY-COMPENSATION-B")) \
4083
+ .setKeySlotOnlyEnabled(self.getChildElementOptionalBooleanValue(child_element, "KEY-SLOT-ONLY-ENABLED")) \
4084
+ .setKeySlotUsedForStartUp(self.getChildElementOptionalBooleanValue(child_element, "KEY-SLOT-USED-FOR-START-UP")) \
4085
+ .setKeySlotUsedForSync(self.getChildElementOptionalBooleanValue(child_element, "KEY-SLOT-USED-FOR-SYNC")) \
4086
+ .setLatestTX(self.getChildElementOptionalIntegerValue(child_element, "LATEST-TX")) \
4087
+ .setListenTimeout(self.getChildElementOptionalIntegerValue(child_element, "LISTEN-TIMEOUT")) \
4088
+ .setMacroInitialOffsetA(self.getChildElementOptionalIntegerValue(child_element, "MACRO-INITIAL-OFFSET-A")) \
4089
+ .setMacroInitialOffsetB(self.getChildElementOptionalIntegerValue(child_element, "MACRO-INITIAL-OFFSET-B")) \
4090
+ .setMaximumDynamicPayloadLength(self.getChildElementOptionalIntegerValue(child_element, "MAXIMUM-DYNAMIC-PAYLOAD-LENGTH")) \
4091
+ .setMicroInitialOffsetA(self.getChildElementOptionalIntegerValue(child_element, "MICRO-INITIAL-OFFSET-A")) \
4092
+ .setMicroInitialOffsetB(self.getChildElementOptionalIntegerValue(child_element, "MICRO-INITIAL-OFFSET-B")) \
4093
+ .setMicroPerCycle(self.getChildElementOptionalIntegerValue(child_element, "MICRO-PER-CYCLE")) \
4094
+ .setMicrotickDuration(self.getChildElementOptionalTimeValue(child_element, "MICROTICK-DURATION")) \
4095
+ .setOffsetCorrectionOut(self.getChildElementOptionalIntegerValue(child_element, "OFFSET-CORRECTION-OUT")) \
4096
+ .setRateCorrectionOut(self.getChildElementOptionalIntegerValue(child_element, "RATE-CORRECTION-OUT")) \
4097
+ .setSamplesPerMicrotick(self.getChildElementOptionalIntegerValue(child_element, "SAMPLES-PER-MICROTICK")) \
4098
+ .setWakeUpPattern(self.getChildElementOptionalIntegerValue(child_element, "WAKE-UP-PATTERN"))
4099
+
4100
+ def readDataTransformationTransformerChainRefs(self, element: ET.Element, dtf: DataTransformation):
4101
+ for ref in self.getChildElementRefTypeList(element, "TRANSFORMER-CHAIN-REFS/TRANSFORMER-CHAIN-REF"):
4102
+ dtf.addTransformerChainRef(ref)
4103
+
4104
+ def readDataTransformation(self, element: ET.Element, dtf: DataTransformation):
4105
+ self.readIdentifiable(element, dtf)
4106
+ dtf.setExecuteDespiteDataUnavailability(self.getChildElementOptionalBooleanValue(element, "EXECUTE-DESPITE-DATA-UNAVAILABILITY"))
4107
+ self.readDataTransformationTransformerChainRefs(element, dtf)
4108
+
4109
+ def readDataTransformationSetDataTransformations(self, element: ET.Element, dtf_set: DataTransformationSet):
4110
+ for child_element in self.findall(element, "DATA-TRANSFORMATIONS/*"):
4111
+ tag_name = self.getTagName(child_element)
4112
+ if tag_name == "DATA-TRANSFORMATION":
4113
+ dtf = dtf_set.createDataTransformation(self.getShortName(child_element))
4114
+ self.readDataTransformation(child_element, dtf)
4115
+ else:
4116
+ self.notImplemented("Unsupported DataTransformation <%s>" % tag_name)
4117
+
4118
+ def readBufferPropertiesBufferComputation(self, element: ET.Element, properties: BufferProperties):
4119
+ child_element = self.find(element, "BUFFER-COMPUTATION")
4120
+ if child_element is not None:
4121
+ scale = CompuScale()
4122
+ self.readCompuScale(child_element, scale)
4123
+ properties.setBufferComputation(scale)
4124
+
4125
+ def getBufferProperties(self, element: ET.Element, key: str) -> BufferProperties:
4126
+ properties = None
4127
+ child_element = self.find(element, key)
4128
+ if child_element is not None:
4129
+ properties = BufferProperties()
4130
+ self.readBufferPropertiesBufferComputation(child_element, properties)
4131
+ properties.setHeaderLength(self.getChildElementOptionalIntegerValue(child_element, "HEADER-LENGTH")) \
4132
+ .setInPlace(self.getChildElementOptionalBooleanValue(child_element, "IN-PLACE"))
4133
+ return properties
4134
+
4135
+ def readDescribable(self, element: ET.Element, desc: Describable):
4136
+ self.readARObjectAttributes(element, desc)
4137
+
4138
+ def readTransformationDescription(self, element: ET.Element, desc: TransformationDescription):
4139
+ self.readDescribable(element, desc)
4140
+
4141
+ def readEndToEndTransformationDescription(self, element: ET.Element, desc: EndToEndTransformationDescription):
4142
+ self.readTransformationDescription(element, desc)
4143
+ desc.setDataIdMode(self.getChildElementOptionalLiteral(element, "DATA-ID-MODE")) \
4144
+ .setMaxDeltaCounter(self.getChildElementOptionalPositiveInteger(element, "MAX-DELTA-COUNTER")) \
4145
+ .setMaxErrorStateInit(self.getChildElementOptionalPositiveInteger(element, "MAX-ERROR-STATE-INIT")) \
4146
+ .setMaxErrorStateInvalid(self.getChildElementOptionalPositiveInteger(element, "MAX-ERROR-STATE-INVALID")) \
4147
+ .setMaxErrorStateValid(self.getChildElementOptionalPositiveInteger(element, "MAX-ERROR-STATE-VALID")) \
4148
+ .setMaxNoNewOrRepeatedData(self.getChildElementOptionalPositiveInteger(element, "MAX-NO-NEW-OR-REPEATED-DATA")) \
4149
+ .setMinOkStateInit(self.getChildElementOptionalPositiveInteger(element, "MIN-OK-STATE-INIT")) \
4150
+ .setMinOkStateInvalid(self.getChildElementOptionalPositiveInteger(element, "MIN-OK-STATE-INVALID")) \
4151
+ .setMinOkStateValid(self.getChildElementOptionalPositiveInteger(element, "MIN-OK-STATE-VALID")) \
4152
+ .setProfileBehavior(self.getChildElementOptionalLiteral(element, "PROFILE-BEHAVIOR")) \
4153
+ .setProfileName(self.getChildElementOptionalLiteral(element, "PROFILE-NAME")) \
4154
+ .setSyncCounterInit(self.getChildElementOptionalPositiveInteger(element, "SYNC-COUNTER-INIT")) \
4155
+ .setUpperHeaderBitsToShift(self.getChildElementOptionalPositiveInteger(element, "UPPER-HEADER-BITS-TO-SHIFT")) \
4156
+ .setWindowSizeInit(self.getChildElementOptionalPositiveInteger(element, "WINDOW-SIZE-INIT")) \
4157
+ .setWindowSizeInvalid(self.getChildElementOptionalPositiveInteger(element, "WINDOW-SIZE-INVALID")) \
4158
+ .setWindowSizeValid(self.getChildElementOptionalPositiveInteger(element, "WINDOW-SIZE-VALID"))
4159
+
4160
+ def readTransformationTechnologyTransformationDescriptions(self, element: ET.Element, tech: TransformationTechnology):
4161
+ for child_element in self.findall(element, "TRANSFORMATION-DESCRIPTIONS/*"):
4162
+ tag_name = self.getTagName(child_element)
4163
+ if tag_name == "END-TO-END-TRANSFORMATION-DESCRIPTION":
4164
+ desc = EndToEndTransformationDescription()
4165
+ self.readEndToEndTransformationDescription(child_element, desc)
4166
+ tech.setTransformationDescription(desc)
4167
+ else:
4168
+ self.notImplemented("Unsupported TransformationDescription <%s>" % tag_name)
4169
+
4170
+ def readTransformationTechnology(self, element: ET.Element, tech: TransformationTechnology):
4171
+ self.readIdentifiable(element, tech)
4172
+ tech.setBufferProperties(self.getBufferProperties(element, "BUFFER-PROPERTIES")) \
4173
+ .setNeedsOriginalData(self.getChildElementOptionalBooleanValue(element, "NEEDS-ORIGINAL-DATA")) \
4174
+ .setProtocol(self.getChildElementOptionalLiteral(element, "PROTOCOL"))
4175
+ self.readTransformationTechnologyTransformationDescriptions(element, tech)
4176
+ tech.setTransformerClass(self.getChildElementOptionalLiteral(element, "TRANSFORMER-CLASS")) \
4177
+ .setVersion(self.getChildElementOptionalLiteral(element, "VERSION"))
4178
+
4179
+ def readDataTransformationSetTransformationTechnologies(self, element: ET.Element, dtf_set: DataTransformationSet):
4180
+ for child_element in self.findall(element, "TRANSFORMATION-TECHNOLOGYS/*"):
4181
+ tag_name = self.getTagName(child_element)
4182
+ if tag_name == "TRANSFORMATION-TECHNOLOGY":
4183
+ tech = dtf_set.createTransformationTechnology(self.getShortName(child_element))
4184
+ self.readTransformationTechnology(child_element, tech)
4185
+ else:
4186
+ self.notImplemented("Unsupported TransformationTechnology <%s>" % tag_name)
4187
+
4188
+ def readDataTransformationSet(self, element: ET.Element, dtf_set: DataTransformationSet):
4189
+ self.logger.debug("Read DataTransformationSet <%s>" % dtf_set.getShortName())
4190
+ self.readARElement(element, dtf_set)
4191
+ self.readDataTransformationSetDataTransformations(element, dtf_set)
4192
+ self.readDataTransformationSetTransformationTechnologies(element, dtf_set)
4193
+
4194
+ def readCollectionElementRefs(self, element: ET.Element, collection: Collection):
4195
+ for ref in self.getChildElementRefTypeList(element, "ELEMENT-REFS/ELEMENT-REF"):
4196
+ collection.addElementRef(ref)
4197
+
4198
+ def readCollectionSourceElementRefs(self, element: ET.Element, collection: Collection):
4199
+ for ref in self.getChildElementRefTypeList(element, "SOURCE-ELEMENT-REFS/SOURCE-ELEMENT-REF"):
4200
+ collection.addSourceElementRef(ref)
4201
+
4202
+ def readCollection(self, element: ET.Element, collection: Collection):
4203
+ self.logger.debug("Read Collection <%s>" % collection.getShortName())
4204
+ self.readARElement(element, collection)
4205
+ collection.setAutoCollect(self.getChildElementOptionalLiteral(element, "AUTO-COLLECT")) \
4206
+ .setElementRole(self.getChildElementOptionalLiteral(element, "ELEMENT-ROLE"))
4207
+ self.readCollectionElementRefs(element, collection)
4208
+ self.readCollectionSourceElementRefs(element, collection)
4209
+
4210
+ def readKeywordClassifications(self, element: ET.Element, keyword: Keyword):
4211
+ for literal in self.getChildElementLiteralValueList(element, "CLASSIFICATIONS/CLASSIFICATION"):
4212
+ keyword.addClassification(literal)
4213
+
4214
+ def readKeyword(self, element: ET.Element, keyword: Keyword):
4215
+ # self.logger.debug("Read Keyword <%s>" % keyword.getShortName())
4216
+ self.readIdentifiable(element, keyword)
4217
+ keyword.setAbbrName(self.getChildElementOptionalLiteral(element, "ABBR-NAME"))
4218
+ self.readKeywordClassifications(element, keyword)
4219
+
4220
+ def readKeywordSetKeywords(self, element: ET.Element, keyword_set: KeywordSet):
4221
+ for child_element in self.findall(element, "KEYWORDS/*"):
4222
+ tag_name = self.getTagName(child_element)
4223
+ if tag_name == "KEYWORD":
4224
+ tech = keyword_set.createKeyword(self.getShortName(child_element))
4225
+ self.readKeyword(child_element, tech)
4226
+ else:
4227
+ self.notImplemented("Unsupported Keyword <%s>" % tag_name)
4228
+
4229
+ def readKeywordSet(self, element: ET.Element, keyword_set: KeywordSet):
4230
+ self.logger.debug("Read KeywordSet <%s>" % keyword_set.getShortName())
4231
+ self.readARElement(element, keyword_set)
4232
+ self.readKeywordSetKeywords(element, keyword_set)
4233
+
4234
+ def readPortPrototypeBlueprint(self, element: ET.Element, blueprint: PortPrototypeBlueprint):
4235
+ self.logger.debug("Read PortPrototypeBlueprint <%s>" % blueprint.getShortName())
4236
+ self.readARElement(element, blueprint)
4237
+ blueprint.setInterfaceRef(self.getChildElementOptionalRefType(element, "INTERFACE-REF"))
4238
+
3505
4239
  def readCommunicationController(self, element: ET.Element, controller: CommunicationController):
3506
4240
  controller.setWakeUpByControllerSupported(self.getChildElementOptionalBooleanValue(element, "WAKE-UP-BY-CONTROLLER-SUPPORTED"))
3507
4241
 
@@ -3510,7 +4244,7 @@ class ARXMLParser(AbstractARXMLParser):
3510
4244
  child_element = self.find(element, key)
3511
4245
  if child_element is not None:
3512
4246
  configuration = CanControllerFdConfiguration()
3513
- #TODO: need to implemented
4247
+ # TODO: need to implemented
3514
4248
  return configuration
3515
4249
 
3516
4250
  def getCanControllerFdConfigurationRequirements(self, element: ET.Element, key: str) -> CanControllerFdConfigurationRequirements:
@@ -3526,7 +4260,7 @@ class ARXMLParser(AbstractARXMLParser):
3526
4260
  .setMinSamplePoint(self.getChildElementOptionalFloatValue(child_element, "MIN-SAMPLE-POINT")) \
3527
4261
  .setMinSyncJumpWidth(self.getChildElementOptionalFloatValue(child_element, "MIN-SYNC-JUMP-WIDTH")) \
3528
4262
  .setMinTrcvDelayCompensationOffset(self.getChildElementOptionalTimeValue(child_element, "MIN-TRCV-DELAY-COMPENSATION-OFFSET")) \
3529
- .setTxBitRateSwitch(self.getChildElementOptionalBooleanValue(child_element, "TX-BIT-RATE-SWITCH"))
4263
+ .setTxBitRateSwitch(self.getChildElementOptionalBooleanValue(child_element, "TX-BIT-RATE-SWITCH")) # NOQA E501
3530
4264
  return requirements
3531
4265
 
3532
4266
  def readAbstractCanCommunicationControllerAttributes(self, element: ET.Element, attributes: AbstractCanCommunicationControllerAttributes):
@@ -3616,9 +4350,9 @@ class ARXMLParser(AbstractARXMLParser):
3616
4350
  for child_element in self.findall(element, "VLAN-MEMBERSHIPS/*"):
3617
4351
  tag_name = self.getTagName(child_element)
3618
4352
  if tag_name == "VLAN-MEMBERSHIP":
3619
- membership = VlanMembership()
3620
- self.readVlanMembership(child_element, membership)
3621
- port.addVlanMembership(membership)
4353
+ membership = VlanMembership()
4354
+ self.readVlanMembership(child_element, membership)
4355
+ port.addVlanMembership(membership)
3622
4356
  else:
3623
4357
  self.notImplemented("Unsupported VlanMembership <%s>" % tag_name)
3624
4358
 
@@ -3657,7 +4391,6 @@ class ARXMLParser(AbstractARXMLParser):
3657
4391
  self.readLinCommunicationController(child_element, controller)
3658
4392
  controller.setTimeBase(self.getChildElementOptionalTimeValue(child_element, "TIME-BASE")) \
3659
4393
  .setTimeBaseJitter(self.getChildElementOptionalTimeValue(child_element, "TIME-BASE-JITTER"))
3660
-
3661
4394
 
3662
4395
  def readEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
3663
4396
  self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
@@ -3672,6 +4405,9 @@ class ARXMLParser(AbstractARXMLParser):
3672
4405
  elif tag_name == "LIN-MASTER":
3673
4406
  controller = instance.createLinMaster(self.getShortName(child_element))
3674
4407
  self.readLinMaster(child_element, controller)
4408
+ elif tag_name == "FLEXRAY-COMMUNICATION-CONTROLLER":
4409
+ controller = instance.createFlexrayCommunicationController(self.getShortName(child_element))
4410
+ self.readFlexrayCommunicationController(child_element, controller)
3675
4411
  else:
3676
4412
  self.raiseError("Unsupported Communication Controller <%s>" % tag_name)
3677
4413
 
@@ -3686,7 +4422,7 @@ class ARXMLParser(AbstractARXMLParser):
3686
4422
  self.readCommConnectorPort(element, port)
3687
4423
  port.setKeyId(self.getChildElementOptionalPositiveInteger(element, "KEY-ID")) \
3688
4424
  .setRxSecurityVerification(self.getChildElementOptionalBooleanValue(element, "RX-SECURITY-VERIFICATION")) \
3689
- .setUseAuthDataFreshness(self.getChildElementOptionalBooleanValue(element, "USE-AUTH-DATA-FRESHNESS")) \
4425
+ .setUseAuthDataFreshness(self.getChildElementOptionalBooleanValue(element, "USE-AUTH-DATA-FRESHNESS"))
3690
4426
 
3691
4427
  def readISignalPort(self, element: ET.Element, port: ISignalPort):
3692
4428
  self.readCommConnectorPort(element, port)
@@ -3706,7 +4442,7 @@ class ARXMLParser(AbstractARXMLParser):
3706
4442
  port = connector.createISignalPort(self.getShortName(child_element))
3707
4443
  self.readISignalPort(child_element, port)
3708
4444
  else:
3709
- self.raiseError("Unsupported EcuCommPortInstances <%s>" % tag_name)
4445
+ self.raiseError("Unsupported EcuCommPortInstances <%s>" % tag_name)
3710
4446
 
3711
4447
  def readCommunicationConnector(self, element: ET.Element, connector: CommunicationConnector):
3712
4448
  self.readIdentifiable(element, connector)
@@ -3729,6 +4465,9 @@ class ARXMLParser(AbstractARXMLParser):
3729
4465
  def readLinCommunicationConnector(self, element: ET.Element, connector: LinCommunicationConnector):
3730
4466
  self.readCommunicationConnector(element, connector)
3731
4467
 
4468
+ def readFlexrayCommunicationConnector(self, element: ET.Element, connector: FlexrayCommunicationConnector):
4469
+ self.readCommunicationConnector(element, connector)
4470
+
3732
4471
  def readEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
3733
4472
  self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
3734
4473
  for child_element in self.findall(element, "CONNECTORS/*"):
@@ -3742,6 +4481,9 @@ class ARXMLParser(AbstractARXMLParser):
3742
4481
  elif tag_name == "LIN-COMMUNICATION-CONNECTOR":
3743
4482
  connector = instance.createLinCommunicationConnector(self.getShortName(child_element))
3744
4483
  self.readLinCommunicationConnector(child_element, connector)
4484
+ elif tag_name == "FLEXRAY-COMMUNICATION-CONNECTOR":
4485
+ connector = instance.createFlexrayCommunicationConnector(self.getShortName(child_element))
4486
+ self.readFlexrayCommunicationConnector(child_element, connector)
3745
4487
  else:
3746
4488
  self.notImplemented("Unsupported Communication Connector <%s>" % tag_name)
3747
4489
 
@@ -3821,7 +4563,7 @@ class ARXMLParser(AbstractARXMLParser):
3821
4563
 
3822
4564
  def readEcucValueCollectionEcucValues(self, element: ET.Element, parent: EcucValueCollection):
3823
4565
  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")
4566
+ ref = self.getChildElementOptionalRefType(child_element, "ECUC-MODULE-CONFIGURATION-VALUES-REF")
3825
4567
  if (ref is not None):
3826
4568
  parent.addEcucValueRef(ref)
3827
4569
  self.logger.debug("EcucValue <%s> of EcucValueCollection <%s> has been added", ref.value, parent.getShortName())
@@ -3875,7 +4617,7 @@ class ARXMLParser(AbstractARXMLParser):
3875
4617
  child_element = self.find(element, key)
3876
4618
  if child_element is not None:
3877
4619
  instance_ref = AnyInstanceRef()
3878
- instance_ref.setBaseRef(self.getChildElementOptionalRefType(child_element, "BASE-REF"))
4620
+ instance_ref.setBaseRef(self.getChildElementOptionalRefType(child_element, "BASE-REF"))
3879
4621
  for ref in self.getChildElementRefTypeList(child_element, "CONTEXT-ELEMENT-REF"):
3880
4622
  instance_ref.addContextElementRef(ref)
3881
4623
  instance_ref.setTargetRef(self.getChildElementOptionalRefType(child_element, "TARGET-REF"))
@@ -3916,7 +4658,7 @@ class ARXMLParser(AbstractARXMLParser):
3916
4658
  if tag_name == "ECUC-CONTAINER-VALUE":
3917
4659
  self.readEcucContainerValueEcucContainerValue(child_element, parent)
3918
4660
  else:
3919
- self.notImplemented("Unsupported Sub Container %s" % tag_name)
4661
+ self.notImplemented("Unsupported Sub Container %s" % tag_name)
3920
4662
 
3921
4663
  def readEcucModuleConfigurationValuesEcucContainerValue(self, element: ET.Element, parent: EcucModuleConfigurationValues):
3922
4664
  short_name = self.getShortName(element)
@@ -3930,7 +4672,7 @@ class ARXMLParser(AbstractARXMLParser):
3930
4672
  if tag_name == "ECUC-CONTAINER-VALUE":
3931
4673
  self.readEcucModuleConfigurationValuesEcucContainerValue(child_element, values)
3932
4674
  else:
3933
- self.notImplemented("Unsupported Container %s" % tag_name)
4675
+ self.notImplemented("Unsupported Container %s" % tag_name)
3934
4676
 
3935
4677
  def readEcucModuleConfigurationValues(self, element: ET.Element, values: EcucModuleConfigurationValues):
3936
4678
  self.logger.debug("Read EcucModuleConfigurationValues %s" % values.getShortName())
@@ -3946,27 +4688,52 @@ class ARXMLParser(AbstractARXMLParser):
3946
4688
  dimension.setLengthExp(self.getChildElementOptionalNumericalValue(element, "LENGTH-EXP")) \
3947
4689
  .setLuminousIntensityExp(self.getChildElementOptionalNumericalValue(element, "LUMINOUS-INTENSITY-EXP")) \
3948
4690
  .setMassExp(self.getChildElementOptionalNumericalValue(element, "MASS-EXP")) \
4691
+ .setMolarAmountExp(self.getChildElementOptionalNumericalValue(element, "MOLAR-AMOUNT-EXP")) \
3949
4692
  .setTemperatureExp(self.getChildElementOptionalNumericalValue(element, "TEMPERATURE-EXP")) \
3950
4693
  .setTimeExp(self.getChildElementOptionalNumericalValue(element, "TIME-EXP")) \
3951
- .setCurrentExp(self.getChildElementOptionalNumericalValue(element, "CURRENT-EXP")) \
4694
+ .setCurrentExp(self.getChildElementOptionalNumericalValue(element, "CURRENT-EXP"))
3952
4695
 
3953
- '''
3954
- def getIPduMappings(self, element: ET.Element) -> List[IPduMapping]:
3955
- mappings = []
3956
- for child_element in self.findall(element, tag_name):
3957
- mapping = IPduMapping()
3958
- mapping.sourceIPduRef = self.getChildElementOptionalRefType(child_element, "SOURCE-IPDU-REF")
3959
- mapping.targetIPduRef = self.getChildElementOptionalRefType(child_element, "TARGET-IPDU-REF")
3960
- mappings.append(mapping)
3961
- return mappings
3962
- '''
4696
+ def readISignalGroupISignalRef(self, element: ET.Element, group: ISignalGroup):
4697
+ for ref_type in self.getChildElementRefTypeList(element, "I-SIGNAL-REFS/I-SIGNAL-REF"):
4698
+ group.addISignalRef(ref_type)
4699
+
4700
+ def readISignalGroupComBasedSignalGroupTransformation(self, element: ET.Element, group: ISignalGroup):
4701
+ for ref in self.getChildElementRefTypeList(element, "COM-BASED-SIGNAL-GROUP-TRANSFORMATIONS/DATA-TRANSFORMATION-REF-CONDITIONAL/DATA-TRANSFORMATION-REF"): # noqa E501
4702
+ group.addComBasedSignalGroupTransformationRef(ref)
4703
+
4704
+ def readTransformationISignalProps(self, element: ET.Element, props: TransformationISignalProps):
4705
+ self.readDescribable(element, props)
4706
+
4707
+ def readEndToEndTransformationISignalPropsDataIds(self, element: ET.Element, props: EndToEndTransformationISignalProps):
4708
+ child_element = self.find(element, "DATA-IDS")
4709
+ if child_element is not None:
4710
+ props.addDataId(self.getChildElementOptionalPositiveInteger(child_element, "DATA-ID"))
4711
+
4712
+ def readEndToEndTransformationISignalProps(self, element: ET.Element, props: EndToEndTransformationISignalProps):
4713
+ child_element = self.find(element, "END-TO-END-TRANSFORMATION-I-SIGNAL-PROPS-VARIANTS/END-TO-END-TRANSFORMATION-I-SIGNAL-PROPS-CONDITIONAL")
4714
+ if child_element is not None:
4715
+ self.readTransformationISignalProps(child_element, props)
4716
+ props.setTransformerRef(self.getChildElementOptionalRefType(child_element, "TRANSFORMER-REF"))
4717
+ self.readEndToEndTransformationISignalPropsDataIds(child_element, props)
4718
+ props.setDataLength(self.getChildElementOptionalPositiveInteger(child_element, "DATA-LENGTH"))
4719
+
4720
+ def readISignalGroupTransformationISignalProps(self, element: ET.Element, group: ISignalGroup):
4721
+ for child_element in self.findall(element, "TRANSFORMATION-I-SIGNAL-PROPSS/*"):
4722
+ tag_name = self.getTagName(child_element)
4723
+ if tag_name == "END-TO-END-TRANSFORMATION-I-SIGNAL-PROPS":
4724
+ props = EndToEndTransformationISignalProps()
4725
+ self.readEndToEndTransformationISignalProps(child_element, props)
4726
+ group.setTransformationISignalProps(props)
4727
+ else:
4728
+ self.notImplemented("Unsupported TransformationISignalProps %s" % tag_name)
3963
4729
 
3964
4730
  def readISignalGroup(self, element: ET.Element, group: ISignalGroup):
3965
4731
  self.logger.debug("Read ISignalGroup <%s>" % group.getShortName())
3966
4732
  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")
4733
+ self.readISignalGroupComBasedSignalGroupTransformation(element, group)
4734
+ self.readISignalGroupISignalRef(element, group)
4735
+ group.setSystemSignalGroupRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-GROUP-REF"))
4736
+ self.readISignalGroupTransformationISignalProps(element, group)
3970
4737
 
3971
4738
  def readSystemSignal(self, element: ET.Element, signal: SystemSignal):
3972
4739
  self.logger.debug("Read SystemSignal <%s>" % signal.getShortName())
@@ -3999,7 +4766,7 @@ class ARXMLParser(AbstractARXMLParser):
3999
4766
  filter = DataFilter()
4000
4767
  filter.setDataFilterType(self.getChildElementOptionalLiteral(child_element, "DATA-FILTER-TYPE")) \
4001
4768
  .setMask(self.getChildElementOptionalIntegerValue(child_element, "MASK")) \
4002
- .setX(self.getChildElementOptionalIntegerValue(child_element, "X"))
4769
+ .setX(self.getChildElementOptionalIntegerValue(child_element, "X"))
4003
4770
 
4004
4771
  return filter
4005
4772
 
@@ -4012,7 +4779,7 @@ class ARXMLParser(AbstractARXMLParser):
4012
4779
  .setISignalInIPduRef(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-IN-I-PDU-REF"))
4013
4780
  result.append(condition)
4014
4781
  return result
4015
-
4782
+
4016
4783
  def getTimeRangeType(self, element: ET.Element, key: str) -> TimeRangeType:
4017
4784
  time_range = None
4018
4785
  child_element = self.find(element, key)
@@ -4020,7 +4787,7 @@ class ARXMLParser(AbstractARXMLParser):
4020
4787
  time_range = TimeRangeType()
4021
4788
  time_range.setValue(self.getChildElementOptionalTimeValue(child_element, "VALUE"))
4022
4789
  return time_range
4023
-
4790
+
4024
4791
  def getCyclicTiming(self, element: ET.Element, key: str) -> CyclicTiming:
4025
4792
  timing = None
4026
4793
  child_element = self.find(element, key)
@@ -4052,7 +4819,7 @@ class ARXMLParser(AbstractARXMLParser):
4052
4819
  def getTransmissionModeDeclaration(self, element: ET.Element, key: str) -> TransmissionModeDeclaration:
4053
4820
  decl = None
4054
4821
  child_element = self.find(element, key)
4055
- if child_element != None:
4822
+ if child_element is not None:
4056
4823
  decl = TransmissionModeDeclaration()
4057
4824
  for condition in self.getTransmissionModeConditions(child_element, "TRANSMISSION-MODE-CONDITIONS/TRANSMISSION-MODE-CONDITION"):
4058
4825
  decl.addTransmissionModeCondition(condition)
@@ -4078,7 +4845,7 @@ class ARXMLParser(AbstractARXMLParser):
4078
4845
  ipdu.setUnusedBitPattern(self.getChildElementOptionalIntegerValue(element, "UNUSED-BIT-PATTERN"))
4079
4846
 
4080
4847
  def getISignalIPduRefs(self, element: ET.Element) -> List[RefType]:
4081
- ref_types = []
4848
+ ref_types = []
4082
4849
  for child_element in self.findall(element, "I-SIGNAL-I-PDUS/I-SIGNAL-I-PDU-REF-CONDITIONAL"):
4083
4850
  ref_types.append(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-I-PDU-REF"))
4084
4851
  return ref_types
@@ -4093,26 +4860,61 @@ class ARXMLParser(AbstractARXMLParser):
4093
4860
  for ref_type in self.getISignalIPduRefs(element):
4094
4861
  group.addISignalIPduRef(ref_type)
4095
4862
 
4096
- def getSenderReceiverToSignalMapping(self, element: ET.Element) -> SenderReceiverToSignalMapping:
4097
- mapping = SenderReceiverToSignalMapping()
4863
+ def readSenderReceiverToSignalMapping(self, element: ET.Element, mapping: SenderReceiverToSignalMapping):
4098
4864
  mapping.setCommunicationDirection(self.getChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION")) \
4099
4865
  .setDataElementIRef(self.getVariableDataPrototypeInSystemInstanceRef(self.find(element, "DATA-ELEMENT-IREF"))) \
4100
4866
  .setSystemSignalRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF"))
4101
- return mapping
4102
4867
 
4103
- def getSenderReceiverToSignalGroupMapping(self, element: ET.Element) -> SenderReceiverToSignalGroupMapping:
4104
- mapping = SenderReceiverToSignalGroupMapping()
4868
+ def readSenderRecCompositeTypeMapping(self, element: ET.Element, mapping: SenderRecCompositeTypeMapping):
4869
+ self.readARObjectAttributes(element, mapping)
4870
+
4871
+ def readSenderRecRecordElementMapping(self, element: ET.Element, mapping: SenderRecRecordElementMapping):
4872
+ self.readARObjectAttributes(element, mapping)
4873
+ mapping.setApplicationRecordElementRef(self.getChildElementOptionalRefType(element, "APPLICATION-RECORD-ELEMENT-REF")) \
4874
+ .setImplementationRecordElementRef(self.getChildElementOptionalRefType(element, "IMPLEMENTATION-RECORD-ELEMENT-REF")) \
4875
+ .setSystemSignalRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF"))
4876
+
4877
+ def readSenderRecArrayTypeMappingRecordElementMapping(self, element: ET.Element, mapping: SenderRecRecordTypeMapping):
4878
+ for child_element in self.findall(element, "RECORD-ELEMENT-MAPPINGS/*"):
4879
+ tag_name = self.getTagName(child_element)
4880
+ if tag_name == "SENDER-REC-RECORD-ELEMENT-MAPPING":
4881
+ record_element_mapping = SenderRecRecordElementMapping()
4882
+ self.readSenderRecRecordElementMapping(child_element, record_element_mapping)
4883
+ mapping.addRecordElementMapping(record_element_mapping)
4884
+ else:
4885
+ self.notImplemented("Unsupported RecordElementMapping %s" % tag_name)
4886
+
4887
+ def readSenderRecRecordTypeMapping(self, element: ET.Element, mapping: SenderRecRecordTypeMapping):
4888
+ self.readSenderRecCompositeTypeMapping(element, mapping)
4889
+ self.readSenderRecArrayTypeMappingRecordElementMapping(element, mapping)
4890
+
4891
+ def readSenderReceiverToSignalGroupMappingTypeMapping(self, element: ET.Element, mapping: SenderReceiverToSignalGroupMapping):
4892
+ child_element = self.find(element, "TYPE-MAPPING/*")
4893
+ if child_element is not None:
4894
+ tag_name = self.getTagName(child_element)
4895
+ if tag_name == "SENDER-REC-RECORD-TYPE-MAPPING":
4896
+ type_mapping = SenderRecRecordTypeMapping()
4897
+ self.readSenderRecRecordTypeMapping(child_element, type_mapping)
4898
+ mapping.setTypeMapping(type_mapping)
4899
+ else:
4900
+ self.notImplemented("Unsupported Type Mapping %s" % tag_name)
4901
+
4902
+ def readSenderReceiverToSignalGroupMapping(self, element: ET.Element, mapping: SenderReceiverToSignalGroupMapping):
4105
4903
  mapping.setDataElementIRef(self.getVariableDataPrototypeInSystemInstanceRef(self.find(element, "DATA-ELEMENT-IREF")))
4106
4904
  mapping.setSignalGroupRef(self.getChildElementOptionalRefType(element, "SIGNAL-GROUP-REF"))
4107
- return mapping
4108
-
4905
+ self.readSenderReceiverToSignalGroupMappingTypeMapping(element, mapping)
4906
+
4109
4907
  def readSystemMappingDataMappings(self, element: ET.Element, mapping: SystemMapping):
4110
4908
  for child_element in self.findall(element, "DATA-MAPPINGS/*"):
4111
4909
  tag_name = self.getTagName(child_element)
4112
4910
  if tag_name == "SENDER-RECEIVER-TO-SIGNAL-MAPPING":
4113
- mapping.addDataMapping(self.getSenderReceiverToSignalMapping(child_element))
4911
+ signal_mapping = SenderReceiverToSignalMapping()
4912
+ self.readSenderReceiverToSignalMapping(child_element, signal_mapping)
4913
+ mapping.addDataMapping(signal_mapping)
4114
4914
  elif tag_name == "SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING":
4115
- mapping.addDataMapping(self.getSenderReceiverToSignalGroupMapping(child_element))
4915
+ signal_group_mapping = SenderReceiverToSignalGroupMapping()
4916
+ self.readSenderReceiverToSignalGroupMapping(child_element, signal_group_mapping)
4917
+ mapping.addDataMapping(signal_group_mapping)
4116
4918
  else:
4117
4919
  self.notImplemented("Unsupported Data Mapping %s" % tag_name)
4118
4920
 
@@ -4122,7 +4924,7 @@ class ARXMLParser(AbstractARXMLParser):
4122
4924
  for child_element in self.findall(element, "COMPONENT-IREFS/COMPONENT-IREF"):
4123
4925
  mapping.addComponentIRef(self.getComponentInSystemInstanceRef(child_element))
4124
4926
  mapping.setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF"))
4125
-
4927
+
4126
4928
  def readSystemMappingSwMappings(self, element: ET.Element, mapping: SystemMapping):
4127
4929
  for child_element in self.findall(element, "SW-MAPPINGS/*"):
4128
4930
  tag_name = self.getTagName(child_element)
@@ -4135,7 +4937,7 @@ class ARXMLParser(AbstractARXMLParser):
4135
4937
  def readEcuMapping(self, element: ET.Element, mapping: ECUMapping):
4136
4938
  self.readIdentifiable(element, mapping)
4137
4939
  mapping.setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF")) \
4138
- .setEcuRef(self.getChildElementOptionalRefType(element, "ECU-REF"))
4940
+ .setEcuRef(self.getChildElementOptionalRefType(element, "ECU-REF"))
4139
4941
 
4140
4942
  def readSystemMappingEcuResourceMappings(self, element: ET.Element, mapping: SystemMapping):
4141
4943
  for child_element in self.findall(element, "ECU-RESOURCE-MAPPINGS/*"):
@@ -4177,7 +4979,7 @@ class ARXMLParser(AbstractARXMLParser):
4177
4979
  self.readSystemMapping(child_element, mapping)
4178
4980
  else:
4179
4981
  self.notImplemented("Unsupported Mapping %s" % tag_name)
4180
-
4982
+
4181
4983
  def readRootSwCompositionPrototype(self, element: ET.Element, system: System):
4182
4984
  child_element = self.find(element, "ROOT-SOFTWARE-COMPOSITIONS/ROOT-SW-COMPOSITION-PROTOTYPE")
4183
4985
  if child_element is not None:
@@ -4188,7 +4990,7 @@ class ARXMLParser(AbstractARXMLParser):
4188
4990
  prototype.setFlatMapRef(self.getChildElementOptionalRefType(child_element, "FLAT-MAP-REF")) \
4189
4991
  .setSoftwareCompositionTRef(self.getChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF"))
4190
4992
  AUTOSAR.getInstance().setRootSwCompositionPrototype(prototype)
4191
-
4993
+
4192
4994
  def readSystemFibexElementRefs(self, element: ET.Element, system: System):
4193
4995
  for ref in self.getChildElementRefTypeList(element, "FIBEX-ELEMENTS/FIBEX-ELEMENT-REF-CONDITIONAL/FIBEX-ELEMENT-REF"):
4194
4996
  system.addFibexElementRef(ref)
@@ -4207,9 +5009,42 @@ class ARXMLParser(AbstractARXMLParser):
4207
5009
  self.logger.debug("Read GenericEthernetFrame <%s>" % frame.getShortName())
4208
5010
  self.readFrame(element, frame)
4209
5011
 
5012
+ def getLifeCyclePeriod(self, element: ET.Element, key: str) -> LifeCyclePeriod:
5013
+ child_element = self.find(element, key)
5014
+ period = None
5015
+ if child_element is not None:
5016
+ period = LifeCyclePeriod()
5017
+ period.setArReleaseVersion(self.getChildElementOptionalRevisionLabelString(child_element, "AR-RELEASE-VERSION"))
5018
+ return period
5019
+
5020
+ def readLifeCycleInfoUseInsteadRefs(self, element: ET.Element, info: LifeCycleInfo):
5021
+ for ref in self.getChildElementRefTypeList(element, "USE-INSTEAD-REFS/USE-INSTEAD-REF"):
5022
+ info.addUseInsteadRef(ref)
5023
+
5024
+ def readLifeCycleInfo(self, element: ET.Element, info: LifeCycleInfo):
5025
+ self.readARObjectAttributes(element, info)
5026
+ info.setLcObjectRef(self.getChildElementOptionalRefType(element, "LC-OBJECT-REF")) \
5027
+ .setLcStateRef(self.getChildElementOptionalRefType(element, "LC-STATE-REF")) \
5028
+ .setPeriodBegin(self.getLifeCyclePeriod(element, "PERIOD-BEGIN")) \
5029
+ .setRemark(self.getDocumentationBlock(element, "REMARK"))
5030
+ self.readLifeCycleInfoUseInsteadRefs(element, info)
5031
+
5032
+ def readLifeCycleInfoSetLifeCycleInfos(self, element: ET.Element, info_set: LifeCycleInfoSet):
5033
+ for child_element in self.findall(element, "LIFE-CYCLE-INFOS/*"):
5034
+ tag_name = self.getTagName(child_element)
5035
+ if tag_name == "LIFE-CYCLE-INFO":
5036
+ info = LifeCycleInfo()
5037
+ self.readLifeCycleInfo(child_element, info)
5038
+ info_set.addLifeCycleInfo(info)
5039
+ else:
5040
+ self.notImplemented("Unsupported Life Cycle Info <%s>" % tag_name)
5041
+
4210
5042
  def readLifeCycleInfoSet(self, element: ET.Element, info_set: LifeCycleInfoSet):
4211
5043
  self.logger.debug("Read LifeCycleInfoSet <%s>" % info_set.getShortName())
4212
5044
  self.readIdentifiable(element, info_set)
5045
+ info_set.setDefaultLcStateRef(self.getChildElementOptionalRefType(element, "DEFAULT-LC-STATE-REF"))
5046
+ self.readLifeCycleInfoSetLifeCycleInfos(element, info_set)
5047
+ info_set.setUsedLifeCycleStateDefinitionGroupRef(self.getChildElementOptionalRefType(element, "USED-LIFE-CYCLE-STATE-DEFINITION-GROUP-REF"))
4213
5048
 
4214
5049
  def readFlatInstanceDescriptor(self, element: ET.Element, desc: FlatInstanceDescriptor):
4215
5050
  self.logger.debug("Read LifeCycleInfoSet %s" % desc.getShortName())
@@ -4240,18 +5075,40 @@ class ARXMLParser(AbstractARXMLParser):
4240
5075
  mappings.append(mapping)
4241
5076
  return mappings
4242
5077
 
4243
- def getVariableAndParameterInterfaceMapping(self, element: ET.Element, mapping: VariableAndParameterInterfaceMapping):
4244
- self.logger.debug("get VariableAndParameterInterfaceMapping %s" % mapping.getShortName())
5078
+ def readVariableAndParameterInterfaceMapping(self, element: ET.Element, mapping: VariableAndParameterInterfaceMapping):
5079
+ # self.logger.debug("Read VariableAndParameterInterfaceMapping %s" % mapping.getShortName())
4245
5080
  self.readIdentifiable(element, mapping)
4246
5081
  for item in self.getDataPrototypeMappings(element, "DATA-MAPPINGS"):
4247
5082
  mapping.addDataMapping(item)
4248
5083
 
5084
+ def readClientServerOperationMapping(self, element: ET.Element, mapping: ClientServerOperationMapping):
5085
+ mapping.setFirstOperationRef(self.getChildElementOptionalRefType(element, "FIRST-OPERATION-REF")) \
5086
+ .setSecondOperationRef(self.getChildElementOptionalRefType(element, "SECOND-OPERATION-REF"))
5087
+
5088
+ def readClientServerInterfaceMappingOperationMappings(self, element: ET.Element, mapping: ClientServerInterfaceMapping):
5089
+ for child_element in self.findall(element, "OPERATION-MAPPINGS/*"):
5090
+ tag_name = self.getTagName(child_element)
5091
+ if tag_name == "CLIENT-SERVER-OPERATION-MAPPING":
5092
+ operation_mapping = ClientServerOperationMapping()
5093
+ self.readClientServerOperationMapping(child_element, operation_mapping)
5094
+ mapping.addOperationMapping(operation_mapping)
5095
+ else:
5096
+ self.notImplemented("Unsupported Operation Mapping <%s>" % tag_name)
5097
+
5098
+ def readClientServerInterfaceMapping(self, element: ET.Element, mapping: ClientServerInterfaceMapping):
5099
+ # self.logger.debug("Read ClientServerInterfaceMapping %s" % mapping.getShortName())
5100
+ self.readIdentifiable(element, mapping)
5101
+ self.readClientServerInterfaceMappingOperationMappings(element, mapping)
5102
+
4249
5103
  def readPortInterfaceMappings(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
4250
5104
  for child_element in self.findall(element, "PORT-INTERFACE-MAPPINGS/*"):
4251
5105
  tag_name = self.getTagName(child_element)
4252
5106
  if tag_name == "VARIABLE-AND-PARAMETER-INTERFACE-MAPPING":
4253
5107
  mapping = mapping_set.createVariableAndParameterInterfaceMapping(self.getShortName(child_element))
4254
- self.getVariableAndParameterInterfaceMapping(child_element, mapping)
5108
+ self.readVariableAndParameterInterfaceMapping(child_element, mapping)
5109
+ elif tag_name == "CLIENT-SERVER-INTERFACE-MAPPING":
5110
+ mapping = mapping_set.createClientServerInterfaceMapping(self.getShortName(child_element))
5111
+ self.readClientServerInterfaceMapping(child_element, mapping)
4255
5112
  else:
4256
5113
  self.notImplemented("Unsupported PortInterfaceMapping <%s>" % tag_name)
4257
5114
 
@@ -4270,7 +5127,7 @@ class ARXMLParser(AbstractARXMLParser):
4270
5127
  type = parent.createComplexDeviceDriverSwComponentType(self.getShortName(child_element))
4271
5128
  self.readComplexDeviceDriverSwComponentType(child_element, type)
4272
5129
  elif tag_name == "SWC-IMPLEMENTATION":
4273
- impl = parent.createSwcImplementation(self.getShortName(child_element))
5130
+ impl = parent.createSwcImplementation(self.getShortName(child_element))
4274
5131
  self.readSwcImplementation(child_element, impl)
4275
5132
  elif tag_name == "APPLICATION-PRIMITIVE-DATA-TYPE":
4276
5133
  data_type = parent.createApplicationPrimitiveDataType(self.getShortName(child_element))
@@ -4309,7 +5166,7 @@ class ARXMLParser(AbstractARXMLParser):
4309
5166
  mapping = parent.createSwcBswMapping(self.getShortName(child_element))
4310
5167
  self.readSwcBswMapping(child_element, mapping)
4311
5168
  elif tag_name == "BSW-IMPLEMENTATION":
4312
- impl = parent.createBswImplementation(self.getShortName(child_element))
5169
+ impl = parent.createBswImplementation(self.getShortName(child_element))
4313
5170
  self.readBswImplementation(child_element, impl)
4314
5171
  elif tag_name == "IMPLEMENTATION-DATA-TYPE":
4315
5172
  data_type = parent.createImplementationDataType(self.getShortName(child_element))
@@ -4372,7 +5229,7 @@ class ARXMLParser(AbstractARXMLParser):
4372
5229
  i_pdu = parent.createSecuredIPdu(self.getShortName(child_element))
4373
5230
  self.readSecuredIPdu(child_element, i_pdu)
4374
5231
  elif tag_name == "NM-CONFIG":
4375
- config = parent.createNmConfig(self.getShortName(child_element))
5232
+ config = parent.createNmConfig(self.getShortName(child_element))
4376
5233
  self.readNmConfig(child_element, config)
4377
5234
  elif tag_name == "CAN-TP-CONFIG":
4378
5235
  config = parent.createCanTpConfig(self.getShortName(child_element))
@@ -4470,11 +5327,37 @@ class ARXMLParser(AbstractARXMLParser):
4470
5327
  elif tag_name == "DO-IP-TP-CONFIG":
4471
5328
  config = parent.createDoIpTpConfig(self.getShortName(child_element))
4472
5329
  self.readDoIpTpConfig(child_element, config)
5330
+ elif tag_name == "HW-ELEMENT":
5331
+ hw_element = parent.createHwElement(self.getShortName(child_element))
5332
+ self.readHwElement(child_element, hw_element)
5333
+ elif tag_name == "HW-CATEGORY":
5334
+ hw_category = parent.createHwCategory(self.getShortName(child_element))
5335
+ self.readHwCategory(child_element, hw_category)
5336
+ elif tag_name == "HW-TYPE":
5337
+ type = parent.createHwType(self.getShortName(child_element))
5338
+ self.readHwType(child_element, type)
5339
+ elif tag_name == "FLEXRAY-FRAME":
5340
+ frame = parent.createFlexrayFrame(self.getShortName(child_element))
5341
+ self.readFlexrayFrame(child_element, frame)
5342
+ elif tag_name == "FLEXRAY-CLUSTER":
5343
+ cluster = parent.createFlexrayCluster(self.getShortName(child_element))
5344
+ self.readFlexrayCluster(child_element, cluster)
5345
+ elif tag_name == "DATA-TRANSFORMATION-SET":
5346
+ transformation_set = parent.createDataTransformationSet(self.getShortName(child_element))
5347
+ self.readDataTransformationSet(child_element, transformation_set)
5348
+ elif tag_name == "COLLECTION":
5349
+ collection = parent.createCollection(self.getShortName(child_element))
5350
+ self.readCollection(child_element, collection)
5351
+ elif tag_name == "KEYWORD-SET":
5352
+ keyword_set = parent.createKeywordSet(self.getShortName(child_element))
5353
+ self.readKeywordSet(child_element, keyword_set)
5354
+ elif tag_name == "PORT-PROTOTYPE-BLUEPRINT":
5355
+ keyword_set = parent.createPortPrototypeBlueprint(self.getShortName(child_element))
5356
+ self.readPortPrototypeBlueprint(child_element, keyword_set)
4473
5357
  else:
4474
- self.notImplemented("Unsupported element type of ARPackage <%s>" % tag_name)
5358
+ self.notImplemented("Unsupported Element type of ARPackage <%s>" % tag_name)
4475
5359
 
4476
5360
  def readReferenceBases(self, element: ET.Element, parent: ARPackage):
4477
- self.logger.debug("Read ReferenceBases")
4478
5361
  for child_element in self.findall(element, "REFERENCE-BASES/REFERENCE-BASE"):
4479
5362
  base = ReferenceBase()
4480
5363
  base.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
@@ -4484,17 +5367,22 @@ class ARXMLParser(AbstractARXMLParser):
4484
5367
  .setPackageRef(self.getChildElementOptionalRefType(child_element, "PACKAGE-REF"))
4485
5368
  parent.addReferenceBase(base)
4486
5369
 
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)
5370
+ def readARPackage(self, element: ET.Element, ar_package: ARPackage):
5371
+ self.logger.debug("Read ARPackages %s" % ar_package.getFullName())
4491
5372
 
4492
- self.logger.debug("readARPackages %s" % ar_package.full_name)
5373
+ self.readIdentifiable(element, ar_package)
5374
+ self.readARPackages(element, ar_package)
5375
+ self.readARPackageElements(element, ar_package)
5376
+ self.readReferenceBases(element, ar_package)
4493
5377
 
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)
5378
+ def readARPackages(self, element: ET.Element, parent: ARPackage):
5379
+ for child_element in self.findall(element, "AR-PACKAGES/*"):
5380
+ tag_name = self.getTagName(child_element)
5381
+ if tag_name == "AR-PACKAGE":
5382
+ ar_package = parent.createARPackage(self.getShortName(child_element))
5383
+ self.readARPackage(child_element, ar_package)
5384
+ else:
5385
+ self.notImplemented("Unsupported ARPackage <%s>" % tag_name)
4498
5386
 
4499
5387
  def load(self, filename, document: AUTOSAR):
4500
5388
  self.logger.info("Loading %s ..." % os.path.realpath(filename))
@@ -4505,7 +5393,7 @@ class ARXMLParser(AbstractARXMLParser):
4505
5393
  self.raiseError("Invalid ARXML file <%s>" % filename)
4506
5394
 
4507
5395
  self.getAUTOSARInfo(root, document)
4508
- document.setAdminData(self.getAdminData(root, "ADMIN-DATA"))
5396
+ document.setAdminData(self.getAdminData(root, "ADMIN-DATA"))
4509
5397
  self.readARPackages(root, document)
4510
5398
 
4511
5399
  document.reload()