armodel 1.7.6__py3-none-any.whl → 1.7.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- armodel/cli/arxml_dump_cli.py +33 -22
- armodel/cli/arxml_format_cli.py +25 -13
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +95 -21
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +359 -59
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +134 -35
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +17 -7
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +10 -1
- armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +18 -2
- armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +20 -19
- armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/HwElementCategory.py +59 -0
- armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/__init__.py +145 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +215 -157
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +69 -35
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +17 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +19 -5
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +113 -39
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +3 -2
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/DataPrototypes.py +41 -16
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +10 -3
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +13 -6
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +111 -38
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AccessCount.py +9 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +5 -4
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +26 -8
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +28 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +167 -5
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DoIp.py +29 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/EcuResourceMapping.py +45 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +31 -21
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetFrame.py +5 -3
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +9 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayCommunication.py +76 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayTopology.py +654 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/__init__.py +0 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +539 -77
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +158 -40
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +28 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +2 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +245 -130
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/SWmapping.py +27 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Transformer/__init__.py +524 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +592 -17
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +33 -21
- armodel/models/M2/MSR/AsamHdo/AdminData.py +1 -2
- armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +3 -1
- armodel/models/M2/MSR/AsamHdo/SpecialData.py +35 -8
- armodel/models/M2/MSR/DataDictionary/RecordLayout.py +0 -3
- armodel/models/__init__.py +8 -0
- armodel/parser/abstract_arxml_parser.py +34 -27
- armodel/parser/arxml_parser.py +1778 -616
- armodel/parser/file_parser.py +5 -3
- armodel/tests/test_armodel/models/test_ar_package.py +6 -11
- armodel/tests/test_armodel/models/test_bsw_module_template.py +5 -3
- armodel/tests/test_armodel/models/test_datatype.py +1 -1
- armodel/tests/test_armodel/models/test_port_interface.py +116 -117
- armodel/tests/test_armodel/parser/test_bsw_module_descriiption.py +218 -0
- armodel/tests/test_armodel/parser/test_sw_components.py +54 -22
- armodel/tests/test_armodel/parser/test_system.py +2 -8
- armodel/transformer/__init__.py +0 -0
- armodel/transformer/abstract.py +6 -0
- armodel/transformer/admin_data.py +31 -0
- armodel/writer/abstract_arxml_writer.py +27 -33
- armodel/writer/arxml_writer.py +1875 -599
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/METADATA +81 -3
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/RECORD +69 -56
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/LICENSE +0 -0
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/WHEEL +0 -0
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/top_level.txt +0 -0
armodel/writer/arxml_writer.py
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import xml.etree.cElementTree as ET
|
|
2
2
|
from typing import List
|
|
3
3
|
|
|
4
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfoSet
|
|
5
4
|
from ..models.M2.MSR.AsamHdo.AdminData import AdminData
|
|
6
5
|
from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition, SwBaseType
|
|
7
|
-
from ..models.M2.MSR.AsamHdo.ComputationMethod import Compu, CompuConst, CompuConstContent, CompuConstFormulaContent, CompuConstNumericContent
|
|
6
|
+
from ..models.M2.MSR.AsamHdo.ComputationMethod import Compu, CompuConst, CompuConstContent, CompuConstFormulaContent, CompuConstNumericContent
|
|
7
|
+
from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuConstTextContent, CompuMethod, CompuNominatorDenominator, CompuScale
|
|
8
|
+
from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
|
|
8
9
|
from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstr, InternalConstrs, PhysConstrs
|
|
9
10
|
from ..models.M2.MSR.AsamHdo.SpecialData import Sdg
|
|
10
11
|
from ..models.M2.MSR.AsamHdo.Units import PhysicalDimension, Unit
|
|
@@ -19,84 +20,181 @@ from ..models.M2.MSR.Documentation.Annotation import Annotation
|
|
|
19
20
|
from ..models.M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
|
|
20
21
|
from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
|
|
21
22
|
from ..models.M2.MSR.Documentation.TextModel.LanguageDataModel import LLongName, LPlainText, LanguageSpecific
|
|
22
|
-
from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultiLanguagePlainText
|
|
23
|
+
from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultiLanguagePlainText
|
|
24
|
+
from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultilanguageLongName
|
|
23
25
|
|
|
24
26
|
from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
|
|
27
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswApiOptions, BswBackgroundEvent, BswCalledEntity, BswDataReceivedEvent, BswInternalTriggerOccurredEvent, BswOperationInvokedEvent
|
|
28
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswDataReceptionPolicy, BswEvent, BswExternalTriggerOccurredEvent
|
|
29
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalBehavior, BswInterruptEntity, BswModeSenderPolicy, BswModuleEntity
|
|
30
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswQueuedDataReceptionPolicy, BswSchedulableEntity, BswScheduleEvent
|
|
31
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswTimingEvent, BswVariableAccess
|
|
25
32
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
|
|
26
33
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
|
|
27
34
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
|
|
28
|
-
from ..models.M2.AUTOSARTemplates.
|
|
29
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure import
|
|
35
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference
|
|
36
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure import ConstantSpecification, NumericalValueSpecification, RecordValueSpecification
|
|
37
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure import TextValueSpecification, ValueSpecification
|
|
30
38
|
from ..models.M2.AUTOSARTemplates.CommonStructure.FlatMap import FlatInstanceDescriptor, FlatMap
|
|
31
39
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
|
|
32
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
|
|
33
40
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Code, Implementation, ImplementationProps
|
|
34
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming, TimingExtension
|
|
35
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import EOCExecutableEntityRef, ExecutionOrderConstraint
|
|
36
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal, DiagnosticCommunicationManagerNeeds, DiagnosticEventInfoNeeds, DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds, EcuStateMgrUserNeeds, NvBlockNeeds, RoleBasedDataAssignment, RoleBasedDataTypeAssignment, ServiceDependency
|
|
37
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity
|
|
38
41
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
|
|
42
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity
|
|
39
43
|
from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
|
|
40
44
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclaration, ModeDeclarationGroup, ModeDeclarationGroupPrototype
|
|
41
45
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
|
|
42
46
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import RoughEstimateStackUsage, StackUsage
|
|
47
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
|
|
48
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal
|
|
49
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticCommunicationManagerNeeds, DiagnosticEventInfoNeeds
|
|
50
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds
|
|
51
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import EcuStateMgrUserNeeds, NvBlockNeeds, RoleBasedDataAssignment
|
|
52
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import RoleBasedDataTypeAssignment, ServiceDependency
|
|
53
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming, TimingExtension
|
|
54
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import EOCExecutableEntityRef
|
|
55
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import ExecutionOrderConstraint
|
|
56
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.TriggerDeclaration import Trigger
|
|
43
57
|
from ..models.M2.AUTOSARTemplates.DiagnosticExtract.DiagnosticContribution import DiagnosticServiceTable
|
|
44
|
-
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue
|
|
45
|
-
from ..models.M2.AUTOSARTemplates.
|
|
46
|
-
from ..models.M2.AUTOSARTemplates.
|
|
58
|
+
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue
|
|
59
|
+
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue
|
|
60
|
+
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
|
|
61
|
+
from ..models.M2.AUTOSARTemplates.EcuResourceTemplate import HwDescriptionEntity, HwElement, HwPinGroup
|
|
62
|
+
from ..models.M2.AUTOSARTemplates.EcuResourceTemplate.HwElementCategory import HwAttributeDef, HwCategory, HwType
|
|
47
63
|
from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyInstanceRef
|
|
48
64
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage, ReferenceBase
|
|
65
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
|
|
66
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Describable, Identifiable
|
|
67
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Referrable, MultilanguageReferrable
|
|
49
68
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral, Limit
|
|
50
|
-
|
|
51
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
52
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
69
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfoSet
|
|
70
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, ModeSwitchedAckRequest
|
|
71
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import TransmissionAcknowledgementRequest
|
|
72
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec
|
|
73
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import NonqueuedReceiverComSpec, NonqueuedSenderComSpec, PPortComSpec
|
|
74
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec
|
|
75
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import RPortComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
|
|
76
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype
|
|
77
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import ApplicationSwComponentType, AtomicSwComponentType
|
|
78
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import ComplexDeviceDriverSwComponentType, CompositionSwComponentType
|
|
79
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import EcuAbstractionSwComponentType, PRPortPrototype, PortGroup, SwComponentType
|
|
80
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import PPortPrototype, PortPrototype, RPortPrototype, SymbolProps
|
|
81
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import ServiceSwComponentType
|
|
82
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef
|
|
83
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import ModeGroupInAtomicSwcInstanceRef
|
|
84
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import PModeGroupInAtomicSwcInstanceRef
|
|
85
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import RModeGroupInAtomicSWCInstanceRef
|
|
86
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
|
|
87
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector, SwComponentPrototype, SwConnector
|
|
88
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef
|
|
89
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
|
|
90
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationArrayElement
|
|
91
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationCompositeElementDataPrototype
|
|
92
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationRecordElement, AutosarDataPrototype, DataPrototype
|
|
93
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ParameterDataPrototype, VariableDataPrototype
|
|
94
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType, ApplicationCompositeDataType
|
|
95
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationDataType, ApplicationPrimitiveDataType
|
|
96
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationRecordDataType, AutosarDataType
|
|
97
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import DataTypeMappingSet
|
|
98
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndDescription, EndToEndProtection, EndToEndProtectionISignalIPdu
|
|
99
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionVariablePrototype
|
|
100
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet
|
|
101
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ApplicationError, ArgumentDataPrototype, ClientServerInterface
|
|
102
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ClientServerOperation, DataInterface
|
|
103
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import DataPrototypeMapping, ModeSwitchInterface, ParameterInterface
|
|
104
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import PortInterface, PortInterfaceMappingSet, SenderReceiverInterface
|
|
105
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import TriggerInterface, VariableAndParameterInterfaceMapping
|
|
106
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
|
|
107
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import AsynchronousServerCallPoint, RunnableEntity, RunnableEntityArgument
|
|
108
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import SwcInternalBehavior, SynchronousServerCallPoint
|
|
109
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AutosarVariableRef import AutosarVariableRef
|
|
110
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.DataElements import ParameterAccess, VariableAccess
|
|
111
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef
|
|
112
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortDefinedArgumentValue
|
|
113
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import AsynchronousServerCallReturnsEvent, BackgroundEvent
|
|
114
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent
|
|
115
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import ModeSwitchedAckEvent, OperationInvokedEvent, RTEEvent
|
|
116
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import SwcModeSwitchEvent, TimingEvent
|
|
53
117
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
|
|
54
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, ApplicationPrimitiveDataType, ApplicationRecordDataType, AutosarDataType
|
|
55
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndDescription, EndToEndProtection, EndToEndProtectionVariablePrototype
|
|
56
118
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet
|
|
57
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
58
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, CompositionSwComponentType, EcuAbstractionSwComponentType, PRPortPrototype, PortGroup, SwComponentType, PPortPrototype, PortPrototype, RPortPrototype, SymbolProps
|
|
59
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
|
|
60
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import AsynchronousServerCallPoint, RunnableEntity, RunnableEntityArgument, SwcInternalBehavior, SynchronousServerCallPoint
|
|
61
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AutosarVariableRef import AutosarVariableRef
|
|
119
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import ModeAccessPoint, ModeSwitchPoint
|
|
62
120
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
|
|
63
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.DataElements import ParameterAccess, VariableAccess
|
|
64
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector, SwComponentPrototype, SwConnector
|
|
65
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef, ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
|
|
66
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
|
|
67
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef, VariableInAtomicSWCTypeInstanceRef
|
|
68
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, PPortComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, RPortComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
|
|
69
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef
|
|
70
121
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
|
|
71
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationArrayElement, ApplicationCompositeElementDataPrototype, ApplicationRecordElement, AutosarDataPrototype, DataPrototype, ParameterDataPrototype, VariableDataPrototype
|
|
72
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import ServiceSwComponentType
|
|
73
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import DataTypeMappingSet
|
|
74
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet
|
|
75
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ApplicationError, ClientServerInterface, ClientServerOperation, DataPrototypeMapping, ModeSwitchInterface, ParameterInterface, PortInterface, PortInterfaceMappingSet, SenderReceiverInterface, TriggerInterface, VariableAndParameterInterfaceMapping
|
|
76
122
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import SwcImplementation
|
|
77
123
|
|
|
78
124
|
from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping, System, SystemMapping
|
|
79
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import
|
|
125
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderRecCompositeTypeMapping, SenderRecRecordElementMapping
|
|
126
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderRecRecordTypeMapping, SenderReceiverToSignalGroupMapping
|
|
127
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalMapping
|
|
80
128
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.DiagnosticConnection import DiagnosticConnection
|
|
81
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.
|
|
82
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
|
|
83
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
|
|
84
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SoAdRoutingGroup, SocketConnection, SocketConnectionBundle, SocketConnectionIpduIdentifier
|
|
85
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import GenericEthernetFrame
|
|
86
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import CouplingPort, CouplingPortDetails, CouplingPortFifo, CouplingPortScheduler, CouplingPortStructuralElement, EthernetCluster, EthernetCommunicationConnector, EthernetCommunicationController, EthernetPriorityRegeneration, InitialSdDelayConfig, MacMulticastGroup, RequestResponseDelay, SdClientConfig, VlanMembership
|
|
87
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import DoIpEntity, InfrastructureServices, Ipv6Configuration, NetworkEndpoint, NetworkEndpointAddress
|
|
88
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ApplicationEndpoint, ConsumedEventGroup, ConsumedServiceInstance, EventHandler, GenericTp, ProvidedServiceInstance, SdServerConfig, SoAdConfig, SocketAddress, TcpTp, TpPort, TransportProtocolConfiguration, UdpTp
|
|
89
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway, IPduMapping, ISignalMapping, TargetIPduRef
|
|
129
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.EcuResourceMapping import ECUMapping
|
|
90
130
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrame, CanFrameTriggering, RxIdentifierRange
|
|
91
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import AbstractCanCommunicationController
|
|
92
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.
|
|
93
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.
|
|
131
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import AbstractCanCommunicationController
|
|
132
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import AbstractCanCommunicationControllerAttributes
|
|
133
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
|
|
134
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanControllerConfigurationRequirements
|
|
135
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanControllerFdConfiguration
|
|
136
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanControllerFdConfigurationRequirements
|
|
137
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SoAdRoutingGroup, SocketConnection
|
|
138
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SocketConnectionBundle
|
|
139
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SocketConnectionIpduIdentifier
|
|
140
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import GenericEthernetFrame
|
|
141
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import CouplingPort, CouplingPortDetails, CouplingPortFifo
|
|
142
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import CouplingPortScheduler, CouplingPortStructuralElement
|
|
143
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCluster, EthernetCommunicationConnector
|
|
144
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCommunicationController
|
|
145
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetPriorityRegeneration, InitialSdDelayConfig
|
|
146
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import MacMulticastGroup, RequestResponseDelay, SdClientConfig
|
|
147
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import VlanMembership
|
|
148
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import DoIpEntity, InfrastructureServices, Ipv6Configuration
|
|
149
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import NetworkEndpoint, NetworkEndpointAddress
|
|
150
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ApplicationEndpoint, ConsumedEventGroup
|
|
151
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ConsumedServiceInstance, EventHandler, GenericTp
|
|
152
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ProvidedServiceInstance, SdServerConfig, SoAdConfig
|
|
153
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import SocketAddress, TcpTp, TpPort
|
|
154
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import TransportProtocolConfiguration, UdpTp
|
|
155
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayCommunication import FlexrayAbsolutelyScheduledTiming, FlexrayFrame
|
|
156
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayCommunication import FlexrayFrameTriggering
|
|
157
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayTopology import FlexrayCluster, FlexrayCommunicationConnector
|
|
158
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayTopology import FlexrayCommunicationController
|
|
159
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import ApplicationEntry, LinFrameTriggering, LinScheduleTable
|
|
160
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinUnconditionalFrame, ScheduleTableEntry
|
|
94
161
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinTopology import LinCommunicationConnector, LinCommunicationController, LinMaster
|
|
162
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway, IPduMapping, ISignalMapping, TargetIPduRef
|
|
163
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import DynamicPart, DynamicPartAlternative, FrameTriggering
|
|
164
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import GeneralPurposeIPdu, GeneralPurposePdu, IPdu, IPduTiming
|
|
165
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import ISignalGroup, ISignalIPdu, ISignalIPduGroup
|
|
166
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import ISignalToIPduMapping, ISignalTriggering, MultiplexedIPdu
|
|
167
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import MultiplexedPart, Pdu, PduTriggering
|
|
168
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import SecureCommunicationAuthenticationProps
|
|
169
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import SecureCommunicationFreshnessProps, SecureCommunicationProps
|
|
170
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import SecureCommunicationPropsSet, SecuredIPdu, SegmentPosition
|
|
171
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import StaticPart, SystemSignal, DcmIPdu, Frame, ISignal, NPdu
|
|
172
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import NmPdu, SystemSignalGroup, UserDefinedIPdu, UserDefinedPdu
|
|
173
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, CanClusterBusOffRecovery
|
|
174
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import FlexrayPhysicalChannel, CommunicationCycle, CycleRepetition
|
|
175
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import CanPhysicalChannel, CommConnectorPort, CommunicationCluster
|
|
176
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import CommunicationConnector, CommunicationController
|
|
177
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort
|
|
178
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import LinCluster, LinPhysicalChannel, PhysicalChannel
|
|
179
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
|
|
180
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType
|
|
181
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import TransmissionModeCondition, TransmissionModeDeclaration
|
|
182
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import TransmissionModeTiming
|
|
95
183
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
|
|
96
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig,
|
|
97
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.
|
|
184
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmEcu
|
|
185
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import NmNode, UdpNmCluster, UdpNmClusterCoupling, UdpNmEcu, UdpNmNode
|
|
186
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.SWmapping import SwcToImplMapping
|
|
187
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import BufferProperties, DataTransformation, DataTransformationSet
|
|
188
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import EndToEndTransformationISignalProps, TransformationISignalProps
|
|
189
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import EndToEndTransformationDescription, TransformationDescription
|
|
190
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import TransformationTechnology
|
|
191
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpAddress, CanTpChannel, CanTpConfig, CanTpConnection, CanTpEcu
|
|
192
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpNode, DoIpLogicAddress, DoIpTpConfig, DoIpTpConnection, LinTpConfig
|
|
193
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import LinTpConnection, LinTpNode, TpAddress, TpConfig, TpConnection
|
|
98
194
|
|
|
99
195
|
from .abstract_arxml_writer import AbstractARXMLWriter
|
|
196
|
+
|
|
197
|
+
|
|
100
198
|
class ARXMLWriter(AbstractARXMLWriter):
|
|
101
199
|
def __init__(self, options=None) -> None:
|
|
102
200
|
super().__init__(options)
|
|
@@ -110,7 +208,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
110
208
|
def setChildElementRxIdentifierRange(self, element: ET.Element, key: str, range: RxIdentifierRange):
|
|
111
209
|
if range is not None:
|
|
112
210
|
child_element = ET.SubElement(element, key)
|
|
113
|
-
self.setChildElementOptionalNumericalValue(child_element, "LOWER-CAN-ID", range.getLowerCanId())
|
|
211
|
+
self.setChildElementOptionalNumericalValue(child_element, "LOWER-CAN-ID", range.getLowerCanId())
|
|
114
212
|
self.setChildElementOptionalNumericalValue(child_element, "UPPER-CAN-ID", range.getUpperCanId())
|
|
115
213
|
|
|
116
214
|
def writeSds(self, parent: ET.Element, sdg: Sdg):
|
|
@@ -120,14 +218,26 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
120
218
|
sd_tag.attrib['GID'] = sd.gid
|
|
121
219
|
sd_tag.text = sd.value
|
|
122
220
|
|
|
123
|
-
def
|
|
221
|
+
def writeSdgCaption(self, element: ET.Element, sdg: Sdg):
|
|
222
|
+
caption = sdg.getSdgCaption()
|
|
223
|
+
if caption is not None:
|
|
224
|
+
child_element = ET.SubElement(element, "SDG-CAPTION")
|
|
225
|
+
self.writeMultilanguageReferrable(child_element, caption)
|
|
226
|
+
|
|
227
|
+
def writeSdgSdxRefs(self, element: ET.Element, sdg: Sdg):
|
|
228
|
+
for ref in sdg.getSdxRefs():
|
|
229
|
+
self.setChildElementOptionalRefType(element, "SDX-REF", ref)
|
|
230
|
+
|
|
231
|
+
def setSdg(self, element: ET.Element, sdg: Sdg):
|
|
124
232
|
if sdg is not None:
|
|
125
|
-
|
|
233
|
+
child_element = ET.SubElement(element, "SDG")
|
|
126
234
|
if sdg.gid is not None and sdg.gid != "":
|
|
127
|
-
|
|
128
|
-
self.
|
|
235
|
+
child_element.attrib['GID'] = sdg.gid
|
|
236
|
+
self.writeSdgCaption(child_element, sdg)
|
|
237
|
+
self.writeSds(child_element, sdg)
|
|
129
238
|
for sdg_item in sdg.getSdgContentsTypes():
|
|
130
|
-
self.setSdg(
|
|
239
|
+
self.setSdg(child_element, sdg_item)
|
|
240
|
+
self.writeSdgSdxRefs(child_element, sdg)
|
|
131
241
|
|
|
132
242
|
def writeSdgs(self, parent: ET.Element, admin_data: AdminData):
|
|
133
243
|
sdgs = admin_data.getSdgs()
|
|
@@ -139,18 +249,18 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
139
249
|
def setChildLimitElement(self, element: ET.Element, key: str, limit: Limit):
|
|
140
250
|
if limit is not None:
|
|
141
251
|
limit_tag = ET.SubElement(element, key)
|
|
142
|
-
self.
|
|
252
|
+
self.writeARObjectAttributes(limit_tag, limit)
|
|
143
253
|
if limit.intervalType is not None:
|
|
144
254
|
limit_tag.attrib['INTERVAL-TYPE'] = limit.intervalType
|
|
145
255
|
limit_tag.text = limit.value
|
|
146
256
|
|
|
147
257
|
def writeReferrable(self, element: ET.Element, referrable: Referrable):
|
|
148
|
-
self.
|
|
258
|
+
self.writeARObjectAttributes(element, referrable)
|
|
149
259
|
self.setShortName(element, referrable.getShortName())
|
|
150
260
|
|
|
151
261
|
def setLanguageSpecific(self, element: ET.Element, key: str, specific: LanguageSpecific):
|
|
152
262
|
child_element = ET.SubElement(element, key)
|
|
153
|
-
self.
|
|
263
|
+
self.writeARObjectAttributes(child_element, specific)
|
|
154
264
|
if specific.l is not None:
|
|
155
265
|
child_element.attrib['L'] = specific.l
|
|
156
266
|
child_element.text = specific.value
|
|
@@ -161,7 +271,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
161
271
|
def setMultiLongName(self, element: ET.Element, key: str, long_name: MultilanguageLongName):
|
|
162
272
|
if long_name is not None:
|
|
163
273
|
child_element = ET.SubElement(element, key)
|
|
164
|
-
self.
|
|
274
|
+
self.writeARObjectAttributes(child_element, long_name)
|
|
165
275
|
for l4 in long_name.getL4s():
|
|
166
276
|
self.setLLongName(child_element, l4)
|
|
167
277
|
|
|
@@ -171,7 +281,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
171
281
|
def setMultiLanguageOverviewParagraph(self, element: ET.Element, key: str, paragraph: MultiLanguageOverviewParagraph):
|
|
172
282
|
if paragraph is not None:
|
|
173
283
|
child_element = ET.SubElement(element, key)
|
|
174
|
-
self.
|
|
284
|
+
self.writeARObjectAttributes(child_element, paragraph)
|
|
175
285
|
for l2 in paragraph.getL2s():
|
|
176
286
|
self.setLOverviewParagraph(child_element, l2)
|
|
177
287
|
|
|
@@ -186,7 +296,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
186
296
|
def setMultiLanguagePlainText(self, element: ET.Element, key: str, paragraph: MultiLanguagePlainText):
|
|
187
297
|
if paragraph is not None:
|
|
188
298
|
child_element = ET.SubElement(element, key)
|
|
189
|
-
self.
|
|
299
|
+
self.writeARObjectAttributes(child_element, paragraph)
|
|
190
300
|
for l10 in paragraph.getL10s():
|
|
191
301
|
self.setLPlainText(child_element, l10)
|
|
192
302
|
|
|
@@ -207,12 +317,12 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
207
317
|
|
|
208
318
|
def writeARElement(self, parent: ET.Element, ar_element: ARElement):
|
|
209
319
|
self.writeIdentifiable(parent, ar_element)
|
|
210
|
-
|
|
320
|
+
|
|
211
321
|
def setTransmissionAcknowledgementRequest(self, element: ET.Element, acknowledge: TransmissionAcknowledgementRequest):
|
|
212
|
-
if (acknowledge
|
|
322
|
+
if (acknowledge is not None):
|
|
213
323
|
child_element = ET.SubElement(element, "TRANSMISSION-ACKNOWLEDGE")
|
|
214
|
-
self.
|
|
215
|
-
if acknowledge.timeout
|
|
324
|
+
self.writeARObjectAttributes(child_element, acknowledge)
|
|
325
|
+
if acknowledge.timeout is not None:
|
|
216
326
|
self.setChildElementOptionalFloatValue(child_element, "TIMEOUT", acknowledge.timeout)
|
|
217
327
|
|
|
218
328
|
def setSenderComSpec(self, element: ET.Element, com_spec: SenderComSpec):
|
|
@@ -226,28 +336,35 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
226
336
|
self.setChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE", com_spec.getHandleOutOfRange())
|
|
227
337
|
self.setTransmissionAcknowledgementRequest(element, com_spec.getTransmissionAcknowledge())
|
|
228
338
|
self.setChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION", com_spec.getUsesEndToEndProtection())
|
|
229
|
-
|
|
339
|
+
|
|
230
340
|
def setNonqueuedSenderComSpec(self, element: ET.Element, com_spec: NonqueuedSenderComSpec):
|
|
231
341
|
child_element = ET.SubElement(element, "NONQUEUED-SENDER-COM-SPEC")
|
|
232
|
-
self.
|
|
342
|
+
self.writeARObjectAttributes(child_element, com_spec)
|
|
233
343
|
self.setSenderComSpec(child_element, com_spec)
|
|
234
344
|
self.setValueSpecification(child_element, "INIT-VALUE", com_spec.getInitValue())
|
|
235
|
-
|
|
345
|
+
|
|
236
346
|
def setServerComSpec(self, element: ET.Element, com_spec: ServerComSpec):
|
|
237
347
|
child_element = ET.SubElement(element, "SERVER-COM-SPEC")
|
|
238
|
-
self.
|
|
348
|
+
self.writeARObjectAttributes(child_element, com_spec)
|
|
239
349
|
self.setChildElementOptionalRefType(child_element, "OPERATION-REF", com_spec.getOperationRef())
|
|
240
|
-
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH",
|
|
350
|
+
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.getQueueLength())
|
|
241
351
|
|
|
242
352
|
def setQueuedSenderComSpec(self, element: ET.Element, com_spec: QueuedSenderComSpec):
|
|
243
353
|
child_element = ET.SubElement(element, "QUEUED-SENDER-COM-SPEC")
|
|
244
|
-
self.
|
|
354
|
+
self.writeARObjectAttributes(child_element, com_spec)
|
|
245
355
|
self.setSenderComSpec(child_element, com_spec)
|
|
246
356
|
|
|
357
|
+
def setModeSwitchedAckRequest(self, element: ET.Element, key: str, request: ModeSwitchedAckRequest):
|
|
358
|
+
if request is not None:
|
|
359
|
+
child_element = ET.SubElement(element, key)
|
|
360
|
+
self.writeARObjectAttributes(child_element, request)
|
|
361
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT", request.getTimeout())
|
|
362
|
+
|
|
247
363
|
def setModeSwitchSenderComSpec(self, element: ET.Element, com_spec: ModeSwitchSenderComSpec):
|
|
248
364
|
child_element = ET.SubElement(element, "MODE-SWITCH-SENDER-COM-SPEC")
|
|
249
|
-
self.
|
|
365
|
+
self.writeARObjectAttributes(child_element, com_spec)
|
|
250
366
|
self.setChildElementOptionalRefType(child_element, "MODE-GROUP-REF", com_spec.getModeGroupRef())
|
|
367
|
+
self.setModeSwitchedAckRequest(child_element, "MODE-SWITCHED-ACK", com_spec.getModeSwitchedAck())
|
|
251
368
|
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.getQueueLength())
|
|
252
369
|
|
|
253
370
|
def writePPortComSpec(self, com_specs_tag: ET.Element, com_spec: PPortComSpec):
|
|
@@ -261,14 +378,14 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
261
378
|
self.setModeSwitchSenderComSpec(com_specs_tag, com_spec)
|
|
262
379
|
else:
|
|
263
380
|
self.notImplemented("Unsupported PPortComSpec %s" % type(com_spec))
|
|
264
|
-
|
|
265
|
-
def setApplicationCompositeElementInPortInterfaceInstanceRef(self, element: ET.Element, key:str, iref: ApplicationCompositeElementInPortInterfaceInstanceRef):
|
|
381
|
+
|
|
382
|
+
def setApplicationCompositeElementInPortInterfaceInstanceRef(self, element: ET.Element, key: str, iref: ApplicationCompositeElementInPortInterfaceInstanceRef): # noqa E501
|
|
266
383
|
if iref is not None:
|
|
267
384
|
child_element = ET.SubElement(element, key)
|
|
268
385
|
self.setChildElementOptionalRefType(child_element, "ROOT-DATA-PROTOTYPE-REF", iref.root_data_prototype_ref)
|
|
269
386
|
self.setChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF", iref.target_data_prototype_ref)
|
|
270
387
|
return iref
|
|
271
|
-
|
|
388
|
+
|
|
272
389
|
def setCompositeNetworkRepresentation(self, element: ET.Element, representation: CompositeNetworkRepresentation):
|
|
273
390
|
if representation is not None:
|
|
274
391
|
self.logger.debug("setCompositeNetworkRepresentation")
|
|
@@ -291,7 +408,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
291
408
|
def setSwValues(self, element: ET.Element, key: str, sw_values: SwValues):
|
|
292
409
|
if sw_values is not None:
|
|
293
410
|
child_element = ET.SubElement(element, key)
|
|
294
|
-
self.
|
|
411
|
+
self.writeARObjectAttributes(child_element, sw_values)
|
|
295
412
|
for v in sw_values.getVs():
|
|
296
413
|
self.setChildElementOptionalFloatValue(child_element, "V", v)
|
|
297
414
|
self.setChildElementOptionalLiteral(child_element, "VT", sw_values.vt)
|
|
@@ -299,42 +416,35 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
299
416
|
def setValueList(self, element: ET.Element, key: str, value_list: ValueList):
|
|
300
417
|
if value_list is not None:
|
|
301
418
|
child_element = ET.SubElement(element, key)
|
|
302
|
-
self.
|
|
419
|
+
self.writeARObjectAttributes(child_element, value_list)
|
|
303
420
|
self.setChildElementOptionalFloatValue(child_element, "V", value_list.v)
|
|
304
421
|
|
|
305
422
|
def writeSwValueCont(self, element: ET.Element, cont: SwValueCont):
|
|
306
423
|
if cont is not None:
|
|
307
424
|
child_element = ET.SubElement(element, "SW-VALUE-CONT")
|
|
308
|
-
self.
|
|
425
|
+
self.writeARObjectAttributes(child_element, cont)
|
|
309
426
|
self.setChildElementOptionalRefType(child_element, "UNIT-REF", cont.unitRef)
|
|
310
427
|
self.setValueList(child_element, "SW-ARRAYSIZE", cont.swArraysize)
|
|
311
428
|
self.setSwValues(child_element, "SW-VALUES-PHYS", cont.swValuesPhys)
|
|
312
429
|
|
|
313
430
|
def writeValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
|
|
314
431
|
if value_spec is not None:
|
|
315
|
-
self.
|
|
316
|
-
self.setChildElementOptionalLiteral(element, "SHORT-LABEL", value_spec.getShortLabel())
|
|
317
|
-
|
|
318
|
-
def setApplicationValueSpecification(self, element: ET.Element, value_spec: ApplicationValueSpecification):
|
|
319
|
-
if value_spec is not None:
|
|
320
|
-
value_spec_tag = ET.SubElement(element, "APPLICATION-VALUE-SPECIFICATION")
|
|
321
|
-
self.writeValueSpecification(value_spec_tag, value_spec)
|
|
322
|
-
self.setChildElementOptionalLiteral(value_spec_tag, "CATEGORY", value_spec.getCategory())
|
|
323
|
-
self.writeSwValueCont(value_spec_tag, value_spec.getSwValueCont())
|
|
432
|
+
self.writeARObjectAttributes(element, value_spec)
|
|
433
|
+
self.setChildElementOptionalLiteral(element, "SHORT-LABEL", value_spec.getShortLabel())
|
|
324
434
|
|
|
325
|
-
def
|
|
435
|
+
def writeTextValueSpecification(self, element: ET.Element, value_spec: TextValueSpecification):
|
|
326
436
|
if value_spec is not None:
|
|
327
437
|
value_spec_tag = ET.SubElement(element, "TEXT-VALUE-SPECIFICATION")
|
|
328
438
|
self.writeValueSpecification(value_spec_tag, value_spec)
|
|
329
439
|
self.setChildElementOptionalLiteral(value_spec_tag, "VALUE", value_spec.getValue())
|
|
330
440
|
|
|
331
|
-
def
|
|
441
|
+
def writeNumericalValueSpecification(self, element: ET.Element, value_spec: NumericalValueSpecification):
|
|
332
442
|
if value_spec is not None:
|
|
333
443
|
value_spec_tag = ET.SubElement(element, "NUMERICAL-VALUE-SPECIFICATION")
|
|
334
444
|
self.writeValueSpecification(value_spec_tag, value_spec)
|
|
335
445
|
self.setChildElementOptionalFloatValue(value_spec_tag, "VALUE", value_spec.getValue())
|
|
336
446
|
|
|
337
|
-
def
|
|
447
|
+
def writeArrayValueSpecification(self, element: ET.Element, value_spec: ArrayValueSpecification):
|
|
338
448
|
value_spec_tag = ET.SubElement(element, "ARRAY-VALUE-SPECIFICATION")
|
|
339
449
|
self.writeValueSpecification(value_spec_tag, value_spec)
|
|
340
450
|
sub_elements = value_spec.getElements()
|
|
@@ -342,18 +452,18 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
342
452
|
elements_tag = ET.SubElement(value_spec_tag, "ELEMENTS")
|
|
343
453
|
for sub_element in sub_elements:
|
|
344
454
|
if isinstance(sub_element, NumericalValueSpecification):
|
|
345
|
-
self.
|
|
455
|
+
self.writeNumericalValueSpecification(elements_tag, sub_element)
|
|
346
456
|
elif isinstance(sub_element, ApplicationValueSpecification):
|
|
347
|
-
self.
|
|
457
|
+
self.writeApplicationValueSpecification(elements_tag, sub_element)
|
|
348
458
|
elif isinstance(sub_element, TextValueSpecification):
|
|
349
|
-
self.
|
|
459
|
+
self.writeTextValueSpecification(elements_tag, sub_element)
|
|
350
460
|
elif isinstance(sub_element, ArrayValueSpecification):
|
|
351
|
-
self.
|
|
461
|
+
self.writeArrayValueSpecification(elements_tag, sub_element)
|
|
352
462
|
elif isinstance(sub_element, RecordValueSpecification):
|
|
353
|
-
self.
|
|
463
|
+
self.writeRecordValueSpecification(elements_tag, sub_element)
|
|
354
464
|
else:
|
|
355
465
|
self.notImplemented("Unsupported element type of <%s> of ArrayValueSpecification" % type(sub_element))
|
|
356
|
-
|
|
466
|
+
|
|
357
467
|
def setConstantReference(self, element: ET.Element, value_spec: ConstantReference):
|
|
358
468
|
value_spec_tag = ET.SubElement(element, "CONSTANT-REFERENCE")
|
|
359
469
|
self.writeValueSpecification(value_spec_tag, value_spec)
|
|
@@ -363,23 +473,23 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
363
473
|
if value_spec is not None:
|
|
364
474
|
child_element = ET.SubElement(element, key)
|
|
365
475
|
if isinstance(value_spec, ApplicationValueSpecification):
|
|
366
|
-
self.
|
|
476
|
+
self.writeApplicationValueSpecification(child_element, value_spec)
|
|
367
477
|
elif isinstance(value_spec, TextValueSpecification):
|
|
368
|
-
self.
|
|
478
|
+
self.writeTextValueSpecification(child_element, value_spec)
|
|
369
479
|
elif isinstance(value_spec, ConstantReference):
|
|
370
480
|
self.setConstantReference(child_element, value_spec)
|
|
371
481
|
elif isinstance(value_spec, NumericalValueSpecification):
|
|
372
|
-
self.
|
|
482
|
+
self.writeNumericalValueSpecification(child_element, value_spec)
|
|
373
483
|
elif isinstance(value_spec, ArrayValueSpecification):
|
|
374
|
-
self.
|
|
484
|
+
self.writeArrayValueSpecification(child_element, value_spec)
|
|
375
485
|
elif isinstance(value_spec, RecordValueSpecification):
|
|
376
|
-
self.
|
|
486
|
+
self.writeRecordValueSpecification(child_element, value_spec)
|
|
377
487
|
else:
|
|
378
488
|
self.notImplemented("Unsupported ValueSpecification %s" % type(value_spec))
|
|
379
489
|
|
|
380
490
|
def writeNonqueuedReceiverComSpec(self, element: ET.Element, com_spec: NonqueuedReceiverComSpec):
|
|
381
491
|
child_element = ET.SubElement(element, "NONQUEUED-RECEIVER-COM-SPEC")
|
|
382
|
-
self.
|
|
492
|
+
self.writeARObjectAttributes(child_element, com_spec)
|
|
383
493
|
self.writeReceiverComSpec(child_element, com_spec)
|
|
384
494
|
self.setChildElementOptionalFloatValue(child_element, "ALIVE-TIMEOUT", com_spec.getAliveTimeout())
|
|
385
495
|
self.setChildElementOptionalBooleanValue(child_element, "ENABLE-UPDATE", com_spec.getEnableUpdated())
|
|
@@ -390,27 +500,27 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
390
500
|
|
|
391
501
|
def writeQueuedReceiverComSpec(self, element: ET.Element, com_spec: QueuedReceiverComSpec):
|
|
392
502
|
child_element = ET.SubElement(element, "QUEUED-RECEIVER-COM-SPEC")
|
|
393
|
-
self.
|
|
503
|
+
self.writeARObjectAttributes(child_element, com_spec)
|
|
394
504
|
self.writeReceiverComSpec(child_element, com_spec)
|
|
395
505
|
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.queueLength)
|
|
396
506
|
|
|
397
507
|
def writeClientComSpec(self, element: ET.Element, com_spec: ClientComSpec):
|
|
398
508
|
self.logger.debug("writeClientComSpec")
|
|
399
509
|
child_element = ET.SubElement(element, "CLIENT-COM-SPEC")
|
|
400
|
-
self.
|
|
510
|
+
self.writeARObjectAttributes(child_element, com_spec)
|
|
401
511
|
self.setChildElementOptionalRefType(child_element, "OPERATION-REF", com_spec.getOperationRef())
|
|
402
512
|
|
|
403
513
|
def writeParameterRequireComSpec(self, element: ET.Element, com_spec: ParameterRequireComSpec):
|
|
404
514
|
self.logger.debug("writeParameterRequireComSpec")
|
|
405
515
|
child_element = ET.SubElement(element, "PARAMETER-REQUIRE-COM-SPEC")
|
|
406
|
-
self.
|
|
516
|
+
self.writeARObjectAttributes(child_element, com_spec)
|
|
407
517
|
self.setChildElementOptionalRefType(child_element, "PARAMETER-REF", com_spec.getParameterRef())
|
|
408
518
|
self.setValueSpecification(child_element, "INIT-VALUE", com_spec.getInitValue())
|
|
409
519
|
|
|
410
520
|
def setModeSwitchReceiverComSpec(self, element: ET.Element, com_spec: ModeSwitchReceiverComSpec):
|
|
411
521
|
self.logger.debug("writeModeSwitchReceiverComSpec")
|
|
412
522
|
child_element = ET.SubElement(element, "MODE-SWITCH-RECEIVER-COM-SPEC")
|
|
413
|
-
self.
|
|
523
|
+
self.writeARObjectAttributes(child_element, com_spec)
|
|
414
524
|
self.setChildElementOptionalBooleanValue(child_element, "ENHANCED-MODE-API", com_spec.getEnhancedModeApi())
|
|
415
525
|
self.setChildElementOptionalRefType(child_element, "MODE-GROUP-REF", com_spec.getModeGroupRef())
|
|
416
526
|
self.setChildElementOptionalBooleanValue(child_element, "SUPPORTS-ASYNCHRONOUS-MODE-SWITCH", com_spec.getSupportsAsynchronousModeSwitch())
|
|
@@ -449,7 +559,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
449
559
|
if len(com_specs) > 0:
|
|
450
560
|
com_specs_tag = ET.SubElement(element, "REQUIRED-COM-SPECS")
|
|
451
561
|
for com_spec in com_specs:
|
|
452
|
-
self.writeRPortComSpec(com_specs_tag, com_spec)
|
|
562
|
+
self.writeRPortComSpec(com_specs_tag, com_spec)
|
|
453
563
|
|
|
454
564
|
def writeRPortPrototype(self, ports_tag: ET.Element, prototype: RPortPrototype):
|
|
455
565
|
self.logger.debug("write RPortPrototype %s" % prototype.getShortName())
|
|
@@ -465,21 +575,24 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
465
575
|
self.setAbstractProvidedPortPrototype(prototype_tag, prototype)
|
|
466
576
|
self.setAbstractRequiredPortPrototype(prototype_tag, prototype)
|
|
467
577
|
self.setChildElementOptionalRefType(prototype_tag, "PROVIDED-REQUIRED-INTERFACE-TREF", prototype.getProvidedRequiredInterface())
|
|
468
|
-
|
|
469
|
-
def
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
578
|
+
|
|
579
|
+
def writeSwComponentTypePorts(self, element: ET.Element, sw_component: SwComponentType):
|
|
580
|
+
ports = sw_component.getPorts()
|
|
581
|
+
if len(ports) > 0:
|
|
582
|
+
child_element = ET.SubElement(element, "PORTS")
|
|
583
|
+
for port in ports:
|
|
584
|
+
if isinstance(port, PPortPrototype):
|
|
585
|
+
self.writePPortPrototype(child_element, port)
|
|
586
|
+
elif isinstance(port, RPortPrototype):
|
|
587
|
+
self.writeRPortPrototype(child_element, port)
|
|
588
|
+
elif isinstance(port, PRPortPrototype):
|
|
589
|
+
self.writePRPortPrototype(child_element, port)
|
|
590
|
+
else:
|
|
591
|
+
self.notImplemented("Unsupported Port Prototype <%s>" % type(port))
|
|
479
592
|
|
|
480
593
|
def writeInnerGroupIRef(self, element: ET.Element, inner_group_iref: InnerPortGroupInCompositionInstanceRef):
|
|
481
594
|
child_element = ET.SubElement(element, "INNER-GROUP-IREF")
|
|
482
|
-
#self.setChildElementOptionalRefType(child_element, "CONTEXT-REF", inner_group_iref.contextRef)
|
|
595
|
+
# self.setChildElementOptionalRefType(child_element, "CONTEXT-REF", inner_group_iref.contextRef)
|
|
483
596
|
self.setChildElementOptionalRefType(child_element, "TARGET-REF", inner_group_iref.getTargetRef())
|
|
484
597
|
|
|
485
598
|
def writePortGroupInnerGroupIRefs(self, element: ET.Element, parent: PortGroup):
|
|
@@ -513,10 +626,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
513
626
|
|
|
514
627
|
def writeSwComponentType(self, element: ET.Element, sw_component: SwComponentType):
|
|
515
628
|
self.writeIdentifiable(element, sw_component)
|
|
516
|
-
|
|
517
|
-
if len(port_prototypes) > 0:
|
|
518
|
-
ports_tag = ET.SubElement(element, "PORTS")
|
|
519
|
-
self.writePortPrototypes(ports_tag, port_prototypes)
|
|
629
|
+
self.writeSwComponentTypePorts(element, sw_component)
|
|
520
630
|
self.writeSwComponentTypePortGroups(element, sw_component)
|
|
521
631
|
|
|
522
632
|
def writeSwComponentPrototype(self, element: ET.Element, prototype: SwComponentPrototype):
|
|
@@ -524,29 +634,31 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
524
634
|
self.writeIdentifiable(prototype_tag, prototype)
|
|
525
635
|
self.setChildElementOptionalRefType(prototype_tag, "TYPE-TREF", prototype.getTypeTRef())
|
|
526
636
|
|
|
527
|
-
def
|
|
528
|
-
|
|
529
|
-
if len(
|
|
637
|
+
def writeCompositionSwComponentTypeComponents(self, element: ET.Element, sw_component: CompositionSwComponentType):
|
|
638
|
+
components = sw_component.getComponents()
|
|
639
|
+
if len(components) > 0:
|
|
530
640
|
components_tag = ET.SubElement(element, "COMPONENTS")
|
|
531
|
-
|
|
532
|
-
|
|
641
|
+
for component in components:
|
|
642
|
+
if isinstance(component, SwComponentPrototype):
|
|
643
|
+
self.writeSwComponentPrototype(components_tag, component)
|
|
644
|
+
else:
|
|
645
|
+
self.notImplemented("Unsupported Component <%s>" % type(component))
|
|
533
646
|
|
|
534
647
|
def writeAssemblySwConnector(self, element: ET.Element, sw_connector: AssemblySwConnector):
|
|
535
648
|
child_element = ET.SubElement(element, "ASSEMBLY-SW-CONNECTOR")
|
|
536
|
-
self.
|
|
537
|
-
self.setChildElementOptionalRefType(child_element, "MAPPING-REF", sw_connector.getMappingRef())
|
|
649
|
+
self.writeSwConnector(child_element, sw_connector)
|
|
538
650
|
|
|
539
651
|
if sw_connector.getProviderIRef() is not None:
|
|
540
652
|
provider_iref_tag = ET.SubElement(child_element, "PROVIDER-IREF")
|
|
541
653
|
provider_iref = sw_connector.getProviderIRef()
|
|
542
|
-
self.
|
|
654
|
+
self.writeARObjectAttributes(provider_iref_tag, provider_iref)
|
|
543
655
|
self.setChildElementOptionalRefType(provider_iref_tag, "CONTEXT-COMPONENT-REF", provider_iref.getContextComponentRef())
|
|
544
656
|
self.setChildElementOptionalRefType(provider_iref_tag, "TARGET-P-PORT-REF", provider_iref.getTargetPPortRef())
|
|
545
657
|
|
|
546
658
|
if sw_connector.getRequesterIRef() is not None:
|
|
547
659
|
requester_iref_tag = ET.SubElement(child_element, "REQUESTER-IREF")
|
|
548
660
|
requester_iref = sw_connector.getRequesterIRef()
|
|
549
|
-
self.
|
|
661
|
+
self.writeARObjectAttributes(requester_iref_tag, requester_iref)
|
|
550
662
|
self.setChildElementOptionalRefType(requester_iref_tag, "CONTEXT-COMPONENT-REF", requester_iref.getContextComponentRef())
|
|
551
663
|
self.setChildElementOptionalRefType(requester_iref_tag, "TARGET-R-PORT-REF", requester_iref.getTargetRPortRef())
|
|
552
664
|
|
|
@@ -570,27 +682,23 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
570
682
|
|
|
571
683
|
if sw_connector.getOuterPortRef() is not None:
|
|
572
684
|
self.setChildElementOptionalRefType(connector_tag, "OUTER-PORT-REF", sw_connector.getOuterPortRef())
|
|
573
|
-
#self.writeChildOptionalRefElement(requester_iref_tag, "TARGET-R-PORT-REF", sw_connector.requester_iref.target_r_port_ref)
|
|
685
|
+
# self.writeChildOptionalRefElement(requester_iref_tag, "TARGET-R-PORT-REF", sw_connector.requester_iref.target_r_port_ref)
|
|
574
686
|
|
|
575
687
|
def writeSwConnector(self, element: ET.Element, sw_connector: SwConnector):
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
elif isinstance(sw_connector, DelegationSwConnector):
|
|
579
|
-
self.writeDelegationSwConnector(element, sw_connector)
|
|
580
|
-
else:
|
|
581
|
-
self.notImplemented("Unsupported Sw Connector %s")
|
|
688
|
+
self.writeIdentifiable(element, sw_connector)
|
|
689
|
+
self.setChildElementOptionalRefType(element, "MAPPING-REF", sw_connector.getMappingRef())
|
|
582
690
|
|
|
583
|
-
def
|
|
691
|
+
def writeCompositionSwComponentTypeSwConnectors(self, element: ET.Element, sw_component: CompositionSwComponentType):
|
|
584
692
|
sw_connectors = sw_component.getSwConnectors()
|
|
585
693
|
if len(sw_connectors) > 0:
|
|
586
|
-
|
|
587
|
-
# Change the implementation to compatible with AUTOSAR builder
|
|
694
|
+
child_element = ET.SubElement(element, "CONNECTORS")
|
|
588
695
|
for sw_connector in sw_connectors:
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
696
|
+
if isinstance(sw_connector, AssemblySwConnector):
|
|
697
|
+
self.writeAssemblySwConnector(child_element, sw_connector)
|
|
698
|
+
elif isinstance(sw_connector, DelegationSwConnector):
|
|
699
|
+
self.writeDelegationSwConnector(child_element, sw_connector)
|
|
700
|
+
else:
|
|
701
|
+
self.notImplemented("Unsupported Sw Connector %s" % type(sw_connector))
|
|
594
702
|
|
|
595
703
|
def writeCompositionSwComponentTypeDataTypeMappingSet(self, element: ET.Element, parent: CompositionSwComponentType):
|
|
596
704
|
data_type_mappings = parent.getDataTypeMappings()
|
|
@@ -604,8 +712,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
604
712
|
child_element = ET.SubElement(parent, "COMPOSITION-SW-COMPONENT-TYPE")
|
|
605
713
|
|
|
606
714
|
self.writeSwComponentType(child_element, sw_component)
|
|
607
|
-
self.
|
|
608
|
-
self.
|
|
715
|
+
self.writeCompositionSwComponentTypeComponents(child_element, sw_component)
|
|
716
|
+
self.writeCompositionSwComponentTypeSwConnectors(child_element, sw_component)
|
|
609
717
|
self.writeCompositionSwComponentTypeDataTypeMappingSet(child_element, sw_component)
|
|
610
718
|
|
|
611
719
|
def writeCompositionSwComponentTypes(self, element: ET.Element, ar_package: ARPackage):
|
|
@@ -615,7 +723,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
615
723
|
def writeLParagraphs(self, element: ET.Element, paragraph: MultiLanguageParagraph):
|
|
616
724
|
for l1 in paragraph.getL1s():
|
|
617
725
|
l1_tag = ET.SubElement(element, "L-1")
|
|
618
|
-
self.
|
|
726
|
+
self.writeARObjectAttributes(l1_tag, l1)
|
|
619
727
|
if l1.l is not None:
|
|
620
728
|
l1_tag.attrib['L'] = l1.l
|
|
621
729
|
l1_tag.text = l1.value
|
|
@@ -623,7 +731,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
623
731
|
def setMultiLanguageParagraphs(self, element: ET.Element, key: str, paragraphs: List[MultiLanguageParagraph]):
|
|
624
732
|
for paragraph in paragraphs:
|
|
625
733
|
child_element = ET.SubElement(element, key)
|
|
626
|
-
self.
|
|
734
|
+
self.writeARObjectAttributes(child_element, paragraph)
|
|
627
735
|
self.writeLParagraphs(child_element, paragraph)
|
|
628
736
|
return paragraphs
|
|
629
737
|
|
|
@@ -639,7 +747,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
639
747
|
def setDocumentationBlock(self, element: ET.Element, key: str, block: DocumentationBlock):
|
|
640
748
|
if block is not None:
|
|
641
749
|
child_element = ET.SubElement(element, key)
|
|
642
|
-
self.
|
|
750
|
+
self.writeARObjectAttributes(child_element, block)
|
|
643
751
|
self.setMultiLanguageParagraphs(child_element, "P", block.getPs())
|
|
644
752
|
for list in block.getLists():
|
|
645
753
|
self.setListElement(child_element, "LIST", list)
|
|
@@ -649,7 +757,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
649
757
|
self.setChildElementOptionalLiteral(element, "ANNOTATION-ORIGIN", annotation.getAnnotationOrigin())
|
|
650
758
|
self.setDocumentationBlock(element, "ANNOTATION-TEXT", annotation.getAnnotationText())
|
|
651
759
|
|
|
652
|
-
def setAnnotations(self, element: ET.Element, annotations: List[Annotation])
|
|
760
|
+
def setAnnotations(self, element: ET.Element, annotations: List[Annotation]):
|
|
653
761
|
if len(annotations) > 0:
|
|
654
762
|
annotations_tag = ET.SubElement(element, "ANNOTATIONS")
|
|
655
763
|
for annotation in annotations:
|
|
@@ -658,16 +766,16 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
658
766
|
|
|
659
767
|
def setSwAxisIndividual(self, element: ET.Element, props: SwAxisIndividual):
|
|
660
768
|
child_element = ET.SubElement(element, "SW-AXIS-INDIVIDUAL")
|
|
661
|
-
self.
|
|
769
|
+
self.writeARObjectAttributes(child_element, props)
|
|
662
770
|
self.setChildElementOptionalRefType(child_element, "INPUT-VARIABLE-TYPE-REF", props.getInputVariableTypeRef())
|
|
663
771
|
self.setChildElementOptionalRefType(child_element, "COMPU-METHOD-REF", props.getCompuMethodRef())
|
|
664
|
-
self.setChildElementOptionalNumericalValue(child_element, "SW-MAX-AXIS-POINTS", props.getSwMaxAxisPoints())
|
|
772
|
+
self.setChildElementOptionalNumericalValue(child_element, "SW-MAX-AXIS-POINTS", props.getSwMaxAxisPoints())
|
|
665
773
|
self.setChildElementOptionalNumericalValue(child_element, "SW-MIN-AXIS-POINTS", props.getSwMinAxisPoints())
|
|
666
774
|
self.setChildElementOptionalRefType(child_element, "DATA-CONSTR-REF", props.getDataConstrRef())
|
|
667
775
|
|
|
668
776
|
def setSwAxisGrouped(self, element: ET.Element, props: SwAxisGrouped):
|
|
669
777
|
child_element = ET.SubElement(element, "SW-AXIS-GROUPED")
|
|
670
|
-
self.
|
|
778
|
+
self.writeARObjectAttributes(child_element, props)
|
|
671
779
|
self.setChildElementOptionalRefType(child_element, "SHARED-AXIS-TYPE-REF", props.sharedAxisTypeRef)
|
|
672
780
|
|
|
673
781
|
def setSwCalprmAxis(self, element: ET.Element, axis: SwCalprmAxis):
|
|
@@ -681,7 +789,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
681
789
|
elif isinstance(axis.sw_calprm_axis_type_props, SwAxisGrouped):
|
|
682
790
|
self.setSwAxisGrouped(child_element, axis.sw_calprm_axis_type_props)
|
|
683
791
|
else:
|
|
684
|
-
self.
|
|
792
|
+
self.notImplemented("Unsupported SwCalprmAxisTypeProps %s" % type(axis.sw_calprm_axis_type_props))
|
|
685
793
|
|
|
686
794
|
def setSwCalprmAxisSet(self, element: ET.Element, key: str, set: SwCalprmAxisSet):
|
|
687
795
|
axises = set.getSwCalprmAxises()
|
|
@@ -699,20 +807,19 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
699
807
|
def setSwDataDefProps(self, element: ET.Element, key: str, props: SwDataDefProps):
|
|
700
808
|
if props is not None:
|
|
701
809
|
child_element = ET.SubElement(element, key)
|
|
702
|
-
self.
|
|
810
|
+
self.writeARObjectAttributes(child_element, props)
|
|
703
811
|
sw_data_def_props_variants_tag = ET.SubElement(child_element, "SW-DATA-DEF-PROPS-VARIANTS")
|
|
704
812
|
conditional_tag = ET.SubElement(sw_data_def_props_variants_tag, "SW-DATA-DEF-PROPS-CONDITIONAL")
|
|
705
|
-
self.
|
|
813
|
+
self.writeARObjectAttributes(conditional_tag, props.conditional)
|
|
706
814
|
self.setAnnotations(conditional_tag, props.getAnnotations())
|
|
707
815
|
self.setChildElementOptionalRefType(conditional_tag, "BASE-TYPE-REF", props.getBaseTypeRef())
|
|
816
|
+
self.setChildElementOptionalLiteral(conditional_tag, "SW-CALIBRATION-ACCESS", props.getSwCalibrationAccess())
|
|
708
817
|
self.setChildElementOptionalRefType(conditional_tag, "COMPU-METHOD-REF", props.getCompuMethodRef())
|
|
709
|
-
|
|
710
818
|
self.setValueSpecification(conditional_tag, "INVALID-VALUE", props.getInvalidValue())
|
|
711
|
-
self.setChildElementOptionalRefType(conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF", props.getImplementationDataTypeRef())
|
|
712
819
|
self.setChildElementOptionalFloatValue(conditional_tag, "STEP-SIZE", props.getStepSize())
|
|
713
820
|
self.setChildElementOptionalRefType(conditional_tag, "SW-ADDR-METHOD-REF", props.getSwAddrMethodRef())
|
|
714
|
-
self.setChildElementOptionalLiteral(conditional_tag, "SW-CALIBRATION-ACCESS", props.getSwCalibrationAccess())
|
|
715
821
|
self.setChildElementOptionalRefType(conditional_tag, "DATA-CONSTR-REF", props.getDataConstrRef())
|
|
822
|
+
self.setChildElementOptionalRefType(conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF", props.getImplementationDataTypeRef())
|
|
716
823
|
self.setSwCalprmAxisSet(conditional_tag, "SW-CALPRM-AXIS-SET", props.getSwCalprmAxisSet())
|
|
717
824
|
self.setChildElementOptionalLiteral(conditional_tag, "SW-IMPL-POLICY", props.getSwImplPolicy())
|
|
718
825
|
self.setChildElementOptionalNumericalValue(conditional_tag, "SW-INTENDED-RESOLUTION", props.getSwIntendedResolution())
|
|
@@ -736,29 +843,32 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
736
843
|
data_type_tag = ET.SubElement(element, "APPLICATION-PRIMITIVE-DATA-TYPE")
|
|
737
844
|
self.setApplicationDataType(data_type_tag, data_type)
|
|
738
845
|
|
|
739
|
-
def
|
|
846
|
+
def writeDataPrototype(self, element: ET.Element, prototype: DataPrototype):
|
|
847
|
+
self.writeIdentifiable(element, prototype)
|
|
740
848
|
self.setSwDataDefProps(element, "SW-DATA-DEF-PROPS", prototype.getSwDataDefProps())
|
|
741
849
|
|
|
742
|
-
def
|
|
743
|
-
self.
|
|
744
|
-
self.setDataPrototype(element, prototype)
|
|
850
|
+
def writeApplicationCompositeElementDataPrototype(self, element: ET.Element, prototype: ApplicationCompositeElementDataPrototype):
|
|
851
|
+
self.writeDataPrototype(element, prototype)
|
|
745
852
|
self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.typeTRef)
|
|
746
853
|
|
|
747
|
-
def
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
854
|
+
def writeApplicationRecordElement(self, element: ET.Element, prototype: ApplicationRecordElement):
|
|
855
|
+
child_element = ET.SubElement(element, "APPLICATION-RECORD-ELEMENT")
|
|
856
|
+
self.writeApplicationCompositeElementDataPrototype(child_element, prototype)
|
|
857
|
+
|
|
858
|
+
def writeApplicationRecordDataTypeElements(self, element: ET.Element, data_type: ApplicationRecordDataType):
|
|
859
|
+
record_elements = data_type.getApplicationRecordElements()
|
|
860
|
+
if len(record_elements) > 0:
|
|
861
|
+
child_element = ET.SubElement(element, "ELEMENTS")
|
|
862
|
+
for record_element in record_elements:
|
|
863
|
+
if isinstance(record_element, ApplicationRecordElement):
|
|
864
|
+
self.writeApplicationRecordElement(child_element, record_element)
|
|
865
|
+
else:
|
|
866
|
+
self.notImplemented("Unsupported ApplicationRecordDataType Element <%s>" % type(record_element))
|
|
757
867
|
|
|
758
868
|
def writeApplicationRecordDataType(self, element: ET.Element, data_type: ApplicationRecordDataType):
|
|
759
869
|
data_type_tag = ET.SubElement(element, "APPLICATION-RECORD-DATA-TYPE")
|
|
760
870
|
self.setApplicationDataType(data_type_tag, data_type)
|
|
761
|
-
self.
|
|
871
|
+
self.writeApplicationRecordDataTypeElements(data_type_tag, data_type)
|
|
762
872
|
|
|
763
873
|
def writeApplicationDataTypes(self, parent: ET.Element, ar_package: ARPackage):
|
|
764
874
|
for data_type in ar_package.getApplicationDataType():
|
|
@@ -819,28 +929,33 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
819
929
|
else:
|
|
820
930
|
self.notImplemented("Unsupported CompuConstContent <%s>" % type(content))
|
|
821
931
|
|
|
932
|
+
def setCompuScale(self, element: ET.Element, key: str, compu_scale: CompuScale):
|
|
933
|
+
if compu_scale is not None:
|
|
934
|
+
child_element = ET.SubElement(element, key)
|
|
935
|
+
self.writeARObjectAttributes(child_element, compu_scale)
|
|
936
|
+
self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", compu_scale.getShortLabel())
|
|
937
|
+
self.setChildElementOptionalLiteral(child_element, "SYMBOL", compu_scale.getSymbol())
|
|
938
|
+
self.setMultiLanguageOverviewParagraph(child_element, "DESC", compu_scale.getDesc())
|
|
939
|
+
self.setChildLimitElement(child_element, "LOWER-LIMIT", compu_scale.getLowerLimit())
|
|
940
|
+
self.setChildLimitElement(child_element, "UPPER-LIMIT", compu_scale.getUpperLimit())
|
|
941
|
+
self.writeCompuScaleContents(child_element, compu_scale)
|
|
942
|
+
|
|
822
943
|
def setCompuScales(self, element: ET.Element, compu_scales: CompuScales):
|
|
823
944
|
if compu_scales is not None:
|
|
824
|
-
|
|
945
|
+
child_element = ET.SubElement(element, "COMPU-SCALES")
|
|
825
946
|
for compu_scale in compu_scales.getCompuScales():
|
|
826
|
-
|
|
827
|
-
self.setARObjectAttributes(child_element, compu_scale)
|
|
828
|
-
self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", compu_scale.getShortLabel())
|
|
829
|
-
self.setChildElementOptionalLiteral(child_element, "SYMBOL", compu_scale.getSymbol())
|
|
830
|
-
self.setChildLimitElement(child_element, "LOWER-LIMIT", compu_scale.getLowerLimit())
|
|
831
|
-
self.setChildLimitElement(child_element, "UPPER-LIMIT", compu_scale.getUpperLimit())
|
|
832
|
-
self.writeCompuScaleContents(child_element, compu_scale)
|
|
947
|
+
self.setCompuScale(child_element, "COMPU-SCALE", compu_scale)
|
|
833
948
|
|
|
834
949
|
def setCompuConst(self, element: ET.Element, key: str, compu_const: CompuConst):
|
|
835
950
|
if compu_const is not None:
|
|
836
951
|
child_element = ET.SubElement(element, key)
|
|
837
|
-
self.
|
|
952
|
+
self.writeARObjectAttributes(child_element, compu_const)
|
|
838
953
|
self.setCompuConstContent(child_element, compu_const.getCompuConstContentType())
|
|
839
954
|
|
|
840
955
|
def setCompu(self, element: ET.Element, key: str, compu: Compu):
|
|
841
|
-
if
|
|
956
|
+
if compu is not None:
|
|
842
957
|
child_element = ET.SubElement(element, key)
|
|
843
|
-
self.
|
|
958
|
+
self.writeARObjectAttributes(child_element, compu)
|
|
844
959
|
self.setCompuScales(child_element, compu.getCompuContent())
|
|
845
960
|
self.setCompuConst(child_element, "COMPU-DEFAULT-VALUE", compu.getCompuDefaultValue())
|
|
846
961
|
|
|
@@ -852,30 +967,31 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
852
967
|
self.setCompu(child_element, "COMPU-INTERNAL-TO-PHYS", compu_method.getCompuInternalToPhys())
|
|
853
968
|
self.setCompu(child_element, "COMPU-PHYS-TO-INTERNAL", compu_method.getCompuPhysToInternal())
|
|
854
969
|
|
|
855
|
-
def
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
970
|
+
def writeApplicationValueSpecification(self, element: ET.Element, value_spec: ApplicationValueSpecification):
|
|
971
|
+
if value_spec is not None:
|
|
972
|
+
child_element = ET.SubElement(element, "APPLICATION-VALUE-SPECIFICATION")
|
|
973
|
+
self.writeValueSpecification(child_element, value_spec)
|
|
974
|
+
self.setChildElementOptionalLiteral(child_element, "CATEGORY", value_spec.getCategory())
|
|
975
|
+
self.writeSwValueCont(child_element, value_spec.getSwValueCont())
|
|
860
976
|
|
|
861
|
-
def
|
|
977
|
+
def writeRecordValueSpecification(self, element: ET.Element, spec: RecordValueSpecification):
|
|
862
978
|
child_element = ET.SubElement(element, "RECORD-VALUE-SPECIFICATION")
|
|
863
|
-
self.
|
|
979
|
+
self.writeARObjectAttributes(child_element, spec)
|
|
864
980
|
self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", spec.getShortLabel())
|
|
865
981
|
fields = spec.getFields()
|
|
866
982
|
if len(fields) > 0:
|
|
867
983
|
fields_tag = ET.SubElement(child_element, "FIELDS")
|
|
868
984
|
for field in fields:
|
|
869
985
|
if isinstance(field, ApplicationValueSpecification):
|
|
870
|
-
self.
|
|
986
|
+
self.writeApplicationValueSpecification(fields_tag, field)
|
|
871
987
|
elif isinstance(field, NumericalValueSpecification):
|
|
872
|
-
self.
|
|
988
|
+
self.writeNumericalValueSpecification(fields_tag, field)
|
|
873
989
|
elif isinstance(field, TextValueSpecification):
|
|
874
|
-
self.
|
|
990
|
+
self.writeTextValueSpecification(fields_tag, field)
|
|
875
991
|
elif isinstance(field, ArrayValueSpecification):
|
|
876
|
-
self.
|
|
992
|
+
self.writeArrayValueSpecification(fields_tag, field)
|
|
877
993
|
elif isinstance(field, RecordValueSpecification):
|
|
878
|
-
self.
|
|
994
|
+
self.writeRecordValueSpecification(fields_tag, field)
|
|
879
995
|
else:
|
|
880
996
|
self.notImplemented("Unsupported Field <%s>" % type(field))
|
|
881
997
|
|
|
@@ -889,7 +1005,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
889
1005
|
def setInternalConstrs(self, element: ET.Element, constrs: InternalConstrs):
|
|
890
1006
|
if constrs is not None:
|
|
891
1007
|
constrs_tag = ET.SubElement(element, "INTERNAL-CONSTRS")
|
|
892
|
-
self.
|
|
1008
|
+
self.writeARObjectAttributes(constrs_tag, constrs)
|
|
893
1009
|
if constrs.lower_limit is not None:
|
|
894
1010
|
self.setChildLimitElement(constrs_tag, "LOWER-LIMIT", constrs.lower_limit)
|
|
895
1011
|
if constrs.upper_limit is not None:
|
|
@@ -898,7 +1014,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
898
1014
|
def setPhysConstrs(self, element: ET.Element, constrs: PhysConstrs):
|
|
899
1015
|
if constrs is not None:
|
|
900
1016
|
child_element = ET.SubElement(element, "PHYS-CONSTRS")
|
|
901
|
-
self.
|
|
1017
|
+
self.writeARObjectAttributes(child_element, constrs)
|
|
902
1018
|
if constrs.lower_limit is not None:
|
|
903
1019
|
self.setChildLimitElement(child_element, "LOWER-LIMIT", constrs.lower_limit)
|
|
904
1020
|
if constrs.upper_limit is not None:
|
|
@@ -911,7 +1027,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
911
1027
|
rules_tag = ET.SubElement(element, "DATA-CONSTR-RULES")
|
|
912
1028
|
for rule in rules:
|
|
913
1029
|
child_element = ET.SubElement(rules_tag, "DATA-CONSTR-RULE")
|
|
914
|
-
self.
|
|
1030
|
+
self.writeARObjectAttributes(child_element, rule)
|
|
915
1031
|
self.setChildElementOptionalNumericalValue(child_element, "CONSTR-LEVEL", rule.constrLevel)
|
|
916
1032
|
self.setPhysConstrs(child_element, rule.physConstrs)
|
|
917
1033
|
self.setInternalConstrs(child_element, rule.internalConstrs)
|
|
@@ -919,7 +1035,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
919
1035
|
def writeDataConstr(self, element: ET.Element, constr: DataConstr):
|
|
920
1036
|
child_element = ET.SubElement(element, "DATA-CONSTR")
|
|
921
1037
|
self.writeIdentifiable(child_element, constr)
|
|
922
|
-
self.writeDataConstrRules(child_element, constr)
|
|
1038
|
+
self.writeDataConstrRules(child_element, constr)
|
|
923
1039
|
|
|
924
1040
|
def writeUnit(self, element: ET.Element, unit: Unit):
|
|
925
1041
|
self.logger.debug("writeUnit %s" % unit.getShortName())
|
|
@@ -932,16 +1048,16 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
932
1048
|
|
|
933
1049
|
def setRModeInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: RModeInAtomicSwcInstanceRef):
|
|
934
1050
|
child_element = ET.SubElement(element, key)
|
|
935
|
-
self.
|
|
1051
|
+
self.writeARObjectAttributes(child_element, iref)
|
|
936
1052
|
self.setChildElementOptionalRefType(child_element, "BASE", iref.getBaseRef())
|
|
937
1053
|
self.setChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF", iref.getContextPortRef())
|
|
938
|
-
self.setChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF", iref.getContextModeDeclarationGroupPrototypeRef())
|
|
1054
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF", iref.getContextModeDeclarationGroupPrototypeRef()) # noqa E501
|
|
939
1055
|
self.setChildElementOptionalRefType(child_element, "TARGET-MODE-DECLARATION-REF", iref.getTargetModeDeclarationRef())
|
|
940
1056
|
|
|
941
1057
|
def setPOperationInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: POperationInAtomicSwcInstanceRef):
|
|
942
1058
|
if iref is not None:
|
|
943
1059
|
child_element = ET.SubElement(element, key)
|
|
944
|
-
self.
|
|
1060
|
+
self.writeARObjectAttributes(child_element, iref)
|
|
945
1061
|
self.setChildElementOptionalRefType(child_element, "CONTEXT-P-PORT-REF", iref.getContextPPortRef())
|
|
946
1062
|
self.setChildElementOptionalRefType(child_element, "TARGET-PROVIDED-OPERATION-REF", iref.getTargetProvidedOperationRef())
|
|
947
1063
|
|
|
@@ -954,20 +1070,20 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
954
1070
|
self.setRModeInAtomicSwcInstanceRef(child_element, "DISABLED-MODE-IREF", iref)
|
|
955
1071
|
self.setChildElementOptionalRefType(element, "START-ON-EVENT-REF", event.startOnEventRef)
|
|
956
1072
|
|
|
957
|
-
def
|
|
1073
|
+
def writeTimingEvent(self, element: ET.Element, event: TimingEvent):
|
|
958
1074
|
if event is not None:
|
|
959
1075
|
child_element = ET.SubElement(element, "TIMING-EVENT")
|
|
960
1076
|
self.setRTEEvent(child_element, event)
|
|
961
1077
|
self.setChildElementOptionalTimeValue(child_element, "OFFSET", event.getOffset())
|
|
962
1078
|
self.setChildElementOptionalTimeValue(child_element, "PERIOD", event.getPeriod())
|
|
963
1079
|
|
|
964
|
-
def
|
|
1080
|
+
def writeOperationInvokedEvent(self, element: ET.Element, event: OperationInvokedEvent):
|
|
965
1081
|
if event is not None:
|
|
966
1082
|
child_element = ET.SubElement(element, "OPERATION-INVOKED-EVENT")
|
|
967
1083
|
self.setRTEEvent(child_element, event)
|
|
968
1084
|
self.setPOperationInAtomicSwcInstanceRef(child_element, "OPERATION-IREF", event.operationIRef)
|
|
969
1085
|
|
|
970
|
-
def
|
|
1086
|
+
def writeSwcModeSwitchEvent(self, element: ET.Element, event: SwcModeSwitchEvent):
|
|
971
1087
|
if event is not None:
|
|
972
1088
|
child_element = ET.SubElement(element, "SWC-MODE-SWITCH-EVENT")
|
|
973
1089
|
self.setRTEEvent(child_element, event)
|
|
@@ -984,46 +1100,61 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
984
1100
|
self.setChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF", iref.getContextRPortRef())
|
|
985
1101
|
self.setChildElementOptionalRefType(child_element, "TARGET-DATA-ELEMENT-REF", iref.getTargetDataElementRef())
|
|
986
1102
|
|
|
987
|
-
def
|
|
1103
|
+
def writeDataReceivedEvent(self, element: ET.Element, event: DataReceivedEvent):
|
|
988
1104
|
if event is not None:
|
|
989
1105
|
child_element = ET.SubElement(element, "DATA-RECEIVED-EVENT")
|
|
990
1106
|
self.setRTEEvent(child_element, event)
|
|
991
1107
|
self.setRVariableInAtomicSwcInstanceRef(child_element, event.dataIRef)
|
|
992
1108
|
|
|
993
|
-
def
|
|
1109
|
+
def writeInternalTriggerOccurredEvent(self, element: ET.Element, event: DataReceivedEvent):
|
|
994
1110
|
pass
|
|
995
1111
|
|
|
996
|
-
def
|
|
1112
|
+
def writeInitEvent(self, element: ET.Element, event: InitEvent):
|
|
997
1113
|
if event is not None:
|
|
998
1114
|
child_element = ET.SubElement(element, "INIT-EVENT")
|
|
999
1115
|
self.setRTEEvent(child_element, event)
|
|
1000
1116
|
|
|
1001
|
-
def
|
|
1117
|
+
def writeAsynchronousServerCallReturnsEvent(self, element: ET.Element, event: InitEvent):
|
|
1002
1118
|
if event is not None:
|
|
1003
1119
|
child_element = ET.SubElement(element, "ASYNCHRONOUS-SERVER-CALL-RETURNS-EVENT")
|
|
1004
1120
|
self.setRTEEvent(child_element, event)
|
|
1005
1121
|
self.setChildElementOptionalRefType(child_element, "EVENT-SOURCE-REF", event.getActivationReasonRepresentationRef())
|
|
1006
1122
|
|
|
1007
|
-
def
|
|
1123
|
+
def writeModeSwitchedAckEvent(self, element: ET.Element, event: ModeSwitchedAckEvent):
|
|
1124
|
+
if event is not None:
|
|
1125
|
+
child_element = ET.SubElement(element, "MODE-SWITCHED-ACK-EVENT")
|
|
1126
|
+
self.setRTEEvent(child_element, event)
|
|
1127
|
+
self.setChildElementOptionalRefType(child_element, "EVENT-SOURCE-REF", event.getEventSourceRef())
|
|
1128
|
+
|
|
1129
|
+
def writeBackgroundEvent(self, element: ET.Element, event: BackgroundEvent):
|
|
1130
|
+
if event is not None:
|
|
1131
|
+
child_element = ET.SubElement(element, "BACKGROUND-EVENT")
|
|
1132
|
+
self.setRTEEvent(child_element, event)
|
|
1133
|
+
|
|
1134
|
+
def writeSwcInternalBehaviorEvents(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
1008
1135
|
events = parent.getRteEvents()
|
|
1009
1136
|
if len(events) > 0:
|
|
1010
1137
|
child_element = ET.SubElement(element, "EVENTS")
|
|
1011
1138
|
|
|
1012
1139
|
for event in events:
|
|
1013
1140
|
if isinstance(event, TimingEvent):
|
|
1014
|
-
self.
|
|
1141
|
+
self.writeTimingEvent(child_element, event)
|
|
1015
1142
|
elif isinstance(event, OperationInvokedEvent):
|
|
1016
|
-
self.
|
|
1143
|
+
self.writeOperationInvokedEvent(child_element, event)
|
|
1017
1144
|
elif isinstance(event, SwcModeSwitchEvent):
|
|
1018
|
-
self.
|
|
1145
|
+
self.writeSwcModeSwitchEvent(child_element, event)
|
|
1019
1146
|
elif isinstance(event, DataReceivedEvent):
|
|
1020
|
-
self.
|
|
1147
|
+
self.writeDataReceivedEvent(child_element, event)
|
|
1021
1148
|
elif isinstance(event, InternalTriggerOccurredEvent):
|
|
1022
|
-
self.
|
|
1149
|
+
self.writeInternalTriggerOccurredEvent(child_element, event)
|
|
1023
1150
|
elif isinstance(event, InitEvent):
|
|
1024
|
-
self.
|
|
1151
|
+
self.writeInitEvent(child_element, event)
|
|
1025
1152
|
elif isinstance(event, AsynchronousServerCallReturnsEvent):
|
|
1026
|
-
self.
|
|
1153
|
+
self.writeAsynchronousServerCallReturnsEvent(child_element, event)
|
|
1154
|
+
elif isinstance(event, ModeSwitchedAckEvent):
|
|
1155
|
+
self.writeModeSwitchedAckEvent(child_element, event)
|
|
1156
|
+
elif isinstance(event, BackgroundEvent):
|
|
1157
|
+
self.writeBackgroundEvent(child_element, event)
|
|
1027
1158
|
else:
|
|
1028
1159
|
self.notImplemented("Unsupported Event <%s>" % type(event))
|
|
1029
1160
|
|
|
@@ -1042,27 +1173,36 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1042
1173
|
for ref in refs:
|
|
1043
1174
|
self.setChildElementOptionalRefType(refs_tag, "DATA-TYPE-MAPPING-REF", ref)
|
|
1044
1175
|
|
|
1176
|
+
def writeInternalBehaviorStaticMemories(self, element: ET.Element, behavior: InternalBehavior):
|
|
1177
|
+
memories = behavior.getStaticMemories()
|
|
1178
|
+
if len(memories) > 0:
|
|
1179
|
+
child_element = ET.SubElement(element, "STATIC-MEMORYS")
|
|
1180
|
+
for memory in memories:
|
|
1181
|
+
if isinstance(memory, VariableDataPrototype):
|
|
1182
|
+
self.writeVariableDataPrototype(child_element, memory)
|
|
1183
|
+
|
|
1045
1184
|
def writeInternalBehavior(self, element: ET.Element, behavior: InternalBehavior):
|
|
1046
1185
|
self.writeIdentifiable(element, behavior)
|
|
1047
|
-
self.
|
|
1186
|
+
self.writeSwcInternalBehaviorParameterDataPrototypes(element, "CONSTANT-MEMORYS", behavior.getConstantMemories())
|
|
1048
1187
|
self.writeDataTypeMappingRefs(element, behavior)
|
|
1049
1188
|
self.writeExclusiveAreas(element, behavior)
|
|
1189
|
+
self.writeInternalBehaviorStaticMemories(element, behavior)
|
|
1050
1190
|
|
|
1051
1191
|
def setAutosarVariableRef(self, element: ET.Element, key: str, ref: AutosarVariableRef):
|
|
1052
1192
|
if ref is not None:
|
|
1053
1193
|
child_element = ET.SubElement(element, key)
|
|
1054
|
-
self.
|
|
1194
|
+
self.writeARObjectAttributes(child_element, ref)
|
|
1055
1195
|
if ref.getAutosarVariableIRef() is not None:
|
|
1056
1196
|
child_element = ET.SubElement(child_element, "AUTOSAR-VARIABLE-IREF")
|
|
1057
|
-
#self.setARObjectAttributes(child_element, ref)
|
|
1197
|
+
# self.setARObjectAttributes(child_element, ref)
|
|
1058
1198
|
self.setChildElementOptionalRefType(child_element, "PORT-PROTOTYPE-REF", ref.getAutosarVariableIRef().getPortPrototypeRef())
|
|
1059
|
-
self.setChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF", ref.getAutosarVariableIRef().getTargetDataPrototypeRef())
|
|
1199
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF", ref.getAutosarVariableIRef().getTargetDataPrototypeRef()) # noqa E501
|
|
1060
1200
|
self.setChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF", ref.getLocalVariableRef())
|
|
1061
1201
|
|
|
1062
1202
|
def setComponentInSystemInstanceRef(self, element: ET.Element, tag_name: str, ref: ComponentInSystemInstanceRef):
|
|
1063
1203
|
if ref is not None:
|
|
1064
1204
|
child_element = ET.SubElement(element, tag_name)
|
|
1065
|
-
self.
|
|
1205
|
+
self.writeARObjectAttributes(child_element, ref)
|
|
1066
1206
|
self.setChildElementOptionalRefType(child_element, "BASE-REF", ref.getBaseRef())
|
|
1067
1207
|
self.setChildElementOptionalRefType(child_element, "CONTEXT-COMPOSITION-REF", ref.getContextCompositionRef())
|
|
1068
1208
|
self.setChildElementOptionalRefType(child_element, "TARGET-COMPONENT-REF", ref.getTargetComponentRef())
|
|
@@ -1082,42 +1222,42 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1082
1222
|
self.writeIdentifiable(child_element, parameter_access)
|
|
1083
1223
|
self.setAutosarParameterRef(child_element, "ACCESSED-PARAMETER", parameter_access.getAccessedParameter())
|
|
1084
1224
|
|
|
1085
|
-
def
|
|
1225
|
+
def writeRunnableEntityParameterAccesses(self, element: ET.Element, entity: RunnableEntity):
|
|
1086
1226
|
parameter_accesses = entity.getParameterAccesses()
|
|
1087
1227
|
if len(parameter_accesses) > 0:
|
|
1088
1228
|
child_element = ET.SubElement(element, "PARAMETER-ACCESSS")
|
|
1089
1229
|
for parameter_access in parameter_accesses:
|
|
1090
1230
|
self.writeParameterAccess(child_element, parameter_access)
|
|
1091
1231
|
|
|
1092
|
-
def
|
|
1232
|
+
def writeRunnableEntityDataReceivePointByArguments(self, element: ET.Element, entity: RunnableEntity):
|
|
1093
1233
|
accesses = entity.getDataReceivePointByArguments()
|
|
1094
1234
|
if len(accesses) > 0:
|
|
1095
1235
|
child_element = ET.SubElement(element, "DATA-RECEIVE-POINT-BY-ARGUMENTS")
|
|
1096
1236
|
for access in accesses:
|
|
1097
1237
|
self.setVariableAccess(child_element, access)
|
|
1098
1238
|
|
|
1099
|
-
def
|
|
1239
|
+
def writeRunnableEntityDataSendPoints(self, element: ET.Element, entity: RunnableEntity):
|
|
1100
1240
|
points = entity.getDataSendPoints()
|
|
1101
1241
|
if len(points) > 0:
|
|
1102
1242
|
child_element = ET.SubElement(element, "DATA-SEND-POINTS")
|
|
1103
1243
|
for point in points:
|
|
1104
1244
|
self.setVariableAccess(child_element, point)
|
|
1105
1245
|
|
|
1106
|
-
def
|
|
1246
|
+
def writeRunnableEntityDataReadAccesses(self, element: ET.Element, entity: RunnableEntity):
|
|
1107
1247
|
accesses = entity.getDataReadAccesses()
|
|
1108
1248
|
if len(accesses) > 0:
|
|
1109
1249
|
child_element = ET.SubElement(element, "DATA-READ-ACCESSS")
|
|
1110
1250
|
for access in accesses:
|
|
1111
1251
|
self.setVariableAccess(child_element, access)
|
|
1112
1252
|
|
|
1113
|
-
def
|
|
1253
|
+
def writeRunnableEntityDataWriteAccesses(self, element: ET.Element, entity: RunnableEntity):
|
|
1114
1254
|
accesses = entity.getDataWriteAccesses()
|
|
1115
1255
|
if len(accesses) > 0:
|
|
1116
1256
|
child_element = ET.SubElement(element, "DATA-WRITE-ACCESSS")
|
|
1117
1257
|
for access in accesses:
|
|
1118
1258
|
self.setVariableAccess(child_element, access)
|
|
1119
1259
|
|
|
1120
|
-
def
|
|
1260
|
+
def writeRunnableEntityReadLocalVariables(self, element: ET.Element, entity: RunnableEntity):
|
|
1121
1261
|
variables = entity.getReadLocalVariables()
|
|
1122
1262
|
if len(variables) > 0:
|
|
1123
1263
|
child_element = ET.SubElement(element, "READ-LOCAL-VARIABLES")
|
|
@@ -1127,7 +1267,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1127
1267
|
def setROperationInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: ROperationInAtomicSwcInstanceRef):
|
|
1128
1268
|
if iref is not None:
|
|
1129
1269
|
child_element = ET.SubElement(element, key)
|
|
1130
|
-
self.
|
|
1270
|
+
self.writeARObjectAttributes(child_element, iref)
|
|
1131
1271
|
self.setChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF", iref.getContextRPortRef())
|
|
1132
1272
|
self.setChildElementOptionalRefType(child_element, "TARGET-REQUIRED-OPERATION-REF", iref.getTargetRequiredOperationRef())
|
|
1133
1273
|
|
|
@@ -1145,7 +1285,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1145
1285
|
self.writeIdentifiable(child_element, call_point)
|
|
1146
1286
|
self.setServerCallPoint(child_element, call_point)
|
|
1147
1287
|
|
|
1148
|
-
def
|
|
1288
|
+
def writeRunnableEntityServerCallPoints(self, element: ET.Element, entity: RunnableEntity):
|
|
1149
1289
|
call_points = entity.getServerCallPoints()
|
|
1150
1290
|
if len(call_points) > 0:
|
|
1151
1291
|
child_element = ET.SubElement(element, "SERVER-CALL-POINTS")
|
|
@@ -1155,44 +1295,81 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1155
1295
|
elif isinstance(call_point, AsynchronousServerCallPoint):
|
|
1156
1296
|
self.setAsynchronousServerCallPoint(child_element, call_point)
|
|
1157
1297
|
else:
|
|
1158
|
-
self.
|
|
1298
|
+
self.notImplemented("Unsupported ServerCallPoint type <%s>" % type(call_point))
|
|
1159
1299
|
|
|
1160
|
-
def
|
|
1300
|
+
def writeRunnableEntityWrittenLocalVariable(self, element: ET.Element, entity: RunnableEntity):
|
|
1161
1301
|
variables = entity.getWrittenLocalVariables()
|
|
1162
1302
|
if len(variables) > 0:
|
|
1163
1303
|
child_element = ET.SubElement(element, "WRITTEN-LOCAL-VARIABLES")
|
|
1164
1304
|
for access in variables:
|
|
1165
1305
|
self.setVariableAccess(child_element, access)
|
|
1166
1306
|
|
|
1167
|
-
def
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
instance_ref_tag = ET.SubElement(child_element, "R-MODE-GROUP-IN-ATOMIC-SWC-INSTANCE-REF")
|
|
1171
|
-
self.setChildElementOptionalRefType(instance_ref_tag, "CONTEXT-R-PORT-REF", iref.getContextRPortRef())
|
|
1172
|
-
self.setChildElementOptionalRefType(instance_ref_tag, "TARGET-MODE-GROUP-REF", iref.getTargetModeGroupRef())
|
|
1307
|
+
def writeModeGroupInAtomicSwcInstanceRef(self, element: ET.Element, instance_ref: ModeGroupInAtomicSwcInstanceRef):
|
|
1308
|
+
self.setChildElementOptionalRefType(element, "BASE-REF", instance_ref.getBaseRef())
|
|
1309
|
+
self.setChildElementOptionalRefType(element, "CONTEXT-PORT-REF", instance_ref.getContextPortRef())
|
|
1173
1310
|
|
|
1174
|
-
def
|
|
1175
|
-
if
|
|
1176
|
-
child_element = ET.SubElement(element,
|
|
1177
|
-
self.
|
|
1178
|
-
self.setChildElementOptionalRefType(child_element, "
|
|
1311
|
+
def writeRModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, instance_ref: RModeGroupInAtomicSWCInstanceRef):
|
|
1312
|
+
if instance_ref is not None:
|
|
1313
|
+
child_element = ET.SubElement(element, "R-MODE-GROUP-IN-ATOMIC-SWC-INSTANCE-REF")
|
|
1314
|
+
self.writeModeGroupInAtomicSwcInstanceRef(child_element, instance_ref)
|
|
1315
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF", instance_ref.getContextRPortRef())
|
|
1316
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-MODE-GROUP-REF", instance_ref.getTargetModeGroupRef())
|
|
1317
|
+
|
|
1318
|
+
def writePModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, instance_ref: PModeGroupInAtomicSwcInstanceRef):
|
|
1319
|
+
if instance_ref is not None:
|
|
1320
|
+
child_element = ET.SubElement(element, "P-MODE-GROUP-IN-ATOMIC-SWC-INSTANCE-REF")
|
|
1321
|
+
self.writeModeGroupInAtomicSwcInstanceRef(child_element, instance_ref)
|
|
1322
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-P-PORT-REF", instance_ref.getContextPPortRef())
|
|
1323
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-MODE-GROUP-REF", instance_ref.getTargetModeGroupRef())
|
|
1179
1324
|
|
|
1180
|
-
def
|
|
1325
|
+
def setModeGroupIRef(self, element: ET.Element, key: str, instance_ref: ModeGroupInAtomicSwcInstanceRef):
|
|
1326
|
+
if instance_ref is not None:
|
|
1327
|
+
child_element = ET.SubElement(element, key)
|
|
1328
|
+
if isinstance(instance_ref, PModeGroupInAtomicSwcInstanceRef):
|
|
1329
|
+
self.writePModeGroupInAtomicSWCInstanceRef(child_element, instance_ref)
|
|
1330
|
+
elif isinstance(instance_ref, RModeGroupInAtomicSWCInstanceRef):
|
|
1331
|
+
self.writeRModeGroupInAtomicSWCInstanceRef(child_element, instance_ref)
|
|
1332
|
+
else:
|
|
1333
|
+
self.notImplemented("Unsupported Mode Group IRef <%s>" % type(instance_ref))
|
|
1334
|
+
return instance_ref
|
|
1335
|
+
|
|
1336
|
+
def writeModeAccessPoint(self, element: ET.Element, point: ModeAccessPoint):
|
|
1337
|
+
if point is not None:
|
|
1338
|
+
child_element = ET.SubElement(element, "MODE-ACCESS-POINT")
|
|
1339
|
+
self.setModeGroupIRef(child_element, "MODE-GROUP-IREF", point.getModeGroupIRef())
|
|
1340
|
+
|
|
1341
|
+
def writeRunnableEntityModeAccessPoints(self, element: ET.Element, entity: RunnableEntity):
|
|
1181
1342
|
points = entity.getModeAccessPoints()
|
|
1182
1343
|
if len(points) > 0:
|
|
1183
|
-
|
|
1344
|
+
child_element = ET.SubElement(element, "MODE-ACCESS-POINTS")
|
|
1184
1345
|
for point in points:
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1346
|
+
if isinstance(point, ModeAccessPoint):
|
|
1347
|
+
self.writeModeAccessPoint(child_element, point)
|
|
1348
|
+
else:
|
|
1349
|
+
self.notImplemented("Unsupported Mode Access Points <%s>" % type(point))
|
|
1350
|
+
|
|
1351
|
+
def writeModeSwitchPointModeGroupIRef(self, element: ET.Element, point: ModeSwitchPoint):
|
|
1352
|
+
if point is not None:
|
|
1353
|
+
child_element = ET.SubElement(element, "MODE-GROUP-IREF")
|
|
1354
|
+
instance_ref = point.getModeGroupIRef()
|
|
1355
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-P-PORT-REF", instance_ref.getContextPPortRef())
|
|
1356
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-MODE-GROUP-REF", instance_ref.getTargetModeGroupRef())
|
|
1357
|
+
|
|
1358
|
+
def writeModeSwitchPoint(self, element: ET.Element, point: ModeSwitchPoint):
|
|
1359
|
+
if point is not None:
|
|
1360
|
+
child_element = ET.SubElement(element, "MODE-SWITCH-POINT")
|
|
1361
|
+
self.writeIdentifiable(child_element, point)
|
|
1362
|
+
self.writeModeSwitchPointModeGroupIRef(child_element, point)
|
|
1363
|
+
|
|
1364
|
+
def writeRunnableEntityModeSwitchPoints(self, element: ET.Element, entity: RunnableEntity):
|
|
1189
1365
|
points = entity.getModeSwitchPoints()
|
|
1190
1366
|
if len(points) > 0:
|
|
1191
|
-
|
|
1367
|
+
child_element = ET.SubElement(element, "MODE-SWITCH-POINTS")
|
|
1192
1368
|
for point in points:
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1369
|
+
if isinstance(point, ModeSwitchPoint):
|
|
1370
|
+
self.writeModeSwitchPoint(child_element, point)
|
|
1371
|
+
else:
|
|
1372
|
+
self.notImplemented("unsupported Mode Switch Point <%s>" % type(point))
|
|
1196
1373
|
|
|
1197
1374
|
def setRunnableEntityArgument(self, element: ET.Element, argument: RunnableEntityArgument):
|
|
1198
1375
|
child_element = ET.SubElement(element, "RUNNABLE-ENTITY-ARGUMENT")
|
|
@@ -1208,7 +1385,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1208
1385
|
else:
|
|
1209
1386
|
self.notImplemented("Unsupported argument of Runnable Entity <%s>" % type(argument))
|
|
1210
1387
|
|
|
1211
|
-
def
|
|
1388
|
+
def writeRunnableEntityAsynchronousServerCallResultPoint(self, element: ET.Element, entity: RunnableEntity):
|
|
1212
1389
|
points = entity.getAsynchronousServerCallResultPoints()
|
|
1213
1390
|
if len(points) > 0:
|
|
1214
1391
|
points_tag = ET.SubElement(element, "ASYNCHRONOUS-SERVER-CALL-RESULT-POINTS")
|
|
@@ -1220,23 +1397,23 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1220
1397
|
def writeRunnableEntity(self, element: ET.Element, entity: RunnableEntity):
|
|
1221
1398
|
if entity is not None:
|
|
1222
1399
|
child_element = ET.SubElement(element, "RUNNABLE-ENTITY")
|
|
1223
|
-
self.
|
|
1400
|
+
self.writeExecutableEntity(child_element, entity)
|
|
1224
1401
|
self.writeRunnableEntityArguments(child_element, entity)
|
|
1225
|
-
self.
|
|
1402
|
+
self.writeRunnableEntityAsynchronousServerCallResultPoint(child_element, entity)
|
|
1226
1403
|
self.setChildElementOptionalBooleanValue(child_element, "CAN-BE-INVOKED-CONCURRENTLY", entity.getCanBeInvokedConcurrently())
|
|
1227
|
-
self.
|
|
1228
|
-
self.
|
|
1229
|
-
self.
|
|
1230
|
-
self.
|
|
1231
|
-
self.
|
|
1232
|
-
self.
|
|
1233
|
-
self.
|
|
1234
|
-
self.
|
|
1235
|
-
self.
|
|
1404
|
+
self.writeRunnableEntityDataReadAccesses(child_element, entity)
|
|
1405
|
+
self.writeRunnableEntityDataReceivePointByArguments(child_element, entity)
|
|
1406
|
+
self.writeRunnableEntityDataSendPoints(child_element, entity)
|
|
1407
|
+
self.writeRunnableEntityDataWriteAccesses(child_element, entity)
|
|
1408
|
+
self.writeRunnableEntityModeAccessPoints(child_element, entity)
|
|
1409
|
+
self.writeRunnableEntityModeSwitchPoints(child_element, entity)
|
|
1410
|
+
self.writeRunnableEntityParameterAccesses(child_element, entity)
|
|
1411
|
+
self.writeRunnableEntityReadLocalVariables(child_element, entity)
|
|
1412
|
+
self.writeRunnableEntityServerCallPoints(child_element, entity)
|
|
1236
1413
|
self.setChildElementOptionalLiteral(child_element, "SYMBOL", entity.symbol)
|
|
1237
|
-
self.
|
|
1414
|
+
self.writeRunnableEntityWrittenLocalVariable(child_element, entity)
|
|
1238
1415
|
|
|
1239
|
-
def
|
|
1416
|
+
def writeSwcInternalBehaviorRunnables(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
1240
1417
|
entities = behavior.getRunnableEntities()
|
|
1241
1418
|
if len(entities) > 0:
|
|
1242
1419
|
runnables_tag = ET.SubElement(element, "RUNNABLES")
|
|
@@ -1254,9 +1431,9 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1254
1431
|
if isinstance(prototype, VariableDataPrototype):
|
|
1255
1432
|
self.writeVariableDataPrototype(child_element, prototype)
|
|
1256
1433
|
else:
|
|
1257
|
-
self.
|
|
1258
|
-
|
|
1259
|
-
def
|
|
1434
|
+
self.notImplemented("Unsupported ArTypedPerInstanceMemories <%s>" % type(prototype))
|
|
1435
|
+
|
|
1436
|
+
def writeSwcInternalBehaviorExplicitInterRunnableVariables(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
1260
1437
|
prototypes = behavior.getExplicitInterRunnableVariables()
|
|
1261
1438
|
if len(prototypes) > 0:
|
|
1262
1439
|
child_element = ET.SubElement(element, "EXPLICIT-INTER-RUNNABLE-VARIABLES")
|
|
@@ -1264,9 +1441,9 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1264
1441
|
if isinstance(prototype, VariableDataPrototype):
|
|
1265
1442
|
self.writeVariableDataPrototype(child_element, prototype)
|
|
1266
1443
|
else:
|
|
1267
|
-
self.
|
|
1444
|
+
self.notImplemented("Unsupported ExplicitInterRunnableVariables <%s>" % type(prototype))
|
|
1268
1445
|
|
|
1269
|
-
def
|
|
1446
|
+
def writeSwcInternalBehaviorPerInstanceMemories(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
1270
1447
|
memories = behavior.getPerInstanceMemories()
|
|
1271
1448
|
if len(memories) > 0:
|
|
1272
1449
|
memories_tag = ET.SubElement(element, "PER-INSTANCE-MEMORYS")
|
|
@@ -1276,21 +1453,20 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1276
1453
|
self.setChildElementOptionalLiteral(child_element, "INIT-VALUE", memory.getInitValue())
|
|
1277
1454
|
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", memory.getSwDataDefProps())
|
|
1278
1455
|
self.setChildElementOptionalLiteral(child_element, "TYPE", memory.getType())
|
|
1279
|
-
self.setChildElementOptionalLiteral
|
|
1456
|
+
self.setChildElementOptionalLiteral(child_element, "TYPE-DEFINITION", memory.getTypeDefinition())
|
|
1280
1457
|
|
|
1281
|
-
def
|
|
1458
|
+
def writeParameterDataPrototype(self, element: ET.Element, prototype: ParameterDataPrototype):
|
|
1282
1459
|
child_element = ET.SubElement(element, "PARAMETER-DATA-PROTOTYPE")
|
|
1283
|
-
self.
|
|
1284
|
-
self.setAutosarDataPrototype(child_element, prototype)
|
|
1460
|
+
self.writeAutosarDataPrototype(child_element, prototype)
|
|
1285
1461
|
self.setValueSpecification(child_element, "INIT-VALUE", prototype.getInitValue())
|
|
1286
1462
|
|
|
1287
|
-
def
|
|
1463
|
+
def writeSwcInternalBehaviorParameterDataPrototypes(self, element: ET.Element, key: str, parameters: List[ParameterDataPrototype]):
|
|
1288
1464
|
if len(parameters) > 0:
|
|
1289
1465
|
child_element = ET.SubElement(element, key)
|
|
1290
1466
|
for parameter in parameters:
|
|
1291
|
-
self.
|
|
1467
|
+
self.writeParameterDataPrototype(child_element, parameter)
|
|
1292
1468
|
|
|
1293
|
-
def writePortDefinedArgumentValues(self, element: ET.Element, argument_values: List[PortDefinedArgumentValue])
|
|
1469
|
+
def writePortDefinedArgumentValues(self, element: ET.Element, argument_values: List[PortDefinedArgumentValue]):
|
|
1294
1470
|
if len(argument_values) > 0:
|
|
1295
1471
|
child_element = ET.SubElement(element, "PORT-ARG-VALUES")
|
|
1296
1472
|
for argument_value in argument_values:
|
|
@@ -1299,7 +1475,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1299
1475
|
self.setValueSpecification(child_element, "VALUE", argument_value.getValue())
|
|
1300
1476
|
self.setChildElementOptionalRefType(child_element, "VALUE-TYPE-TREF", argument_value.getValueTypeTRef())
|
|
1301
1477
|
|
|
1302
|
-
def
|
|
1478
|
+
def writeSwcInternalBehaviorPortAPIOptions(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
1303
1479
|
options = behavior.getPortAPIOptions()
|
|
1304
1480
|
if len(options) > 0:
|
|
1305
1481
|
port_api_options_tag = ET.SubElement(element, "PORT-API-OPTIONS")
|
|
@@ -1324,7 +1500,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1324
1500
|
if isinstance(data, RoleBasedDataTypeAssignment):
|
|
1325
1501
|
self.writeRoleBasedDataTypeAssignment(child_element, data)
|
|
1326
1502
|
else:
|
|
1327
|
-
self.
|
|
1503
|
+
self.notImplemented("Unsupported Assigned Data <%s>" % type(data))
|
|
1328
1504
|
|
|
1329
1505
|
def writeServiceDependency(self, element: ET.Element, dependency: ServiceDependency):
|
|
1330
1506
|
self.writeIdentifiable(element, dependency)
|
|
@@ -1350,7 +1526,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1350
1526
|
if isinstance(data, RoleBasedDataAssignment):
|
|
1351
1527
|
self.writeRoleBasedDataAssignment(child_element, data)
|
|
1352
1528
|
else:
|
|
1353
|
-
self.
|
|
1529
|
+
self.notImplemented("Unsupported Assigned Data <%s>" % type(data))
|
|
1354
1530
|
|
|
1355
1531
|
def writeSwcServiceDependencyAssignedPorts(self, element: ET.Element, dependency: SwcServiceDependency):
|
|
1356
1532
|
assigned_data = dependency.getAssignedPorts()
|
|
@@ -1360,7 +1536,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1360
1536
|
if isinstance(data, RoleBasedPortAssignment):
|
|
1361
1537
|
self.writeRoleBasedPortAssignment(child_element, data)
|
|
1362
1538
|
else:
|
|
1363
|
-
self.
|
|
1539
|
+
self.notImplemented("Unsupported Assigned Data <%s>" % type(data))
|
|
1364
1540
|
|
|
1365
1541
|
def setNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
|
|
1366
1542
|
child_element = ET.SubElement(element, "NV-BLOCK-NEEDS")
|
|
@@ -1390,8 +1566,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1390
1566
|
child_element = ET.SubElement(element, "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS")
|
|
1391
1567
|
self.logger.debug("write DiagnosticCommunicationManagerNeeds %s" % needs.getShortName())
|
|
1392
1568
|
self.writeIdentifiable(child_element, needs)
|
|
1393
|
-
self.setChildElementOptionalLiteral(child_element, "SERVICE-REQUEST-CALLBACK-TYPE", needs.getServiceRequestCallbackType())
|
|
1394
|
-
|
|
1569
|
+
self.setChildElementOptionalLiteral(child_element, "SERVICE-REQUEST-CALLBACK-TYPE", needs.getServiceRequestCallbackType())
|
|
1570
|
+
|
|
1395
1571
|
def setDiagnosticRoutineNeeds(self, element: ET.Element, needs: DiagnosticRoutineNeeds):
|
|
1396
1572
|
child_element = ET.SubElement(element, "DIAGNOSTIC-ROUTINE-NEEDS")
|
|
1397
1573
|
self.logger.debug("write DiagnosticRoutineNeeds %s" % needs.getShortName())
|
|
@@ -1412,7 +1588,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1412
1588
|
def setDiagEventDebounceMonitorInternal(self, element: ET.Element, algorithm: DiagEventDebounceMonitorInternal):
|
|
1413
1589
|
child_element = ET.SubElement(element, "DIAG-EVENT-DEBOUNCE-MONITOR-INTERNAL")
|
|
1414
1590
|
self.writeIdentifiable(child_element, algorithm)
|
|
1415
|
-
|
|
1591
|
+
|
|
1416
1592
|
def writeDiagEventDebounceAlgorithm(self, element: ET.Element, needs: DiagnosticEventNeeds):
|
|
1417
1593
|
algorithm = needs.getDiagEventDebounceAlgorithm()
|
|
1418
1594
|
if algorithm is not None:
|
|
@@ -1435,7 +1611,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1435
1611
|
self.logger.debug("write DiagnosticEventNeeds %s" % needs.getShortName())
|
|
1436
1612
|
self.writeIdentifiable(child_element, needs)
|
|
1437
1613
|
self.setChildElementOptionalPositiveInteger(child_element, "UDS-DTC-NUMBER", needs.getUdsDtcNumber())
|
|
1438
|
-
|
|
1614
|
+
|
|
1439
1615
|
def setCryptoServiceNeeds(self, element: ET.Element, needs: CryptoServiceNeeds):
|
|
1440
1616
|
child_element = ET.SubElement(element, "CRYPTO-SERVICE-NEEDS")
|
|
1441
1617
|
self.logger.debug("write CryptoServiceNeeds %s" % needs.getShortName())
|
|
@@ -1469,7 +1645,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1469
1645
|
elif isinstance(need, EcuStateMgrUserNeeds):
|
|
1470
1646
|
self.setEcuStateMgrUserNeeds(child_element, need)
|
|
1471
1647
|
else:
|
|
1472
|
-
self.notImplemented("Unsupported service needs <%s>" % type(need))
|
|
1648
|
+
self.notImplemented("Unsupported service needs <%s>" % type(need))
|
|
1473
1649
|
|
|
1474
1650
|
def writeSwcServiceDependency(self, element: ET.Element, dependency: SwcServiceDependency):
|
|
1475
1651
|
child_element = ET.SubElement(element, "SWC-SERVICE-DEPENDENCY")
|
|
@@ -1486,37 +1662,57 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1486
1662
|
if isinstance(dependency, SwcServiceDependency):
|
|
1487
1663
|
self.writeSwcServiceDependency(child_element, dependency)
|
|
1488
1664
|
else:
|
|
1489
|
-
self.
|
|
1665
|
+
self.notImplemented("Unsupported ServiceDependency <%s>" % type(dependency))
|
|
1490
1666
|
|
|
1491
1667
|
def setIncludedDataTypeSets(self, element: ET.Element, sets: List[IncludedDataTypeSet]):
|
|
1492
1668
|
if len(sets) > 0:
|
|
1493
1669
|
include_data_type_sets_tag = ET.SubElement(element, "INCLUDED-DATA-TYPE-SETS")
|
|
1494
1670
|
for set in sets:
|
|
1495
1671
|
child_element = ET.SubElement(include_data_type_sets_tag, "INCLUDED-DATA-TYPE-SET")
|
|
1496
|
-
self.
|
|
1672
|
+
self.writeARObjectAttributes(child_element, set)
|
|
1497
1673
|
type_refs = set.getDataTypeRefs()
|
|
1498
1674
|
if len(type_refs) > 0:
|
|
1499
1675
|
data_type_refs_tag = ET.SubElement(child_element, "DATA-TYPE-REFS")
|
|
1500
1676
|
for type_ref in type_refs:
|
|
1501
1677
|
self.setChildElementOptionalRefType(data_type_refs_tag, "DATA-TYPE-REF", type_ref)
|
|
1502
1678
|
|
|
1679
|
+
def writeIncludedModeDeclarationGroupSet(self, element: ET.Element, set: IncludedModeDeclarationGroupSet):
|
|
1680
|
+
if set is not None:
|
|
1681
|
+
child_element = ET.SubElement(element, "INCLUDED-MODE-DECLARATION-GROUP-SET")
|
|
1682
|
+
refs = set.getModeDeclarationGroupRefs()
|
|
1683
|
+
if len(refs) > 0:
|
|
1684
|
+
refs_tag = ET.SubElement(child_element, "MODE-DECLARATION-GROUP-REFS")
|
|
1685
|
+
for ref in refs:
|
|
1686
|
+
self.setChildElementOptionalRefType(refs_tag, "MODE-DECLARATION-GROUP-REF", ref)
|
|
1687
|
+
self.setChildElementOptionalLiteral(child_element, "PREFIX", set.getPrefix())
|
|
1688
|
+
|
|
1689
|
+
def writeSwcInternalBehaviorIncludedModeDeclarationGroupSets(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
1690
|
+
group_sets = behavior.getIncludedModeDeclarationGroupSets()
|
|
1691
|
+
if len(group_sets) > 0:
|
|
1692
|
+
child_element = ET.SubElement(element, "INCLUDED-MODE-DECLARATION-GROUP-SETS")
|
|
1693
|
+
for group_set in group_sets:
|
|
1694
|
+
if isinstance(group_set, IncludedModeDeclarationGroupSet):
|
|
1695
|
+
self.writeIncludedModeDeclarationGroupSet(child_element, group_set)
|
|
1696
|
+
else:
|
|
1697
|
+
self.notImplemented("Unsupported IncludedModeDeclarationGroupSet <%s>" % type(group_set))
|
|
1503
1698
|
|
|
1504
1699
|
def writeSwcInternalBehavior(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
1505
1700
|
self.logger.debug("writeSwInternalBehavior %s" % behavior.getShortName())
|
|
1506
|
-
|
|
1507
1701
|
child_element = ET.SubElement(element, "SWC-INTERNAL-BEHAVIOR")
|
|
1508
1702
|
self.writeInternalBehavior(child_element, behavior)
|
|
1703
|
+
|
|
1509
1704
|
self.writeSwcInternalBehaviorArTypedPerInstanceMemories(child_element, behavior)
|
|
1510
|
-
self.
|
|
1511
|
-
self.
|
|
1705
|
+
self.writeSwcInternalBehaviorEvents(child_element, behavior)
|
|
1706
|
+
self.writeSwcInternalBehaviorExplicitInterRunnableVariables(child_element, behavior)
|
|
1512
1707
|
self.setChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART", behavior.getHandleTerminationAndRestart())
|
|
1513
1708
|
self.setIncludedDataTypeSets(child_element, behavior.getIncludedDataTypeSets())
|
|
1514
|
-
self.
|
|
1515
|
-
self.
|
|
1516
|
-
self.
|
|
1517
|
-
self.
|
|
1709
|
+
self.writeSwcInternalBehaviorIncludedModeDeclarationGroupSets(child_element, behavior)
|
|
1710
|
+
self.writeSwcInternalBehaviorPerInstanceMemories(child_element, behavior)
|
|
1711
|
+
self.writeSwcInternalBehaviorParameterDataPrototypes(child_element, "PER-INSTANCE-PARAMETERS", behavior.getPerInstanceParameters())
|
|
1712
|
+
self.writeSwcInternalBehaviorPortAPIOptions(child_element, behavior)
|
|
1713
|
+
self.writeSwcInternalBehaviorRunnables(child_element, behavior)
|
|
1518
1714
|
self.writeSwcInternalBehaviorServiceDependencies(child_element, behavior)
|
|
1519
|
-
self.
|
|
1715
|
+
self.writeSwcInternalBehaviorParameterDataPrototypes(child_element, "SHARED-PARAMETERS", behavior.getSharedParameters())
|
|
1520
1716
|
self.setChildElementOptionalBooleanValue(child_element, "SUPPORTS-MULTIPLE-INSTANTIATION", behavior.getSupportsMultipleInstantiation())
|
|
1521
1717
|
|
|
1522
1718
|
def writeAtomicSwComponentTypeInternalBehaviors(self, element: ET.Element, behavior: InternalBehavior):
|
|
@@ -1525,11 +1721,11 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1525
1721
|
if isinstance(behavior, SwcInternalBehavior):
|
|
1526
1722
|
self.writeSwcInternalBehavior(behaviors_tag, behavior)
|
|
1527
1723
|
else:
|
|
1528
|
-
self.
|
|
1724
|
+
self.notImplemented("Unsupported Internal Behaviors <%s>" % type(behavior))
|
|
1529
1725
|
|
|
1530
1726
|
def writeAtomicSwComponentType(self, element: ET.Element, sw_component: AtomicSwComponentType):
|
|
1531
1727
|
self.writeSwComponentType(element, sw_component)
|
|
1532
|
-
self.writeAtomicSwComponentTypeInternalBehaviors(element, sw_component.
|
|
1728
|
+
self.writeAtomicSwComponentTypeInternalBehaviors(element, sw_component.getInternalBehavior())
|
|
1533
1729
|
|
|
1534
1730
|
def writeComplexDeviceDriverSwComponentType(self, element: ET.Element, sw_component: ComplexDeviceDriverSwComponentType):
|
|
1535
1731
|
self.logger.debug("writeComplexDeviceDriverSwComponentType %s" % sw_component.getShortName())
|
|
@@ -1543,7 +1739,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1543
1739
|
for artifact_desc in artifact_descriptors:
|
|
1544
1740
|
artifact_desc_tag = ET.SubElement(artifact_descs_tag, "AUTOSAR-ENGINEERING-OBJECT")
|
|
1545
1741
|
self.logger.debug("writeArtifactDescriptor %s", artifact_desc.short_label)
|
|
1546
|
-
self.
|
|
1742
|
+
self.writeARObjectAttributes(artifact_desc_tag, artifact_desc)
|
|
1547
1743
|
self.setChildElementOptionalLiteral(artifact_desc_tag, "SHORT-LABEL", artifact_desc.short_label)
|
|
1548
1744
|
self.setChildElementOptionalLiteral(artifact_desc_tag, "CATEGORY", artifact_desc.category)
|
|
1549
1745
|
|
|
@@ -1561,7 +1757,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1561
1757
|
if isinstance(desc, Code):
|
|
1562
1758
|
self.setCode(child_element, desc)
|
|
1563
1759
|
else:
|
|
1564
|
-
self.
|
|
1760
|
+
self.notImplemented("Unsupported Code Descriptor <%s>" % type(desc))
|
|
1565
1761
|
|
|
1566
1762
|
def setMemorySectionOptions(self, element: ET.Element, options: List[ARLiteral]):
|
|
1567
1763
|
if len(options) > 0:
|
|
@@ -1626,7 +1822,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1626
1822
|
self.writeImplementation(child_element, impl)
|
|
1627
1823
|
self.setChildElementOptionalRefType(child_element, "BEHAVIOR-REF", impl.getBehaviorRef())
|
|
1628
1824
|
|
|
1629
|
-
def
|
|
1825
|
+
def writeEndToEndDescriptionDataIds(self, element: ET.Element, parent: EndToEndDescription):
|
|
1630
1826
|
data_ids = parent.getDataIds()
|
|
1631
1827
|
if len(data_ids) > 0:
|
|
1632
1828
|
child_element = ET.SubElement(element, "DATA-IDS")
|
|
@@ -1636,24 +1832,28 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1636
1832
|
def setEndToEndDescription(self, element: ET.Element, key: str, desc: EndToEndDescription):
|
|
1637
1833
|
if desc is not None:
|
|
1638
1834
|
child_element = ET.SubElement(element, key)
|
|
1639
|
-
self.
|
|
1640
|
-
self.
|
|
1641
|
-
self.
|
|
1642
|
-
self.
|
|
1643
|
-
self.
|
|
1644
|
-
self.
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1835
|
+
self.writeARObjectAttributes(child_element, desc)
|
|
1836
|
+
self.setChildElementOptionalLiteral(child_element, "CATEGORY", desc.getCategory())
|
|
1837
|
+
self.writeEndToEndDescriptionDataIds(child_element, desc)
|
|
1838
|
+
self.setChildElementOptionalPositiveInteger(child_element, "DATA-ID-MODE", desc.getDataIdMode())
|
|
1839
|
+
self.setChildElementOptionalPositiveInteger(child_element, "DATA-LENGTH", desc.getDataLength())
|
|
1840
|
+
self.setChildElementOptionalPositiveInteger(child_element, "MAX-DELTA-COUNTER-INIT", desc.getMaxDeltaCounterInit())
|
|
1841
|
+
self.setChildElementOptionalPositiveInteger(child_element, "CRC-OFFSET", desc.getCrcOffset())
|
|
1842
|
+
self.setChildElementOptionalPositiveInteger(child_element, "COUNTER-OFFSET", desc.getCounterOffset())
|
|
1843
|
+
|
|
1844
|
+
def setVariableDataPrototypeInSystemInstanceRef(self, element: ET.Element, key: str, instance_ref: VariableDataPrototypeInSystemInstanceRef):
|
|
1845
|
+
if instance_ref is not None:
|
|
1648
1846
|
child_element = ET.SubElement(element, key)
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
self.setChildElementOptionalRefType(child_element, "CONTEXT-
|
|
1652
|
-
self.setChildElementOptionalRefType(child_element, "
|
|
1847
|
+
for ref in instance_ref.getContextComponentRefs():
|
|
1848
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-COMPONENT-REF", ref)
|
|
1849
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-COMPOSITION-REF", instance_ref.getContextCompositionRef())
|
|
1850
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF", instance_ref.getContextPortRef())
|
|
1851
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF", instance_ref.getTargetDataPrototypeRef())
|
|
1653
1852
|
|
|
1654
|
-
def
|
|
1853
|
+
def writeEndToEndProtectionVariablePrototype(self, element: ET.Element, prototype: EndToEndProtectionVariablePrototype):
|
|
1655
1854
|
if prototype is not None:
|
|
1656
|
-
child_element = ET.SubElement(element,
|
|
1855
|
+
child_element = ET.SubElement(element, "END-TO-END-PROTECTION-VARIABLE-PROTOTYPE")
|
|
1856
|
+
self.writeARObjectAttributes(child_element, prototype)
|
|
1657
1857
|
irefs = prototype.getReceiverIrefs()
|
|
1658
1858
|
if len(irefs) > 0:
|
|
1659
1859
|
child_element = ET.SubElement(child_element, "RECEIVER-IREFS")
|
|
@@ -1661,22 +1861,40 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1661
1861
|
self.setVariableDataPrototypeInSystemInstanceRef(child_element, "RECEIVER-IREF", iref)
|
|
1662
1862
|
self.setVariableDataPrototypeInSystemInstanceRef(child_element, "SENDER-IREF", prototype.senderIRef)
|
|
1663
1863
|
|
|
1664
|
-
def
|
|
1665
|
-
prototypes =
|
|
1864
|
+
def writeEndToEndProtectionEndToEndProtectionVariablePrototypes(self, element: ET.Element, protection: EndToEndProtection):
|
|
1865
|
+
prototypes = protection.getEndToEndProtectionVariablePrototypes()
|
|
1666
1866
|
if len(prototypes) > 0:
|
|
1667
1867
|
child_element = ET.SubElement(element, "END-TO-END-PROTECTION-VARIABLE-PROTOTYPES")
|
|
1668
1868
|
for prototype in prototypes:
|
|
1669
1869
|
if isinstance(prototype, EndToEndProtectionVariablePrototype):
|
|
1670
|
-
self.
|
|
1870
|
+
self.writeEndToEndProtectionVariablePrototype(child_element, prototype)
|
|
1671
1871
|
else:
|
|
1672
|
-
self.
|
|
1872
|
+
self.notImplemented("Unsupported End To End Protection Variable Prototype <%s>" % type(prototype))
|
|
1873
|
+
|
|
1874
|
+
def writeEndToEndProtectionISignalIPdu(self, element: ET.Element, ipdu: EndToEndProtectionISignalIPdu):
|
|
1875
|
+
if ipdu is not None:
|
|
1876
|
+
child_element = ET.SubElement(element, "END-TO-END-PROTECTION-I-SIGNAL-I-PDU")
|
|
1877
|
+
self.setChildElementOptionalIntegerValue(child_element, "DATA-OFFSET", ipdu.getDataOffset())
|
|
1878
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-GROUP-REF", ipdu.getISignalGroupRef())
|
|
1879
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-I-PDU-REF", ipdu.getISignalIPduRef())
|
|
1880
|
+
|
|
1881
|
+
def writeEndToEndProtectionEndToEndProtectionISignalIPdus(self, element: ET.Element, protection: EndToEndProtection):
|
|
1882
|
+
ipdus = protection.getEndToEndProtectionISignalIPdus()
|
|
1883
|
+
if len(ipdus) > 0:
|
|
1884
|
+
child_element = ET.SubElement(element, "END-TO-END-PROTECTION-I-SIGNAL-I-PDUS")
|
|
1885
|
+
for ipdu in ipdus:
|
|
1886
|
+
if isinstance(ipdu, EndToEndProtectionISignalIPdu):
|
|
1887
|
+
self.writeEndToEndProtectionISignalIPdu(child_element, ipdu)
|
|
1888
|
+
else:
|
|
1889
|
+
self.notImplemented("Unsupported EndToEndProtectionISignalIPdu <%s>" % type(ipdu))
|
|
1673
1890
|
|
|
1674
|
-
def
|
|
1891
|
+
def writeEndToEndProtection(self, element: ET.Element, protection: EndToEndProtection):
|
|
1675
1892
|
if protection is not None:
|
|
1676
1893
|
child_element = ET.SubElement(element, "END-TO-END-PROTECTION")
|
|
1677
1894
|
self.writeIdentifiable(child_element, protection)
|
|
1678
|
-
self.setEndToEndDescription(child_element, "END-TO-END-PROFILE", protection.
|
|
1679
|
-
self.
|
|
1895
|
+
self.setEndToEndDescription(child_element, "END-TO-END-PROFILE", protection.getEndToEndProfile())
|
|
1896
|
+
self.writeEndToEndProtectionEndToEndProtectionISignalIPdus(child_element, protection)
|
|
1897
|
+
self.writeEndToEndProtectionEndToEndProtectionVariablePrototypes(child_element, protection)
|
|
1680
1898
|
|
|
1681
1899
|
def writeEndToEndProtections(self, element: ET.Element, protection_set: EndToEndProtectionSet):
|
|
1682
1900
|
protections = protection_set.getEndToEndProtections()
|
|
@@ -1684,7 +1902,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1684
1902
|
child_element = ET.SubElement(element, "END-TO-END-PROTECTIONS")
|
|
1685
1903
|
for protection in protections:
|
|
1686
1904
|
if isinstance(protection, EndToEndProtection):
|
|
1687
|
-
self.
|
|
1905
|
+
self.writeEndToEndProtection(child_element, protection)
|
|
1688
1906
|
|
|
1689
1907
|
def writeEndToEndProtectionSet(self, element: ET.Element, protection_set: EndToEndProtectionSet):
|
|
1690
1908
|
self.logger.debug("writeEndToEndProtectionSet %s" % protection_set.getShortName())
|
|
@@ -1692,15 +1910,14 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1692
1910
|
self.writeIdentifiable(child_element, protection_set)
|
|
1693
1911
|
self.writeEndToEndProtections(child_element, protection_set)
|
|
1694
1912
|
|
|
1695
|
-
def
|
|
1696
|
-
self.
|
|
1913
|
+
def writeAutosarDataPrototype(self, element: ET.Element, prototype: AutosarDataPrototype):
|
|
1914
|
+
self.writeDataPrototype(element, prototype)
|
|
1697
1915
|
self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.typeTRef)
|
|
1698
1916
|
|
|
1699
1917
|
def writeVariableDataPrototype(self, element: ET.Element, prototype: VariableDataPrototype):
|
|
1700
1918
|
self.logger.debug("writeVariableDataPrototype %s" % prototype.getShortName())
|
|
1701
1919
|
child_element = ET.SubElement(element, "VARIABLE-DATA-PROTOTYPE")
|
|
1702
|
-
self.
|
|
1703
|
-
self.setAutosarDataPrototype(child_element, prototype)
|
|
1920
|
+
self.writeAutosarDataPrototype(child_element, prototype)
|
|
1704
1921
|
self.setValueSpecification(child_element, "INIT-VALUE", prototype.getInitValue())
|
|
1705
1922
|
|
|
1706
1923
|
def writeSenderReceiverInterfaceDataElements(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
@@ -1711,7 +1928,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1711
1928
|
if isinstance(data_element, VariableDataPrototype):
|
|
1712
1929
|
self.writeVariableDataPrototype(data_elements_tag, data_element)
|
|
1713
1930
|
else:
|
|
1714
|
-
self.
|
|
1931
|
+
self.notImplemented("Unsupported Data Element <%s>" % type(data_element))
|
|
1715
1932
|
|
|
1716
1933
|
def writeSenderReceiverInterfaceInvalidationPolicies(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1717
1934
|
policies = sr_interface.getInvalidationPolicies()
|
|
@@ -1730,25 +1947,38 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1730
1947
|
self.writeSenderReceiverInterfaceDataElements(child_element, sr_interface)
|
|
1731
1948
|
self.writeSenderReceiverInterfaceInvalidationPolicies(child_element, sr_interface)
|
|
1732
1949
|
|
|
1733
|
-
def
|
|
1734
|
-
|
|
1735
|
-
if len(
|
|
1950
|
+
def writeBswModuleDescriptionImplementedEntryRefs(self, element: ET.Element, desc: BswModuleDescription):
|
|
1951
|
+
refs = desc.getImplementedEntryRefs()
|
|
1952
|
+
if len(refs) > 0:
|
|
1736
1953
|
entries_tag = ET.SubElement(element, "PROVIDED-ENTRYS")
|
|
1737
|
-
for
|
|
1954
|
+
for ref in refs:
|
|
1738
1955
|
entry_tag = ET.SubElement(entries_tag, "BSW-MODULE-ENTRY-REF-CONDITIONAL")
|
|
1739
|
-
self.setChildElementOptionalRefType(entry_tag, "BSW-MODULE-ENTRY-REF",
|
|
1956
|
+
self.setChildElementOptionalRefType(entry_tag, "BSW-MODULE-ENTRY-REF", ref)
|
|
1740
1957
|
|
|
1741
|
-
def
|
|
1742
|
-
|
|
1743
|
-
self.
|
|
1958
|
+
def writeModeDeclarationGroupPrototype(self, element: ET.Element, prototype: ModeDeclarationGroupPrototype):
|
|
1959
|
+
child_element = ET.SubElement(element, "MODE-DECLARATION-GROUP-PROTOTYPE")
|
|
1960
|
+
self.writeIdentifiable(child_element, prototype)
|
|
1961
|
+
self.setChildElementOptionalRefType(child_element, "TYPE-TREF", prototype.getTypeTRef())
|
|
1744
1962
|
|
|
1745
|
-
def
|
|
1963
|
+
def writeBswModuleDescriptionProvidedModeGroups(self, element: ET.Element, parent: BswModuleDescription):
|
|
1746
1964
|
mode_groups = parent.getProvidedModeGroups()
|
|
1747
1965
|
if len(mode_groups) > 0:
|
|
1748
|
-
|
|
1966
|
+
child_element = ET.SubElement(element, "PROVIDED-MODE-GROUPS")
|
|
1749
1967
|
for mode_group in mode_groups:
|
|
1750
|
-
|
|
1751
|
-
|
|
1968
|
+
if isinstance(mode_group, ModeDeclarationGroupPrototype):
|
|
1969
|
+
self.writeModeDeclarationGroupPrototype(child_element, mode_group)
|
|
1970
|
+
else:
|
|
1971
|
+
self.notImplemented("Unsupported ProvidedModeGroup <%s>" % type(mode_group))
|
|
1972
|
+
|
|
1973
|
+
def writeBswModuleDescriptionRequiredModeGroups(self, element: ET.Element, desc: BswModuleDescription):
|
|
1974
|
+
mode_groups = desc.getRequiredModeGroups()
|
|
1975
|
+
if len(mode_groups) > 0:
|
|
1976
|
+
child_element = ET.SubElement(element, "REQUIRED-MODE-GROUPS")
|
|
1977
|
+
for mode_group in mode_groups:
|
|
1978
|
+
if isinstance(mode_group, ModeDeclarationGroupPrototype):
|
|
1979
|
+
self.writeModeDeclarationGroupPrototype(child_element, mode_group)
|
|
1980
|
+
else:
|
|
1981
|
+
self.notImplemented("Unsupported ProvidedModeGroup <%s>" % type(mode_group))
|
|
1752
1982
|
|
|
1753
1983
|
def writeCanEnterExclusiveAreaRefs(self, element: ET.Element, entity: ExecutableEntity):
|
|
1754
1984
|
refs = entity.getCanEnterExclusiveAreaRefs()
|
|
@@ -1757,13 +1987,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1757
1987
|
for ref in refs:
|
|
1758
1988
|
self.setChildElementOptionalRefType(child_element, "CAN-ENTER-EXCLUSIVE-AREA-REF", ref)
|
|
1759
1989
|
|
|
1760
|
-
def
|
|
1990
|
+
def writeExecutableEntity(self, element: ET.Element, entity: ExecutableEntity):
|
|
1761
1991
|
self.writeIdentifiable(element, entity)
|
|
1762
1992
|
self.writeCanEnterExclusiveAreaRefs(element, entity)
|
|
1763
1993
|
self.setChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL", entity.getMinimumStartInterval())
|
|
1764
1994
|
self.setChildElementOptionalRefType(element, "SW-ADDR-METHOD-REF", entity.getSwAddrMethodRef())
|
|
1765
1995
|
|
|
1766
|
-
def
|
|
1996
|
+
def writeBswModuleEntityManagedModeGroups(self, element: ET.Element, entity: BswModuleEntity):
|
|
1767
1997
|
mode_group_refs = entity.getManagedModeGroupRefs()
|
|
1768
1998
|
if len(mode_group_refs) > 0:
|
|
1769
1999
|
mode_groups_tag = ET.SubElement(element, "MANAGED-MODE-GROUPS")
|
|
@@ -1771,64 +2001,142 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1771
2001
|
child_element = ET.SubElement(mode_groups_tag, "MODE-DECLARATION-GROUP-PROTOTYPE-REF-CONDITIONAL")
|
|
1772
2002
|
self.setChildElementOptionalRefType(child_element, "MODE-DECLARATION-GROUP-PROTOTYPE-REF", mode_group_ref)
|
|
1773
2003
|
|
|
1774
|
-
def
|
|
1775
|
-
|
|
2004
|
+
def writeBswVariableAccess(self, element: ET.Element, access: BswVariableAccess):
|
|
2005
|
+
if access is not None:
|
|
2006
|
+
child_element = ET.SubElement(element, "BSW-VARIABLE-ACCESS")
|
|
2007
|
+
self.writeReferrable(child_element, access)
|
|
2008
|
+
self.setChildElementOptionalRefType(child_element, "ACCESSED-VARIABLE-REF", access.getAccessedVariableRef())
|
|
2009
|
+
|
|
2010
|
+
def writeBswModuleEntityDataSendPoints(self, element: ET.Element, entity: BswModuleEntity):
|
|
2011
|
+
points = entity.getDataSendPoints()
|
|
2012
|
+
if len(points) > 0:
|
|
2013
|
+
child_element = ET.SubElement(element, "DATA-SEND-POINTS")
|
|
2014
|
+
for point in points:
|
|
2015
|
+
if isinstance(point, BswVariableAccess):
|
|
2016
|
+
self.writeBswVariableAccess(child_element, point)
|
|
2017
|
+
else:
|
|
2018
|
+
self.notImplemented("Unsupported Data Send Point <%s>" % type(point))
|
|
2019
|
+
|
|
2020
|
+
def writeBswModuleEntityDataReceivePoints(self, element: ET.Element, entity: BswModuleEntity):
|
|
2021
|
+
points = entity.getDataReceivePoints()
|
|
2022
|
+
if len(points) > 0:
|
|
2023
|
+
child_element = ET.SubElement(element, "DATA-RECEIVE-POINTS")
|
|
2024
|
+
for point in points:
|
|
2025
|
+
if isinstance(point, BswVariableAccess):
|
|
2026
|
+
self.writeBswVariableAccess(child_element, point)
|
|
2027
|
+
else:
|
|
2028
|
+
self.notImplemented("Unsupported Data Receive Point <%s>" % type(point))
|
|
2029
|
+
|
|
2030
|
+
def writeBswModuleEntityIssuedTriggerRefs(self, element: ET.Element, entity: BswModuleEntity):
|
|
2031
|
+
refs = entity.getIssuedTriggerRefs()
|
|
2032
|
+
if len(refs) > 0:
|
|
2033
|
+
child_element = ET.SubElement(element, "ISSUED-TRIGGERS")
|
|
2034
|
+
for ref in refs:
|
|
2035
|
+
cond_tag = ET.SubElement(child_element, "TRIGGER-REF-CONDITIONAL")
|
|
2036
|
+
self.setChildElementOptionalRefType(cond_tag, "TRIGGER-REF", ref)
|
|
2037
|
+
|
|
2038
|
+
def writeBswModuleEntity(self, element: ET.Element, entity: BswModuleEntity):
|
|
2039
|
+
self.writeExecutableEntity(element, entity)
|
|
2040
|
+
self.writeBswModuleEntityDataSendPoints(element, entity)
|
|
2041
|
+
self.writeBswModuleEntityDataReceivePoints(element, entity)
|
|
1776
2042
|
self.setChildElementOptionalRefType(element, "IMPLEMENTED-ENTRY-REF", entity.implementedEntryRef)
|
|
1777
|
-
self.
|
|
2043
|
+
self.writeBswModuleEntityManagedModeGroups(element, entity)
|
|
2044
|
+
self.writeBswModuleEntityIssuedTriggerRefs(element, entity)
|
|
1778
2045
|
|
|
1779
|
-
def
|
|
1780
|
-
self.logger.debug("
|
|
2046
|
+
def writeBswCalledEntity(self, element: ET.Element, entity: BswCalledEntity):
|
|
2047
|
+
self.logger.debug("Write BswCalledEntity <%s>" % entity.getShortName())
|
|
1781
2048
|
child_element = ET.SubElement(element, "BSW-CALLED-ENTITY")
|
|
1782
|
-
self.
|
|
2049
|
+
self.writeBswModuleEntity(child_element, entity)
|
|
1783
2050
|
|
|
1784
|
-
def
|
|
1785
|
-
self.logger.debug("
|
|
2051
|
+
def writeBswSchedulableEntity(self, element: ET.Element, entity: BswSchedulableEntity):
|
|
2052
|
+
self.logger.debug("Write BswSchedulableEntity <%s>" % entity.getShortName())
|
|
1786
2053
|
child_element = ET.SubElement(element, "BSW-SCHEDULABLE-ENTITY")
|
|
1787
|
-
self.
|
|
2054
|
+
self.writeBswModuleEntity(child_element, entity)
|
|
1788
2055
|
|
|
1789
2056
|
def setBswInterruptEntity(self, element: ET.Element, entity: BswInterruptEntity):
|
|
1790
|
-
self.logger.debug("
|
|
2057
|
+
self.logger.debug("Write BswInterruptEntity <%s>" % entity.getShortName())
|
|
1791
2058
|
child_element = ET.SubElement(element, "BSW-INTERRUPT-ENTITY")
|
|
1792
|
-
self.
|
|
2059
|
+
self.writeBswModuleEntity(child_element, entity)
|
|
1793
2060
|
self.setChildElementOptionalLiteral(child_element, "INTERRUPT-CATEGORY", entity.getInterruptCategory())
|
|
1794
2061
|
self.setChildElementOptionalLiteral(child_element, "INTERRUPT-SOURCE", entity.getInterruptSource())
|
|
1795
2062
|
|
|
1796
2063
|
def writeBswInternalBehaviorBswModuleEntities(self, element: ET.Element, parent: BswInternalBehavior):
|
|
1797
|
-
entities = parent.getBswModuleEntities()
|
|
2064
|
+
entities = parent.getBswModuleEntities()
|
|
1798
2065
|
if len(entities) > 0:
|
|
1799
2066
|
child_element = ET.SubElement(element, "ENTITYS")
|
|
1800
2067
|
for entity in entities:
|
|
1801
2068
|
if isinstance(entity, BswCalledEntity):
|
|
1802
|
-
self.
|
|
2069
|
+
self.writeBswCalledEntity(child_element, entity)
|
|
1803
2070
|
elif isinstance(entity, BswSchedulableEntity):
|
|
1804
|
-
self.
|
|
2071
|
+
self.writeBswSchedulableEntity(child_element, entity)
|
|
1805
2072
|
elif isinstance(entity, BswInterruptEntity):
|
|
1806
2073
|
self.setBswInterruptEntity(child_element, entity)
|
|
1807
2074
|
else:
|
|
1808
2075
|
self.notImplemented("Unsupported BswModuleEntity <%s>" % type(entity))
|
|
1809
2076
|
|
|
1810
|
-
def
|
|
2077
|
+
def writeBswEvent(self, element: ET.Element, event: BswEvent):
|
|
1811
2078
|
self.writeIdentifiable(element, event)
|
|
1812
2079
|
self.setChildElementOptionalRefType(element, "STARTS-ON-EVENT-REF", event.startsOnEventRef)
|
|
1813
2080
|
|
|
1814
|
-
def
|
|
1815
|
-
self.
|
|
2081
|
+
def writeBswScheduleEvent(self, element: ET.Element, event: BswScheduleEvent):
|
|
2082
|
+
self.writeBswEvent(element, event)
|
|
1816
2083
|
|
|
1817
|
-
def
|
|
1818
|
-
self.logger.debug("
|
|
2084
|
+
def writeBswTimingEvent(self, element: ET.Element, event: BswTimingEvent):
|
|
2085
|
+
self.logger.debug("Write BswTimingEvent <%s>" % event.getShortName())
|
|
1819
2086
|
child_element = ET.SubElement(element, "BSW-TIMING-EVENT")
|
|
1820
|
-
self.
|
|
2087
|
+
self.writeBswScheduleEvent(child_element, event)
|
|
1821
2088
|
self.setChildElementOptionalTimeValue(child_element, "PERIOD", event.getPeriod())
|
|
1822
2089
|
|
|
2090
|
+
def writeBswBackgroundEvent(self, element: ET.Element, event: BswBackgroundEvent):
|
|
2091
|
+
self.logger.debug("Write BswTimingEvent <%s>" % event.getShortName())
|
|
2092
|
+
child_element = ET.SubElement(element, "BSW-BACKGROUND-EVENT")
|
|
2093
|
+
self.writeBswScheduleEvent(child_element, event)
|
|
2094
|
+
|
|
2095
|
+
def writeBswInternalTriggerOccurredEvent(self, element: ET.Element, event: BswInternalTriggerOccurredEvent):
|
|
2096
|
+
self.logger.debug("Write BswInternalTriggerOccurredEvent <%s>" % event.getShortName())
|
|
2097
|
+
child_element = ET.SubElement(element, "BSW-INTERNAL-TRIGGER-OCCURRED-EVENT")
|
|
2098
|
+
self.writeBswScheduleEvent(child_element, event)
|
|
2099
|
+
self.setChildElementOptionalRefType(child_element, "EVENT-SOURCE-REF", event.getEventSourceRef())
|
|
2100
|
+
|
|
2101
|
+
def writeBswExternalTriggerOccurredEvent(self, element: ET.Element, event: BswExternalTriggerOccurredEvent):
|
|
2102
|
+
self.logger.debug("Write BswExternalTriggerOccurredEvent <%s>" % event.getShortName())
|
|
2103
|
+
child_element = ET.SubElement(element, "BSW-EXTERNAL-TRIGGER-OCCURRED-EVENT")
|
|
2104
|
+
self.writeBswScheduleEvent(child_element, event)
|
|
2105
|
+
self.setChildElementOptionalRefType(child_element, "TRIGGER-REF", event.getTriggerRef())
|
|
2106
|
+
|
|
2107
|
+
def writeBswDataReceivedEvent(self, element: ET.Element, event: BswDataReceivedEvent):
|
|
2108
|
+
self.logger.debug("Write BswDataReceivedEvent <%s>" % event.getShortName())
|
|
2109
|
+
# Read the Inherit BswScheduleEvent
|
|
2110
|
+
child_element = ET.SubElement(element, "BSW-DATA-RECEIVED-EVENT")
|
|
2111
|
+
self.writeBswScheduleEvent(child_element, event)
|
|
2112
|
+
self.setChildElementOptionalRefType(child_element, "DATA-REF", event.getDataRef())
|
|
2113
|
+
|
|
2114
|
+
def writeBswOperationInvokedEvent(self, element: ET.Element, event: BswOperationInvokedEvent):
|
|
2115
|
+
self.logger.debug("Write BswOperationInvokedEvent <%s>" % event.getShortName())
|
|
2116
|
+
# Read the Inherit BswScheduleEvent
|
|
2117
|
+
child_element = ET.SubElement(element, "BSW-OPERATION-INVOKED-EVENT")
|
|
2118
|
+
self.writeBswEvent(child_element, event)
|
|
2119
|
+
self.setChildElementOptionalRefType(child_element, "ENTRY-REF", event.getEntryRef())
|
|
2120
|
+
|
|
1823
2121
|
def writeBswInternalBehaviorBswEvents(self, element: ET.Element, parent: BswInternalBehavior):
|
|
1824
2122
|
events = parent.getBswEvents()
|
|
1825
2123
|
if len(events) > 0:
|
|
1826
2124
|
child_element = ET.SubElement(element, "EVENTS")
|
|
1827
2125
|
for event in events:
|
|
1828
2126
|
if isinstance(event, BswTimingEvent):
|
|
1829
|
-
self.
|
|
2127
|
+
self.writeBswTimingEvent(child_element, event)
|
|
2128
|
+
elif isinstance(event, BswBackgroundEvent):
|
|
2129
|
+
self.writeBswBackgroundEvent(child_element, event)
|
|
2130
|
+
elif isinstance(event, BswInternalTriggerOccurredEvent):
|
|
2131
|
+
self.writeBswInternalTriggerOccurredEvent(child_element, event)
|
|
2132
|
+
elif isinstance(event, BswExternalTriggerOccurredEvent):
|
|
2133
|
+
self.writeBswExternalTriggerOccurredEvent(child_element, event)
|
|
2134
|
+
elif isinstance(event, BswDataReceivedEvent):
|
|
2135
|
+
self.writeBswDataReceivedEvent(child_element, event)
|
|
2136
|
+
elif isinstance(event, BswOperationInvokedEvent):
|
|
2137
|
+
self.writeBswOperationInvokedEvent(child_element, event)
|
|
1830
2138
|
else:
|
|
1831
|
-
self.
|
|
2139
|
+
self.notImplemented("Unsupported BswModuleEntity <%s>" % type(event))
|
|
1832
2140
|
|
|
1833
2141
|
def setBswModeSenderPolicy(self, element: ET.Element, policy: BswModeSenderPolicy):
|
|
1834
2142
|
child_element = ET.SubElement(element, "BSW-MODE-SENDER-POLICY")
|
|
@@ -1843,52 +2151,114 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1843
2151
|
if isinstance(policy, BswModeSenderPolicy):
|
|
1844
2152
|
self.setBswModeSenderPolicy(child_element, policy)
|
|
1845
2153
|
else:
|
|
1846
|
-
self.
|
|
1847
|
-
|
|
1848
|
-
def setIncludedModeDeclarationGroupSet(self, element: ET.Element, group_set: IncludedModeDeclarationGroupSet):
|
|
1849
|
-
child_element = ET.SubElement(element, "INCLUDED-MODE-DECLARATION-GROUP-SET")
|
|
2154
|
+
self.notImplemented("Unsupported ModeSenderPolicy type <%s>." % type(policy))
|
|
1850
2155
|
|
|
1851
2156
|
def writeBswInternalBehaviorIncludedModeDeclarationGroupSets(self, element: ET.Element, behavior: BswInternalBehavior):
|
|
1852
2157
|
group_sets = behavior.getIncludedModeDeclarationGroupSets()
|
|
1853
2158
|
if len(group_sets) > 0:
|
|
1854
2159
|
child_element = ET.SubElement(element, "INCLUDED-MODE-DECLARATION-GROUP-SETS")
|
|
1855
2160
|
for group_set in group_sets:
|
|
1856
|
-
self.
|
|
2161
|
+
self.writeIncludedModeDeclarationGroupSet(child_element, group_set)
|
|
2162
|
+
|
|
2163
|
+
def writeBswApiOptions(self, element: ET.Element, options: BswApiOptions):
|
|
2164
|
+
self.writeARObjectAttributes(element, options)
|
|
2165
|
+
self.setChildElementOptionalBooleanValue(element, "ENABLE-TAKE-ADDRESS", options.getEnableTakeAddress())
|
|
2166
|
+
|
|
2167
|
+
def writeBswDataReceptionPolicy(self, element: ET.Element, policy: BswDataReceptionPolicy):
|
|
2168
|
+
self.writeBswApiOptions(element, policy)
|
|
2169
|
+
self.setChildElementOptionalRefType(element, "RECEIVED-DATA-REF", policy.getReceivedDataRef())
|
|
2170
|
+
|
|
2171
|
+
def writeBswQueuedDataReceptionPolicy(self, element: ET.Element, policy: BswQueuedDataReceptionPolicy):
|
|
2172
|
+
child_element = ET.SubElement(element, "BSW-QUEUED-DATA-RECEPTION-POLICY")
|
|
2173
|
+
self.writeBswDataReceptionPolicy(child_element, policy)
|
|
2174
|
+
self.setChildElementOptionalPositiveInteger(child_element, "QUEUE-LENGTH", policy.getQueueLength())
|
|
1857
2175
|
|
|
1858
|
-
def
|
|
2176
|
+
def writeBswInternalBehaviorReceptionPolicies(self, element: ET.Element, behavior: BswInternalBehavior):
|
|
2177
|
+
policies = behavior.getReceptionPolicies()
|
|
2178
|
+
if len(policies) > 0:
|
|
2179
|
+
child_element = ET.SubElement(element, "RECEPTION-POLICYS")
|
|
2180
|
+
for policy in policies:
|
|
2181
|
+
if isinstance(policy, BswQueuedDataReceptionPolicy):
|
|
2182
|
+
self.writeBswQueuedDataReceptionPolicy(child_element, policy)
|
|
2183
|
+
else:
|
|
2184
|
+
self.notImplemented("Unsupported Reception Policies <%s>" % type(policy))
|
|
2185
|
+
|
|
2186
|
+
def writeBswInternalBehavior(self, element: ET.Element, behavior: BswInternalBehavior):
|
|
1859
2187
|
child_element = ET.SubElement(element, "BSW-INTERNAL-BEHAVIOR")
|
|
1860
2188
|
self.writeInternalBehavior(child_element, behavior)
|
|
1861
2189
|
self.writeBswInternalBehaviorBswModuleEntities(child_element, behavior)
|
|
1862
2190
|
self.writeBswInternalBehaviorBswEvents(child_element, behavior)
|
|
1863
2191
|
self.writeBswInternalBehaviorModeSenderPolicy(child_element, behavior)
|
|
1864
2192
|
self.writeBswInternalBehaviorIncludedModeDeclarationGroupSets(child_element, behavior)
|
|
2193
|
+
self.writeBswInternalBehaviorReceptionPolicies(child_element, behavior)
|
|
1865
2194
|
|
|
1866
|
-
def writeBswModuleDescriptionInternalBehaviors(self, element: ET.Element,
|
|
2195
|
+
def writeBswModuleDescriptionInternalBehaviors(self, element: ET.Element, desc: BswModuleDescription):
|
|
2196
|
+
behaviors = desc.getInternalBehaviors()
|
|
1867
2197
|
if len(behaviors) > 0:
|
|
1868
2198
|
child_element = ET.SubElement(element, "INTERNAL-BEHAVIORS")
|
|
1869
2199
|
for behavior in behaviors:
|
|
1870
2200
|
if isinstance(behavior, BswInternalBehavior):
|
|
1871
|
-
self.
|
|
2201
|
+
self.writeBswInternalBehavior(child_element, behavior)
|
|
1872
2202
|
else:
|
|
1873
|
-
self.
|
|
1874
|
-
|
|
2203
|
+
self.notImplemented("Unsupported Internal Behavior <%s>" % type(behavior))
|
|
2204
|
+
|
|
2205
|
+
def writeTrigger(self, element: ET.Element, trigger: Trigger):
|
|
2206
|
+
child_element = ET.SubElement(element, "TRIGGER")
|
|
2207
|
+
self.writeIdentifiable(child_element, trigger)
|
|
2208
|
+
|
|
2209
|
+
def writeBswModuleDescriptionReleasedTriggers(self, element: ET.Element, desc: BswModuleDescription):
|
|
2210
|
+
triggers = desc.getReleasedTriggers()
|
|
2211
|
+
if len(triggers) > 0:
|
|
2212
|
+
child_element = ET.SubElement(element, "RELEASED-TRIGGERS")
|
|
2213
|
+
for trigger in triggers:
|
|
2214
|
+
if isinstance(trigger, Trigger):
|
|
2215
|
+
self.writeTrigger(child_element, trigger)
|
|
2216
|
+
else:
|
|
2217
|
+
self.notImplemented("Unsupported Released Trigger <%s>" % type(trigger))
|
|
2218
|
+
|
|
2219
|
+
def writeBswModuleDescriptionRequiredTriggers(self, element: ET.Element, desc: BswModuleDescription):
|
|
2220
|
+
triggers = desc.getRequiredTriggers()
|
|
2221
|
+
if len(triggers) > 0:
|
|
2222
|
+
child_element = ET.SubElement(element, "REQUIRED-TRIGGERS")
|
|
2223
|
+
for trigger in triggers:
|
|
2224
|
+
if isinstance(trigger, Trigger):
|
|
2225
|
+
self.writeTrigger(child_element, trigger)
|
|
2226
|
+
else:
|
|
2227
|
+
self.notImplemented("Unsupported Required Trigger <%s>" % type(trigger))
|
|
2228
|
+
|
|
2229
|
+
def writeBswModuleDescriptionProvidedDatas(self, element: ET.Element, desc: BswModuleDescription):
|
|
2230
|
+
datas = desc.getProvidedDatas()
|
|
2231
|
+
if len(datas) > 0:
|
|
2232
|
+
child_element = ET.SubElement(element, "PROVIDED-DATAS")
|
|
2233
|
+
for data in datas:
|
|
2234
|
+
if isinstance(data, VariableDataPrototype):
|
|
2235
|
+
self.writeVariableDataPrototype(child_element, data)
|
|
2236
|
+
else:
|
|
2237
|
+
self.notImplemented("Unsupported Provided Data <%s>" % type(data))
|
|
2238
|
+
|
|
2239
|
+
def writeBswModuleDescriptionRequiredDatas(self, element: ET.Element, desc: BswModuleDescription):
|
|
2240
|
+
datas = desc.getRequiredDatas()
|
|
2241
|
+
if len(datas) > 0:
|
|
2242
|
+
child_element = ET.SubElement(element, "REQUIRED-DATAS")
|
|
2243
|
+
for data in datas:
|
|
2244
|
+
if isinstance(data, VariableDataPrototype):
|
|
2245
|
+
self.writeVariableDataPrototype(child_element, data)
|
|
2246
|
+
else:
|
|
2247
|
+
self.notImplemented("Unsupported Required Data <%s>" % type(data))
|
|
2248
|
+
|
|
1875
2249
|
def writeBswModuleDescription(self, element: ET.Element, desc: BswModuleDescription):
|
|
1876
2250
|
self.logger.debug("writeBswModuleDescription %s" % desc.getShortName())
|
|
1877
2251
|
child_element = ET.SubElement(element, "BSW-MODULE-DESCRIPTION")
|
|
1878
2252
|
self.writeIdentifiable(child_element, desc)
|
|
1879
2253
|
self.setChildElementOptionalNumericalValue(child_element, "MODULE-ID", desc.getModuleId())
|
|
1880
|
-
self.
|
|
1881
|
-
self.
|
|
1882
|
-
|
|
1883
|
-
self.
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
mode_groups_tag = ET.SubElement(element, "MANAGED-MODE-GROUPS")
|
|
1889
|
-
for mode_group_ref in mode_group_refs:
|
|
1890
|
-
child_element = ET.SubElement(mode_groups_tag, "MODE-DECLARATION-GROUP-PROTOTYPE-REF-CONDITIONAL")
|
|
1891
|
-
self.setChildElementOptionalRefType(child_element, "MODE-DECLARATION-GROUP-PROTOTYPE-REF", mode_group_ref)
|
|
2254
|
+
self.writeBswModuleDescriptionImplementedEntryRefs(child_element, desc)
|
|
2255
|
+
self.writeBswModuleDescriptionProvidedModeGroups(child_element, desc)
|
|
2256
|
+
self.writeBswModuleDescriptionRequiredModeGroups(child_element, desc)
|
|
2257
|
+
self.writeBswModuleDescriptionReleasedTriggers(child_element, desc)
|
|
2258
|
+
self.writeBswModuleDescriptionRequiredTriggers(child_element, desc)
|
|
2259
|
+
self.writeBswModuleDescriptionProvidedDatas(child_element, desc)
|
|
2260
|
+
self.writeBswModuleDescriptionRequiredDatas(child_element, desc)
|
|
2261
|
+
self.writeBswModuleDescriptionInternalBehaviors(child_element, desc)
|
|
1892
2262
|
|
|
1893
2263
|
def setSwServiceArg(self, element: ET.Element, arg: SwServiceArg):
|
|
1894
2264
|
self.logger.debug("Set SwServiceArg <%s>" % arg.getShortName())
|
|
@@ -1930,7 +2300,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1930
2300
|
if isinstance(mapping, SwcBswRunnableMapping):
|
|
1931
2301
|
self.setSwcBswRunnableMapping(child_element, mapping)
|
|
1932
2302
|
else:
|
|
1933
|
-
self.
|
|
2303
|
+
self.notImplemented("Unsupported Runnable Mapping <%s>" % type(mapping))
|
|
1934
2304
|
|
|
1935
2305
|
def writeSwcBswMapping(self, element: ET.Element, mapping: SwcBswMapping):
|
|
1936
2306
|
self.logger.debug("writeBswModuleDescription %s" % mapping.getShortName())
|
|
@@ -1941,7 +2311,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1941
2311
|
self.setChildElementOptionalRefType(child_element, "SWC-BEHAVIOR-REF", mapping.getSwcBehaviorRef())
|
|
1942
2312
|
|
|
1943
2313
|
def writeEngineeringObject(self, element: ET.Element, engineering_obj: EngineeringObject):
|
|
1944
|
-
self.
|
|
2314
|
+
self.writeARObjectAttributes(element, engineering_obj)
|
|
1945
2315
|
self.setChildElementOptionalLiteral(element, "SHORT-LABEL", engineering_obj.short_label)
|
|
1946
2316
|
self.setChildElementOptionalLiteral(element, "CATEGORY", engineering_obj.category)
|
|
1947
2317
|
|
|
@@ -1958,13 +2328,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1958
2328
|
if isinstance(artifact_desc, AutosarEngineeringObject):
|
|
1959
2329
|
self.setAutosarEngineeringObject(child_element, artifact_desc)
|
|
1960
2330
|
else:
|
|
1961
|
-
self.
|
|
2331
|
+
self.notImplemented("Unsupported Artifact descriptor <%s>" % type(artifact_desc))
|
|
1962
2332
|
|
|
1963
2333
|
def writeBswImplementationVendorSpecificModuleDefRefs(self, element: ET.Element, parent: BswImplementation):
|
|
1964
2334
|
refs = parent.getVendorSpecificModuleDefRefs()
|
|
1965
2335
|
if len(refs) > 0:
|
|
1966
2336
|
child_element = ET.SubElement(element, "VENDOR-SPECIFIC-MODULE-DEF-REFS")
|
|
1967
|
-
if child_element
|
|
2337
|
+
if child_element is not None:
|
|
1968
2338
|
for ref in refs:
|
|
1969
2339
|
self.setChildElementOptionalRefType(child_element, "VENDOR-SPECIFIC-MODULE-DEF-REF", ref)
|
|
1970
2340
|
|
|
@@ -1974,6 +2344,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1974
2344
|
self.writeImplementation(child_element, impl)
|
|
1975
2345
|
self.setChildElementOptionalLiteral(child_element, "AR-RELEASE-VERSION", impl.getArReleaseVersion())
|
|
1976
2346
|
self.setChildElementOptionalRefType(child_element, "BEHAVIOR-REF", impl.getBehaviorRef())
|
|
2347
|
+
self.setChildElementOptionalLiteral(child_element, "VENDOR-API-INFIX", impl.getVendorApiInfix())
|
|
1977
2348
|
self.writeBswImplementationVendorSpecificModuleDefRefs(child_element, impl)
|
|
1978
2349
|
|
|
1979
2350
|
def writeImplementationDataTypeElements(self, element: ET.Element, parent: ImplementationDataType):
|
|
@@ -2010,33 +2381,37 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2010
2381
|
self.writeImplementationDataTypeSymbolProps(child_element, data_type)
|
|
2011
2382
|
self.setChildElementOptionalLiteral(child_element, "TYPE-EMITTER", data_type.getTypeEmitter())
|
|
2012
2383
|
|
|
2013
|
-
def
|
|
2014
|
-
|
|
2384
|
+
def writeArgumentDataPrototype(self, element: ET.Element, prototype: ArgumentDataPrototype):
|
|
2385
|
+
child_element = ET.SubElement(element, "ARGUMENT-DATA-PROTOTYPE")
|
|
2386
|
+
self.writeAutosarDataPrototype(child_element, prototype)
|
|
2387
|
+
self.setChildElementOptionalLiteral(child_element, "DIRECTION", prototype.getDirection())
|
|
2388
|
+
self.setChildElementOptionalLiteral(child_element, "SERVER-ARGUMENT-IMPL-POLICY", prototype.getServerArgumentImplPolicy())
|
|
2389
|
+
|
|
2390
|
+
def writeClientServerOperationArguments(self, element: ET.Element, parent: ClientServerOperation):
|
|
2391
|
+
arguments = parent.getArguments()
|
|
2015
2392
|
if len(arguments) > 0:
|
|
2016
|
-
|
|
2017
|
-
for
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
def writePossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
|
|
2026
|
-
error_refs = parent.getPossbileErrorRefs()
|
|
2393
|
+
child_element = ET.SubElement(element, "ARGUMENTS")
|
|
2394
|
+
for argument in arguments:
|
|
2395
|
+
if isinstance(argument, ArgumentDataPrototype):
|
|
2396
|
+
self.writeArgumentDataPrototype(child_element, argument)
|
|
2397
|
+
else:
|
|
2398
|
+
self.notImplemented("Unsupported Argument <%s>" % type(argument))
|
|
2399
|
+
|
|
2400
|
+
def writeClientServerOperationPossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
|
|
2401
|
+
error_refs = parent.getPossibleErrorRefs()
|
|
2027
2402
|
if len(error_refs) > 0:
|
|
2028
|
-
|
|
2403
|
+
child_element = ET.SubElement(element, "POSSIBLE-ERROR-REFS")
|
|
2029
2404
|
for error_ref in error_refs:
|
|
2030
|
-
self.setChildElementOptionalRefType(
|
|
2405
|
+
self.setChildElementOptionalRefType(child_element, "POSSIBLE-ERROR-REF", error_ref)
|
|
2031
2406
|
|
|
2032
2407
|
def writeClientServerOperation(self, element: ET.Element, operation: ClientServerOperation):
|
|
2033
2408
|
self.logger.debug("writeClientServerOperation %s" % operation.getShortName())
|
|
2034
2409
|
child_element = ET.SubElement(element, "CLIENT-SERVER-OPERATION")
|
|
2035
2410
|
self.writeIdentifiable(child_element, operation)
|
|
2036
|
-
self.
|
|
2037
|
-
self.
|
|
2411
|
+
self.writeClientServerOperationArguments(child_element, operation)
|
|
2412
|
+
self.writeClientServerOperationPossibleErrorRefs(child_element, operation)
|
|
2038
2413
|
|
|
2039
|
-
def
|
|
2414
|
+
def writeClientServerInterfaceOperations(self, element: ET.Element, parent: ClientServerInterface):
|
|
2040
2415
|
operations = parent.getOperations()
|
|
2041
2416
|
if len(operations) > 0:
|
|
2042
2417
|
operations_tag = ET.SubElement(element, "OPERATIONS")
|
|
@@ -2044,7 +2419,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2044
2419
|
if isinstance(operation, ClientServerOperation):
|
|
2045
2420
|
self.writeClientServerOperation(operations_tag, operation)
|
|
2046
2421
|
else:
|
|
2047
|
-
self.
|
|
2422
|
+
self.notImplemented("Unsupported Operation <%s>" % type(operation))
|
|
2048
2423
|
|
|
2049
2424
|
def writeApplicationError(self, element: ET.Element, error: ApplicationError):
|
|
2050
2425
|
self.logger.debug("writeApplicationError %s" % error.getShortName())
|
|
@@ -2060,24 +2435,27 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2060
2435
|
if isinstance(error, ApplicationError):
|
|
2061
2436
|
self.writeApplicationError(errors_tag, error)
|
|
2062
2437
|
else:
|
|
2063
|
-
self.
|
|
2438
|
+
self.notImplemented("Unsupported PossibleError %s" % type(error))
|
|
2064
2439
|
|
|
2065
|
-
def
|
|
2440
|
+
def writePortInterface(self, element: ET.Element, port_interface: PortInterface):
|
|
2066
2441
|
self.writeIdentifiable(element, port_interface)
|
|
2067
2442
|
self.setChildElementOptionalBooleanValue(element, "IS-SERVICE", port_interface.isService)
|
|
2068
2443
|
self.setChildElementOptionalLiteral(element, "SERVICE-KIND", port_interface.serviceKind)
|
|
2069
2444
|
|
|
2070
|
-
def
|
|
2071
|
-
self.
|
|
2445
|
+
def writeDataInterface(self, element: ET.Element, interface: DataInterface):
|
|
2446
|
+
self.writePortInterface(element, interface)
|
|
2447
|
+
|
|
2448
|
+
def writeParameterInterface(self, element: ET.Element, interface: ParameterInterface):
|
|
2449
|
+
self.logger.debug("Write ParameterInterface %s" % interface.getShortName())
|
|
2072
2450
|
child_element = ET.SubElement(element, "PARAMETER-INTERFACE")
|
|
2073
|
-
self.
|
|
2074
|
-
self.
|
|
2451
|
+
self.writeDataInterface(child_element, interface)
|
|
2452
|
+
self.writeSwcInternalBehaviorParameterDataPrototypes(child_element, "PARAMETERS", interface.getParameters())
|
|
2075
2453
|
|
|
2076
2454
|
def writeClientServerInterface(self, element: ET.Element, cs_interface: ClientServerInterface):
|
|
2077
2455
|
self.logger.debug("writeClientServerInterface %s" % cs_interface.getShortName())
|
|
2078
2456
|
child_element = ET.SubElement(element, "CLIENT-SERVER-INTERFACE")
|
|
2079
|
-
self.
|
|
2080
|
-
self.
|
|
2457
|
+
self.writePortInterface(child_element, cs_interface)
|
|
2458
|
+
self.writeClientServerInterfaceOperations(child_element, cs_interface)
|
|
2081
2459
|
self.writePossibleErrors(child_element, cs_interface)
|
|
2082
2460
|
|
|
2083
2461
|
def writeApplicationSwComponentType(self, element: ET.Element, sw_component: ApplicationSwComponentType):
|
|
@@ -2090,17 +2468,19 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2090
2468
|
child_element = ET.SubElement(element, "ECU-ABSTRACTION-SW-COMPONENT-TYPE")
|
|
2091
2469
|
self.writeAtomicSwComponentType(child_element, sw_component)
|
|
2092
2470
|
|
|
2093
|
-
def setApplicationArrayElement(self, element: ET.Element,
|
|
2094
|
-
if
|
|
2471
|
+
def setApplicationArrayElement(self, element: ET.Element, array_element: ApplicationArrayElement):
|
|
2472
|
+
if array_element is not None:
|
|
2095
2473
|
child_element = ET.SubElement(element, "ELEMENT")
|
|
2096
|
-
self.
|
|
2097
|
-
self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE-
|
|
2098
|
-
self.
|
|
2474
|
+
self.writeApplicationCompositeElementDataPrototype(child_element, array_element)
|
|
2475
|
+
self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE-HANDLING", array_element.getArraySizeHandling())
|
|
2476
|
+
self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE-SEMANTICS", array_element.getArraySizeSemantics())
|
|
2477
|
+
self.setChildElementOptionalNumericalValue(child_element, "MAX-NUMBER-OF-ELEMENTS", array_element.getMaxNumberOfElements())
|
|
2099
2478
|
|
|
2100
2479
|
def writeApplicationArrayDataType(self, element: ET.Element, data_type: ApplicationArrayDataType):
|
|
2101
2480
|
self.logger.debug("writeApplicationArrayDataType %s" % data_type.getShortName())
|
|
2102
2481
|
child_element = ET.SubElement(element, "APPLICATION-ARRAY-DATA-TYPE")
|
|
2103
2482
|
self.setApplicationCompositeDataType(child_element, data_type)
|
|
2483
|
+
self.setChildElementOptionalLiteral(child_element, "DYNAMIC-ARRAY-SIZE-PROFILE", data_type.getDynamicArraySizeProfile())
|
|
2104
2484
|
self.setApplicationArrayElement(child_element, data_type.element)
|
|
2105
2485
|
|
|
2106
2486
|
def setSwRecordLayoutV(self, element: ET.Element, key: str, layout_v: SwRecordLayoutV):
|
|
@@ -2112,6 +2492,11 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2112
2492
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-PROP", layout_v.getSwRecordLayoutVProp())
|
|
2113
2493
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-INDEX", layout_v.getSwRecordLayoutVIndex())
|
|
2114
2494
|
|
|
2495
|
+
def writeSwRecordLayoutGroupSwRecordLayoutGroupContentType(self, element: ET.Element, group: SwRecordLayoutGroup):
|
|
2496
|
+
content = group.getSwRecordLayoutGroupContentType()
|
|
2497
|
+
self.setSwRecordLayoutGroup(element, "SW-RECORD-LAYOUT-GROUP", content.getSwRecordLayoutGroup())
|
|
2498
|
+
self.setSwRecordLayoutV(element, "SW-RECORD-LAYOUT-V", content.getSwRecordLayoutV())
|
|
2499
|
+
|
|
2115
2500
|
def setSwRecordLayoutGroup(self, element: ET.Element, key: str, group: SwRecordLayoutGroup):
|
|
2116
2501
|
if group is not None:
|
|
2117
2502
|
child_element = ET.SubElement(element, key)
|
|
@@ -2122,9 +2507,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2122
2507
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-FROM", group.getSwRecordLayoutGroupFrom())
|
|
2123
2508
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-TO", group.getSwRecordLayoutGroupTo())
|
|
2124
2509
|
self.setChildElementOptionalIntegerValue(child_element, "SW-RECORD-LAYOUT-GROUP-STEP", group.getSwRecordLayoutGroupStep())
|
|
2125
|
-
|
|
2126
|
-
#self.setSwRecordLayoutGroup(child_element, "SW-RECORD-LAYOUT-GROUP", group.swRecordLayoutGroupContentType.swRecordLayoutGroup)
|
|
2127
|
-
return group
|
|
2510
|
+
self.writeSwRecordLayoutGroupSwRecordLayoutGroupContentType(child_element, group)
|
|
2128
2511
|
|
|
2129
2512
|
def writeSwRecordLayout(self, element: ET.Element, layout: SwRecordLayout):
|
|
2130
2513
|
self.logger.debug("writeSwRecordLayout %s" % layout.getShortName())
|
|
@@ -2147,7 +2530,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2147
2530
|
|
|
2148
2531
|
def writeTriggerInterface(self, element: ET.Element, trigger_if: TriggerInterface):
|
|
2149
2532
|
self.logger.debug("writeTriggerInterface %s" % trigger_if.getShortName())
|
|
2150
|
-
child_element = ET.SubElement(element, "TRIGGER-INTERFACE")
|
|
2533
|
+
# child_element = ET.SubElement(element, "TRIGGER-INTERFACE")
|
|
2534
|
+
# self.writePortInterface()
|
|
2151
2535
|
|
|
2152
2536
|
def writeServiceSwComponentType(self, element: ET.Element, sw_component: ServiceSwComponentType):
|
|
2153
2537
|
self.logger.debug("writeServiceSwComponentType %s" % sw_component.getShortName())
|
|
@@ -2160,7 +2544,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2160
2544
|
maps_tag = ET.SubElement(element, "DATA-TYPE-MAPS")
|
|
2161
2545
|
for map in maps:
|
|
2162
2546
|
child_element = ET.SubElement(maps_tag, "DATA-TYPE-MAP")
|
|
2163
|
-
self.
|
|
2547
|
+
self.writeARObjectAttributes(child_element, map)
|
|
2164
2548
|
self.setChildElementOptionalRefType(child_element, "APPLICATION-DATA-TYPE-REF", map.getApplicationDataTypeRef())
|
|
2165
2549
|
self.setChildElementOptionalRefType(child_element, "IMPLEMENTATION-DATA-TYPE-REF", map.getImplementationDataTypeRef())
|
|
2166
2550
|
|
|
@@ -2170,7 +2554,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2170
2554
|
maps_tag = ET.SubElement(element, "MODE-REQUEST-TYPE-MAPS")
|
|
2171
2555
|
for map in maps:
|
|
2172
2556
|
child_element = ET.SubElement(maps_tag, "MODE-REQUEST-TYPE-MAP")
|
|
2173
|
-
self.
|
|
2557
|
+
self.writeARObjectAttributes(child_element, map)
|
|
2174
2558
|
self.setChildElementOptionalRefType(child_element, "IMPLEMENTATION-DATA-TYPE-REF", map.getImplementationDataTypeRef())
|
|
2175
2559
|
self.setChildElementOptionalRefType(child_element, "MODE-GROUP-REF", map.getModeGroupRef())
|
|
2176
2560
|
|
|
@@ -2212,7 +2596,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2212
2596
|
def writeModeSwitchInterface(self, element: ET.Element, mode_interface: ModeSwitchInterface):
|
|
2213
2597
|
self.logger.debug("writeModeSwitchInterface %s" % mode_interface.getShortName())
|
|
2214
2598
|
child_element = ET.SubElement(element, "MODE-SWITCH-INTERFACE")
|
|
2215
|
-
self.
|
|
2599
|
+
self.writePortInterface(child_element, mode_interface)
|
|
2216
2600
|
self.writeModeSwitchInterfaceModeGroup(child_element, mode_interface)
|
|
2217
2601
|
|
|
2218
2602
|
def setEOCExecutableEntityRefSuccessorRefs(self, element: ET.Element, successor_refs: List[RefType]):
|
|
@@ -2234,7 +2618,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2234
2618
|
if isinstance(order_element, EOCExecutableEntityRef):
|
|
2235
2619
|
self.writeEOCExecutableEntityRef(child_element, order_element)
|
|
2236
2620
|
else:
|
|
2237
|
-
self.
|
|
2621
|
+
self.notImplemented("Unsupported order element <%s>" % type(order_element))
|
|
2238
2622
|
|
|
2239
2623
|
def writeExecutionOrderConstraint(self, element: ET.Element, constraint: ExecutionOrderConstraint):
|
|
2240
2624
|
self.logger.debug("writeExecutionOrderConstraint %s" % constraint.getShortName())
|
|
@@ -2250,7 +2634,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2250
2634
|
if isinstance(requirement, ExecutionOrderConstraint):
|
|
2251
2635
|
self.writeExecutionOrderConstraint(child_element, requirement)
|
|
2252
2636
|
else:
|
|
2253
|
-
self.
|
|
2637
|
+
self.notImplemented("Unsupported timing requirement <%s>" % type(requirement))
|
|
2254
2638
|
|
|
2255
2639
|
def writeTimingExtension(self, element: ET.Element, extension: TimingExtension):
|
|
2256
2640
|
self.writeTimingRequirements(element, extension)
|
|
@@ -2274,7 +2658,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2274
2658
|
|
|
2275
2659
|
def writeFrame(self, element: ET.Element, frame: Frame):
|
|
2276
2660
|
self.writeIdentifiable(element, frame)
|
|
2277
|
-
self.setChildElementOptionalNumericalValue(element, "FRAME-LENGTH",
|
|
2661
|
+
self.setChildElementOptionalNumericalValue(element, "FRAME-LENGTH", frame.frameLength)
|
|
2278
2662
|
self.writePduToFrameMappings(element, frame)
|
|
2279
2663
|
|
|
2280
2664
|
def writeLinUnconditionalFrame(self, element: ET.Element, frame: LinUnconditionalFrame):
|
|
@@ -2283,8 +2667,10 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2283
2667
|
self.writeFrame(child_element, frame)
|
|
2284
2668
|
|
|
2285
2669
|
def writeNmNode(self, element: ET.Element, nm_node: NmNode):
|
|
2670
|
+
self.writeIdentifiable(element, nm_node)
|
|
2286
2671
|
self.setChildElementOptionalRefType(element, "CONTROLLER-REF", nm_node.getControllerRef())
|
|
2287
2672
|
self.setChildElementOptionalRefType(element, "NM-IF-ECU-REF", nm_node.getNmIfEcuRef())
|
|
2673
|
+
self.setChildElementOptionalBooleanValue(element, "NM-PASSIVE-MODE-ENABLED", nm_node.getNmPassiveModeEnabled())
|
|
2288
2674
|
self.setChildElementOptionalNumericalValue(element, "NM-NODE-ID", nm_node.getNmNodeId())
|
|
2289
2675
|
|
|
2290
2676
|
refs = nm_node.getRxNmPduRefs()
|
|
@@ -2302,9 +2688,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2302
2688
|
def writeCanNmNode(self, element: ET.Element, nm_node: CanNmNode):
|
|
2303
2689
|
self.logger.debug("write CanNmNode %s" % nm_node.getShortName())
|
|
2304
2690
|
child_element = ET.SubElement(element, "CAN-NM-NODE")
|
|
2305
|
-
self.writeIdentifiable(child_element, nm_node)
|
|
2306
2691
|
self.writeNmNode(child_element, nm_node)
|
|
2307
|
-
|
|
2692
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-CAR-WAKE-UP-RX-ENABLED", nm_node.getNmCarWakeUpRxEnabled())
|
|
2308
2693
|
self.setChildElementOptionalFloatValue(child_element, "NM-MSG-CYCLE-OFFSET", nm_node.getNmMsgCycleOffset())
|
|
2309
2694
|
self.setChildElementOptionalFloatValue(child_element, "NM-MSG-REDUCED-TIME", nm_node.getNmMsgReducedTime())
|
|
2310
2695
|
self.setChildElementRxIdentifierRange(child_element, "NM-RANGE-CONFIG", nm_node.getNmRangeConfig())
|
|
@@ -2312,8 +2697,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2312
2697
|
def writeUdpNmNode(self, element: ET.Element, nm_node: UdpNmNode):
|
|
2313
2698
|
self.logger.debug("write UdpNmNode %s" % nm_node.getShortName())
|
|
2314
2699
|
child_element = ET.SubElement(element, "UDP-NM-NODE")
|
|
2315
|
-
self.writeIdentifiable(child_element, nm_node)
|
|
2316
2700
|
self.writeNmNode(child_element, nm_node)
|
|
2701
|
+
self.setChildElementOptionalTimeValue(child_element, "NM-MSG-CYCLE-OFFSET", nm_node.getNmMsgCycleOffset())
|
|
2317
2702
|
|
|
2318
2703
|
def writeNmClusterNmNodes(self, element: ET.Element, parent: NmCluster):
|
|
2319
2704
|
nodes = parent.getNmNodes()
|
|
@@ -2334,18 +2719,23 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2334
2719
|
refs_tag = ET.SubElement(child_element, "COUPLED-CLUSTER-REFS")
|
|
2335
2720
|
for ref in refs:
|
|
2336
2721
|
self.setChildElementOptionalRefType(refs_tag, "COUPLED-CLUSTER-REF", ref)
|
|
2337
|
-
|
|
2338
2722
|
self.setChildElementOptionalBooleanValue(child_element, "NM-BUSLOAD-REDUCTION-ENABLED", coupling.getNmBusloadReductionEnabled())
|
|
2339
2723
|
self.setChildElementOptionalBooleanValue(child_element, "NM-IMMEDIATE-RESTART-ENABLED", coupling.getNmImmediateRestartEnabled())
|
|
2340
2724
|
|
|
2341
2725
|
def writeUdpNmClusterCoupling(self, element: ET.Element, coupling: UdpNmClusterCoupling):
|
|
2342
2726
|
child_element = ET.SubElement(element, "UDP-NM-CLUSTER-COUPLING")
|
|
2727
|
+
refs = coupling.getCoupledClusterRefs()
|
|
2728
|
+
if len(refs) > 0:
|
|
2729
|
+
refs_tag = ET.SubElement(child_element, "COUPLED-CLUSTER-REFS")
|
|
2730
|
+
for ref in refs:
|
|
2731
|
+
self.setChildElementOptionalRefType(refs_tag, "COUPLED-CLUSTER-REF", ref)
|
|
2732
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-IMMEDIATE-RESTART-ENABLED", coupling.getNmImmediateRestartEnabled())
|
|
2343
2733
|
|
|
2344
2734
|
def writeNmConfigNmClusterCouplings(self, element: ET.Element, config: NmConfig):
|
|
2345
|
-
self.logger.debug("
|
|
2735
|
+
self.logger.debug("Write NmConfigNmClusterCouplings <%s>" % config.getShortName())
|
|
2346
2736
|
couplings = config.getNmClusterCouplings()
|
|
2347
2737
|
if len(couplings) > 0:
|
|
2348
|
-
child_element= ET.SubElement(element, "NM-CLUSTER-COUPLINGS")
|
|
2738
|
+
child_element = ET.SubElement(element, "NM-CLUSTER-COUPLINGS")
|
|
2349
2739
|
for coupling in couplings:
|
|
2350
2740
|
if isinstance(coupling, CanNmClusterCoupling):
|
|
2351
2741
|
self.writeCanNmClusterCoupling(child_element, coupling)
|
|
@@ -2355,6 +2745,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2355
2745
|
self.notImplemented("Unsupported Nm Cluster Coupling <%s>" % type(coupling))
|
|
2356
2746
|
|
|
2357
2747
|
def writeNmCluster(self, element: ET.Element, cluster: NmCluster):
|
|
2748
|
+
self.logger.debug("Write NmCluster <%s>" % cluster.getShortName())
|
|
2358
2749
|
self.writeIdentifiable(element, cluster)
|
|
2359
2750
|
self.setChildElementOptionalRefType(element, "COMMUNICATION-CLUSTER-REF", cluster.communicationClusterRef)
|
|
2360
2751
|
self.setChildElementOptionalNumericalValue(element, "NM-CHANNEL-ID", cluster.nmChannelId)
|
|
@@ -2363,7 +2754,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2363
2754
|
self.setChildElementOptionalBooleanValue(element, "NM-SYNCHRONIZING-NETWORK", cluster.getNmSynchronizingNetwork())
|
|
2364
2755
|
|
|
2365
2756
|
def writeCanNmCluster(self, element: ET.Element, cluster: CanNmCluster):
|
|
2366
|
-
self.logger.debug("
|
|
2757
|
+
self.logger.debug("Write CanNmCluster <%s>" % cluster.getShortName())
|
|
2367
2758
|
child_element = ET.SubElement(element, "CAN-NM-CLUSTER")
|
|
2368
2759
|
self.writeNmCluster(child_element, cluster)
|
|
2369
2760
|
|
|
@@ -2382,10 +2773,22 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2382
2773
|
self.setChildElementOptionalNumericalValue(child_element, "NM-USER-DATA-LENGTH", cluster.getNmUserDataLength())
|
|
2383
2774
|
self.setChildElementOptionalFloatValue(child_element, "NM-WAIT-BUS-SLEEP-TIME", cluster.getNmWaitBusSleepTime())
|
|
2384
2775
|
|
|
2385
|
-
def writeUdpNmCluster(self, element: ET.Element, cluster:
|
|
2386
|
-
self.logger.debug("Write UdpNmCluster
|
|
2776
|
+
def writeUdpNmCluster(self, element: ET.Element, cluster: UdpNmCluster):
|
|
2777
|
+
self.logger.debug("Write UdpNmCluster <%s>" % cluster.getShortName())
|
|
2387
2778
|
child_element = ET.SubElement(element, "UDP-NM-CLUSTER")
|
|
2388
2779
|
self.writeNmCluster(child_element, cluster)
|
|
2780
|
+
self.setChildElementOptionalIntegerValue(child_element, "NM-CBV-POSITION", cluster.getNmCbvPosition())
|
|
2781
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-CHANNEL-ACTIVE", cluster.getNmChannelActive())
|
|
2782
|
+
self.setChildElementOptionalTimeValue(child_element, "NM-IMMEDIATE-NM-CYCLE-TIME", cluster.getNmImmediateNmCycleTime())
|
|
2783
|
+
self.setChildElementOptionalPositiveInteger(child_element, "NM-IMMEDIATE-NM-TRANSMISSIONS", cluster.getNmImmediateNmTransmissions())
|
|
2784
|
+
self.setChildElementOptionalTimeValue(child_element, "NM-MESSAGE-TIMEOUT-TIME", cluster.getNmMessageTimeoutTime())
|
|
2785
|
+
self.setChildElementOptionalTimeValue(child_element, "NM-MSG-CYCLE-TIME", cluster.getNmMsgCycleTime())
|
|
2786
|
+
self.setChildElementOptionalTimeValue(child_element, "NM-NETWORK-TIMEOUT", cluster.getNmNetworkTimeout())
|
|
2787
|
+
self.setChildElementOptionalIntegerValue(child_element, "NM-NID-POSITION", cluster.getNmNidPosition())
|
|
2788
|
+
self.setChildElementOptionalTimeValue(child_element, "NM-REMOTE-SLEEP-INDICATION-TIME", cluster.getNmRemoteSleepIndicationTime())
|
|
2789
|
+
self.setChildElementOptionalTimeValue(child_element, "NM-REPEAT-MESSAGE-TIME", cluster.getNmRepeatMessageTime())
|
|
2790
|
+
self.setChildElementOptionalTimeValue(child_element, "NM-WAIT-BUS-SLEEP-TIME", cluster.getNmWaitBusSleepTime())
|
|
2791
|
+
self.setChildElementOptionalRefType(child_element, "VLAN-REF", cluster.getVlanRef())
|
|
2389
2792
|
|
|
2390
2793
|
def writeNmConfigNmClusters(self, element: ET.Element, parent: NmConfig):
|
|
2391
2794
|
clusters = parent.getNmClusters()
|
|
@@ -2399,52 +2802,313 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2399
2802
|
else:
|
|
2400
2803
|
self.notImplemented("Unsupported Nm Cluster <%s>" % type(cluster))
|
|
2401
2804
|
|
|
2805
|
+
def writeUdpNmEcu(self, element: ET.Element, ecu: UdpNmEcu):
|
|
2806
|
+
if ecu is not None:
|
|
2807
|
+
child_element = ET.SubElement(element, "UDP-NM-ECU")
|
|
2808
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-SYNCHRONIZATION-POINT-ENABLED", ecu.getNmSynchronizationPointEnabled())
|
|
2809
|
+
|
|
2810
|
+
def writeBusDependentNmEcus(self, element: ET.Element, nm_ecu: NmEcu):
|
|
2811
|
+
dependent_nm_ecus = nm_ecu.getBusDependentNmEcus()
|
|
2812
|
+
if len(dependent_nm_ecus) > 0:
|
|
2813
|
+
child_element = ET.SubElement(element, "BUS-DEPENDENT-NM-ECUS")
|
|
2814
|
+
for dependent_nm_ecu in dependent_nm_ecus:
|
|
2815
|
+
if isinstance(dependent_nm_ecu, UdpNmEcu):
|
|
2816
|
+
self.writeUdpNmEcu(child_element, dependent_nm_ecu)
|
|
2817
|
+
else:
|
|
2818
|
+
self.notImplemented("Unsupported BusDependentNmEcu <%s>" % type(dependent_nm_ecu))
|
|
2819
|
+
|
|
2820
|
+
def writeNmEcu(self, element: ET.Element, nm_ecu: NmEcu):
|
|
2821
|
+
child_element = ET.SubElement(element, "NM-ECU")
|
|
2822
|
+
self.writeIdentifiable(child_element, nm_ecu)
|
|
2823
|
+
self.writeBusDependentNmEcus(child_element, nm_ecu)
|
|
2824
|
+
self.setChildElementOptionalRefType(child_element, "ECU-INSTANCE-REF", nm_ecu.getEcuInstanceRef())
|
|
2825
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-BUS-SYNCHRONIZATION-ENABLED", nm_ecu.getNmBusSynchronizationEnabled())
|
|
2826
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-COM-CONTROL-ENABLED", nm_ecu.getNmComControlEnabled())
|
|
2827
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-NODE-DETECTION-ENABLED", nm_ecu.getNmNodeDetectionEnabled())
|
|
2828
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-NODE-ID-ENABLED", nm_ecu.getNmNodeIdEnabled())
|
|
2829
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-PDU-RX-INDICATION-ENABLED", nm_ecu.getNmPduRxIndicationEnabled())
|
|
2830
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-REMOTE-SLEEP-IND-ENABLED", nm_ecu.getNmRemoteSleepIndEnabled())
|
|
2831
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-REPEAT-MSG-IND-ENABLED", nm_ecu.getNmRepeatMsgIndEnabled())
|
|
2832
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-STATE-CHANGE-IND-ENABLED", nm_ecu.getNmStateChangeIndEnabled())
|
|
2833
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-USER-DATA-ENABLED", nm_ecu.getNmUserDataEnabled())
|
|
2834
|
+
|
|
2835
|
+
def writeNmConfigNmIfEcus(self, element: ET.Element, nm_config: NmConfig):
|
|
2836
|
+
ecus = nm_config.getNmIfEcus()
|
|
2837
|
+
if len(ecus) > 0:
|
|
2838
|
+
child_element = ET.SubElement(element, "NM-IF-ECUS")
|
|
2839
|
+
for ecu in ecus:
|
|
2840
|
+
if isinstance(ecu, NmEcu):
|
|
2841
|
+
self.writeNmEcu(child_element, ecu)
|
|
2842
|
+
else:
|
|
2843
|
+
self.notImplemented("Unsupported NmIfEcus <%s>" % type(ecu))
|
|
2844
|
+
|
|
2402
2845
|
def writeNmConfig(self, element: ET.Element, config: NmConfig):
|
|
2403
2846
|
self.logger.debug("Write NmConfig <%s>" % config.getShortName())
|
|
2404
2847
|
child_element = ET.SubElement(element, "NM-CONFIG")
|
|
2405
2848
|
self.writeIdentifiable(child_element, config)
|
|
2406
2849
|
self.writeNmConfigNmClusters(child_element, config)
|
|
2407
2850
|
self.writeNmConfigNmClusterCouplings(child_element, config)
|
|
2851
|
+
self.writeNmConfigNmIfEcus(child_element, config)
|
|
2852
|
+
|
|
2853
|
+
def writeISignalToIPduMapping(self, element: ET.Element, mapping: ISignalToIPduMapping):
|
|
2854
|
+
if mapping is not None:
|
|
2855
|
+
child_element = ET.SubElement(element, "I-SIGNAL-TO-I-PDU-MAPPING")
|
|
2856
|
+
self.writeIdentifiable(child_element, mapping)
|
|
2857
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-REF", mapping.getISignalRef())
|
|
2858
|
+
self.setChildElementOptionalLiteral(child_element, "PACKING-BYTE-ORDER", mapping.getPackingByteOrder())
|
|
2859
|
+
self.setChildElementOptionalIntegerValue(child_element, "START-POSITION", mapping.getStartPosition())
|
|
2860
|
+
self.setChildElementOptionalLiteral(child_element, "TRANSFER-PROPERTY", mapping.getTransferProperty())
|
|
2861
|
+
|
|
2862
|
+
def writeNmPduISignalToIPduMappings(self, element: ET.Element, pdu: NmPdu):
|
|
2863
|
+
mappings = pdu.getISignalToIPduMappings()
|
|
2864
|
+
if len(mappings) > 0:
|
|
2865
|
+
child_element = ET.SubElement(element, "I-SIGNAL-TO-I-PDU-MAPPINGS")
|
|
2866
|
+
for mapping in mappings:
|
|
2867
|
+
if isinstance(mapping, ISignalToIPduMapping):
|
|
2868
|
+
self.writeISignalToIPduMapping(child_element, mapping)
|
|
2869
|
+
else:
|
|
2870
|
+
self.notImplemented("Unsupported ISignalToIPduMapping <%s>" % type(mapping))
|
|
2408
2871
|
|
|
2409
2872
|
def writeNmPdu(self, element: ET.Element, pdu: NmPdu):
|
|
2410
2873
|
self.logger.debug("Write NmPdu <%s>" % pdu.getShortName())
|
|
2411
2874
|
child_element = ET.SubElement(element, "NM-PDU")
|
|
2412
|
-
self.
|
|
2413
|
-
self.
|
|
2875
|
+
self.writePdu(child_element, pdu)
|
|
2876
|
+
self.writeNmPduISignalToIPduMappings(child_element, pdu)
|
|
2877
|
+
self.setChildElementOptionalIntegerValue(child_element, "UNUSED-BIT-PATTERN", pdu.getUnusedBitPattern())
|
|
2414
2878
|
|
|
2415
2879
|
def writeNPdu(self, element: ET.Element, pdu: NPdu):
|
|
2416
2880
|
self.logger.debug("Write NPdu <%s>" % pdu.getShortName())
|
|
2417
2881
|
child_element = ET.SubElement(element, "N-PDU")
|
|
2418
|
-
self.
|
|
2419
|
-
self.writeIPdu(child_element, pdu)
|
|
2420
|
-
|
|
2421
|
-
def writeIPdu(self, element: ET.Element, pdu: IPdu):
|
|
2422
|
-
self.setChildElementOptionalLiteral(element, "LENGTH", pdu.getLength())
|
|
2882
|
+
self.writePdu(child_element, pdu)
|
|
2423
2883
|
|
|
2424
2884
|
def writeDcmIPdu(self, element: ET.Element, pdu: DcmIPdu):
|
|
2425
2885
|
self.logger.debug("Write DcmIPdu <%s>" % pdu.getShortName())
|
|
2426
2886
|
child_element = ET.SubElement(element, "DCM-I-PDU")
|
|
2427
|
-
self.writeIdentifiable(child_element, pdu)
|
|
2428
2887
|
self.writeIPdu(child_element, pdu)
|
|
2429
2888
|
self.setChildElementOptionalLiteral(child_element, "DIAG-PDU-TYPE", pdu.getDiagPduType())
|
|
2430
2889
|
|
|
2431
|
-
def
|
|
2432
|
-
|
|
2890
|
+
def setSecureCommunicationProps(self, element: ET.Element, key: str, props: SecureCommunicationProps):
|
|
2891
|
+
if props is not None:
|
|
2892
|
+
child_element = ET.SubElement(element, key)
|
|
2893
|
+
self.setChildElementOptionalPositiveInteger(child_element, "AUTH-DATA-FRESHNESS-LENGTH", props.getAuthDataFreshnessLength())
|
|
2894
|
+
self.setChildElementOptionalPositiveInteger(child_element, "AUTH-DATA-FRESHNESS-START-POSITION", props.getAuthDataFreshnessStartPosition()) # noqa E501
|
|
2895
|
+
self.setChildElementOptionalPositiveInteger(child_element, "AUTH-INFO-TX-LENGTH", props.getAuthInfoTxLength())
|
|
2896
|
+
self.setChildElementOptionalPositiveInteger(child_element, "AUTHENTICATION-BUILD-ATTEMPTS", props.getAuthenticationBuildAttempts())
|
|
2897
|
+
self.setChildElementOptionalPositiveInteger(child_element, "AUTHENTICATION-RETRIES", props.getAuthenticationRetries())
|
|
2898
|
+
self.setChildElementOptionalPositiveInteger(child_element, "DATA-ID", props.getDataId())
|
|
2899
|
+
self.setChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-ID", props.getFreshnessValueId())
|
|
2900
|
+
self.setChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-LENGTH", props.getFreshnessValueLength())
|
|
2901
|
+
self.setChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-TX-LENGTH", props.getFreshnessValueTxLength())
|
|
2902
|
+
|
|
2903
|
+
def writeSecuredIPdu(self, element: ET.Element, i_pdu: SecuredIPdu):
|
|
2904
|
+
self.logger.debug("Write SecuredIPdu <%s>" % i_pdu.getShortName())
|
|
2433
2905
|
child_element = ET.SubElement(element, "SECURED-I-PDU")
|
|
2434
|
-
self.
|
|
2435
|
-
self.
|
|
2906
|
+
self.writeIPdu(child_element, i_pdu)
|
|
2907
|
+
self.setChildElementOptionalRefType(child_element, "AUTHENTICATION-PROPS-REF", i_pdu.getAuthenticationPropsRef())
|
|
2908
|
+
self.setChildElementOptionalRefType(child_element, "FRESHNESS-PROPS-REF", i_pdu.getFreshnessPropsRef())
|
|
2909
|
+
self.setChildElementOptionalRefType(child_element, "PAYLOAD-REF", i_pdu.getPayloadRef())
|
|
2910
|
+
self.setSecureCommunicationProps(child_element, "SECURE-COMMUNICATION-PROPS", i_pdu.getSecureCommunicationProps())
|
|
2911
|
+
self.setChildElementOptionalBooleanValue(child_element, "USE-AS-CRYPTOGRAPHIC-I-PDU", i_pdu.getUseAsCryptographicIPdu())
|
|
2912
|
+
|
|
2913
|
+
def writeTpConfig(self, element: ET.Element, config: TpConfig):
|
|
2914
|
+
self.writeIdentifiable(element, config)
|
|
2915
|
+
self.setChildElementOptionalRefType(element, "COMMUNICATION-CLUSTER-REF", config.getCommunicationClusterRef())
|
|
2916
|
+
|
|
2917
|
+
def writeCanTpAddress(self, element: ET.Element, address: CanTpAddress):
|
|
2918
|
+
if address is not None:
|
|
2919
|
+
child_element = ET.SubElement(element, "CAN-TP-ADDRESS")
|
|
2920
|
+
self.writeIdentifiable(child_element, address)
|
|
2921
|
+
self.setChildElementOptionalIntegerValue(child_element, "TP-ADDRESS", address.getTpAddress())
|
|
2922
|
+
self.setChildElementOptionalIntegerValue(child_element, "TP-ADDRESS-EXTENSION-VALUE", address.getTpAddressExtensionValue())
|
|
2923
|
+
|
|
2924
|
+
def writeCanTpConfigTpAddresses(self, element: ET.Element, config: CanTpConfig):
|
|
2925
|
+
addresses = config.getTpAddresses()
|
|
2926
|
+
if len(addresses) > 0:
|
|
2927
|
+
child_element = ET.SubElement(element, "TP-ADDRESSS")
|
|
2928
|
+
for address in addresses:
|
|
2929
|
+
if isinstance(address, CanTpAddress):
|
|
2930
|
+
self.writeCanTpAddress(child_element, address)
|
|
2931
|
+
else:
|
|
2932
|
+
self.notImplemented("Unsupported TpAddress <%s>" % type(address))
|
|
2933
|
+
|
|
2934
|
+
def writeCanTpChannel(self, element: ET.Element, channel: CanTpChannel):
|
|
2935
|
+
if channel is not None:
|
|
2936
|
+
child_element = ET.SubElement(element, "CAN-TP-CHANNEL")
|
|
2937
|
+
self.writeIdentifiable(child_element, channel)
|
|
2938
|
+
self.setChildElementOptionalPositiveInteger(child_element, "CHANNEL-ID", channel.getChannelId())
|
|
2939
|
+
self.setChildElementOptionalLiteral(child_element, "CHANNEL-MODE", channel.getChannelMode())
|
|
2940
|
+
|
|
2941
|
+
def writeCanTpConfigTpChannels(self, element: ET.Element, config: CanTpConfig):
|
|
2942
|
+
channels = config.getTpChannels()
|
|
2943
|
+
if len(channels) > 0:
|
|
2944
|
+
child_element = ET.SubElement(element, "TP-CHANNELS")
|
|
2945
|
+
for channel in channels:
|
|
2946
|
+
if isinstance(channel, CanTpChannel):
|
|
2947
|
+
self.writeCanTpChannel(child_element, channel)
|
|
2948
|
+
else:
|
|
2949
|
+
self.notImplemented("Unsupported TpChannel <%s>" % type(channel))
|
|
2950
|
+
|
|
2951
|
+
def writeTpConnection(self, element: ET.Element, connection: TpConnection):
|
|
2952
|
+
self.writeARObjectAttributes(element, connection)
|
|
2953
|
+
ident = connection.getIdent()
|
|
2954
|
+
if ident is not None:
|
|
2955
|
+
child_element = ET.SubElement(element, "IDENT")
|
|
2956
|
+
self.writeReferrable(child_element, ident)
|
|
2957
|
+
|
|
2958
|
+
def writeTpConnectionReceiverRefs(self, element: ET.Element, connection: CanTpConnection):
|
|
2959
|
+
refs = connection.getReceiverRefs()
|
|
2960
|
+
if len(refs) > 0:
|
|
2961
|
+
child_element = ET.SubElement(element, "RECEIVER-REFS")
|
|
2962
|
+
for ref in refs:
|
|
2963
|
+
self.setChildElementOptionalRefType(child_element, "RECEIVER-REF", ref)
|
|
2964
|
+
|
|
2965
|
+
def writeCanTpConnection(self, element: ET.Element, connection: CanTpConnection):
|
|
2966
|
+
if connection is not None:
|
|
2967
|
+
child_element = ET.SubElement(element, "CAN-TP-CONNECTION")
|
|
2968
|
+
self.writeTpConnection(child_element, connection)
|
|
2969
|
+
self.setChildElementOptionalLiteral(child_element, "ADDRESSING-FORMAT", connection.getAddressingFormat())
|
|
2970
|
+
self.setChildElementOptionalRefType(child_element, "CAN-TP-CHANNEL-REF", connection.getCanTpChannelRef())
|
|
2971
|
+
self.setChildElementOptionalBooleanValue(child_element, "CANCELLATION", connection.getCancellation())
|
|
2972
|
+
self.setChildElementOptionalRefType(child_element, "DATA-PDU-REF", connection.getDataPduRef())
|
|
2973
|
+
self.setChildElementOptionalRefType(child_element, "FLOW-CONTROL-PDU-REF", connection.getFlowControlPduRef())
|
|
2974
|
+
self.setChildElementOptionalIntegerValue(child_element, "MAX-BLOCK-SIZE", connection.getMaxBlockSize())
|
|
2975
|
+
self.setChildElementOptionalRefType(child_element, "MULTICAST-REF", connection.getMulticastRef())
|
|
2976
|
+
self.setChildElementOptionalBooleanValue(child_element, "PADDING-ACTIVATION", connection.getPaddingActivation())
|
|
2977
|
+
self.writeTpConnectionReceiverRefs(child_element, connection)
|
|
2978
|
+
self.setChildElementOptionalLiteral(child_element, "TA-TYPE", connection.getTaType())
|
|
2979
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT-BR", connection.getTimeoutBr())
|
|
2980
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT-BS", connection.getTimeoutBs())
|
|
2981
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT-CR", connection.getTimeoutCr())
|
|
2982
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT-CS", connection.getTimeoutCs())
|
|
2983
|
+
self.setChildElementOptionalRefType(child_element, "TP-SDU-REF", connection.getTpSduRef())
|
|
2984
|
+
self.setChildElementOptionalRefType(child_element, "TRANSMITTER-REF", connection.getTransmitterRef())
|
|
2985
|
+
|
|
2986
|
+
def writeCanTpConfigTpConnections(self, element: ET.Element, config: CanTpConfig):
|
|
2987
|
+
connections = config.getTpConnections()
|
|
2988
|
+
if len(connections) > 0:
|
|
2989
|
+
child_element = ET.SubElement(element, "TP-CONNECTIONS")
|
|
2990
|
+
for connection in connections:
|
|
2991
|
+
if isinstance(connection, CanTpConnection):
|
|
2992
|
+
self.writeCanTpConnection(child_element, connection)
|
|
2993
|
+
else:
|
|
2994
|
+
self.notImplemented("Unsupported TpConnection <%s>" % type(connection))
|
|
2995
|
+
|
|
2996
|
+
def writeCanTpEcu(self, element: ET.Element, tp_ecu: CanTpEcu):
|
|
2997
|
+
if tp_ecu is not None:
|
|
2998
|
+
child_element = ET.SubElement(element, "CAN-TP-ECU")
|
|
2999
|
+
self.setChildElementOptionalTimeValue(child_element, "CYCLE-TIME-MAIN-FUNCTION", tp_ecu.getCycleTimeMainFunction())
|
|
3000
|
+
self.setChildElementOptionalRefType(child_element, "ECU-INSTANCE-REF", tp_ecu.getEcuInstanceRef())
|
|
3001
|
+
|
|
3002
|
+
def writeCanTpConfigTpEcus(self, element: ET.Element, config: CanTpConfig):
|
|
3003
|
+
tp_ecus = config.getTpEcus()
|
|
3004
|
+
if len(tp_ecus) > 0:
|
|
3005
|
+
child_element = ET.SubElement(element, "TP-ECUS")
|
|
3006
|
+
for tp_ecu in tp_ecus:
|
|
3007
|
+
if isinstance(tp_ecu, CanTpEcu):
|
|
3008
|
+
self.writeCanTpEcu(child_element, tp_ecu)
|
|
3009
|
+
else:
|
|
3010
|
+
self.notImplemented("Unsupported TpEcu <%s>" % type(tp_ecu))
|
|
3011
|
+
|
|
3012
|
+
def writeCanTpNode(self, element: ET.Element, tp_node: CanTpNode):
|
|
3013
|
+
if tp_node is not None:
|
|
3014
|
+
child_element = ET.SubElement(element, "CAN-TP-NODE")
|
|
3015
|
+
self.writeIdentifiable(child_element, tp_node)
|
|
3016
|
+
self.setChildElementOptionalRefType(child_element, "CONNECTOR-REF", tp_node.getConnectorRef())
|
|
3017
|
+
self.setChildElementOptionalIntegerValue(child_element, "MAX-FC-WAIT", tp_node.getMaxFcWait())
|
|
3018
|
+
self.setChildElementOptionalTimeValue(child_element, "ST-MIN", tp_node.getStMin())
|
|
3019
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT-AR", tp_node.getTimeoutAr())
|
|
3020
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT-AS", tp_node.getTimeoutAs())
|
|
3021
|
+
self.setChildElementOptionalRefType(child_element, "TP-ADDRESS-REF", tp_node.getTpAddressRef())
|
|
3022
|
+
|
|
3023
|
+
def writeCanTpConfigTpNodes(self, element: ET.Element, config: CanTpConfig):
|
|
3024
|
+
tp_nodes = config.getTpNodes()
|
|
3025
|
+
if len(tp_nodes) > 0:
|
|
3026
|
+
child_element = ET.SubElement(element, "TP-NODES")
|
|
3027
|
+
for tp_node in tp_nodes:
|
|
3028
|
+
if isinstance(tp_node, CanTpNode):
|
|
3029
|
+
self.writeCanTpNode(child_element, tp_node)
|
|
3030
|
+
else:
|
|
3031
|
+
self.notImplemented("Unsupported TpNode <%s>" % type(tp_node))
|
|
2436
3032
|
|
|
2437
3033
|
def writeCanTpConfig(self, element: ET.Element, config: CanTpConfig):
|
|
2438
3034
|
self.logger.debug("Write CanTpConfig <%s>" % config.getShortName())
|
|
2439
3035
|
child_element = ET.SubElement(element, "CAN-TP-CONFIG")
|
|
2440
|
-
self.
|
|
3036
|
+
self.writeTpConfig(child_element, config)
|
|
3037
|
+
self.writeCanTpConfigTpAddresses(child_element, config)
|
|
3038
|
+
self.writeCanTpConfigTpChannels(child_element, config)
|
|
3039
|
+
self.writeCanTpConfigTpConnections(child_element, config)
|
|
3040
|
+
self.writeCanTpConfigTpEcus(child_element, config)
|
|
3041
|
+
self.writeCanTpConfigTpNodes(child_element, config)
|
|
3042
|
+
|
|
3043
|
+
def writeTpAddress(self, element: ET.Element, address: TpAddress):
|
|
3044
|
+
if address is not None:
|
|
3045
|
+
child_element = ET.SubElement(element, "TP-ADDRESS")
|
|
3046
|
+
self.writeIdentifiable(child_element, address)
|
|
3047
|
+
self.setChildElementOptionalIntegerValue(child_element, "TP-ADDRESS", address.getTpAddress())
|
|
3048
|
+
|
|
3049
|
+
def writeLinTpConfigTpAddresses(self, element: ET.Element, config: CanTpConfig):
|
|
3050
|
+
addresses = config.getTpAddresses()
|
|
3051
|
+
if len(addresses) > 0:
|
|
3052
|
+
child_element = ET.SubElement(element, "TP-ADDRESSS")
|
|
3053
|
+
for address in addresses:
|
|
3054
|
+
if isinstance(address, TpAddress):
|
|
3055
|
+
self.writeTpAddress(child_element, address)
|
|
3056
|
+
else:
|
|
3057
|
+
self.notImplemented("Unsupported TpAddress <%s>" % type(address))
|
|
3058
|
+
|
|
3059
|
+
def writeLinTpConnection(self, element: ET.Element, connection: LinTpConnection):
|
|
3060
|
+
if connection is not None:
|
|
3061
|
+
child_element = ET.SubElement(element, "LIN-TP-CONNECTION")
|
|
3062
|
+
self.writeTpConnection(child_element, connection)
|
|
3063
|
+
self.setChildElementOptionalRefType(child_element, "DATA-PDU-REF", connection.getDataPduRef())
|
|
3064
|
+
self.setChildElementOptionalRefType(child_element, "FLOW-CONTROL-REF", connection.getFlowControlRef())
|
|
3065
|
+
self.setChildElementOptionalRefType(child_element, "LIN-TP-N-SDU-REF", connection.getLinTpNSduRef())
|
|
3066
|
+
self.writeTpConnectionReceiverRefs(child_element, connection)
|
|
3067
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT-AS", connection.getTimeoutAs())
|
|
3068
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT-CR", connection.getTimeoutCr())
|
|
3069
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT-CS", connection.getTimeoutCs())
|
|
3070
|
+
self.setChildElementOptionalRefType(child_element, "TRANSMITTER-REF", connection.getTransmitterRef())
|
|
3071
|
+
|
|
3072
|
+
def writeLinTpConfigTpConnections(self, element: ET.Element, config: LinTpConfig):
|
|
3073
|
+
connections = config.getTpConnections()
|
|
3074
|
+
if len(connections) > 0:
|
|
3075
|
+
child_element = ET.SubElement(element, "TP-CONNECTIONS")
|
|
3076
|
+
for connection in connections:
|
|
3077
|
+
if isinstance(connection, LinTpConnection):
|
|
3078
|
+
self.writeLinTpConnection(child_element, connection)
|
|
3079
|
+
else:
|
|
3080
|
+
self.notImplemented("Unsupported TpConnection <%s>" % type(connection))
|
|
3081
|
+
|
|
3082
|
+
def writeLinTpNode(self, element: ET.Element, tp_node: LinTpNode):
|
|
3083
|
+
if tp_node is not None:
|
|
3084
|
+
child_element = ET.SubElement(element, "LIN-TP-NODE")
|
|
3085
|
+
self.writeIdentifiable(child_element, tp_node)
|
|
3086
|
+
self.setChildElementOptionalRefType(child_element, "CONNECTOR-REF", tp_node.getConnectorRef())
|
|
3087
|
+
self.setChildElementOptionalBooleanValue(element, "DROP-NOT-REQUESTED-NAD", tp_node.getDropNotRequestedNad())
|
|
3088
|
+
self.setChildElementOptionalTimeValue(child_element, "P-2-MAX", tp_node.getP2Max())
|
|
3089
|
+
self.setChildElementOptionalTimeValue(child_element, "P-2-TIMING", tp_node.getP2Timing())
|
|
3090
|
+
self.setChildElementOptionalRefType(child_element, "TP-ADDRESS-REF", tp_node.getTpAddressRef())
|
|
3091
|
+
|
|
3092
|
+
def writeLinTpConfigTpNodes(self, element: ET.Element, config: LinTpConfig):
|
|
3093
|
+
tp_nodes = config.getTpNodes()
|
|
3094
|
+
if len(tp_nodes) > 0:
|
|
3095
|
+
child_element = ET.SubElement(element, "TP-NODES")
|
|
3096
|
+
for tp_node in tp_nodes:
|
|
3097
|
+
if isinstance(tp_node, LinTpNode):
|
|
3098
|
+
self.writeLinTpNode(child_element, tp_node)
|
|
3099
|
+
else:
|
|
3100
|
+
self.notImplemented("Unsupported TpNode <%s>" % type(tp_node))
|
|
2441
3101
|
|
|
2442
3102
|
def writeLinTpConfig(self, element: ET.Element, config: LinTpConfig):
|
|
2443
3103
|
self.logger.debug("Write LinTpConfig <%s>" % config.getShortName())
|
|
2444
3104
|
child_element = ET.SubElement(element, "LIN-TP-CONFIG")
|
|
2445
|
-
self.
|
|
3105
|
+
self.writeTpConfig(child_element, config)
|
|
3106
|
+
self.writeLinTpConfigTpAddresses(child_element, config)
|
|
3107
|
+
self.writeLinTpConfigTpConnections(child_element, config)
|
|
3108
|
+
self.writeLinTpConfigTpNodes(child_element, config)
|
|
2446
3109
|
|
|
2447
3110
|
def writeFrameTriggering(self, element: ET.Element, triggering: FrameTriggering):
|
|
3111
|
+
self.writeIdentifiable(element, triggering)
|
|
2448
3112
|
ref_list = triggering.getFramePortRefs()
|
|
2449
3113
|
if len(ref_list) > 0:
|
|
2450
3114
|
frame_port_refs_tag = ET.SubElement(element, "FRAME-PORT-REFS")
|
|
@@ -2456,13 +3120,12 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2456
3120
|
if len(refs) > 0:
|
|
2457
3121
|
triggerings_tag = ET.SubElement(element, "PDU-TRIGGERINGS")
|
|
2458
3122
|
for ref in refs:
|
|
2459
|
-
|
|
2460
|
-
|
|
3123
|
+
child_element = ET.SubElement(triggerings_tag, 'PDU-TRIGGERING-REF-CONDITIONAL')
|
|
3124
|
+
self.setChildElementOptionalRefType(child_element, "PDU-TRIGGERING-REF", ref)
|
|
2461
3125
|
|
|
2462
3126
|
def writeCanFrameTriggering(self, element: ET.Element, triggering: CanFrameTriggering):
|
|
2463
3127
|
self.logger.debug("WRite CanFrameTriggering %s" % triggering.getShortName())
|
|
2464
3128
|
child_element = ET.SubElement(element, "CAN-FRAME-TRIGGERING")
|
|
2465
|
-
self.writeIdentifiable(child_element, triggering)
|
|
2466
3129
|
self.writeFrameTriggering(child_element, triggering)
|
|
2467
3130
|
self.setChildElementOptionalLiteral(child_element, "CAN-ADDRESSING-MODE", triggering.getCanAddressingMode())
|
|
2468
3131
|
self.setChildElementOptionalBooleanValue(child_element, "CAN-FD-FRAME-SUPPORT", triggering.getCanFdFrameSupport())
|
|
@@ -2474,11 +3137,55 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2474
3137
|
def writeLinFrameTriggering(self, element: ET.Element, triggering: LinFrameTriggering):
|
|
2475
3138
|
self.logger.debug("Write LinFrameTriggering %s" % triggering.getShortName())
|
|
2476
3139
|
child_element = ET.SubElement(element, "LIN-FRAME-TRIGGERING")
|
|
2477
|
-
self.writeIdentifiable(child_element, triggering)
|
|
2478
3140
|
self.writeFrameTriggering(child_element, triggering)
|
|
2479
3141
|
self.setChildElementOptionalNumericalValue(child_element, "IDENTIFIER", triggering.getIdentifier())
|
|
2480
3142
|
self.setChildElementOptionalLiteral(child_element, "LIN-CHECKSUM", triggering.getLinChecksum())
|
|
2481
3143
|
|
|
3144
|
+
def writeCommunicationCycle(self, element: ET.Element, cycle: CommunicationCycle):
|
|
3145
|
+
self.writeARObjectAttributes(element, cycle)
|
|
3146
|
+
|
|
3147
|
+
def writeCycleRepetition(self, element: ET.Element, cycle: CycleRepetition):
|
|
3148
|
+
if cycle is not None:
|
|
3149
|
+
child_element = ET.SubElement(element, "CYCLE-REPETITION")
|
|
3150
|
+
self.writeCommunicationCycle(child_element, cycle)
|
|
3151
|
+
self.setChildElementOptionalIntegerValue(child_element, "BASE-CYCLE", cycle.getBaseCycle())
|
|
3152
|
+
self.setChildElementOptionalLiteral(child_element, "CYCLE-REPETITION", cycle.getCycleRepetition())
|
|
3153
|
+
|
|
3154
|
+
def writeFlexrayAbsolutelyScheduledTimingCommunicationCycle(self, element: ET.Element, timing: FlexrayAbsolutelyScheduledTiming):
|
|
3155
|
+
cycle = timing.getCommunicationCycle()
|
|
3156
|
+
if cycle is not None:
|
|
3157
|
+
child_element = ET.SubElement(element, "COMMUNICATION-CYCLE")
|
|
3158
|
+
if isinstance(cycle, CycleRepetition):
|
|
3159
|
+
self.writeCycleRepetition(child_element, cycle)
|
|
3160
|
+
else:
|
|
3161
|
+
self.notImplemented("Unsupported CommunicationCycle <%s>" % type(child_element))
|
|
3162
|
+
|
|
3163
|
+
def writeFlexrayAbsolutelyScheduledTiming(self, element: ET.Element, timing: FlexrayAbsolutelyScheduledTiming):
|
|
3164
|
+
if timing is not None:
|
|
3165
|
+
child_element = ET.SubElement(element, "FLEXRAY-ABSOLUTELY-SCHEDULED-TIMING")
|
|
3166
|
+
self.writeARObjectAttributes(child_element, timing)
|
|
3167
|
+
self.writeFlexrayAbsolutelyScheduledTimingCommunicationCycle(child_element, timing)
|
|
3168
|
+
self.setChildElementOptionalPositiveInteger(child_element, "SLOT-ID", timing.getSlotID())
|
|
3169
|
+
|
|
3170
|
+
def writeFlexrayFrameTriggeringAbsolutelyScheduledTimings(self, element: ET.Element, triggering: FlexrayFrameTriggering):
|
|
3171
|
+
timings = triggering.getAbsolutelyScheduledTimings()
|
|
3172
|
+
if len(timings) > 0:
|
|
3173
|
+
child_element = ET.SubElement(element, "ABSOLUTELY-SCHEDULED-TIMINGS")
|
|
3174
|
+
for timing in timings:
|
|
3175
|
+
if isinstance(timing, FlexrayAbsolutelyScheduledTiming):
|
|
3176
|
+
self.writeFlexrayAbsolutelyScheduledTiming(child_element, timing)
|
|
3177
|
+
else:
|
|
3178
|
+
self.notImplemented("Unsupported AbsolutelyScheduledTiming <%s>" % type(timing))
|
|
3179
|
+
|
|
3180
|
+
def writeFlexrayFrameTriggering(self, element: ET.Element, triggering: FlexrayFrameTriggering):
|
|
3181
|
+
self.logger.debug("Write FlexrayFrameTriggering %s" % triggering.getShortName())
|
|
3182
|
+
child_element = ET.SubElement(element, "FLEXRAY-FRAME-TRIGGERING")
|
|
3183
|
+
self.writeFrameTriggering(child_element, triggering)
|
|
3184
|
+
self.writeFlexrayFrameTriggeringAbsolutelyScheduledTimings(child_element, triggering)
|
|
3185
|
+
self.setChildElementOptionalBooleanValue(child_element, "ALLOW-DYNAMIC-L-SDU-LENGTH", triggering.getAllowDynamicLSduLength())
|
|
3186
|
+
self.setChildElementOptionalPositiveInteger(child_element, "MESSAGE-ID", triggering.getMessageId())
|
|
3187
|
+
self.setChildElementOptionalBooleanValue(child_element, "PAYLOAD-PREAMBLE-INDICATOR", triggering.getPayloadPreambleIndicator())
|
|
3188
|
+
|
|
2482
3189
|
def writeISignalTriggering(self, element: ET.Element, triggering: ISignalTriggering):
|
|
2483
3190
|
self.logger.debug("Write ISignalTriggering %s" % triggering.getShortName())
|
|
2484
3191
|
child_element = ET.SubElement(element, "I-SIGNAL-TRIGGERING")
|
|
@@ -2506,17 +3213,18 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2506
3213
|
if len(refs) > 0:
|
|
2507
3214
|
triggerings_tag = ET.SubElement(child_element, "I-SIGNAL-TRIGGERINGS")
|
|
2508
3215
|
for ref in refs:
|
|
2509
|
-
|
|
2510
|
-
|
|
3216
|
+
child_element = ET.SubElement(triggerings_tag, 'I-SIGNAL-TRIGGERING-REF-CONDITIONAL')
|
|
3217
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-TRIGGERING-REF", ref)
|
|
2511
3218
|
|
|
2512
|
-
def
|
|
3219
|
+
def writePhysicalChannelCommConnectorRefs(self, element, channel):
|
|
2513
3220
|
connectors = channel.getCommConnectorRefs()
|
|
2514
3221
|
if len(connectors) > 0:
|
|
2515
3222
|
connectors_tag = ET.SubElement(element, "COMM-CONNECTORS")
|
|
2516
3223
|
for connector in connectors:
|
|
2517
|
-
|
|
2518
|
-
|
|
3224
|
+
child_element = ET.SubElement(connectors_tag, 'COMMUNICATION-CONNECTOR-REF-CONDITIONAL')
|
|
3225
|
+
self.setChildElementOptionalRefType(child_element, "COMMUNICATION-CONNECTOR-REF", connector)
|
|
2519
3226
|
|
|
3227
|
+
def writePhysicalChannelFrameTriggerings(self, element, channel):
|
|
2520
3228
|
triggerings = channel.getFrameTriggerings()
|
|
2521
3229
|
if len(triggerings) > 0:
|
|
2522
3230
|
triggerings_tag = ET.SubElement(element, "FRAME-TRIGGERINGS")
|
|
@@ -2525,9 +3233,12 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2525
3233
|
self.writeCanFrameTriggering(triggerings_tag, triggering)
|
|
2526
3234
|
elif isinstance(triggering, LinFrameTriggering):
|
|
2527
3235
|
self.writeLinFrameTriggering(triggerings_tag, triggering)
|
|
3236
|
+
elif isinstance(triggering, FlexrayFrameTriggering):
|
|
3237
|
+
self.writeFlexrayFrameTriggering(triggerings_tag, triggering)
|
|
2528
3238
|
else:
|
|
2529
3239
|
self.notImplemented("Unsupported Frame Triggering <%s>" % type(triggering))
|
|
2530
|
-
|
|
3240
|
+
|
|
3241
|
+
def writePhysicalChannelISignalTriggerings(self, element, channel):
|
|
2531
3242
|
triggerings = channel.getISignalTriggerings()
|
|
2532
3243
|
if len(triggerings) > 0:
|
|
2533
3244
|
triggerings_tag = ET.SubElement(element, "I-SIGNAL-TRIGGERINGS")
|
|
@@ -2536,7 +3247,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2536
3247
|
self.writeISignalTriggering(triggerings_tag, triggering)
|
|
2537
3248
|
else:
|
|
2538
3249
|
self.notImplemented("Unsupported ISignalTriggering <%s>" % type(triggering))
|
|
2539
|
-
|
|
3250
|
+
|
|
3251
|
+
def writePhysicalChannelPduTriggerings(self, element, channel):
|
|
2540
3252
|
triggerings = channel.getPduTriggerings()
|
|
2541
3253
|
if len(triggerings) > 0:
|
|
2542
3254
|
triggerings_tag = ET.SubElement(element, "PDU-TRIGGERINGS")
|
|
@@ -2546,10 +3258,17 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2546
3258
|
else:
|
|
2547
3259
|
self.notImplemented("Unsupported PduTriggering <%s>" % type(triggering))
|
|
2548
3260
|
|
|
3261
|
+
def writePhysicalChannel(self, element: ET.Element, channel: PhysicalChannel):
|
|
3262
|
+
self.writeIdentifiable(element, channel)
|
|
3263
|
+
|
|
3264
|
+
self.writePhysicalChannelCommConnectorRefs(element, channel)
|
|
3265
|
+
self.writePhysicalChannelFrameTriggerings(element, channel)
|
|
3266
|
+
self.writePhysicalChannelISignalTriggerings(element, channel)
|
|
3267
|
+
self.writePhysicalChannelPduTriggerings(element, channel)
|
|
3268
|
+
|
|
2549
3269
|
def writeCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
|
|
2550
3270
|
self.logger.debug("Set CanPhysicalChannel %s" % channel.getShortName())
|
|
2551
3271
|
child_element = ET.SubElement(element, "CAN-PHYSICAL-CHANNEL")
|
|
2552
|
-
self.writeIdentifiable(child_element, channel)
|
|
2553
3272
|
self.writePhysicalChannel(child_element, channel)
|
|
2554
3273
|
|
|
2555
3274
|
def writeScheduleTableEntry(self, element: ET.Element, entry: ScheduleTableEntry):
|
|
@@ -2592,7 +3311,6 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2592
3311
|
def writeLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
|
|
2593
3312
|
self.logger.debug("Set LinPhysicalChannel %s" % channel.getShortName())
|
|
2594
3313
|
child_element = ET.SubElement(element, "LIN-PHYSICAL-CHANNEL")
|
|
2595
|
-
self.writeIdentifiable(child_element, channel)
|
|
2596
3314
|
self.writePhysicalChannel(child_element, channel)
|
|
2597
3315
|
self.writeLinPhysicalChannelScheduleTables(child_element, channel)
|
|
2598
3316
|
|
|
@@ -2640,7 +3358,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2640
3358
|
for end_point in end_points:
|
|
2641
3359
|
self.writeNetworkEndPoint(child_element, end_point)
|
|
2642
3360
|
|
|
2643
|
-
def setSocketConnectionIpduIdentifier(self, element: ET.Element,identifier: SocketConnectionIpduIdentifier):
|
|
3361
|
+
def setSocketConnectionIpduIdentifier(self, element: ET.Element, identifier: SocketConnectionIpduIdentifier):
|
|
2644
3362
|
if identifier is not None:
|
|
2645
3363
|
child_element = ET.SubElement(element, "SOCKET-CONNECTION-IPDU-IDENTIFIER")
|
|
2646
3364
|
self.setChildElementOptionalPositiveInteger(child_element, "HEADER-ID", identifier.getHeaderId())
|
|
@@ -2661,8 +3379,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2661
3379
|
def setSocketConnection(self, element: ET.Element, connection: SocketConnection):
|
|
2662
3380
|
if connection is not None:
|
|
2663
3381
|
child_element = ET.SubElement(element, "SOCKET-CONNECTION")
|
|
2664
|
-
self.setChildElementOptionalBooleanValue(child_element, "CLIENT-IP-ADDR-FROM-CONNECTION-REQUEST", connection.getClientIpAddrFromConnectionRequest())
|
|
2665
|
-
self.setChildElementOptionalBooleanValue(child_element, "CLIENT-PORT-FROM-CONNECTION-REQUEST", connection.getClientPortFromConnectionRequest())
|
|
3382
|
+
self.setChildElementOptionalBooleanValue(child_element, "CLIENT-IP-ADDR-FROM-CONNECTION-REQUEST", connection.getClientIpAddrFromConnectionRequest()) # noqa E501
|
|
3383
|
+
self.setChildElementOptionalBooleanValue(child_element, "CLIENT-PORT-FROM-CONNECTION-REQUEST", connection.getClientPortFromConnectionRequest()) # noqa E501
|
|
2666
3384
|
self.setChildElementOptionalRefType(child_element, "CLIENT-PORT-REF", connection.getClientPortRef())
|
|
2667
3385
|
self.setSocketConnectionPdus(child_element, "PDUS", connection.getPdus())
|
|
2668
3386
|
self.setChildElementOptionalPositiveInteger(child_element, "PDU-COLLECTION-MAX-BUFFER-SIZE", connection.getPduCollectionMaxBufferSize())
|
|
@@ -2749,14 +3467,6 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2749
3467
|
self.setChildElementOptionalTimeValue(child_element, "MAX-VALUE", delay.getMaxValue())
|
|
2750
3468
|
self.setChildElementOptionalTimeValue(child_element, "MIN-VALUE", delay.getMinValue())
|
|
2751
3469
|
|
|
2752
|
-
def setInitialSdDelayConfig(self, element: ET.Element, key: str, config: InitialSdDelayConfig):
|
|
2753
|
-
if config is not None:
|
|
2754
|
-
child_element = ET.SubElement(element, key)
|
|
2755
|
-
self.setChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MAX-VALUE", config.getInitialDelayMaxValue())
|
|
2756
|
-
self.setChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MIN-VALUE", config.getInitialDelayMinValue())
|
|
2757
|
-
self.setChildElementOptionalTimeValue(child_element, "INITIAL-REPETITIONS-BASE-DELAY", config.getInitialRepetitionsBaseDelay())
|
|
2758
|
-
self.setChildElementOptionalPositiveInteger(child_element, "INITIAL-REPETITIONS-MAX", config.getInitialRepetitionsMax())
|
|
2759
|
-
|
|
2760
3470
|
def setSdClientConfig(self, element: ET.Element, key: str, config: SdClientConfig):
|
|
2761
3471
|
if config is not None:
|
|
2762
3472
|
child_element = ET.SubElement(element, key)
|
|
@@ -2784,7 +3494,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2784
3494
|
if isinstance(group, ConsumedEventGroup):
|
|
2785
3495
|
self.writeConsumedEventGroup(child_element, group)
|
|
2786
3496
|
else:
|
|
2787
|
-
self.notImplemented("Unsupported ConsumedEventGroups <%s>" % type(group))
|
|
3497
|
+
self.notImplemented("Unsupported ConsumedEventGroups <%s>" % type(group))
|
|
2788
3498
|
|
|
2789
3499
|
def writeConsumedServiceInstance(self, element: ET.Element, instance: ConsumedServiceInstance):
|
|
2790
3500
|
if instance is not None:
|
|
@@ -2801,7 +3511,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2801
3511
|
for instance in instances:
|
|
2802
3512
|
if isinstance(instance, ConsumedServiceInstance):
|
|
2803
3513
|
self.writeConsumedServiceInstance(child_element, instance)
|
|
2804
|
-
else:
|
|
3514
|
+
else:
|
|
2805
3515
|
self.notImplemented("Unsupported ConsumedServiceInstances <%s>" % type(instance))
|
|
2806
3516
|
|
|
2807
3517
|
def setInitialSdDelayConfig(self, element: ET.Element, key: str, config: InitialSdDelayConfig):
|
|
@@ -2895,7 +3605,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2895
3605
|
self.writeIdentifiable(child_element, address)
|
|
2896
3606
|
self.writeSocketAddressApplicationEndpoint(child_element, address)
|
|
2897
3607
|
self.writeSocketAddressMulticastConnectorRefs(child_element, address)
|
|
2898
|
-
self.setChildElementOptionalRefType(child_element, "CONNECTOR-REF", address.getConnectorRef())
|
|
3608
|
+
self.setChildElementOptionalRefType(child_element, "CONNECTOR-REF", address.getConnectorRef())
|
|
2899
3609
|
self.setChildElementOptionalPositiveInteger(child_element, "PORT-ADDRESS", address.getPortAddress())
|
|
2900
3610
|
|
|
2901
3611
|
def writeSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
|
|
@@ -2924,12 +3634,17 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2924
3634
|
def writeEthernetPhysicalChannel(self, element: ET.Element, channel: EthernetPhysicalChannel):
|
|
2925
3635
|
self.logger.debug("Set EthernetPhysicalChannel %s" % channel.getShortName())
|
|
2926
3636
|
child_element = ET.SubElement(element, "ETHERNET-PHYSICAL-CHANNEL")
|
|
2927
|
-
self.writeIdentifiable(child_element, channel)
|
|
2928
3637
|
self.writePhysicalChannel(child_element, channel)
|
|
2929
3638
|
self.writeEthernetPhysicalChannelNetworkEndPoints(child_element, channel.getNetworkEndpoints())
|
|
2930
3639
|
self.writeSoAdConfig(child_element, "SO-AD-CONFIG", channel.getSoAdConfig())
|
|
2931
3640
|
self.writeEthernetPhysicalChannelVlan(child_element, channel)
|
|
2932
3641
|
|
|
3642
|
+
def writeFlexrayPhysicalChannel(self, element: ET.Element, channel: FlexrayPhysicalChannel):
|
|
3643
|
+
self.logger.debug("Set FlexrayPhysicalChannel %s" % channel.getShortName())
|
|
3644
|
+
child_element = ET.SubElement(element, "FLEXRAY-PHYSICAL-CHANNEL")
|
|
3645
|
+
self.writePhysicalChannel(child_element, channel)
|
|
3646
|
+
self.setChildElementOptionalLiteral(child_element, "CHANNEL-NAME", channel.getChannelName())
|
|
3647
|
+
|
|
2933
3648
|
def writeCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2934
3649
|
channels = cluster.getPhysicalChannels()
|
|
2935
3650
|
if len(channels) > 0:
|
|
@@ -2941,6 +3656,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2941
3656
|
self.writeLinPhysicalChannel(child_element, channel)
|
|
2942
3657
|
elif isinstance(channel, EthernetPhysicalChannel):
|
|
2943
3658
|
self.writeEthernetPhysicalChannel(child_element, channel)
|
|
3659
|
+
elif isinstance(channel, FlexrayPhysicalChannel):
|
|
3660
|
+
self.writeFlexrayPhysicalChannel(child_element, channel)
|
|
2944
3661
|
else:
|
|
2945
3662
|
self.notImplemented("Unsupported Physical Channel <%s>" % type(channel))
|
|
2946
3663
|
|
|
@@ -2963,22 +3680,68 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2963
3680
|
self.setChildElementOptionalNumericalValue(element, "SPEED", cluster.getSpeed())
|
|
2964
3681
|
|
|
2965
3682
|
def writeLinCluster(self, element: ET.Element, cluster: LinCluster):
|
|
2966
|
-
|
|
2967
|
-
|
|
2968
|
-
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
|
|
3683
|
+
if cluster is not None:
|
|
3684
|
+
self.logger.debug("LinCluster %s" % cluster.getShortName())
|
|
3685
|
+
child_element = ET.SubElement(element, "LIN-CLUSTER")
|
|
3686
|
+
self.writeIdentifiable(child_element, cluster)
|
|
3687
|
+
|
|
3688
|
+
child_element = ET.SubElement(child_element, "LIN-CLUSTER-VARIANTS")
|
|
3689
|
+
child_element = ET.SubElement(child_element, "LIN-CLUSTER-CONDITIONAL")
|
|
3690
|
+
self.writeCommunicationCluster(child_element, cluster)
|
|
2972
3691
|
|
|
2973
3692
|
def writeCanCluster(self, element: ET.Element, cluster: CanCluster):
|
|
2974
|
-
|
|
2975
|
-
|
|
2976
|
-
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
|
|
2980
|
-
|
|
2981
|
-
|
|
3693
|
+
if cluster is not None:
|
|
3694
|
+
self.logger.debug("CanCluster %s" % cluster.getShortName())
|
|
3695
|
+
child_element = ET.SubElement(element, "CAN-CLUSTER")
|
|
3696
|
+
self.writeIdentifiable(child_element, cluster)
|
|
3697
|
+
|
|
3698
|
+
child_element = ET.SubElement(child_element, "CAN-CLUSTER-VARIANTS")
|
|
3699
|
+
child_element = ET.SubElement(child_element, "CAN-CLUSTER-CONDITIONAL")
|
|
3700
|
+
self.writeCommunicationCluster(child_element, cluster)
|
|
3701
|
+
self.writeAbstractCanCluster(child_element, cluster)
|
|
3702
|
+
|
|
3703
|
+
def writeFlexrayCluster(self, element: ET.Element, cluster: FlexrayCluster):
|
|
3704
|
+
if cluster is not None:
|
|
3705
|
+
self.logger.debug("Write FlexrayCluster <%s>" % cluster.getShortName())
|
|
3706
|
+
child_element = ET.SubElement(element, "FLEXRAY-CLUSTER")
|
|
3707
|
+
self.writeIdentifiable(child_element, cluster)
|
|
3708
|
+
|
|
3709
|
+
child_element = ET.SubElement(child_element, "FLEXRAY-CLUSTER-VARIANTS")
|
|
3710
|
+
child_element = ET.SubElement(child_element, "FLEXRAY-CLUSTER-CONDITIONAL")
|
|
3711
|
+
self.writeCommunicationCluster(child_element, cluster)
|
|
3712
|
+
|
|
3713
|
+
self.setChildElementOptionalIntegerValue(child_element, "ACTION-POINT-OFFSET", cluster.getActionPointOffset())
|
|
3714
|
+
self.setChildElementOptionalTimeValue(child_element, "BIT", cluster.getBit())
|
|
3715
|
+
self.setChildElementOptionalIntegerValue(child_element, "CAS-RX-LOW-MAX", cluster.getCasRxLowMax())
|
|
3716
|
+
self.setChildElementOptionalIntegerValue(child_element, "COLD-START-ATTEMPTS", cluster.getColdStartAttempts())
|
|
3717
|
+
self.setChildElementOptionalTimeValue(child_element, "CYCLE", cluster.getCycle())
|
|
3718
|
+
self.setChildElementOptionalIntegerValue(child_element, "CYCLE-COUNT-MAX", cluster.getCycleCountMax())
|
|
3719
|
+
self.setChildElementOptionalBooleanValue(child_element, "DETECT-NIT-ERROR", cluster.getDetectNitError())
|
|
3720
|
+
self.setChildElementOptionalIntegerValue(child_element, "DYNAMIC-SLOT-IDLE-PHASE", cluster.getDynamicSlotIdlePhase())
|
|
3721
|
+
self.setChildElementOptionalIntegerValue(child_element, "IGNORE-AFTER-TX", cluster.getIgnoreAfterTx())
|
|
3722
|
+
self.setChildElementOptionalIntegerValue(child_element, "LISTEN-NOISE", cluster.getListenNoise())
|
|
3723
|
+
self.setChildElementOptionalIntegerValue(child_element, "MACRO-PER-CYCLE", cluster.getMacroPerCycle())
|
|
3724
|
+
self.setChildElementOptionalTimeValue(child_element, "MACROTICK-DURATION", cluster.getMacrotickDuration())
|
|
3725
|
+
self.setChildElementOptionalIntegerValue(child_element, "MAX-WITHOUT-CLOCK-CORRECTION-FATAL", cluster.getMaxWithoutClockCorrectionFatal())
|
|
3726
|
+
self.setChildElementOptionalIntegerValue(child_element, "MAX-WITHOUT-CLOCK-CORRECTION-PASSIVE", cluster.getMaxWithoutClockCorrectionPassive()) # noqa E501
|
|
3727
|
+
self.setChildElementOptionalIntegerValue(child_element, "MINISLOT-ACTION-POINT-OFFSET", cluster.getMinislotActionPointOffset())
|
|
3728
|
+
self.setChildElementOptionalIntegerValue(child_element, "MINISLOT-DURATION", cluster.getMinislotDuration())
|
|
3729
|
+
self.setChildElementOptionalIntegerValue(child_element, "NETWORK-IDLE-TIME", cluster.getNetworkIdleTime())
|
|
3730
|
+
self.setChildElementOptionalIntegerValue(child_element, "NETWORK-MANAGEMENT-VECTOR-LENGTH", cluster.getNetworkManagementVectorLength())
|
|
3731
|
+
self.setChildElementOptionalIntegerValue(child_element, "NUMBER-OF-MINISLOTS", cluster.getNumberOfMinislots())
|
|
3732
|
+
self.setChildElementOptionalIntegerValue(child_element, "NUMBER-OF-STATIC-SLOTS", cluster.getNumberOfStaticSlots())
|
|
3733
|
+
self.setChildElementOptionalIntegerValue(child_element, "OFFSET-CORRECTION-START", cluster.getOffsetCorrectionStart())
|
|
3734
|
+
self.setChildElementOptionalIntegerValue(child_element, "PAYLOAD-LENGTH-STATIC", cluster.getPayloadLengthStatic())
|
|
3735
|
+
self.setChildElementOptionalIntegerValue(child_element, "SAFETY-MARGIN", cluster.getSafetyMargin())
|
|
3736
|
+
self.setChildElementOptionalTimeValue(child_element, "SAMPLE-CLOCK-PERIOD", cluster.getSampleClockPeriod())
|
|
3737
|
+
self.setChildElementOptionalIntegerValue(child_element, "STATIC-SLOT-DURATION", cluster.getStaticSlotDuration())
|
|
3738
|
+
self.setChildElementOptionalIntegerValue(child_element, "SYNC-FRAME-ID-COUNT-MAX", cluster.getSyncFrameIdCountMax())
|
|
3739
|
+
self.setChildElementOptionalIntegerValue(child_element, "TRANSMISSION-START-SEQUENCE-DURATION", cluster.getTransmissionStartSequenceDuration()) # noqa E501
|
|
3740
|
+
self.setChildElementOptionalIntegerValue(child_element, "WAKEUP-RX-IDLE", cluster.getWakeupRxIdle())
|
|
3741
|
+
self.setChildElementOptionalIntegerValue(child_element, "WAKEUP-RX-LOW", cluster.getWakeupRxLow())
|
|
3742
|
+
self.setChildElementOptionalIntegerValue(child_element, "WAKEUP-RX-WINDOW", cluster.getWakeupRxWindow())
|
|
3743
|
+
self.setChildElementOptionalIntegerValue(child_element, "WAKEUP-TX-ACTIVE", cluster.getWakeupTxActive())
|
|
3744
|
+
self.setChildElementOptionalIntegerValue(child_element, "WAKEUP-TX-IDLE", cluster.getWakeupTxIdle())
|
|
2982
3745
|
|
|
2983
3746
|
def writeMacMulticastGroup(self, element: ET.Element, group: MacMulticastGroup):
|
|
2984
3747
|
if group is not None:
|
|
@@ -3044,27 +3807,28 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3044
3807
|
elif isinstance(port, ISignalPort):
|
|
3045
3808
|
self.writeISignalPort(instances_tag, port)
|
|
3046
3809
|
else:
|
|
3047
|
-
self.
|
|
3810
|
+
self.notImplemented("Unsupported CommConnectorPort <%s>" % type(port))
|
|
3048
3811
|
|
|
3049
3812
|
def writeCommunicationController(self, element: ET.Element, controller: CommunicationController):
|
|
3050
3813
|
self.setChildElementOptionalBooleanValue(element, "WAKE-UP-BY-CONTROLLER-SUPPORTED", controller.getWakeUpByControllerSupported())
|
|
3051
3814
|
|
|
3052
3815
|
def setCanControllerFdConfiguration(self, element: ET.Element, key: str, configuration: CanControllerFdConfiguration):
|
|
3053
3816
|
if configuration is not None:
|
|
3054
|
-
|
|
3055
|
-
#
|
|
3817
|
+
pass
|
|
3818
|
+
# child_element = ET.SubElement(element, key)
|
|
3819
|
+
# TODO: need to implemented
|
|
3056
3820
|
|
|
3057
3821
|
def setCanControllerFdConfigurationRequirements(self, element: ET.Element, key: str, requirements: CanControllerFdConfigurationRequirements):
|
|
3058
3822
|
if requirements is not None:
|
|
3059
3823
|
child_element = ET.SubElement(element, key)
|
|
3060
|
-
self.setChildElementOptionalIntegerValue(child_element, "MAX-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMaxNumberOfTimeQuantaPerBit())
|
|
3824
|
+
self.setChildElementOptionalIntegerValue(child_element, "MAX-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMaxNumberOfTimeQuantaPerBit()) # noqa E501
|
|
3061
3825
|
self.setChildElementOptionalFloatValue(child_element, "MAX-SAMPLE-POINT", requirements.getMaxSamplePoint())
|
|
3062
3826
|
self.setChildElementOptionalFloatValue(child_element, "MAX-SYNC-JUMP-WIDTH", requirements.getMaxSyncJumpWidth())
|
|
3063
|
-
self.setChildElementOptionalTimeValue(child_element, "MAX-TRCV-DELAY-COMPENSATION-OFFSET", requirements.getMaxTrcvDelayCompensationOffset())
|
|
3064
|
-
self.setChildElementOptionalIntegerValue(child_element, "MIN-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMinNumberOfTimeQuantaPerBit())
|
|
3827
|
+
self.setChildElementOptionalTimeValue(child_element, "MAX-TRCV-DELAY-COMPENSATION-OFFSET", requirements.getMaxTrcvDelayCompensationOffset()) # noqa E501
|
|
3828
|
+
self.setChildElementOptionalIntegerValue(child_element, "MIN-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMinNumberOfTimeQuantaPerBit()) # noqa E501
|
|
3065
3829
|
self.setChildElementOptionalFloatValue(child_element, "MIN-SAMPLE-POINT", requirements.getMinSamplePoint())
|
|
3066
3830
|
self.setChildElementOptionalFloatValue(child_element, "MIN-SYNC-JUMP-WIDTH", requirements.getMinSyncJumpWidth())
|
|
3067
|
-
self.setChildElementOptionalTimeValue(child_element, "MIN-TRCV-DELAY-COMPENSATION-OFFSET", requirements.getMinTrcvDelayCompensationOffset())
|
|
3831
|
+
self.setChildElementOptionalTimeValue(child_element, "MIN-TRCV-DELAY-COMPENSATION-OFFSET", requirements.getMinTrcvDelayCompensationOffset()) # noqa E501
|
|
3068
3832
|
self.setChildElementOptionalBooleanValue(child_element, "TX-BIT-RATE-SWITCH", requirements.getTxBitRateSwitch())
|
|
3069
3833
|
|
|
3070
3834
|
def writeAbstractCanCommunicationControllerAttributes(self, element: ET.Element, attributes: AbstractCanCommunicationControllerAttributes):
|
|
@@ -3075,10 +3839,10 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3075
3839
|
if requirements is not None:
|
|
3076
3840
|
child_element = ET.SubElement(element, "CAN-CONTROLLER-CONFIGURATION-REQUIREMENTS")
|
|
3077
3841
|
self.writeAbstractCanCommunicationControllerAttributes(child_element, requirements)
|
|
3078
|
-
self.setChildElementOptionalIntegerValue(child_element, "MAX-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMaxNumberOfTimeQuantaPerBit())
|
|
3842
|
+
self.setChildElementOptionalIntegerValue(child_element, "MAX-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMaxNumberOfTimeQuantaPerBit()) # noqa E501
|
|
3079
3843
|
self.setChildElementOptionalFloatValue(child_element, "MAX-SAMPLE-POINT", requirements.getMaxSamplePoint())
|
|
3080
3844
|
self.setChildElementOptionalFloatValue(child_element, "MAX-SYNC-JUMP-WIDTH", requirements.getMaxSyncJumpWidth())
|
|
3081
|
-
self.setChildElementOptionalIntegerValue(child_element, "MIN-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMinNumberOfTimeQuantaPerBit())
|
|
3845
|
+
self.setChildElementOptionalIntegerValue(child_element, "MIN-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMinNumberOfTimeQuantaPerBit()) # noqa E501
|
|
3082
3846
|
self.setChildElementOptionalFloatValue(child_element, "MIN-SAMPLE-POINT", requirements.getMinSamplePoint())
|
|
3083
3847
|
self.setChildElementOptionalFloatValue(child_element, "MIN-SYNC-JUMP-WIDTH", requirements.getMinSyncJumpWidth())
|
|
3084
3848
|
|
|
@@ -3089,7 +3853,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3089
3853
|
if isinstance(attributes, CanControllerConfigurationRequirements):
|
|
3090
3854
|
self.writeCanControllerConfigurationRequirements(child_element, attributes)
|
|
3091
3855
|
else:
|
|
3092
|
-
self.notImplemented("Unsupported CanControllerAttributes <%s>" % type(attributes))
|
|
3856
|
+
self.notImplemented("Unsupported CanControllerAttributes <%s>" % type(attributes))
|
|
3093
3857
|
|
|
3094
3858
|
def writeAbstractCanCommunicationController(self, element: ET.Element, controller: AbstractCanCommunicationController):
|
|
3095
3859
|
self.writeCommunicationController(element, controller)
|
|
@@ -3148,10 +3912,10 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3148
3912
|
|
|
3149
3913
|
def setCouplingPortDetails(self, element: ET.Element, key: str, details: CouplingPortDetails):
|
|
3150
3914
|
if details is not None:
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
|
|
3154
|
-
|
|
3915
|
+
child_element = ET.SubElement(element, key)
|
|
3916
|
+
self.writeCouplingPortDetailsCouplingPortStructuralElements(child_element, details)
|
|
3917
|
+
self.writeCouplingPortDetailsEthernetPriorityRegenerations(child_element, details)
|
|
3918
|
+
self.setChildElementOptionalRefType(child_element, "LAST-EGRESS-SCHEDULER-REF", details.getLastEgressSchedulerRef())
|
|
3155
3919
|
|
|
3156
3920
|
def writeVlanMembership(self, element: ET.Element, membership: VlanMembership):
|
|
3157
3921
|
if membership is not None:
|
|
@@ -3173,7 +3937,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3173
3937
|
child_element = ET.SubElement(element, "COUPLING-PORT")
|
|
3174
3938
|
self.writeIdentifiable(child_element, port)
|
|
3175
3939
|
self.setCouplingPortDetails(child_element, "COUPLING-PORT-DETAILS", port.getCouplingPortDetails())
|
|
3176
|
-
self.setChildElementOptionalLiteral(child_element, "MAC-LAYER-TYPE", port.
|
|
3940
|
+
self.setChildElementOptionalLiteral(child_element, "MAC-LAYER-TYPE", port.getMacLayerType())
|
|
3177
3941
|
self.writeCouplingPortVlanMemberships(child_element, port)
|
|
3178
3942
|
|
|
3179
3943
|
def writeEthernetCommunicationControllerCouplingPorts(self, element: ET.Element, controller: EthernetCommunicationController):
|
|
@@ -3206,6 +3970,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3206
3970
|
self.writeEthernetCommunicationController(child_element, controller)
|
|
3207
3971
|
elif isinstance(controller, LinMaster):
|
|
3208
3972
|
self.writeLinMaster(child_element, controller)
|
|
3973
|
+
elif isinstance(controller, FlexrayCommunicationController):
|
|
3974
|
+
self.writeFlexrayCommunicationController(child_element, controller)
|
|
3209
3975
|
else:
|
|
3210
3976
|
self.notImplemented("Unsupported Communication Controller <%s>" % type(controller))
|
|
3211
3977
|
|
|
@@ -3219,15 +3985,27 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3219
3985
|
self.logger.debug("Write CanCommunicationConnector %s" % connector.getShortName())
|
|
3220
3986
|
self.writeCommunicationConnector(element, connector)
|
|
3221
3987
|
|
|
3988
|
+
def writeEthernetCommunicationConnectorNetworkEndpointRefs(self, element: ET.Element, connector: EthernetCommunicationConnector):
|
|
3989
|
+
refs = connector.getNetworkEndpointRefs()
|
|
3990
|
+
if len(refs) > 0:
|
|
3991
|
+
child_element = ET.SubElement(element, "NETWORK-ENDPOINT-REFS")
|
|
3992
|
+
for ref in refs:
|
|
3993
|
+
self.setChildElementOptionalRefType(child_element, "NETWORK-ENDPOINT-REF", ref)
|
|
3994
|
+
|
|
3222
3995
|
def writeEthernetCommunicationConnector(self, element: ET.Element, connector: EthernetCommunicationConnector):
|
|
3223
3996
|
self.logger.debug("Write EthernetCommunicationConnector %s" % connector.getShortName())
|
|
3224
3997
|
self.writeCommunicationConnector(element, connector)
|
|
3225
3998
|
self.setChildElementOptionalPositiveInteger(element, "MAXIMUM-TRANSMISSION-UNIT", connector.getMaximumTransmissionUnit())
|
|
3999
|
+
self.writeEthernetCommunicationConnectorNetworkEndpointRefs(element, connector)
|
|
3226
4000
|
|
|
3227
4001
|
def writeLinCommunicationConnector(self, element: ET.Element, connector: LinCommunicationConnector):
|
|
3228
4002
|
self.logger.debug("Write LinCommunicationConnector %s" % connector.getShortName())
|
|
3229
4003
|
self.writeCommunicationConnector(element, connector)
|
|
3230
4004
|
|
|
4005
|
+
def writeFlexrayCommunicationConnector(self, element: ET.Element, connector: FlexrayCommunicationConnector):
|
|
4006
|
+
self.logger.debug("Write FlexrayCommunicationConnector %s" % connector.getShortName())
|
|
4007
|
+
self.writeCommunicationConnector(element, connector)
|
|
4008
|
+
|
|
3231
4009
|
def writeEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
|
|
3232
4010
|
connectors = instance.getConnectors()
|
|
3233
4011
|
if len(connectors) > 0:
|
|
@@ -3242,8 +4020,11 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3242
4020
|
elif isinstance(connector, LinCommunicationConnector):
|
|
3243
4021
|
child_element = ET.SubElement(connectors_tag, "LIN-COMMUNICATION-CONNECTOR")
|
|
3244
4022
|
self.writeLinCommunicationConnector(child_element, connector)
|
|
4023
|
+
elif isinstance(connector, FlexrayCommunicationConnector):
|
|
4024
|
+
child_element = ET.SubElement(connectors_tag, "FLEXRAY-COMMUNICATION-CONNECTOR")
|
|
4025
|
+
self.writeFlexrayCommunicationConnector(child_element, connector)
|
|
3245
4026
|
else:
|
|
3246
|
-
self.
|
|
4027
|
+
self.notImplemented("Unsupported Communication connector <%s>" % type(connector))
|
|
3247
4028
|
|
|
3248
4029
|
def writeEcuInstanceAssociatedComIPduGroupRefs(self, element: ET.Element, instance: EcuInstance):
|
|
3249
4030
|
refs = instance.getAssociatedComIPduGroupRefs()
|
|
@@ -3260,9 +4041,10 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3260
4041
|
self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-GW-TIME-BASE", instance.getComConfigurationGwTimeBase())
|
|
3261
4042
|
self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-RX-TIME-BASE", instance.getComConfigurationRxTimeBase())
|
|
3262
4043
|
self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-TX-TIME-BASE", instance.getComConfigurationTxTimeBase())
|
|
3263
|
-
self.setChildElementOptionalBooleanValue(child_element, "COM-ENABLE-MDT-FOR-CYCLIC-TRANSMISSION", instance.getComEnableMDTForCyclicTransmission())
|
|
4044
|
+
self.setChildElementOptionalBooleanValue(child_element, "COM-ENABLE-MDT-FOR-CYCLIC-TRANSMISSION", instance.getComEnableMDTForCyclicTransmission()) # noqa E501
|
|
3264
4045
|
self.writeEcuInstanceCommControllers(child_element, instance)
|
|
3265
4046
|
self.writeEcuInstanceConnectors(child_element, instance)
|
|
4047
|
+
self.setChildElementOptionalIntegerValue(child_element, "DIAGNOSTIC-ADDRESS", instance.getDiagnosticAddress())
|
|
3266
4048
|
self.setChildElementOptionalBooleanValue(child_element, "SLEEP-MODE-SUPPORTED", instance.getSleepModeSupported())
|
|
3267
4049
|
self.setChildElementOptionalBooleanValue(child_element, "WAKE-UP-OVER-BUS-SUPPORTED", instance.getWakeUpOverBusSupported())
|
|
3268
4050
|
|
|
@@ -3276,16 +4058,53 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3276
4058
|
for signal_ref in signal_refs:
|
|
3277
4059
|
self.setChildElementOptionalRefType(signal_refs_tag, "SYSTEM-SIGNAL-REF", signal_ref)
|
|
3278
4060
|
|
|
3279
|
-
def
|
|
4061
|
+
def writeSenderReceiverToSignalMapping(self, element: ET.Element, mapping: SenderReceiverToSignalMapping):
|
|
3280
4062
|
child_element = ET.SubElement(element, "SENDER-RECEIVER-TO-SIGNAL-MAPPING")
|
|
3281
4063
|
self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-DIRECTION", mapping.getCommunicationDirection())
|
|
3282
4064
|
self.setVariableDataPrototypeInSystemInstanceRef(child_element, "DATA-ELEMENT-IREF", mapping.getDataElementIRef())
|
|
3283
4065
|
self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-REF", mapping.getSystemSignalRef())
|
|
3284
4066
|
|
|
3285
|
-
def
|
|
4067
|
+
def writeSenderRecCompositeTypeMapping(self, element: ET.Element, mapping: SenderRecCompositeTypeMapping):
|
|
4068
|
+
self.writeARObjectAttributes(element, mapping)
|
|
4069
|
+
|
|
4070
|
+
def writeSenderRecRecordElementMapping(self, element: ET.Element, mapping: SenderRecRecordElementMapping):
|
|
4071
|
+
if mapping is not None:
|
|
4072
|
+
child_element = ET.SubElement(element, "SENDER-REC-RECORD-ELEMENT-MAPPING")
|
|
4073
|
+
self.writeARObjectAttributes(child_element, mapping)
|
|
4074
|
+
self.setChildElementOptionalRefType(child_element, "APPLICATION-RECORD-ELEMENT-REF", mapping.getApplicationRecordElementRef())
|
|
4075
|
+
self.setChildElementOptionalRefType(child_element, "IMPLEMENTATION-RECORD-ELEMENT-REF", mapping.getImplementationRecordElementRef())
|
|
4076
|
+
self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-REF", mapping.getSystemSignalRef())
|
|
4077
|
+
|
|
4078
|
+
def writeSenderRecArrayTypeMappingRecordElementMapping(self, element: ET.Element, mapping: SenderRecRecordTypeMapping):
|
|
4079
|
+
record_element_mappings = mapping.getRecordElementMappings()
|
|
4080
|
+
if len(record_element_mappings) > 0:
|
|
4081
|
+
child_element = ET.SubElement(element, "RECORD-ELEMENT-MAPPINGS")
|
|
4082
|
+
for record_element_mapping in record_element_mappings:
|
|
4083
|
+
if isinstance(record_element_mapping, SenderRecRecordElementMapping):
|
|
4084
|
+
self.writeSenderRecRecordElementMapping(child_element, record_element_mapping)
|
|
4085
|
+
else:
|
|
4086
|
+
self.notImplemented("Unsupported RecordElementMapping %s" % type(record_element_mapping))
|
|
4087
|
+
|
|
4088
|
+
def writeSenderRecRecordTypeMapping(self, element: ET.Element, mapping: SenderRecRecordTypeMapping):
|
|
4089
|
+
if mapping is not None:
|
|
4090
|
+
child_element = ET.SubElement(element, "SENDER-REC-RECORD-TYPE-MAPPING")
|
|
4091
|
+
self.writeSenderRecCompositeTypeMapping(child_element, mapping)
|
|
4092
|
+
self.writeSenderRecArrayTypeMappingRecordElementMapping(child_element, mapping)
|
|
4093
|
+
|
|
4094
|
+
def writeSenderReceiverToSignalGroupMappingTypeMapping(self, element: ET.Element, mapping: SenderReceiverToSignalGroupMapping):
|
|
4095
|
+
type_mapping = mapping.getTypeMapping()
|
|
4096
|
+
if type_mapping is not None:
|
|
4097
|
+
child_element = ET.SubElement(element, "TYPE-MAPPING")
|
|
4098
|
+
if isinstance(type_mapping, SenderRecRecordTypeMapping):
|
|
4099
|
+
self.writeSenderRecRecordTypeMapping(child_element, type_mapping)
|
|
4100
|
+
else:
|
|
4101
|
+
self.notImplemented("Unsupported Type Mapping %s" % type(type_mapping))
|
|
4102
|
+
|
|
4103
|
+
def writeSenderReceiverToSignalGroupMapping(self, element: ET.Element, mapping: SenderReceiverToSignalGroupMapping):
|
|
3286
4104
|
child_element = ET.SubElement(element, "SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING")
|
|
3287
4105
|
self.setVariableDataPrototypeInSystemInstanceRef(child_element, "DATA-ELEMENT-IREF", mapping.getDataElementIRef())
|
|
3288
4106
|
self.setChildElementOptionalRefType(child_element, "SIGNAL-GROUP-REF", mapping.getSignalGroupRef())
|
|
4107
|
+
self.writeSenderReceiverToSignalGroupMappingTypeMapping(child_element, mapping)
|
|
3289
4108
|
|
|
3290
4109
|
def writeSystemMappingDataMappings(self, element: ET.Element, system_mapping: SystemMapping):
|
|
3291
4110
|
data_mappings = system_mapping.getDataMappings()
|
|
@@ -3293,9 +4112,9 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3293
4112
|
child_element = ET.SubElement(element, "DATA-MAPPINGS")
|
|
3294
4113
|
for data_mapping in data_mappings:
|
|
3295
4114
|
if isinstance(data_mapping, SenderReceiverToSignalMapping):
|
|
3296
|
-
self.
|
|
4115
|
+
self.writeSenderReceiverToSignalMapping(child_element, data_mapping)
|
|
3297
4116
|
elif isinstance(data_mapping, SenderReceiverToSignalGroupMapping):
|
|
3298
|
-
self.
|
|
4117
|
+
self.writeSenderReceiverToSignalGroupMapping(child_element, data_mapping)
|
|
3299
4118
|
else:
|
|
3300
4119
|
self.notImplemented("Unsupported Data Mapping %s" % type(data_mapping))
|
|
3301
4120
|
|
|
@@ -3319,11 +4138,52 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3319
4138
|
else:
|
|
3320
4139
|
self.notImplemented("Unsupported Sw Mapping %s" % type(sw_mapping))
|
|
3321
4140
|
|
|
4141
|
+
def writeEcuMapping(self, element: ET.Element, mapping: ECUMapping):
|
|
4142
|
+
self.logger.debug("Write ECUMapping <%s>" % mapping.getShortName())
|
|
4143
|
+
if mapping is not None:
|
|
4144
|
+
child_element = ET.SubElement(element, "ECU-MAPPING")
|
|
4145
|
+
self.writeIdentifiable(child_element, mapping)
|
|
4146
|
+
self.setChildElementOptionalRefType(child_element, "ECU-INSTANCE-REF", mapping.getEcuInstanceRef())
|
|
4147
|
+
self.setChildElementOptionalRefType(child_element, "ECU-REF", mapping.getEcuRef())
|
|
4148
|
+
|
|
4149
|
+
def writeSystemMappingEcuResourceMappings(self, element: ET.Element, mapping: SystemMapping):
|
|
4150
|
+
ecu_resource_mappings = mapping.getEcuResourceMappings()
|
|
4151
|
+
if len(ecu_resource_mappings) > 0:
|
|
4152
|
+
child_element = ET.SubElement(element, "ECU-RESOURCE-MAPPINGS")
|
|
4153
|
+
for ecu_resource_mapping in ecu_resource_mappings:
|
|
4154
|
+
if isinstance(ecu_resource_mapping, ECUMapping):
|
|
4155
|
+
self.writeEcuMapping(child_element, ecu_resource_mapping)
|
|
4156
|
+
else:
|
|
4157
|
+
self.notImplemented("Unsupported Sw Mapping %s" % type(ecu_resource_mapping))
|
|
4158
|
+
|
|
4159
|
+
def writeSwcToImplMapping(self, element: ET.Element, mapping: SwcToImplMapping):
|
|
4160
|
+
if mapping is not None:
|
|
4161
|
+
child_element = ET.SubElement(element, "SWC-TO-IMPL-MAPPING")
|
|
4162
|
+
self.writeIdentifiable(child_element, mapping)
|
|
4163
|
+
self.setChildElementOptionalRefType(child_element, "COMPONENT-IMPLEMENTATION-REF", mapping.getComponentImplementationRef())
|
|
4164
|
+
irefs = mapping.getComponentIRefs()
|
|
4165
|
+
if len(irefs) > 0:
|
|
4166
|
+
irefs_tag = ET.SubElement(child_element, "COMPONENT-IREFS")
|
|
4167
|
+
for iref in irefs:
|
|
4168
|
+
self.setComponentInSystemInstanceRef(irefs_tag, "COMPONENT-IREF", iref)
|
|
4169
|
+
|
|
4170
|
+
def writeSystemMappingSwImplMappings(self, element: ET.Element, mapping: SystemMapping):
|
|
4171
|
+
sw_impl_mappings = mapping.getSwImplMappings()
|
|
4172
|
+
if len(sw_impl_mappings) > 0:
|
|
4173
|
+
child_element = ET.SubElement(element, "SW-IMPL-MAPPINGS")
|
|
4174
|
+
for sw_impl_mapping in sw_impl_mappings:
|
|
4175
|
+
if isinstance(sw_impl_mapping, SwcToImplMapping):
|
|
4176
|
+
self.writeSwcToImplMapping(child_element, sw_impl_mapping)
|
|
4177
|
+
else:
|
|
4178
|
+
self.notImplemented("Unsupported SwImplMapping <%s>" % type(sw_impl_mapping))
|
|
4179
|
+
|
|
3322
4180
|
def writeSystemMapping(self, element: ET.Element, mapping: SystemMapping):
|
|
3323
|
-
self.logger.debug("Write SystemMapping
|
|
4181
|
+
self.logger.debug("Write SystemMapping <%s>" % mapping.getShortName())
|
|
3324
4182
|
child_element = ET.SubElement(element, "SYSTEM-MAPPING")
|
|
3325
4183
|
self.writeIdentifiable(child_element, mapping)
|
|
3326
4184
|
self.writeSystemMappingDataMappings(child_element, mapping)
|
|
4185
|
+
self.writeSystemMappingEcuResourceMappings(child_element, mapping)
|
|
4186
|
+
self.writeSystemMappingSwImplMappings(child_element, mapping)
|
|
3327
4187
|
self.writeSystemMappingSwMappings(child_element, mapping)
|
|
3328
4188
|
|
|
3329
4189
|
def writeSystemMappings(self, element: ET.Element, system: System):
|
|
@@ -3368,9 +4228,12 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3368
4228
|
self.logger.debug("Set PhysicalDimension %s" % dimension.getShortName())
|
|
3369
4229
|
child_element = ET.SubElement(element, "PHYSICAL-DIMENSION")
|
|
3370
4230
|
self.writeARElement(child_element, dimension)
|
|
3371
|
-
self.setChildElementOptionalNumericalValue(child_element, "CURRENT-EXP", dimension.getCurrentExp())
|
|
3372
4231
|
self.setChildElementOptionalNumericalValue(child_element, "LENGTH-EXP", dimension.getLengthExp())
|
|
4232
|
+
self.setChildElementOptionalNumericalValue(child_element, "LUMINOUS-INTENSITY-EXP", dimension.getLuminousIntensityExp())
|
|
4233
|
+
self.setChildElementOptionalNumericalValue(child_element, "MASS-EXP", dimension.getMassExp())
|
|
4234
|
+
self.setChildElementOptionalNumericalValue(child_element, "TEMPERATURE-EXP", dimension.getTemperatureExp())
|
|
3373
4235
|
self.setChildElementOptionalNumericalValue(child_element, "TIME-EXP", dimension.getTimeExp())
|
|
4236
|
+
self.setChildElementOptionalNumericalValue(child_element, "CURRENT-EXP", dimension.getCurrentExp())
|
|
3374
4237
|
|
|
3375
4238
|
def setFlatInstanceDescriptor(self, element: ET.Element, desc: FlatInstanceDescriptor):
|
|
3376
4239
|
self.logger.debug("Set FlatInstanceDescriptor %s" % desc.getShortName())
|
|
@@ -3474,7 +4337,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3474
4337
|
ecuc_values_tag = ET.SubElement(element, "ECUC-VALUES")
|
|
3475
4338
|
for value_ref in value_refs:
|
|
3476
4339
|
child_element = ET.SubElement(ecuc_values_tag, "ECUC-MODULE-CONFIGURATION-VALUES-REF-CONDITIONAL")
|
|
3477
|
-
self.setChildElementOptionalRefType(child_element, "ECUC-MODULE-CONFIGURATION-VALUES-REF", value_ref)
|
|
4340
|
+
self.setChildElementOptionalRefType(child_element, "ECUC-MODULE-CONFIGURATION-VALUES-REF", value_ref)
|
|
3478
4341
|
|
|
3479
4342
|
def writeEcucValueCollection(self, element: ET.Element, collection: EcucValueCollection):
|
|
3480
4343
|
self.logger.debug("EcucValueCollection %s" % collection.getShortName())
|
|
@@ -3491,7 +4354,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3491
4354
|
if isinstance(sub_container, EcucContainerValue):
|
|
3492
4355
|
self.writeEcucContainValue(sub_containers_tag, sub_container)
|
|
3493
4356
|
else:
|
|
3494
|
-
self.notImplemented("Unsupported Sub Container %s" % type(container))
|
|
4357
|
+
self.notImplemented("Unsupported Sub Container %s" % type(container))
|
|
3495
4358
|
|
|
3496
4359
|
def writeEcucParameterValue(self, element: ET.Element, param_value: EcucParameterValue):
|
|
3497
4360
|
self.setChildElementOptionalRefType(element, "DEFINITION-REF", param_value.getDefinitionRef())
|
|
@@ -3510,7 +4373,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3510
4373
|
def writeEcucContainerValueParameterValues(self, element: ET.Element, container_value: EcucContainerValue):
|
|
3511
4374
|
param_values = container_value.getParameterValues()
|
|
3512
4375
|
if len(param_values) > 0:
|
|
3513
|
-
child_element
|
|
4376
|
+
child_element = ET.SubElement(element, "PARAMETER-VALUES")
|
|
3514
4377
|
for param_value in param_values:
|
|
3515
4378
|
if isinstance(param_value, EcucTextualParamValue):
|
|
3516
4379
|
self.setEcucTextualParamValue(child_element, param_value)
|
|
@@ -3523,7 +4386,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3523
4386
|
self.setChildElementOptionalRefType(element, "DEFINITION-REF", value.getDefinitionRef())
|
|
3524
4387
|
self.setAnnotations(element, value.getAnnotations())
|
|
3525
4388
|
|
|
3526
|
-
def setEcucReferenceValue(self, element: ET.Element, value
|
|
4389
|
+
def setEcucReferenceValue(self, element: ET.Element, value=EcucReferenceValue()):
|
|
3527
4390
|
child_element = ET.SubElement(element, "ECUC-REFERENCE-VALUE")
|
|
3528
4391
|
self.writeEcucAbstractReferenceValue(child_element, value)
|
|
3529
4392
|
self.setChildElementOptionalRefType(child_element, "VALUE-REF", value.getValueRef())
|
|
@@ -3532,13 +4395,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3532
4395
|
def setAnyInstanceRef(self, element: ET.Element, key, instance_ref: AnyInstanceRef):
|
|
3533
4396
|
if instance_ref is not None:
|
|
3534
4397
|
child_element = ET.SubElement(element, key)
|
|
3535
|
-
self.setChildElementOptionalRefType(child_element, "BASE-REF", instance_ref.getBaseRef())
|
|
4398
|
+
self.setChildElementOptionalRefType(child_element, "BASE-REF", instance_ref.getBaseRef())
|
|
3536
4399
|
for ref in instance_ref.getContextElementRefs():
|
|
3537
4400
|
self.setChildElementOptionalRefType(child_element, "CONTEXT-ELEMENT-REF", ref)
|
|
3538
4401
|
self.setChildElementOptionalRefType(child_element, "TARGET-REF", instance_ref.getTargetRef())
|
|
3539
4402
|
return instance_ref
|
|
3540
4403
|
|
|
3541
|
-
def setEcucInstanceReferenceValue(self, element: ET.Element, value
|
|
4404
|
+
def setEcucInstanceReferenceValue(self, element: ET.Element, value: EcucInstanceReferenceValue):
|
|
3542
4405
|
child_element = ET.SubElement(element, "ECUC-INSTANCE-REFERENCE-VALUE")
|
|
3543
4406
|
self.writeEcucAbstractReferenceValue(child_element, value)
|
|
3544
4407
|
self.setAnyInstanceRef(child_element, "VALUE-IREF", value.getValueIRef())
|
|
@@ -3547,7 +4410,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3547
4410
|
def writeEcucContainerValueReferenceValues(self, element: ET.Element, container_value: EcucContainerValue):
|
|
3548
4411
|
reference_values = container_value.getReferenceValues()
|
|
3549
4412
|
if len(reference_values) > 0:
|
|
3550
|
-
child_element
|
|
4413
|
+
child_element = ET.SubElement(element, "REFERENCE-VALUES")
|
|
3551
4414
|
for reference_value in reference_values:
|
|
3552
4415
|
if isinstance(reference_value, EcucReferenceValue):
|
|
3553
4416
|
self.setEcucReferenceValue(child_element, reference_value)
|
|
@@ -3573,7 +4436,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3573
4436
|
if isinstance(container, EcucContainerValue):
|
|
3574
4437
|
self.writeEcucContainValue(containers_tag, container)
|
|
3575
4438
|
else:
|
|
3576
|
-
self.notImplemented("Unsupported Container %s" % type(container))
|
|
4439
|
+
self.notImplemented("Unsupported Container %s" % type(container))
|
|
3577
4440
|
|
|
3578
4441
|
def writeEcucModuleConfigurationValues(self, element: ET.Element, values: EcucModuleConfigurationValues):
|
|
3579
4442
|
self.logger.debug("EcucModuleConfigurationValues %s" % values.getShortName())
|
|
@@ -3584,16 +4447,58 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3584
4447
|
self.setChildElementOptionalRefType(child_element, "MODULE-DESCRIPTION-REF", values.getModuleDescriptionRef())
|
|
3585
4448
|
self.writeEcucModuleConfigurationValuesContainers(child_element, values)
|
|
3586
4449
|
|
|
4450
|
+
def writeISignalGroupISignalRef(self, element: ET.Element, group: ISignalGroup):
|
|
4451
|
+
signal_refs = group.getISignalRefs()
|
|
4452
|
+
if len(signal_refs) > 0:
|
|
4453
|
+
child_element = ET.SubElement(element, "I-SIGNAL-REFS")
|
|
4454
|
+
for signal_ref in signal_refs:
|
|
4455
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-REF", signal_ref)
|
|
4456
|
+
|
|
4457
|
+
def writeISignalGroupComBasedSignalGroupTransformation(self, element: ET.Element, group: ISignalGroup):
|
|
4458
|
+
refs = group.getComBasedSignalGroupTransformationRefs()
|
|
4459
|
+
if len(refs) > 0:
|
|
4460
|
+
com_based_element = ET.SubElement(element, "COM-BASED-SIGNAL-GROUP-TRANSFORMATIONS")
|
|
4461
|
+
cond_element = ET.SubElement(com_based_element, "DATA-TRANSFORMATION-REF-CONDITIONAL")
|
|
4462
|
+
for ref in refs:
|
|
4463
|
+
self.setChildElementOptionalRefType(cond_element, "DATA-TRANSFORMATION-REF", ref)
|
|
4464
|
+
|
|
4465
|
+
def writeTransformationISignalProps(self, element: ET.Element, props: TransformationISignalProps):
|
|
4466
|
+
self.writeDescribable(element, props)
|
|
4467
|
+
|
|
4468
|
+
def writeEndToEndTransformationISignalPropsDataIds(self, element: ET.Element, props: EndToEndTransformationISignalProps):
|
|
4469
|
+
ids = props.getDataIds()
|
|
4470
|
+
if len(ids) > 0:
|
|
4471
|
+
child_element = ET.SubElement(element, "DATA-IDS")
|
|
4472
|
+
for id in ids:
|
|
4473
|
+
self.setChildElementOptionalPositiveInteger(child_element, "DATA-ID", id)
|
|
4474
|
+
|
|
4475
|
+
def writeEndToEndTransformationISignalProps(self, element: ET.Element, props: EndToEndTransformationISignalProps):
|
|
4476
|
+
if props is not None:
|
|
4477
|
+
props_element = ET.SubElement(element, "END-TO-END-TRANSFORMATION-I-SIGNAL-PROPS")
|
|
4478
|
+
variant_element = ET.SubElement(props_element, "END-TO-END-TRANSFORMATION-I-SIGNAL-PROPS-VARIANTS")
|
|
4479
|
+
child_element = ET.SubElement(variant_element, "END-TO-END-TRANSFORMATION-I-SIGNAL-PROPS-CONDITIONAL")
|
|
4480
|
+
self.writeTransformationISignalProps(child_element, props)
|
|
4481
|
+
self.setChildElementOptionalRefType(child_element, "TRANSFORMER-REF", props.getTransformerRef())
|
|
4482
|
+
self.writeEndToEndTransformationISignalPropsDataIds(child_element, props)
|
|
4483
|
+
self.setChildElementOptionalPositiveInteger(child_element, "DATA-LENGTH", props.getDataLength())
|
|
4484
|
+
|
|
4485
|
+
def writeISignalGroupTransformationISignalProps(self, element: ET.Element, group: ISignalGroup):
|
|
4486
|
+
props = group.getTransformationISignalProps()
|
|
4487
|
+
if props is not None:
|
|
4488
|
+
child_element = ET.SubElement(element, "TRANSFORMATION-I-SIGNAL-PROPSS")
|
|
4489
|
+
if isinstance(props, EndToEndTransformationISignalProps):
|
|
4490
|
+
self.writeEndToEndTransformationISignalProps(child_element, props)
|
|
4491
|
+
else:
|
|
4492
|
+
self.notImplemented("Unsupported TransformationISignalProps %s" % type(props))
|
|
4493
|
+
|
|
3587
4494
|
def writeISignalGroup(self, element: ET.Element, group: ISignalGroup):
|
|
3588
4495
|
self.logger.debug("ISignalGroup %s" % group.getShortName())
|
|
3589
4496
|
child_element = ET.SubElement(element, "I-SIGNAL-GROUP")
|
|
3590
4497
|
self.writeIdentifiable(child_element, group)
|
|
3591
|
-
|
|
3592
|
-
|
|
3593
|
-
signal_refs_tag = ET.SubElement(child_element, "I-SIGNAL-REFS")
|
|
3594
|
-
for signal_ref in signal_refs:
|
|
3595
|
-
self.setChildElementOptionalRefType(signal_refs_tag, "I-SIGNAL-REF", signal_ref)
|
|
4498
|
+
self.writeISignalGroupComBasedSignalGroupTransformation(child_element, group)
|
|
4499
|
+
self.writeISignalGroupISignalRef(child_element, group)
|
|
3596
4500
|
self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-GROUP-REF", group.getSystemSignalGroupRef())
|
|
4501
|
+
self.writeISignalGroupTransformationISignalProps(child_element, group)
|
|
3597
4502
|
|
|
3598
4503
|
def writeISignalIPduGroup(self, element: ET.Element, group: ISignalIPduGroup):
|
|
3599
4504
|
self.logger.debug("Set ISignalIPduGroup %s" % group.getShortName())
|
|
@@ -3660,52 +4565,265 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3660
4565
|
self.writeDiagnosticServiceTableDiagnosticConnectionRefs(child_element, table)
|
|
3661
4566
|
self.setChildElementOptionalRefType(child_element, "ECU-INSTANCE-REF", table.getEcuInstanceRef())
|
|
3662
4567
|
|
|
3663
|
-
def
|
|
3664
|
-
self.
|
|
3665
|
-
|
|
3666
|
-
self.
|
|
4568
|
+
def writePdu(self, element: ET.Element, pdu: Pdu):
|
|
4569
|
+
self.writeIdentifiable(element, pdu)
|
|
4570
|
+
self.setChildElementOptionalBooleanValue(element, "HAS-DYNAMIC-LENGTH", pdu.getHasDynamicLength())
|
|
4571
|
+
self.setChildElementOptionalNumericalValue(element, "LENGTH", pdu.getLength())
|
|
3667
4572
|
|
|
3668
|
-
def
|
|
3669
|
-
self.
|
|
4573
|
+
def writeIPdu(self, element: ET.Element, pdu: IPdu):
|
|
4574
|
+
self.writePdu(element, pdu)
|
|
4575
|
+
|
|
4576
|
+
def writeSegmentPosition(self, element: ET.Element, position: SegmentPosition):
|
|
4577
|
+
if position is not None:
|
|
4578
|
+
child_element = ET.SubElement(element, "SEGMENT-POSITION")
|
|
4579
|
+
self.setChildElementOptionalLiteral(child_element, "SEGMENT-BYTE-ORDER", position.getSegmentByteOrder())
|
|
4580
|
+
self.setChildElementOptionalIntegerValue(child_element, "SEGMENT-LENGTH", position.getSegmentLength())
|
|
4581
|
+
self.setChildElementOptionalIntegerValue(child_element, "SEGMENT-POSITION", position.getSegmentPosition())
|
|
4582
|
+
|
|
4583
|
+
def writeMultiplexedPartSegmentPositions(self, element: ET.Element, part: MultiplexedPart):
|
|
4584
|
+
positions = part.getSegmentPositions()
|
|
4585
|
+
if len(positions) > 0:
|
|
4586
|
+
child_element = ET.SubElement(element, "SEGMENT-POSITIONS")
|
|
4587
|
+
for position in positions:
|
|
4588
|
+
if isinstance(position, SegmentPosition):
|
|
4589
|
+
self.writeSegmentPosition(child_element, position)
|
|
4590
|
+
else:
|
|
4591
|
+
self.notImplemented("Unsupported DynamicPart <%s>" % type(position))
|
|
4592
|
+
|
|
4593
|
+
def writeMultiplexedPart(self, element: ET.Element, part: MultiplexedPart):
|
|
4594
|
+
self.writeMultiplexedPartSegmentPositions(element, part)
|
|
4595
|
+
|
|
4596
|
+
def writeDynamicPartAlternative(self, element: ET.Element, alternative: DynamicPartAlternative):
|
|
4597
|
+
if alternative is not None:
|
|
4598
|
+
child_element = ET.SubElement(element, "DYNAMIC-PART-ALTERNATIVE")
|
|
4599
|
+
self.setChildElementOptionalRefType(child_element, "I-PDU-REF", alternative.getIPduRef())
|
|
4600
|
+
self.setChildElementOptionalBooleanValue(child_element, "INITIAL-DYNAMIC-PART", alternative.getInitialDynamicPart())
|
|
4601
|
+
self.setChildElementOptionalIntegerValue(child_element, "SELECTOR-FIELD-CODE", alternative.getSelectorFieldCode())
|
|
4602
|
+
|
|
4603
|
+
def writeDynamicPartDynamicPartAlternatives(self, element: ET.Element, part: DynamicPart):
|
|
4604
|
+
alternatives = part.getDynamicPartAlternatives()
|
|
4605
|
+
if len(alternatives) > 0:
|
|
4606
|
+
child_element = ET.SubElement(element, "DYNAMIC-PART-ALTERNATIVES")
|
|
4607
|
+
for alternative in alternatives:
|
|
4608
|
+
if isinstance(alternative, DynamicPartAlternative):
|
|
4609
|
+
self.writeDynamicPartAlternative(child_element, alternative)
|
|
4610
|
+
else:
|
|
4611
|
+
self.notImplemented("Unsupported DynamicPartAlternative <%s>" % type(alternative))
|
|
4612
|
+
|
|
4613
|
+
def writeDynamicPart(self, element: ET.Element, part: DynamicPart):
|
|
4614
|
+
child_element = ET.SubElement(element, "DYNAMIC-PART")
|
|
4615
|
+
self.writeMultiplexedPart(child_element, part)
|
|
4616
|
+
self.writeDynamicPartDynamicPartAlternatives(child_element, part)
|
|
4617
|
+
|
|
4618
|
+
def writeMultiplexedIPduDynamicParts(self, element: ET.Element, ipdu: MultiplexedIPdu):
|
|
4619
|
+
part = ipdu.getDynamicPart()
|
|
4620
|
+
if part is not None:
|
|
4621
|
+
child_element = ET.SubElement(element, "DYNAMIC-PARTS")
|
|
4622
|
+
if isinstance(part, DynamicPart):
|
|
4623
|
+
self.writeDynamicPart(child_element, part)
|
|
4624
|
+
else:
|
|
4625
|
+
self.notImplemented("Unsupported DynamicPart <%s>" % type(part))
|
|
4626
|
+
|
|
4627
|
+
def writeStaticPart(self, element: ET.Element, part: StaticPart):
|
|
4628
|
+
child_element = ET.SubElement(element, "STATIC-PART")
|
|
4629
|
+
self.writeMultiplexedPart(child_element, part)
|
|
4630
|
+
self.setChildElementOptionalRefType(child_element, "I-PDU-REF", part.getIPduRef())
|
|
4631
|
+
|
|
4632
|
+
def writeMultiplexedIPduStaticParts(self, element: ET.Element, ipdu: MultiplexedIPdu):
|
|
4633
|
+
part = ipdu.getStaticPart()
|
|
4634
|
+
if part is not None:
|
|
4635
|
+
child_element = ET.SubElement(element, "STATIC-PARTS")
|
|
4636
|
+
if isinstance(part, StaticPart):
|
|
4637
|
+
self.writeStaticPart(child_element, part)
|
|
4638
|
+
else:
|
|
4639
|
+
self.notImplemented("Unsupported StaticPart <%s>" % type(part))
|
|
4640
|
+
|
|
4641
|
+
def writeMultiplexedIPdu(self, element: ET.Element, ipdu: MultiplexedIPdu):
|
|
4642
|
+
self.logger.debug("Write MultiplexedIPdu <%s>" % ipdu.getShortName())
|
|
4643
|
+
child_element = ET.SubElement(element, "MULTIPLEXED-I-PDU")
|
|
4644
|
+
self.writeIPdu(child_element, ipdu)
|
|
4645
|
+
self.writeMultiplexedIPduDynamicParts(child_element, ipdu)
|
|
4646
|
+
self.setChildElementOptionalLiteral(child_element, "SELECTOR-FIELD-BYTE-ORDER", ipdu.getSelectorFieldByteOrder())
|
|
4647
|
+
self.setChildElementOptionalIntegerValue(child_element, "SELECTOR-FIELD-LENGTH", ipdu.getSelectorFieldLength())
|
|
4648
|
+
self.setChildElementOptionalIntegerValue(child_element, "SELECTOR-FIELD-START-POSITION", ipdu.getSelectorFieldStartPosition())
|
|
4649
|
+
self.writeMultiplexedIPduStaticParts(child_element, ipdu)
|
|
4650
|
+
self.setChildElementOptionalLiteral(child_element, "TRIGGER-MODE", ipdu.getTriggerMode())
|
|
4651
|
+
self.setChildElementOptionalIntegerValue(child_element, "UNUSED-BIT-PATTERN", ipdu.getUnusedBitPattern())
|
|
4652
|
+
|
|
4653
|
+
def writeUserDefinedIPdu(self, element: ET.Element, ipdu: UserDefinedIPdu):
|
|
4654
|
+
self.logger.debug("Write UserDefinedIPdu <%s>" % ipdu.getShortName())
|
|
3670
4655
|
child_element = ET.SubElement(element, "USER-DEFINED-I-PDU")
|
|
3671
|
-
self.
|
|
4656
|
+
self.writeIPdu(child_element, ipdu)
|
|
4657
|
+
self.setChildElementOptionalLiteral(child_element, "CDD-TYPE", ipdu.getCddType())
|
|
3672
4658
|
|
|
3673
4659
|
def writeUserDefinedPdu(self, element: ET.Element, pdu: UserDefinedPdu):
|
|
3674
|
-
self.logger.debug("Write UserDefinedPdu
|
|
4660
|
+
self.logger.debug("Write UserDefinedPdu <%s>" % pdu.getShortName())
|
|
3675
4661
|
child_element = ET.SubElement(element, "USER-DEFINED-PDU")
|
|
3676
|
-
self.
|
|
4662
|
+
self.writePdu(child_element, pdu)
|
|
4663
|
+
self.setChildElementOptionalLiteral(child_element, "CDD-TYPE", pdu.getCddType())
|
|
3677
4664
|
|
|
3678
4665
|
def writeGeneralPurposePdu(self, element: ET.Element, pdu: GeneralPurposePdu):
|
|
3679
|
-
self.logger.debug("Write GeneralPurposePdu
|
|
4666
|
+
self.logger.debug("Write GeneralPurposePdu <%s>" % pdu.getShortName())
|
|
3680
4667
|
child_element = ET.SubElement(element, "GENERAL-PURPOSE-PDU")
|
|
3681
|
-
self.
|
|
4668
|
+
self.writePdu(child_element, pdu)
|
|
3682
4669
|
|
|
3683
4670
|
def writeGeneralPurposeIPdu(self, element: ET.Element, i_pdu: GeneralPurposeIPdu):
|
|
3684
|
-
self.logger.debug("Write GeneralPurposeIPdu
|
|
4671
|
+
self.logger.debug("Write GeneralPurposeIPdu <%s>" % i_pdu.getShortName())
|
|
3685
4672
|
child_element = ET.SubElement(element, "GENERAL-PURPOSE-I-PDU")
|
|
3686
|
-
self.
|
|
4673
|
+
self.writeIPdu(child_element, i_pdu)
|
|
4674
|
+
|
|
4675
|
+
def writeSecureCommunicationAuthenticationProps(self, element: ET.Element, props: SecureCommunicationAuthenticationProps):
|
|
4676
|
+
chile_element = ET.SubElement(element, "SECURE-COMMUNICATION-AUTHENTICATION-PROPS")
|
|
4677
|
+
self.writeIdentifiable(chile_element, props)
|
|
4678
|
+
self.setChildElementOptionalLiteral(chile_element, "AUTH-ALGORITHM", props.getAuthAlgorithm())
|
|
4679
|
+
self.setChildElementOptionalPositiveInteger(chile_element, "AUTH-INFO-TX-LENGTH", props.getAuthInfoTxLength())
|
|
4680
|
+
|
|
4681
|
+
def writeSecureCommunicationPropsSetAuthenticationProps(self, element: ET.Element, props_set: SecureCommunicationPropsSet):
|
|
4682
|
+
propses = props_set.getAuthenticationProps()
|
|
4683
|
+
if len(propses) > 0:
|
|
4684
|
+
child_element = ET.SubElement(element, "AUTHENTICATION-PROPSS")
|
|
4685
|
+
for props in propses:
|
|
4686
|
+
if isinstance(props, SecureCommunicationAuthenticationProps):
|
|
4687
|
+
self.writeSecureCommunicationAuthenticationProps(child_element, props)
|
|
4688
|
+
else:
|
|
4689
|
+
self.notImplemented("Unsupported AuthenticationProps <%s>" % type(props))
|
|
4690
|
+
|
|
4691
|
+
def writeSecureCommunicationFreshnessProps(self, element: ET.Element, props: SecureCommunicationFreshnessProps):
|
|
4692
|
+
child_element = ET.SubElement(element, "SECURE-COMMUNICATION-FRESHNESS-PROPS")
|
|
4693
|
+
self.writeIdentifiable(child_element, props)
|
|
4694
|
+
self.setChildElementOptionalLiteral(child_element, "FRESHNESS-VALUE-LENGTH", props.getFreshnessValueLength())
|
|
4695
|
+
self.setChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-TX-LENGTH", props.getFreshnessValueTxLength())
|
|
4696
|
+
|
|
4697
|
+
def writeSecureCommunicationPropsSetFreshnessProps(self, element: ET.Element, props_set: SecureCommunicationPropsSet):
|
|
4698
|
+
propses = props_set.getFreshnessProps()
|
|
4699
|
+
if len(propses) > 0:
|
|
4700
|
+
child_element = ET.SubElement(element, "FRESHNESS-PROPSS")
|
|
4701
|
+
for props in propses:
|
|
4702
|
+
if isinstance(props, SecureCommunicationFreshnessProps):
|
|
4703
|
+
self.writeSecureCommunicationFreshnessProps(child_element, props)
|
|
4704
|
+
else:
|
|
4705
|
+
self.notImplemented("Unsupported FreshnessProps <%s>" % type(props))
|
|
3687
4706
|
|
|
3688
4707
|
def writeSecureCommunicationPropsSet(self, element: ET.Element, set: SecureCommunicationPropsSet):
|
|
3689
4708
|
self.logger.debug("Write SecureCommunicationPropsSet %s" % set.getShortName())
|
|
3690
4709
|
child_element = ET.SubElement(element, "SECURE-COMMUNICATION-PROPS-SET")
|
|
3691
4710
|
self.writeIdentifiable(child_element, set)
|
|
4711
|
+
self.writeSecureCommunicationPropsSetAuthenticationProps(child_element, set)
|
|
4712
|
+
self.writeSecureCommunicationPropsSetFreshnessProps(child_element, set)
|
|
3692
4713
|
|
|
3693
4714
|
def writeSoAdRoutingGroup(self, element: ET.Element, group: SoAdRoutingGroup):
|
|
3694
|
-
self.logger.debug("Write SoAdRoutingGroup
|
|
4715
|
+
self.logger.debug("Write SoAdRoutingGroup <%s>" % group.getShortName())
|
|
3695
4716
|
child_element = ET.SubElement(element, "SO-AD-ROUTING-GROUP")
|
|
3696
4717
|
self.writeIdentifiable(child_element, group)
|
|
4718
|
+
self.setChildElementOptionalLiteral(child_element, "EVENT-GROUP-CONTROL-TYPE", group.getEventGroupControlType())
|
|
4719
|
+
|
|
4720
|
+
def writeDoIpLogicAddress(self, element: ET.Element, address: DoIpLogicAddress):
|
|
4721
|
+
if address is not None:
|
|
4722
|
+
child_element = ET.SubElement(element, "DO-IP-LOGIC-ADDRESS")
|
|
4723
|
+
self.writeIdentifiable(child_element, address)
|
|
4724
|
+
self.setChildElementOptionalIntegerValue(child_element, "ADDRESS", address.getAddress())
|
|
4725
|
+
|
|
4726
|
+
def writeDoIpTpConfigDoIpLogicAddresses(self, element: ET.Element, config: DoIpTpConfig):
|
|
4727
|
+
addresses = config.getDoIpLogicAddresses()
|
|
4728
|
+
if len(addresses) > 0:
|
|
4729
|
+
child_element = ET.SubElement(element, "DO-IP-LOGIC-ADDRESSS")
|
|
4730
|
+
for address in addresses:
|
|
4731
|
+
if isinstance(address, DoIpLogicAddress):
|
|
4732
|
+
self.writeDoIpLogicAddress(child_element, address)
|
|
4733
|
+
else:
|
|
4734
|
+
self.notImplemented("Unsupported DoIpLogicAddress <%s>" % type(address))
|
|
4735
|
+
|
|
4736
|
+
def writeDoIpTpConnection(self, element: ET.Element, connection: DoIpTpConnection):
|
|
4737
|
+
if connection is not None:
|
|
4738
|
+
child_element = ET.SubElement(element, "DO-IP-TP-CONNECTION")
|
|
4739
|
+
self.writeTpConnection(child_element, connection)
|
|
4740
|
+
self.setChildElementOptionalRefType(child_element, "DO-IP-SOURCE-ADDRESS-REF", connection.getDoIpSourceAddressRef())
|
|
4741
|
+
self.setChildElementOptionalRefType(child_element, "DO-IP-TARGET-ADDRESS-REF", connection.getDoIpTargetAddressRef())
|
|
4742
|
+
self.setChildElementOptionalRefType(child_element, "TP-SDU-REF", connection.getTpSduRef())
|
|
4743
|
+
|
|
4744
|
+
def writeDoIpTpConfigTpConnections(self, element: ET.Element, config: DoIpTpConfig):
|
|
4745
|
+
connections = config.getTpConnections()
|
|
4746
|
+
if len(connections) > 0:
|
|
4747
|
+
child_element = ET.SubElement(element, "TP-CONNECTIONS")
|
|
4748
|
+
for address in connections:
|
|
4749
|
+
if isinstance(address, DoIpTpConnection):
|
|
4750
|
+
self.writeDoIpTpConnection(child_element, address)
|
|
4751
|
+
else:
|
|
4752
|
+
self.notImplemented("Unsupported TpConnection <%s>" % type(address))
|
|
3697
4753
|
|
|
3698
4754
|
def writeDoIpTpConfig(self, element: ET.Element, config: DoIpTpConfig):
|
|
3699
|
-
self.logger.debug("Write DoIpTpConfig
|
|
4755
|
+
self.logger.debug("Write DoIpTpConfig <%s>" % config.getShortName())
|
|
3700
4756
|
child_element = ET.SubElement(element, "DO-IP-TP-CONFIG")
|
|
3701
|
-
self.
|
|
4757
|
+
self.writeTpConfig(child_element, config)
|
|
4758
|
+
self.writeDoIpTpConfigDoIpLogicAddresses(child_element, config)
|
|
4759
|
+
self.writeDoIpTpConfigTpConnections(child_element, config)
|
|
4760
|
+
|
|
4761
|
+
def writeHwDescriptionEntityHwCategoryRefs(self, element: ET.Element, entity: HwDescriptionEntity):
|
|
4762
|
+
refs = entity.getHwCategoryRefs()
|
|
4763
|
+
if len(refs) > 0:
|
|
4764
|
+
child_element = ET.SubElement(element, "HW-CATEGORY-REFS")
|
|
4765
|
+
for ref in refs:
|
|
4766
|
+
self.setChildElementOptionalRefType(child_element, "HW-CATEGORY-REF", ref)
|
|
4767
|
+
|
|
4768
|
+
def writeHwDescriptionEntity(self, element: ET.Element, entity: HwDescriptionEntity):
|
|
4769
|
+
self.writeARElement(element, entity)
|
|
4770
|
+
self.writeHwDescriptionEntityHwCategoryRefs(element, entity)
|
|
4771
|
+
|
|
4772
|
+
def writeHwPinGroup(self, element: ET.SubElement, pin_group: HwPinGroup):
|
|
4773
|
+
if pin_group is not None:
|
|
4774
|
+
child_element = ET.SubElement(element, "HW-PIN-GROUP")
|
|
4775
|
+
self.writeHwDescriptionEntity(child_element, pin_group)
|
|
4776
|
+
|
|
4777
|
+
def writeHwElementHwPinGroups(self, element: ET.Element, hw_element: HwElement):
|
|
4778
|
+
pin_groups = hw_element.getHwPinGroups()
|
|
4779
|
+
if len(pin_groups) > 0:
|
|
4780
|
+
child_element = ET.SubElement(element, "HW-PIN-GROUPS")
|
|
4781
|
+
for pin_group in pin_groups:
|
|
4782
|
+
if isinstance(pin_group, HwPinGroup):
|
|
4783
|
+
self.writeHwPinGroup(child_element, pin_group)
|
|
4784
|
+
else:
|
|
4785
|
+
self.notImplemented("Unsupported Hw Pin Group <%s>" % type(pin_group))
|
|
4786
|
+
|
|
4787
|
+
def writeHwElement(self, element: ET.Element, hw_element: HwElement):
|
|
4788
|
+
if hw_element is not None:
|
|
4789
|
+
self.logger.debug("Write HwElement <%s>" % hw_element.getShortName())
|
|
4790
|
+
child_element = ET.SubElement(element, "HW-ELEMENT")
|
|
4791
|
+
self.writeHwDescriptionEntity(child_element, hw_element)
|
|
4792
|
+
self.writeHwElementHwPinGroups(child_element, hw_element)
|
|
4793
|
+
|
|
4794
|
+
def writeHwAttributeDef(self, element: ET.Element, attribute_def: HwAttributeDef):
|
|
4795
|
+
if attribute_def is not None:
|
|
4796
|
+
child_element = ET.SubElement(element, "HW-ATTRIBUTE-DEF")
|
|
4797
|
+
self.writeIdentifiable(child_element, attribute_def)
|
|
4798
|
+
self.setChildElementOptionalRefType(child_element, "UNIT-REF", attribute_def.getUnitRef())
|
|
4799
|
+
|
|
4800
|
+
def writeHwCategoryHwAttributeDef(self, element: ET.Element, hw_category: HwCategory):
|
|
4801
|
+
attribute_defs = hw_category.getHwAttributeDefs()
|
|
4802
|
+
if len(attribute_defs) > 0:
|
|
4803
|
+
child_element = ET.SubElement(element, "HW-ATTRIBUTE-DEFS")
|
|
4804
|
+
for attribute_def in attribute_defs:
|
|
4805
|
+
if isinstance(attribute_def, HwAttributeDef):
|
|
4806
|
+
self.writeHwAttributeDef(child_element, attribute_def)
|
|
4807
|
+
else:
|
|
4808
|
+
self.notImplemented("Unsupported Hw Attribute Defs <%s>" % type(attribute_def))
|
|
4809
|
+
|
|
4810
|
+
def writeHwCategory(self, element: ET.Element, hw_category: HwCategory):
|
|
4811
|
+
self.logger.debug("write HwCategory <%s>" % hw_category.getShortName())
|
|
4812
|
+
child_element = ET.SubElement(element, "HW-CATEGORY")
|
|
4813
|
+
self.writeARElement(child_element, hw_category)
|
|
4814
|
+
self.writeHwCategoryHwAttributeDef(child_element, hw_category)
|
|
4815
|
+
|
|
4816
|
+
def writeHwType(self, element: ET.Element, type: HwType):
|
|
4817
|
+
self.logger.debug("Write HwType <%s>" % type.getShortName())
|
|
4818
|
+
child_element = ET.SubElement(element, "HW-TYPE")
|
|
4819
|
+
self.writeARElement(child_element, type)
|
|
3702
4820
|
|
|
3703
4821
|
def writeLinCommunicationController(self, element: ET.Element, controller: LinCommunicationController):
|
|
3704
4822
|
self.writeCommunicationController(element, controller)
|
|
3705
4823
|
self.setChildElementOptionalLiteral(element, "PROTOCOL-VERSION", controller.getProtocolVersion())
|
|
3706
4824
|
|
|
3707
4825
|
def writeLinMaster(self, element: ET.Element, controller: LinMaster):
|
|
3708
|
-
self.logger.debug("Write LinMaster
|
|
4826
|
+
self.logger.debug("Write LinMaster <%s>" % controller.getShortName())
|
|
3709
4827
|
child_element = ET.SubElement(element, "LIN-MASTER")
|
|
3710
4828
|
self.writeIdentifiable(child_element, controller)
|
|
3711
4829
|
variants_tag = ET.SubElement(child_element, "LIN-MASTER-VARIANTS")
|
|
@@ -3732,17 +4850,19 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3732
4850
|
if filter is not None:
|
|
3733
4851
|
child_element = ET.SubElement(element, key)
|
|
3734
4852
|
self.setChildElementOptionalLiteral(child_element, "DATA-FILTER-TYPE", filter.getDataFilterType())
|
|
4853
|
+
self.setChildElementOptionalIntegerValue(child_element, "MASK", filter.getMask())
|
|
4854
|
+
self.setChildElementOptionalIntegerValue(child_element, "X", filter.getX())
|
|
3735
4855
|
|
|
3736
|
-
def setTransmissionModeConditions(self, element: ET.Element, conditions: List[TransmissionModeCondition]):
|
|
4856
|
+
def setTransmissionModeConditions(self, element: ET.Element, key: str, conditions: List[TransmissionModeCondition]):
|
|
3737
4857
|
if len(conditions) > 0:
|
|
3738
|
-
conditions_tag = ET.SubElement(element,
|
|
4858
|
+
conditions_tag = ET.SubElement(element, key)
|
|
3739
4859
|
for condition in conditions:
|
|
3740
4860
|
child_element = ET.SubElement(conditions_tag, "TRANSMISSION-MODE-CONDITION")
|
|
3741
4861
|
self.setDataFilter(child_element, "DATA-FILTER", condition.getDataFilter())
|
|
3742
4862
|
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-IN-I-PDU-REF", condition.getISignalInIPduRef())
|
|
3743
4863
|
|
|
3744
4864
|
def setTimeRangeType(self, element: ET.Element, key: str, time_range: TimeRangeType):
|
|
3745
|
-
|
|
4865
|
+
if time_range is not None:
|
|
3746
4866
|
child_element = ET.SubElement(element, key)
|
|
3747
4867
|
self.setChildElementOptionalTimeValue(child_element, "VALUE", time_range.getValue())
|
|
3748
4868
|
|
|
@@ -3751,12 +4871,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3751
4871
|
child_element = ET.SubElement(element, key)
|
|
3752
4872
|
self.setChildElementOptionalIntegerValue(child_element, "NUMBER-OF-REPETITIONS", timing.getNumberOfRepetitions())
|
|
3753
4873
|
self.setTimeRangeType(child_element, "REPETITION-PERIOD", timing.getRepetitionPeriod())
|
|
3754
|
-
|
|
3755
|
-
def setTimeRangeType(self, element: ET.Element, key: str, time_range: TimeRangeType):
|
|
3756
|
-
if time_range is not None:
|
|
3757
|
-
child_element = ET.SubElement(element, key)
|
|
3758
|
-
self.setChildElementOptionalTimeValue(child_element, "VALUE", time_range.getValue())
|
|
3759
|
-
|
|
4874
|
+
|
|
3760
4875
|
def setCyclicTiming(self, element: ET.Element, key: str, timing: CyclicTiming):
|
|
3761
4876
|
if timing is not None:
|
|
3762
4877
|
child_element = ET.SubElement(element, key)
|
|
@@ -3770,10 +4885,11 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3770
4885
|
self.setCyclicTiming(child_element, "CYCLIC-TIMING", timing.getCyclicTiming())
|
|
3771
4886
|
self.setEventControlledTiming(child_element, "EVENT-CONTROLLED-TIMING", timing.getEventControlledTiming())
|
|
3772
4887
|
|
|
3773
|
-
def setTransmissionModeDeclaration(self, element: ET.Element, key: str, decl
|
|
4888
|
+
def setTransmissionModeDeclaration(self, element: ET.Element, key: str, decl: TransmissionModeDeclaration):
|
|
3774
4889
|
if decl is not None:
|
|
3775
4890
|
child_element = ET.SubElement(element, key)
|
|
3776
|
-
self.setTransmissionModeConditions(child_element, decl.getTransmissionModeConditions())
|
|
4891
|
+
self.setTransmissionModeConditions(child_element, "TRANSMISSION-MODE-CONDITIONS", decl.getTransmissionModeConditions())
|
|
4892
|
+
self.setTransmissionModeTiming(child_element, "TRANSMISSION-MODE-FALSE-TIMING", decl.getTransmissionModeFalseTiming())
|
|
3777
4893
|
self.setTransmissionModeTiming(child_element, "TRANSMISSION-MODE-TRUE-TIMING", decl.getTransmissionModeTrueTiming())
|
|
3778
4894
|
|
|
3779
4895
|
def setISignalIPduIPduTimingSpecification(self, element: ET.Element, timing: IPduTiming):
|
|
@@ -3783,14 +4899,152 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3783
4899
|
self.setChildElementOptionalTimeValue(child_element, "MINIMUM-DELAY", timing.getMinimumDelay())
|
|
3784
4900
|
self.setTransmissionModeDeclaration(child_element, "TRANSMISSION-MODE-DECLARATION", timing.getTransmissionModeDeclaration())
|
|
3785
4901
|
|
|
3786
|
-
def writeISignalIPdu(self, element: ET.Element,
|
|
3787
|
-
self.logger.debug("ISignalIPdu %s" %
|
|
4902
|
+
def writeISignalIPdu(self, element: ET.Element, ipdu: ISignalIPdu):
|
|
4903
|
+
self.logger.debug("ISignalIPdu %s" % ipdu.getShortName())
|
|
3788
4904
|
child_element = ET.SubElement(element, "I-SIGNAL-I-PDU")
|
|
3789
|
-
self.writeIdentifiable(child_element,
|
|
3790
|
-
self.setChildElementOptionalNumericalValue(child_element, "LENGTH",
|
|
3791
|
-
self.setISignalIPduIPduTimingSpecification(child_element,
|
|
3792
|
-
self.writeISignalToPduMappings(child_element,
|
|
3793
|
-
self.
|
|
4905
|
+
self.writeIdentifiable(child_element, ipdu)
|
|
4906
|
+
self.setChildElementOptionalNumericalValue(child_element, "LENGTH", ipdu.getLength())
|
|
4907
|
+
self.setISignalIPduIPduTimingSpecification(child_element, ipdu.getIPduTimingSpecification())
|
|
4908
|
+
self.writeISignalToPduMappings(child_element, ipdu)
|
|
4909
|
+
self.setChildElementOptionalIntegerValue(child_element, "UNUSED-BIT-PATTERN", ipdu.getUnusedBitPattern())
|
|
4910
|
+
|
|
4911
|
+
def writeFlexrayFrame(self, element: ET.Element, frame: FlexrayFrame):
|
|
4912
|
+
if frame is not None:
|
|
4913
|
+
self.logger.debug("Write FlexrayFrame <%s>" % frame.getShortName())
|
|
4914
|
+
child_element = ET.SubElement(element, "FLEXRAY-FRAME")
|
|
4915
|
+
self.writeFrame(child_element, frame)
|
|
4916
|
+
|
|
4917
|
+
def writeFlexrayCommunicationController(self, element: ET.Element, controller: FlexrayCommunicationController):
|
|
4918
|
+
if controller is not None:
|
|
4919
|
+
self.logger.debug("Write FlexrayCommunicationController <%s>" % controller.getShortName())
|
|
4920
|
+
controller_element = ET.SubElement(element, "FLEXRAY-COMMUNICATION-CONTROLLER")
|
|
4921
|
+
self.writeIdentifiable(controller_element, controller)
|
|
4922
|
+
variant_element = ET.SubElement(controller_element, "FLEXRAY-COMMUNICATION-CONTROLLER-VARIANTS")
|
|
4923
|
+
child_element = ET.SubElement(variant_element, "FLEXRAY-COMMUNICATION-CONTROLLER-CONDITIONAL")
|
|
4924
|
+
self.writeCommunicationController(controller_element, controller)
|
|
4925
|
+
self.setChildElementOptionalIntegerValue(child_element, "ACCEPTED-STARTUP-RANGE", controller.getAcceptedStartupRange())
|
|
4926
|
+
self.setChildElementOptionalBooleanValue(child_element, "ALLOW-HALT-DUE-TO-CLOCK", controller.getAllowHaltDueToClock())
|
|
4927
|
+
self.setChildElementOptionalIntegerValue(child_element, "ALLOW-PASSIVE-TO-ACTIVE", controller.getAllowPassiveToActive())
|
|
4928
|
+
self.setChildElementOptionalIntegerValue(child_element, "CLUSTER-DRIFT-DAMPING", controller.getClusterDriftDamping())
|
|
4929
|
+
self.setChildElementOptionalIntegerValue(child_element, "DECODING-CORRECTION", controller.getDecodingCorrection())
|
|
4930
|
+
self.setChildElementOptionalIntegerValue(child_element, "DELAY-COMPENSATION-A", controller.getDelayCompensationA())
|
|
4931
|
+
self.setChildElementOptionalIntegerValue(child_element, "DELAY-COMPENSATION-B", controller.getDelayCompensationB())
|
|
4932
|
+
self.setChildElementOptionalBooleanValue(child_element, "KEY-SLOT-ONLY-ENABLED", controller.getKeySlotOnlyEnabled())
|
|
4933
|
+
self.setChildElementOptionalBooleanValue(child_element, "KEY-SLOT-USED-FOR-START-UP", controller.getKeySlotUsedForStartUp())
|
|
4934
|
+
self.setChildElementOptionalBooleanValue(child_element, "KEY-SLOT-USED-FOR-SYNC", controller.getKeySlotUsedForSync())
|
|
4935
|
+
self.setChildElementOptionalIntegerValue(child_element, "LATEST-TX", controller.getLatestTX())
|
|
4936
|
+
self.setChildElementOptionalIntegerValue(child_element, "LISTEN-TIMEOUT", controller.getListenTimeout())
|
|
4937
|
+
self.setChildElementOptionalIntegerValue(child_element, "MACRO-INITIAL-OFFSET-A", controller.getMacroInitialOffsetA())
|
|
4938
|
+
self.setChildElementOptionalIntegerValue(child_element, "MACRO-INITIAL-OFFSET-B", controller.getMacroInitialOffsetB())
|
|
4939
|
+
self.setChildElementOptionalIntegerValue(child_element, "MAXIMUM-DYNAMIC-PAYLOAD-LENGTH", controller.getMaximumDynamicPayloadLength())
|
|
4940
|
+
self.setChildElementOptionalIntegerValue(child_element, "MICRO-INITIAL-OFFSET-A", controller.getMicroInitialOffsetA())
|
|
4941
|
+
self.setChildElementOptionalIntegerValue(child_element, "MICRO-INITIAL-OFFSET-B", controller.getMicroInitialOffsetB())
|
|
4942
|
+
self.setChildElementOptionalIntegerValue(child_element, "MICRO-PER-CYCLE", controller.getMicroPerCycle())
|
|
4943
|
+
self.setChildElementOptionalTimeValue(child_element, "MICROTICK-DURATION", controller.getMicrotickDuration())
|
|
4944
|
+
self.setChildElementOptionalIntegerValue(child_element, "OFFSET-CORRECTION-OUT", controller.getOffsetCorrectionOut())
|
|
4945
|
+
self.setChildElementOptionalIntegerValue(child_element, "RATE-CORRECTION-OUT", controller.getRateCorrectionOut())
|
|
4946
|
+
self.setChildElementOptionalIntegerValue(child_element, "SAMPLES-PER-MICROTICK", controller.getSamplesPerMicrotick())
|
|
4947
|
+
self.setChildElementOptionalIntegerValue(child_element, "WAKE-UP-PATTERN", controller.getWakeUpPattern())
|
|
4948
|
+
|
|
4949
|
+
def writeDataTransformationTransformerChainRefs(self, element: ET.Element, dtf: DataTransformation):
|
|
4950
|
+
refs = dtf.getTransformerChainRefs()
|
|
4951
|
+
if len(refs) > 0:
|
|
4952
|
+
child_element = ET.SubElement(element, "TRANSFORMER-CHAIN-REFS")
|
|
4953
|
+
for ref in refs:
|
|
4954
|
+
self.setChildElementOptionalRefType(child_element, "TRANSFORMER-CHAIN-REF", ref)
|
|
4955
|
+
|
|
4956
|
+
def writeDataTransformation(self, element: ET.Element, dtf: DataTransformation):
|
|
4957
|
+
if dtf is not None:
|
|
4958
|
+
child_element = ET.SubElement(element, "DATA-TRANSFORMATION")
|
|
4959
|
+
self.writeIdentifiable(child_element, dtf)
|
|
4960
|
+
self.setChildElementOptionalBooleanValue(child_element, "EXECUTE-DESPITE-DATA-UNAVAILABILITY", dtf.getExecuteDespiteDataUnavailability())
|
|
4961
|
+
self.writeDataTransformationTransformerChainRefs(child_element, dtf)
|
|
4962
|
+
|
|
4963
|
+
def writeDataTransformationSetDataTransformations(self, element: ET.Element, dtf_set: DataTransformationSet):
|
|
4964
|
+
dtfs = dtf_set.getDataTransformations()
|
|
4965
|
+
if len(dtfs) > 0:
|
|
4966
|
+
child_element = ET.SubElement(element, "DATA-TRANSFORMATIONS")
|
|
4967
|
+
for dtf in dtfs:
|
|
4968
|
+
if isinstance(dtf, DataTransformation):
|
|
4969
|
+
self.writeDataTransformation(child_element, dtf)
|
|
4970
|
+
else:
|
|
4971
|
+
self.notImplemented("Unsupported DataTransformation <%s>" % type(dtf))
|
|
4972
|
+
|
|
4973
|
+
def writeDataTransformationSetTransformationTechnologies(self, element: ET.Element, dtf_set: DataTransformationSet):
|
|
4974
|
+
techs = dtf_set.getTransformationTechnologies()
|
|
4975
|
+
if len(techs) > 0:
|
|
4976
|
+
child_element = ET.SubElement(element, "TRANSFORMATION-TECHNOLOGYS")
|
|
4977
|
+
for tech in techs:
|
|
4978
|
+
if isinstance(tech, TransformationTechnology):
|
|
4979
|
+
self.writeTransformationTechnology(child_element, tech)
|
|
4980
|
+
else:
|
|
4981
|
+
self.notImplemented("Unsupported TransformationTechnology <%s>" % type(tech))
|
|
4982
|
+
|
|
4983
|
+
def writeBufferPropertiesBufferComputation(self, element: ET.Element, properties: BufferProperties):
|
|
4984
|
+
computation = properties.getBufferComputation()
|
|
4985
|
+
if computation is not None:
|
|
4986
|
+
self.setCompuScale(element, "BUFFER-COMPUTATION", computation)
|
|
4987
|
+
|
|
4988
|
+
def setBufferProperties(self, element: ET.Element, key: str, properties: BufferProperties):
|
|
4989
|
+
if properties is not None:
|
|
4990
|
+
child_element = ET.SubElement(element, key)
|
|
4991
|
+
self.writeBufferPropertiesBufferComputation(child_element, properties)
|
|
4992
|
+
self.setChildElementOptionalIntegerValue(child_element, "HEADER-LENGTH", properties.getHeaderLength())
|
|
4993
|
+
self.setChildElementOptionalBooleanValue(child_element, "IN-PLACE", properties.getInPlace())
|
|
4994
|
+
|
|
4995
|
+
def writeDescribable(self, element: ET.Element, desc: Describable):
|
|
4996
|
+
self.writeARObjectAttributes(element, desc)
|
|
4997
|
+
|
|
4998
|
+
def writeTransformationDescription(self, element: ET.Element, desc: TransformationDescription):
|
|
4999
|
+
self.writeDescribable(element, desc)
|
|
5000
|
+
|
|
5001
|
+
def writeEndToEndTransformationDescription(self, element: ET.Element, desc: EndToEndTransformationDescription):
|
|
5002
|
+
if desc is not None:
|
|
5003
|
+
child_element = ET.SubElement(element, "END-TO-END-TRANSFORMATION-DESCRIPTION")
|
|
5004
|
+
self.writeTransformationDescription(child_element, desc)
|
|
5005
|
+
self.setChildElementOptionalLiteral(child_element, "DATA-ID-MODE", desc.getDataIdMode())
|
|
5006
|
+
self.setChildElementOptionalPositiveInteger(child_element, "MAX-DELTA-COUNTER", desc.getMaxDeltaCounter())
|
|
5007
|
+
self.setChildElementOptionalPositiveInteger(child_element, "MAX-ERROR-STATE-INIT", desc.getMaxErrorStateInit())
|
|
5008
|
+
self.setChildElementOptionalPositiveInteger(child_element, "MAX-ERROR-STATE-INVALID", desc.getMaxErrorStateInvalid())
|
|
5009
|
+
self.setChildElementOptionalPositiveInteger(child_element, "MAX-ERROR-STATE-VALID", desc.getMaxErrorStateValid())
|
|
5010
|
+
self.setChildElementOptionalPositiveInteger(child_element, "MAX-NO-NEW-OR-REPEATED-DATA", desc.getMaxNoNewOrRepeatedData())
|
|
5011
|
+
self.setChildElementOptionalPositiveInteger(child_element, "MIN-OK-STATE-INIT", desc.getMinOkStateInit())
|
|
5012
|
+
self.setChildElementOptionalPositiveInteger(child_element, "MIN-OK-STATE-INVALID", desc.getMinOkStateInvalid())
|
|
5013
|
+
self.setChildElementOptionalPositiveInteger(child_element, "MIN-OK-STATE-VALID", desc.getMinOkStateValid())
|
|
5014
|
+
self.setChildElementOptionalLiteral(child_element, "PROFILE-BEHAVIOR", desc.getProfileBehavior())
|
|
5015
|
+
self.setChildElementOptionalLiteral(child_element, "PROFILE-NAME", desc.getProfileName())
|
|
5016
|
+
self.setChildElementOptionalPositiveInteger(child_element, "SYNC-COUNTER-INIT", desc.getSyncCounterInit())
|
|
5017
|
+
self.setChildElementOptionalPositiveInteger(child_element, "UPPER-HEADER-BITS-TO-SHIFT", desc.getUpperHeaderBitsToShift())
|
|
5018
|
+
self.setChildElementOptionalPositiveInteger(child_element, "WINDOW-SIZE-INIT", desc.getWindowSizeInit())
|
|
5019
|
+
self.setChildElementOptionalPositiveInteger(child_element, "WINDOW-SIZE-INVALID", desc.getWindowSizeInvalid())
|
|
5020
|
+
self.setChildElementOptionalPositiveInteger(child_element, "WINDOW-SIZE-VALID", desc.getWindowSizeValid())
|
|
5021
|
+
|
|
5022
|
+
def writeTransformationTechnologyTransformationDescriptions(self, element: ET.Element, tech: TransformationTechnology):
|
|
5023
|
+
desc = tech.getTransformationDescription()
|
|
5024
|
+
if desc is not None:
|
|
5025
|
+
child_element = ET.SubElement(element, "TRANSFORMATION-DESCRIPTIONS")
|
|
5026
|
+
if isinstance(desc, EndToEndTransformationDescription):
|
|
5027
|
+
self.writeEndToEndTransformationDescription(child_element, desc)
|
|
5028
|
+
else:
|
|
5029
|
+
self.notImplemented("Unsupported TransformationDescription <%s>" % type(desc))
|
|
5030
|
+
|
|
5031
|
+
def writeTransformationTechnology(self, element: ET.Element, tech: TransformationTechnology):
|
|
5032
|
+
if tech is not None:
|
|
5033
|
+
child_element = ET.SubElement(element, "TRANSFORMATION-TECHNOLOGY")
|
|
5034
|
+
self.writeIdentifiable(child_element, tech)
|
|
5035
|
+
self.setBufferProperties(child_element, "BUFFER-PROPERTIES", tech.getBufferProperties())
|
|
5036
|
+
self.setChildElementOptionalBooleanValue(child_element, "NEEDS-ORIGINAL-DATA", tech.getNeedsOriginalData())
|
|
5037
|
+
self.setChildElementOptionalLiteral(child_element, "PROTOCOL", tech.getProtocol())
|
|
5038
|
+
self.writeTransformationTechnologyTransformationDescriptions(child_element, tech)
|
|
5039
|
+
self.setChildElementOptionalLiteral(child_element, "TRANSFORMER-CLASS", tech.getTransformerClass())
|
|
5040
|
+
self.setChildElementOptionalLiteral(child_element, "VERSION", tech.getVersion())
|
|
5041
|
+
|
|
5042
|
+
def writeDataTransformationSet(self, element: ET.Element, dtf_set: DataTransformationSet):
|
|
5043
|
+
if dtf_set is not None:
|
|
5044
|
+
child_element = ET.SubElement(element, "DATA-TRANSFORMATION-SET")
|
|
5045
|
+
self.writeIdentifiable(child_element, dtf_set)
|
|
5046
|
+
self.writeDataTransformationSetDataTransformations(child_element, dtf_set)
|
|
5047
|
+
self.writeDataTransformationSetTransformationTechnologies(child_element, dtf_set)
|
|
3794
5048
|
|
|
3795
5049
|
def writeARPackageElement(self, element: ET.Element, ar_element: ARElement):
|
|
3796
5050
|
if isinstance(ar_element, ComplexDeviceDriverSwComponentType):
|
|
@@ -3921,9 +5175,25 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3921
5175
|
self.writeSoAdRoutingGroup(element, ar_element)
|
|
3922
5176
|
elif isinstance(ar_element, DoIpTpConfig):
|
|
3923
5177
|
self.writeDoIpTpConfig(element, ar_element)
|
|
5178
|
+
elif isinstance(ar_element, HwElement):
|
|
5179
|
+
self.writeHwElement(element, ar_element)
|
|
5180
|
+
elif isinstance(ar_element, HwCategory):
|
|
5181
|
+
self.writeHwCategory(element, ar_element)
|
|
5182
|
+
elif isinstance(ar_element, HwType):
|
|
5183
|
+
self.writeHwType(element, ar_element)
|
|
5184
|
+
elif isinstance(ar_element, DataTransformationSet):
|
|
5185
|
+
self.writeDataTransformationSet(element, ar_element)
|
|
5186
|
+
elif isinstance(ar_element, FlexrayFrame):
|
|
5187
|
+
self.writeFlexrayFrame(element, ar_element)
|
|
5188
|
+
elif isinstance(ar_element, ISignalGroup):
|
|
5189
|
+
self.writeISignalGroup(element, ar_element)
|
|
5190
|
+
elif isinstance(ar_element, SystemSignalGroup):
|
|
5191
|
+
self.writeSystemSignalGroup(element, ar_element)
|
|
5192
|
+
elif isinstance(ar_element, FlexrayCluster):
|
|
5193
|
+
self.writeFlexrayCluster(element, ar_element)
|
|
3924
5194
|
else:
|
|
3925
5195
|
self.notImplemented("Unsupported Elements of ARPackage <%s>" % type(ar_element))
|
|
3926
|
-
|
|
5196
|
+
|
|
3927
5197
|
def writeReferenceBases(self, element: ET.Element, bases: List[ReferenceBase]):
|
|
3928
5198
|
self.logger.debug("Write ReferenceBases")
|
|
3929
5199
|
if len(bases) > 0:
|
|
@@ -3933,40 +5203,46 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3933
5203
|
self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", base.getShortLabel())
|
|
3934
5204
|
self.setChildElementOptionalBooleanValue(child_element, "IS-DEFAULT", base.getIsDefault())
|
|
3935
5205
|
self.setChildElementOptionalBooleanValue(child_element, "IS-GLOBAL", base.getIsDefault())
|
|
3936
|
-
self.setChildElementOptionalBooleanValue(child_element,
|
|
5206
|
+
self.setChildElementOptionalBooleanValue(child_element, "BASE-IS-THIS-PACKAGE", base.getBaseIsThisPackage())
|
|
3937
5207
|
self.setChildElementOptionalRefType(child_element, "PACKAGE-REF", base.getPackageRef())
|
|
3938
|
-
|
|
3939
|
-
def writeARPackages(self, element: ET.Element, pkgs: List[ARPackage]):
|
|
3940
|
-
if len(pkgs) > 0:
|
|
3941
|
-
pkgs_tag = ET.SubElement(element, "AR-PACKAGES")
|
|
3942
5208
|
|
|
3943
|
-
|
|
3944
|
-
|
|
3945
|
-
|
|
3946
|
-
self.writeIdentifiable(pkg_tag, pkg)
|
|
3947
|
-
self.logger.debug("writeARPackage %s" % pkg.full_name)
|
|
5209
|
+
def writeARPackage(self, element: ET.Element, pkg: ARPackage):
|
|
5210
|
+
self.logger.debug("Write ARPackage %s" % pkg.getFullName())
|
|
5211
|
+
child_element = ET.SubElement(element, "AR-PACKAGE")
|
|
3948
5212
|
|
|
3949
|
-
|
|
5213
|
+
self.writeIdentifiable(child_element, pkg)
|
|
5214
|
+
self.writeReferenceBases(child_element, pkg.getReferenceBases())
|
|
5215
|
+
self.writeARPackageElements(child_element, pkg)
|
|
5216
|
+
self.writeARPackages(child_element, pkg.getARPackages())
|
|
3950
5217
|
|
|
3951
|
-
|
|
3952
|
-
|
|
5218
|
+
def writeARPackageElements(self, element: ET.Element, pkg: ARPackage):
|
|
5219
|
+
if pkg.getTotalElement() > 0:
|
|
5220
|
+
elements_tag = ET.SubElement(element, "ELEMENTS")
|
|
3953
5221
|
|
|
3954
|
-
|
|
3955
|
-
|
|
3956
|
-
|
|
5222
|
+
for ar_element in pkg.getElements():
|
|
5223
|
+
if not isinstance(ar_element, ARPackage):
|
|
5224
|
+
self.writeARPackageElement(elements_tag, ar_element)
|
|
3957
5225
|
|
|
3958
|
-
|
|
3959
|
-
|
|
5226
|
+
def writeARPackages(self, element: ET.Element, pkgs: List[ARPackage]):
|
|
5227
|
+
if len(pkgs) > 0:
|
|
5228
|
+
child_element = ET.SubElement(element, "AR-PACKAGES")
|
|
5229
|
+
for pkg in pkgs:
|
|
5230
|
+
if isinstance(pkg, ARPackage):
|
|
5231
|
+
self.writeARPackage(child_element, pkg)
|
|
5232
|
+
else:
|
|
5233
|
+
self.notImplemented("Unsupported ARPackage <%s>" % type(pkg))
|
|
3960
5234
|
|
|
3961
5235
|
def save(self, filename, document: AUTOSAR):
|
|
3962
|
-
self.logger.info("
|
|
5236
|
+
self.logger.info("Saving %s ..." % filename)
|
|
3963
5237
|
|
|
3964
5238
|
root = ET.Element("AUTOSAR", self.nsmap)
|
|
3965
5239
|
root.attrib["xmlns:xsi"] = "http://www.w3.org/2001/XMLSchema-instance"
|
|
3966
|
-
|
|
5240
|
+
if document.schema_location is not None:
|
|
5241
|
+
root.attrib["xsi:schemaLocation"] = document.schema_location
|
|
5242
|
+
else:
|
|
5243
|
+
root.attrib["xsi:schemaLocation"] = "http://autosar.org/schema/r4.0 AUTOSAR_4-0-3.xsd"
|
|
3967
5244
|
|
|
3968
5245
|
self.setAdminData(root, document.getAdminData())
|
|
3969
5246
|
self.writeARPackages(root, document.getARPackages())
|
|
3970
5247
|
|
|
3971
5248
|
self.saveToFile(filename, root)
|
|
3972
|
-
|