armodel 1.6.4__py3-none-any.whl → 1.7.1__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 (43) hide show
  1. armodel/cli/arxml_format_cli.py +14 -11
  2. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +50 -13
  3. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +1 -1
  4. armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +86 -0
  5. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +3 -4
  6. armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +1 -1
  7. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +95 -13
  8. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +14 -4
  9. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +103 -10
  10. armodel/models/M2/AUTOSARTemplates/GenericStructure/LifeCycles.py +5 -0
  11. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +21 -8
  12. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +24 -0
  13. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +1 -1
  14. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +173 -0
  15. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Multiplatform.py +1 -1
  16. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +6 -6
  17. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +237 -28
  18. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +223 -0
  19. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/Timing.py +177 -0
  20. armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +37 -0
  21. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +88 -16
  22. armodel/models/M2/MSR/AsamHdo/AdminData.py +34 -8
  23. armodel/models/M2/MSR/Documentation/Annotation.py +1 -1
  24. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/ListElements.py +54 -0
  25. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/PaginationAndView.py +9 -0
  26. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/__init__.py +25 -0
  27. armodel/models/M2/MSR/Documentation/TextModel/LanguageDataModel.py +33 -5
  28. armodel/models/M2/MSR/Documentation/TextModel/MultilanguageData.py +15 -2
  29. armodel/models/M2/MSR/Documentation/__init__.py +1 -1
  30. armodel/models/__init__.py +15 -2
  31. armodel/parser/abstract_arxml_parser.py +55 -18
  32. armodel/parser/arxml_parser.py +344 -101
  33. armodel/tests/test_armodel/models/test_ar_ref.py +7 -4
  34. armodel/tests/test_armodel/parser/test_sw_components.py +6 -19
  35. armodel/tests/test_armodel/parser/test_system.py +2 -2
  36. armodel/writer/abstract_arxml_writer.py +17 -8
  37. armodel/writer/arxml_writer.py +291 -78
  38. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/METADATA +23 -1
  39. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/RECORD +43 -35
  40. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/LICENSE +0 -0
  41. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/WHEEL +0 -0
  42. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/entry_points.txt +0 -0
  43. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/top_level.txt +0 -0
@@ -2,12 +2,12 @@ from typing import List
2
2
  import xml.etree.ElementTree as ET
3
3
  import os
4
4
 
5
- from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstrRule, InternalConstrs, PhysConstrs
6
- from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition
7
- from ..models.M2.MSR.AsamHdo.SpecialData import Sdg
8
5
  from ..models.M2.MSR.AsamHdo.AdminData import AdminData
9
- from ..models.M2.MSR.AsamHdo.ComputationMethod import Compu, CompuConst, CompuConstTextContent, CompuNominatorDenominator, CompuRationalCoeffs, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
10
- from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValues
6
+ from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition
7
+ from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstrRule, InternalConstrs, PhysConstrs, DataConstr
8
+ from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuMethod, Compu, CompuConst, CompuConstTextContent, CompuNominatorDenominator, CompuRationalCoeffs, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
9
+ from ..models.M2.MSR.AsamHdo.SpecialData import Sdg, Sd
10
+ from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValueCont, SwValues
11
11
  from ..models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps, SwPointerTargetProps
12
12
  from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxis
13
13
  from ..models.M2.MSR.DataDictionary.Axis import SwAxisGrouped, SwAxisIndividual
@@ -15,80 +15,68 @@ from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayoutGroupConte
15
15
  from ..models.M2.MSR.DataDictionary.DataDefProperties import ValueList
16
16
  from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayoutGroup
17
17
  from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxisSet
18
- from ..models.M2.MSR.Documentation.TextModel.LanguageDataModel import LLongName
19
- from ..models.M2.MSR.Documentation.BlockElements import DocumentationBlock
20
- from ..models.M2.MSR.Documentation.TextModel.LanguageDataModel import LOverviewParagraph
21
- from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultilanguageLongName
22
- from ..models.M2.MSR.Documentation.Annotation import GeneralAnnotation
18
+ from ..models.M2.MSR.Documentation.Annotation import Annotation, GeneralAnnotation
19
+ from ..models.M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
20
+ from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
21
+ from ..models.M2.MSR.Documentation.TextModel.LanguageDataModel import LLongName, LOverviewParagraph, LParagraph, LanguageSpecific
22
+ from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultiLanguagePlainText, MultilanguageLongName
23
23
 
24
- from ..models.M2.AUTOSARTemplates.CommonStructure import SwcInternalBehavior
25
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption, PortDefinedArgumentValue
26
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent
27
- from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import ExecutionOrderConstraint
28
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationCompositeDataType, ApplicationDataType, AutosarDataType, DataTypeMap, DataTypeMappingSet
29
- from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Code
30
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndDescription, EndToEndProtection, EndToEndProtectionVariablePrototype
31
- from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroup, ModeRequestTypeMap
32
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
24
+ from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
25
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalBehavior, BswModuleEntity, BswScheduleEvent, BswModeSenderPolicy
26
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
27
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
28
+ from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
29
+ from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
30
+ from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import ImplementationProps, Code
31
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroup, ModeRequestTypeMap, ModeDeclarationGroupPrototype
33
32
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
34
33
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.MemorySectionUsage import MemorySection
35
- from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity
36
- from ..models.M2.AUTOSARTemplates.CommonStructure.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet
34
+ from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity, InternalBehavior
37
35
  from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
38
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
39
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalBehavior, BswModuleEntity, BswScheduleEvent
40
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage
41
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
42
- from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import ImplementationProps
43
- from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
36
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import RoleBasedDataAssignment, ServiceDependency
37
+ from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
38
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
39
+ from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import ExecutionOrderConstraint
40
+ from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import TimingExtension
41
+ from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
44
42
  from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyInstanceRef
45
- from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType, ImplementationDataTypeElement
43
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable, MultilanguageReferrable
44
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
45
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage, ReferenceBase
46
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral
47
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption, PortDefinedArgumentValue
48
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent
49
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationRecordDataType, ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, AutosarDataType, DataTypeMap, DataTypeMappingSet
50
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet, EndToEndDescription, EndToEndProtection, EndToEndProtectionVariablePrototype
46
51
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef, ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
47
52
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
48
53
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef, AutosarVariableRef, VariableInAtomicSWCTypeInstanceRef
49
- from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import VariableDataPrototypeInSystemInstanceRef
54
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
55
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
50
56
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
51
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument
57
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument, SwcInternalBehavior
52
58
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import CompositionSwComponentType, PortGroup, SwComponentType, SymbolProps, PPortPrototype, RPortPrototype
53
59
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector
54
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import ModeAccessPoint
60
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet, ModeAccessPoint
55
61
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
62
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
56
63
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
57
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering
58
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanPhysicalChannel, CommunicationCluster, LinPhysicalChannel, PhysicalChannel
59
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrameTriggering, RxIdentifierRange
60
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import ISignalMapping
61
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import Frame, FrameTriggering, IPdu, ISignalIPdu, ISignalTriggering, PduTriggering
62
- from ..models.M2.AUTOSARTemplates.SystemTemplate import System, SystemMapping
63
- from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
64
- from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
65
- from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
66
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
67
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
68
- from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import TimingExtension
69
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswModeSenderPolicy
70
64
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerOperation, InvalidationPolicy, ModeSwitchInterface, ParameterInterface, PortInterface, SenderReceiverInterface
71
- from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroupPrototype
72
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
73
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import MultilanguageReferrable
74
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType
75
-
76
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet
77
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
78
- from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
79
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral
80
- from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import RoleBasedDataAssignment, ServiceDependency
81
65
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType
82
66
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationCompositeElementDataPrototype, AutosarDataPrototype, DataPrototype, ParameterDataPrototype, VariableDataPrototype
83
- from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
84
- from ..models.M2.MSR.Documentation.Annotation import Annotation
85
- from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstr
86
- from ..models.M2.MSR.AsamHdo.SpecialData import Sd
87
- from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuMethod
88
- from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValueCont
89
- from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
90
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
91
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationRecordDataType
67
+
68
+ from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping , System, SystemMapping
69
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
70
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
71
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
72
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering
73
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, FramePort, IPduPort, ISignalPort, LinPhysicalChannel, PhysicalChannel
74
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import Frame, FrameTriggering, IPdu, IPduTiming, ISignalIPdu, ISignalTriggering, PduTriggering
75
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
76
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
77
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrameTriggering, RxIdentifierRange
78
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
79
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import ISignalMapping
92
80
 
93
81
  from .abstract_arxml_parser import AbstractARXMLParser
94
82
 
@@ -126,13 +114,17 @@ class ARXMLParser(AbstractARXMLParser):
126
114
  for child_element in self.findall(element, "./SDGS/SDG"):
127
115
  admin_data.addSdg(self.getSdg(child_element))
128
116
 
129
- def readAdminData(self, element: ET.Element, identifiable: Identifiable):
130
- child_element = self.find(element, "./ADMIN-DATA")
117
+ def getAdminData(self, element: ET.Element, key: str) -> AdminData:
118
+ admin_data = None
119
+ child_element = self.find(element, key)
131
120
  if child_element is not None:
132
121
  self.logger.debug("readAdminData")
133
122
  admin_data = AdminData()
123
+ admin_data.setLanguage(self.getChildElementOptionalLiteral(child_element, "LANGUAGE")) \
124
+ .setUsedLanguages(self.getMultiLanguagePlainText(child_element, "USED-LANGUAGES"))
125
+
134
126
  self.readSdgs(child_element, admin_data)
135
- identifiable.setAdminData(admin_data)
127
+ return admin_data
136
128
 
137
129
  def readMultilanguageReferrable(self, element: ET.Element, referrable: MultilanguageReferrable):
138
130
  self.readElementAttributes(element, referrable)
@@ -145,9 +137,10 @@ class ARXMLParser(AbstractARXMLParser):
145
137
  identifiable.addAnnotation(annotation)
146
138
 
147
139
  identifiable.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY")) \
148
- .setDesc(self.getMultiLanguageOverviewParagraph(element, "DESC"))
140
+ .setDesc(self.getMultiLanguageOverviewParagraph(element, "DESC")) \
141
+ .setIntroduction(self.getDocumentationBlock(element, "INTRODUCTION"))
149
142
 
150
- self.readAdminData(element, identifiable)
143
+ identifiable.setAdminData(self.getAdminData(element, "ADMIN-DATA"))
151
144
 
152
145
  def readLLongName(self, element: ET.Element, long_name: MultilanguageLongName):
153
146
  for child_element in self.findall(element, "./L-4"):
@@ -186,29 +179,39 @@ class ARXMLParser(AbstractARXMLParser):
186
179
  return paragraph
187
180
 
188
181
  def getVariableInAtomicSWCTypeInstanceRef(self, element: ET.Element) -> VariableInAtomicSWCTypeInstanceRef:
189
- autosar_variable_iref = None
182
+ iref = None
183
+ if element is not None:
184
+ iref = VariableInAtomicSWCTypeInstanceRef()
185
+ self.readElementAttributes(element, iref)
186
+ iref.setPortPrototypeRef(self.getChildElementOptionalRefType(element, "PORT-PROTOTYPE-REF"))
187
+ iref.setTargetDataPrototypeRef(self.getChildElementOptionalRefType(element, "TARGET-DATA-PROTOTYPE-REF"))
188
+ return iref
189
+
190
+ def getComponentInSystemInstanceRef(self, element: ET.Element) -> ComponentInSystemInstanceRef:
191
+ iref = None
190
192
  if element is not None:
191
- autosar_variable_iref = VariableInAtomicSWCTypeInstanceRef()
192
- self.readElementAttributes(element, autosar_variable_iref)
193
- autosar_variable_iref.setPortPrototypeRef(self.getChildElementOptionalRefType(element, "PORT-PROTOTYPE-REF"))
194
- autosar_variable_iref.setTargetDataPrototypeRef(self.getChildElementOptionalRefType(element, "TARGET-DATA-PROTOTYPE-REF"))
195
- return autosar_variable_iref
193
+ iref = ComponentInSystemInstanceRef()
194
+ self.readElementAttributes(element, iref)
195
+ iref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF"))
196
+ iref.setContextCompositionRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPOSITION-REF"))
197
+ iref.setTargetComponentRef(self.getChildElementOptionalRefType(element, "TARGET-COMPONENT-REF"))
198
+ return iref
196
199
 
197
200
  def getAutosarVariableInImplDatatype(self, element: ET.Element) -> AutosarVariableRef:
198
201
  child_element = self.find(element, "ACCESSED-VARIABLE")
199
- accessed_variable_ref = None
202
+ ref = None
200
203
  if (child_element is not None):
201
- accessed_variable_ref = AutosarVariableRef()
202
- accessed_variable_ref.setAutosarVariableIRef(self.getVariableInAtomicSWCTypeInstanceRef(self.find(child_element, "AUTOSAR-VARIABLE-IREF")))
203
- return accessed_variable_ref
204
+ ref = AutosarVariableRef()
205
+ ref.setAutosarVariableIRef(self.getVariableInAtomicSWCTypeInstanceRef(self.find(child_element, "AUTOSAR-VARIABLE-IREF")))
206
+ return ref
204
207
 
205
208
  def getLocalVariableRef(self, element: ET.Element) -> AutosarVariableRef:
206
209
  child_element = self.find(element, "ACCESSED-VARIABLE")
207
- accessed_variable_ref = None
210
+ ref = None
208
211
  if (child_element is not None):
209
- accessed_variable_ref = AutosarVariableRef()
210
- accessed_variable_ref.setLocalVariableRef(self.getChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF"))
211
- return accessed_variable_ref
212
+ ref = AutosarVariableRef()
213
+ ref.setLocalVariableRef(self.getChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF"))
214
+ return ref
212
215
 
213
216
  def _readVariableAccesses(self, element: ET.Element, parent: RunnableEntity, key: str):
214
217
  for child_element in element.findall("./xmlns:%s/xmlns:VARIABLE-ACCESS" % key, self.nsmap):
@@ -932,33 +935,84 @@ class ARXMLParser(AbstractARXMLParser):
932
935
  sw_pointer_target_props.sw_data_def_props = self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")
933
936
  parent.swPointerTargetProps = sw_pointer_target_props
934
937
 
935
- def readLParagraph(self, element: ET.Element, paragraph: MultiLanguageParagraph):
936
- for child_element in self.findall(element, "./L-1"):
937
- l1 = LOverviewParagraph()
938
- self.readElementAttributes(child_element, l1)
939
- l1.value = child_element.text
940
- if 'L' in child_element.attrib:
941
- l1.l = child_element.attrib['L']
942
- paragraph.addL1(l1)
938
+ def readLanguageSpecific(self, element: ET.Element, specific: LanguageSpecific):
939
+ self.readElementAttributes(element, specific)
940
+ specific.value = element.text
941
+ if 'L' in element.attrib:
942
+ specific.l = element.attrib['L']
943
+
944
+ def getLParagraphs(self, element: ET.Element, key: str) -> List[LParagraph]:
945
+ results = []
946
+ for child_element in self.findall(element, key):
947
+ l1 = LParagraph()
948
+ self.readLanguageSpecific(child_element, l1)
949
+ results.append(l1)
950
+ return results
943
951
 
944
952
  def getMultiLanguageParagraphs(self, element: ET.Element, key: str) -> List[MultiLanguageParagraph]:
945
953
  paragraphs = []
946
954
  for child_element in self.findall(element, key):
947
955
  paragraph = MultiLanguageParagraph()
948
956
  self.readElementAttributes(child_element, paragraph)
949
- self.readLParagraph(child_element, paragraph)
957
+ for l1 in self.getLParagraphs(child_element, "L-1"):
958
+ paragraph.addL1(l1)
950
959
  paragraphs.append(paragraph)
951
960
  return paragraphs
961
+
962
+ def getLPlainTexts(self, element: ET.Element, key: str) -> List[LParagraph]:
963
+ results = []
964
+ for child_element in self.findall(element, key):
965
+ l1 = LParagraph()
966
+ self.readLanguageSpecific(child_element, l1)
967
+ results.append(l1)
968
+ return results
969
+
970
+ def getListElements(self, element: ET.Element, key: str) -> List[ListElement]:
971
+ '''
972
+ Read the DocumentationBlock List
973
+ '''
974
+ result = []
975
+ for child_element in self.findall(element, key):
976
+ list = ListElement()
977
+ if 'TYPE' in child_element.attrib:
978
+ list.setType(child_element.attrib['TYPE'])
979
+ for block in self.getDocumentationBlockList(child_element, "ITEM"):
980
+ list.addItem(block)
981
+ result.append(list)
982
+ return result
983
+
984
+ def getMultiLanguagePlainText(self, element: ET.Element, key: str) -> MultiLanguagePlainText:
985
+ paragraph = None
986
+ child_element = self.find(element, key)
987
+ if child_element is not None:
988
+ paragraph = MultiLanguagePlainText()
989
+ self.readElementAttributes(child_element, paragraph)
990
+ for l10 in self.getLPlainTexts(child_element, "L-10"):
991
+ paragraph.addL10(l10)
992
+ return paragraph
993
+
994
+ def readDocumentationBlock(self, element: ET.Element, block: DocumentationBlock):
995
+ self.readElementAttributes(element, block)
996
+ for paragraph in self.getMultiLanguageParagraphs(element, "P"):
997
+ block.addP(paragraph)
998
+ for list in self.getListElements(element, "LIST"):
999
+ block.addList(list)
952
1000
 
953
1001
  def getDocumentationBlock(self, element: ET.Element, key: str) -> DocumentationBlock:
954
1002
  block = None
955
1003
  child_element = self.find(element, key)
956
1004
  if child_element is not None:
957
1005
  block = DocumentationBlock()
958
- self.readElementAttributes(child_element, block)
959
- for paragraph in self.getMultiLanguageParagraphs(child_element, "P"):
960
- block.addP(paragraph)
1006
+ self.readDocumentationBlock(child_element, block)
961
1007
  return block
1008
+
1009
+ def getDocumentationBlockList(self, element: ET.Element, key: str) -> List[DocumentationBlock]:
1010
+ blocks = []
1011
+ for child_element in self.findall(element, key):
1012
+ block = DocumentationBlock()
1013
+ self.readDocumentationBlock(child_element, block)
1014
+ blocks.append(block)
1015
+ return blocks
962
1016
 
963
1017
  def readGeneralAnnotation(self, element: ET.Element, annotation: GeneralAnnotation):
964
1018
  annotation.setAnnotationOrigin(self.getChildElementOptionalLiteral(element, 'ANNOTATION-ORIGIN')) \
@@ -1030,6 +1084,7 @@ class ARXMLParser(AbstractARXMLParser):
1030
1084
  .setDataConstrRef(self.getChildElementOptionalRefType(conditional_tag, "DATA-CONSTR-REF")) \
1031
1085
  .setCompuMethodRef(self.getChildElementOptionalRefType(conditional_tag, "COMPU-METHOD-REF")) \
1032
1086
  .setSwImplPolicy(self.getChildElementOptionalLiteral(conditional_tag, "SW-IMPL-POLICY")) \
1087
+ .setSwIntendedResolution(self.getChildElementOptionalNumericalValue(conditional_tag, "SW-INTENDED-RESOLUTION")) \
1033
1088
  .setImplementationDataTypeRef(self.getChildElementOptionalRefType(conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF")) \
1034
1089
  .setSwCalibrationAccess(self.getChildElementOptionalLiteral(conditional_tag, "SW-CALIBRATION-ACCESS")) \
1035
1090
  .setSwCalprmAxisSet(self.getSwCalprmAxisSet(conditional_tag, "SW-CALPRM-AXIS-SET")) \
@@ -2148,7 +2203,8 @@ class ARXMLParser(AbstractARXMLParser):
2148
2203
  .setProtocolVersion(self.getChildElementOptionalLiteral(element, "PROTOCOL-VERSION"))
2149
2204
 
2150
2205
  def readAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
2151
- cluster.setCanFdBaudrate(self.getChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE"))
2206
+ cluster.setCanFdBaudrate(self.getChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE")) \
2207
+ .setSpeed(self.getChildElementOptionalNumericalValue(element, "SPEED"))
2152
2208
 
2153
2209
  def readLinCluster(self, element: ET.Element, parent: ARPackage):
2154
2210
  short_name = self.getShortName(element)
@@ -2318,21 +2374,90 @@ class ARXMLParser(AbstractARXMLParser):
2318
2374
 
2319
2375
  def readCanTpConfig(self, element: ET.Element, parent: ARPackage):
2320
2376
  short_name = self.getShortName(element)
2321
- self.logger.debug("CanTpConfig %s" % short_name)
2377
+ self.logger.debug("read CanTpConfig %s" % short_name)
2322
2378
  pdu = parent.createCanTpConfig(short_name)
2323
2379
  self.readIdentifiable(element, pdu)
2324
2380
 
2325
2381
  def readCanFrame(self, element: ET.Element, parent: ARPackage):
2326
2382
  short_name = self.getShortName(element)
2327
- self.logger.debug("CanFrame %s" % short_name)
2383
+ self.logger.debug("read CanFrame %s" % short_name)
2328
2384
  frame = parent.createCanFrame(short_name)
2329
2385
  self.readFrame(element, frame)
2330
2386
 
2387
+ def readCanCommunicationController(self, element: ET.Element, controller: CanCommunicationController):
2388
+ self.logger.debug("read CanCommunicationController %s" % controller.getShortName())
2389
+ self.readIdentifiable(element, controller)
2390
+
2391
+ def readEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
2392
+ self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
2393
+ for child_element in self.findall(element, "COMM-CONTROLLERS/*"):
2394
+ tag_name = self.getTagName(child_element)
2395
+ if tag_name == "CAN-COMMUNICATION-CONTROLLER":
2396
+ controller = instance.createCanCommunicationController(self.getShortName(child_element))
2397
+ self.readCanCommunicationController(child_element, controller)
2398
+ else:
2399
+ self._raiseError("Unsupported Communication Controller <%s>" % tag_name)
2400
+
2401
+ def readCommConnectorPort(self, element: ET.Element, port: CommConnectorPort):
2402
+ self.readIdentifiable(element, port)
2403
+ port.setCommunicationDirection(self.getChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION"))
2404
+
2405
+ def readFramePort(self, element: ET.Element, port: FramePort):
2406
+ self.readCommConnectorPort(element, port)
2407
+
2408
+ def readIPduPort(self, element: ET.Element, port: IPduPort):
2409
+ self.readCommConnectorPort(element, port)
2410
+
2411
+ def readISignalPort(self, element: ET.Element, port: ISignalPort):
2412
+ self.readCommConnectorPort(element, port)
2413
+
2414
+ def readCommunicationConnectorEcuCommPortInstances(self, element: ET.Element, connector: CommunicationConnector):
2415
+ self.logger.debug("read EcuCommPortInstances of CommunicationConnector %s" % connector.getShortName())
2416
+ for child_element in self.findall(element, "ECU-COMM-PORT-INSTANCES/*"):
2417
+ tag_name = self.getTagName(child_element)
2418
+ if tag_name == "FRAME-PORT":
2419
+ port = connector.createFramePort(self.getShortName(child_element))
2420
+ self.readFramePort(child_element, port)
2421
+ elif tag_name == "I-PDU-PORT":
2422
+ port = connector.createIPduPort(self.getShortName(child_element))
2423
+ self.readIPduPort(child_element, port)
2424
+ elif tag_name == "I-SIGNAL-PORT":
2425
+ port = connector.createISignalPort(self.getShortName(child_element))
2426
+ self.readISignalPort(child_element, port)
2427
+ else:
2428
+ self._raiseError("Unsupported EcuCommPortInstances <%s>" % tag_name)
2429
+
2430
+ def readCommunicationConnector(self, element: ET.Element, connector: CommunicationConnector):
2431
+ self.readIdentifiable(element, connector)
2432
+ connector.setCommControllerRef(self.getChildElementOptionalRefType(element, "COMM-CONTROLLER-REF"))
2433
+ self.readCommunicationConnectorEcuCommPortInstances(element, connector)
2434
+
2435
+ def readCanCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
2436
+ self.readCommunicationConnector(element, connector)
2437
+
2438
+ def readEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
2439
+ self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
2440
+ for child_element in self.findall(element, "CONNECTORS/*"):
2441
+ tag_name = self.getTagName(child_element)
2442
+ if tag_name == "CAN-COMMUNICATION-CONNECTOR":
2443
+ connector = instance.createCanCommunicationConnector(self.getShortName(child_element))
2444
+ self.readCanCommunicationConnector(child_element, connector)
2445
+ else:
2446
+ self._raiseError("Unsupported Communication Controller <%s>" % tag_name)
2447
+
2331
2448
  def readEcuInstance(self, element: ET.Element, parent: ARPackage):
2332
2449
  short_name = self.getShortName(element)
2333
2450
  self.logger.debug("EcuInstance %s" % short_name)
2334
2451
  instance = parent.createEcuInstance(short_name)
2335
2452
  self.readIdentifiable(element, instance)
2453
+ instance.setComConfigurationGwTimeBase(self.getChildElementOptionalTimeValue(element, "COM-CONFIGURATION-GW-TIME-BASE")) \
2454
+ .setComConfigurationRxTimeBase(self.getChildElementOptionalTimeValue(element, "COM-CONFIGURATION-RX-TIME-BASE")) \
2455
+ .setComConfigurationTxTimeBase(self.getChildElementOptionalTimeValue(element, "COM-CONFIGURATION-TX-TIME-BASE")) \
2456
+ .setComEnableMDTForCyclicTransmission(self.getChildElementOptionalBooleanValue(element, "COM-ENABLE-MDT-FOR-CYCLIC-TRANSMISSION"))
2457
+ self.readEcuInstanceCommControllers(element, instance)
2458
+ self.readEcuInstanceConnectors(element, instance)
2459
+ instance.setSleepModeSupported(self.getChildElementOptionalBooleanValue(element, "SLEEP-MODE-SUPPORTED")) \
2460
+ .setWakeUpOverBusSupported(self.getChildElementOptionalBooleanValue(element, "WAKE-UP-OVER-BUS-SUPPORTED"))
2336
2461
 
2337
2462
  '''
2338
2463
  def getFrameMappings(self, element: ET.Element) -> List[FrameMapping]:
@@ -2563,13 +2688,84 @@ class ARXMLParser(AbstractARXMLParser):
2563
2688
  .setStartPosition(self.getChildElementOptionalNumericalValue(child_element, "START-POSITION")) \
2564
2689
  .setTransferProperty(self.getChildElementOptionalLiteral(child_element, "TRANSFER-PROPERTY")) \
2565
2690
  .setUpdateIndicationBitPosition(self.getChildElementOptionalNumericalValue(child_element, "UPDATE-INDICATION-BIT-POSITION"))
2691
+
2692
+ def getDataFilter(self, element: ET.Element, key: str) -> DataFilter:
2693
+ filter = None
2694
+ child_element = self.find(element, key)
2695
+ if child_element is not None:
2696
+ filter = DataFilter()
2697
+ filter.setDataFilterType(self.getChildElementOptionalLiteral(child_element, "DATA-FILTER-TYPE"))
2698
+ return filter
2699
+
2700
+ def getTransmissionModeConditions(self, element: ET.Element, key: str) -> List[TransmissionModeCondition]:
2701
+ result = []
2702
+ child_elements = self.findall(element, key)
2703
+ for child_element in child_elements:
2704
+ condition = TransmissionModeCondition()
2705
+ condition.setDataFilter(self.getDataFilter(child_element, "DATA-FILTER")) \
2706
+ .setISignalInIPduRef(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-IN-I-PDU-REF"))
2707
+ result.append(condition)
2708
+ return result
2709
+
2710
+ def getTimeRangeType(self, element: ET.Element, key: str) -> TimeRangeType:
2711
+ time_range = None
2712
+ child_element = self.find(element, key)
2713
+ if child_element is not None:
2714
+ time_range = TimeRangeType()
2715
+ time_range.setValue(self.getChildElementOptionalTimeValue(child_element, "VALUE"))
2716
+ return time_range
2717
+
2718
+ def getCyclicTiming(self, element: ET.Element, key: str) -> CyclicTiming:
2719
+ timing = None
2720
+ child_element = self.find(element, key)
2721
+ if child_element is not None:
2722
+ timing = CyclicTiming()
2723
+ return timing
2724
+
2725
+ def getEventControlledTiming(self, element: ET.Element, key: str) -> EventControlledTiming:
2726
+ timing = None
2727
+ child_element = self.find(element, key)
2728
+ if child_element is not None:
2729
+ timing = EventControlledTiming()
2730
+ timing.setNumberOfRepetitions(self.getChildElementOptionalIntegerValue(child_element, "NUMBER-OF-REPETITIONS"))
2731
+ timing.setRepetitionPeriod(self.getTimeRangeType(child_element, "REPETITION-PERIOD"))
2732
+ return timing
2733
+
2734
+ def getTransmissionModeTiming(self, element: ET.Element, key: str) -> TransmissionModeTiming:
2735
+ timing = None
2736
+ child_element = self.find(element, key)
2737
+ if child_element is not None:
2738
+ self.logger.debug("Get TransmissionModeTiming of <%s>" % key)
2739
+ timing = TransmissionModeTiming()
2740
+ #timing.getCyclicTiming(child_element, "")
2741
+ timing.setEventControlledTiming(self.getEventControlledTiming(child_element, "EVENT-CONTROLLED-TIMING"))
2742
+ return timing
2743
+
2744
+ def getTransmissionModeDeclaration(self, element: ET.Element, key: str) -> TransmissionModeDeclaration:
2745
+ decl = None
2746
+ child_element = self.find(element, key)
2747
+ if child_element != None:
2748
+ decl = TransmissionModeDeclaration()
2749
+ for condition in self.getTransmissionModeConditions(child_element, "TRANSMISSION-MODE-CONDITIONS/TRANSMISSION-MODE-CONDITION"):
2750
+ decl.addTransmissionModeCondition(condition)
2751
+ decl.setTransmissionModeTrueTiming(self.getTransmissionModeTiming(child_element, "TRANSMISSION-MODE-TRUE-TIMING"))
2752
+ return decl
2753
+
2754
+ def getISignalIPduIPduTimingSpecification(self, element: ET.Element) -> IPduTiming:
2755
+ timing = None
2756
+ child_element = self.find(element, "I-PDU-TIMING-SPECIFICATIONS/I-PDU-TIMING")
2757
+ if child_element is not None:
2758
+ timing = IPduTiming()
2759
+ timing.setTransmissionModeDeclaration(self.getTransmissionModeDeclaration(child_element, "TRANSMISSION-MODE-DECLARATION"))
2760
+ return timing
2566
2761
 
2567
2762
  def readISignalIPdu(self, element: ET.Element, parent: ARPackage):
2568
2763
  short_name = self.getShortName(element)
2569
2764
  self.logger.debug("ISignalIPdu %s" % short_name)
2570
2765
  i_pdu = parent.createISignalIPdu(short_name)
2571
2766
  self.readIdentifiable(element, i_pdu)
2572
- i_pdu.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH"))
2767
+ i_pdu.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH")) \
2768
+ .setIPduTimingSpecification(self.getISignalIPduIPduTimingSpecification(element))
2573
2769
  self.readISignalToPduMappings(element, i_pdu)
2574
2770
  i_pdu.setUnusedBitPattern(self.getChildElementOptionalLiteral(element, "UNUSED-BIT-PATTERN"))
2575
2771
 
@@ -2613,12 +2809,28 @@ class ARXMLParser(AbstractARXMLParser):
2613
2809
  else:
2614
2810
  raise NotImplementedError("Unsupported Data Mapping %s" % tag_name)
2615
2811
 
2812
+ def readSwcToEcuMapping(self, element: ET.Element, mapping: SwcToEcuMapping):
2813
+ self.logger.debug("SwcToEcuMapping %s" % mapping.getShortName())
2814
+ self.readIdentifiable(element, mapping)
2815
+ for child_element in self.findall(element, "COMPONENT-IREFS/COMPONENT-IREF"):
2816
+ mapping.addComponentIRef(self.getComponentInSystemInstanceRef(child_element))
2817
+ mapping.setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF"))
2818
+
2819
+ def readSystemMappingSwMappings(self, element: ET.Element, mapping: SystemMapping):
2820
+ for child_element in self.findall(element, "SW-MAPPINGS/*"):
2821
+ tag_name = self.getTagName(child_element)
2822
+ if tag_name == "SWC-TO-ECU-MAPPING":
2823
+ self.readSwcToEcuMapping(child_element, mapping.createSwcToEcuMapping(self.getShortName(child_element)))
2824
+ else:
2825
+ raise NotImplementedError("Unsupported Sw Mapping %s" % tag_name)
2826
+
2616
2827
  def readSystemMapping(self, element: ET.Element, parent: System):
2617
2828
  short_name = self.getShortName(element)
2618
2829
  self.logger.debug("SystemMapping %s" % short_name)
2619
2830
  mapping = parent.createSystemMapping(short_name)
2620
2831
  self.readIdentifiable(element, mapping)
2621
2832
  self.readSystemMappingDataMappings(element, mapping)
2833
+ self.readSystemMappingSwMappings(element, mapping)
2622
2834
 
2623
2835
  def readSystemMappings(self, element: ET.Element, system: System):
2624
2836
  for child_element in self.findall(element, "MAPPINGS/*"):
@@ -2627,10 +2839,19 @@ class ARXMLParser(AbstractARXMLParser):
2627
2839
  self.readSystemMapping(child_element, system)
2628
2840
  else:
2629
2841
  raise NotImplementedError("Unsupported Mapping %s" % tag_name)
2842
+
2843
+ def readRootSwCompositionPrototype(self, element: ET.Element, system: System):
2844
+ child_element = self.find(element, "ROOT-SOFTWARE-COMPOSITIONS/ROOT-SW-COMPOSITION-PROTOTYPE")
2845
+ if child_element is not None:
2846
+ short_name = self.getShortName(child_element)
2847
+ self.logger.debug("Read RootSwCompositionPrototype %s" % short_name)
2848
+ prototype = system.createRootSoftwareComposition(short_name)
2849
+ self.readIdentifiable(child_element, prototype)
2850
+ prototype.setSoftwareCompositionTRef(self.getChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF"))
2630
2851
 
2631
2852
  def readSystem(self, element: ET.Element, parent: ARPackage):
2632
2853
  short_name = self.getShortName(element)
2633
- self.logger.debug("System %s" % short_name)
2854
+ self.logger.debug("Read System %s" % short_name)
2634
2855
  system = parent.createSystem(short_name)
2635
2856
  self.readIdentifiable(element, system)
2636
2857
 
@@ -2638,6 +2859,8 @@ class ARXMLParser(AbstractARXMLParser):
2638
2859
  for child_element in self.findall(element, "FIBEX-ELEMENTS/FIBEX-ELEMENT-REF-CONDITIONAL"):
2639
2860
  system.addFibexElementRef(self.getChildElementOptionalRefType(child_element, "FIBEX-ELEMENT-REF"))
2640
2861
  self.readSystemMappings(element, system)
2862
+ self.readRootSwCompositionPrototype(element, system)
2863
+ system.setSystemVersion(self.getChildElementOptionalRevisionLabelString(element, "SYSTEM-VERSION"))
2641
2864
 
2642
2865
  def readParameterInterfaceParameters(self, element: ET.Element, parent: ParameterInterface):
2643
2866
  for child_element in self.findall(element, "PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
@@ -2658,6 +2881,12 @@ class ARXMLParser(AbstractARXMLParser):
2658
2881
  frame = parent.createGenericEthernetFrame(short_name)
2659
2882
  self.readFrame(element, frame)
2660
2883
 
2884
+ def readLifeCycleInfoSet(self, element: ET.Element, parent: ARPackage):
2885
+ short_name = self.getShortName(element)
2886
+ self.logger.debug("Read LifeCycleInfoSet %s" % short_name)
2887
+ frame = parent.createLifeCycleInfoSet(short_name)
2888
+ self.readIdentifiable(element, frame)
2889
+
2661
2890
  def readARPackageElements(self, element: ET.Element, parent: ARPackage):
2662
2891
  for child_element in self.findall(element, "./ELEMENTS/*"):
2663
2892
  tag_name = self.getTagName(child_element.tag)
@@ -2771,9 +3000,22 @@ class ARXMLParser(AbstractARXMLParser):
2771
3000
  self.readParameterInterface(child_element, parent)
2772
3001
  elif tag_name == "ETHERNET-FRAME":
2773
3002
  self.readGenericEthernetFrame(child_element, parent)
3003
+ elif tag_name == "LIFE-CYCLE-INFO-SET":
3004
+ self.readLifeCycleInfoSet(child_element, parent)
2774
3005
  else:
2775
3006
  self._raiseError("Unsupported element type of ARPackage <%s>" % tag_name)
2776
3007
 
3008
+ def readReferenceBases(self, element: ET.Element, parent: ARPackage):
3009
+ self.logger.debug("Read ReferenceBases")
3010
+ for child_element in self.findall(element, "REFERENCE-BASES/REFERENCE-BASE"):
3011
+ base = ReferenceBase()
3012
+ base.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
3013
+ .setIsDefault(self.getChildElementOptionalBooleanValue(child_element, "IS-DEFAULT")) \
3014
+ .setIsGlobal(self.getChildElementOptionalBooleanValue(child_element, "IS-GLOBAL")) \
3015
+ .setBaseIsThisPackage(self.getChildElementOptionalBooleanValue(child_element, "BASE-IS-THIS-PACKAGE")) \
3016
+ .setPackageRef(self.getChildElementOptionalRefType(child_element, "PACKAGE-REF"))
3017
+ parent.addReferenceBase(base)
3018
+
2777
3019
  def readARPackages(self, element: ET.Element, parent: ARPackage):
2778
3020
  for child_element in element.findall("./xmlns:AR-PACKAGES/xmlns:AR-PACKAGE", self.nsmap):
2779
3021
  short_name = self.getShortName(child_element)
@@ -2782,9 +3024,9 @@ class ARXMLParser(AbstractARXMLParser):
2782
3024
  self.logger.debug("readARPackages %s" % ar_package.full_name)
2783
3025
 
2784
3026
  self.readIdentifiable(child_element, ar_package)
2785
- self.readARPackageElements(child_element, ar_package)
2786
3027
  self.readARPackages(child_element, ar_package)
2787
-
3028
+ self.readARPackageElements(child_element, ar_package)
3029
+ self.readReferenceBases(child_element, ar_package)
2788
3030
 
2789
3031
  def load(self, filename, document: AUTOSAR):
2790
3032
  self.logger.info("Load %s ..." % os.path.realpath(filename))
@@ -2795,6 +3037,7 @@ class ARXMLParser(AbstractARXMLParser):
2795
3037
  self._raiseError("Invalid ARXML file <%s>" % filename)
2796
3038
 
2797
3039
  self.getAUTOSARInfo(root, document)
3040
+ document.setAdminData(self.getAdminData(root, "ADMIN-DATA"))
2798
3041
  self.readARPackages(root, document)
2799
3042
 
2800
3043
  document.reload()