armodel 1.7.7__py3-none-any.whl → 1.7.9__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. armodel/cli/arxml_dump_cli.py +33 -22
  2. armodel/cli/arxml_format_cli.py +25 -13
  3. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +84 -28
  4. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +410 -61
  5. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +80 -9
  6. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +141 -35
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +10 -8
  8. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +17 -6
  9. armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +38 -3
  10. armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +91 -18
  11. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/BlueprintDedicated/PortPrototypeBlueprint.py +73 -0
  12. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/BlueprintDedicated/__init__.py +0 -0
  13. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/Keyword.py +45 -0
  14. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/__init__.py +0 -0
  15. armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +45 -2
  16. armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +20 -19
  17. armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/HwElementCategory.py +59 -0
  18. armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/__init__.py +145 -0
  19. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +243 -156
  20. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ElementCollection.py +73 -0
  21. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +60 -32
  22. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +35 -14
  23. armodel/models/M2/AUTOSARTemplates/GenericStructure/LifeCycles.py +151 -1
  24. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +66 -42
  25. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +1 -0
  26. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +13 -6
  27. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +166 -50
  28. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SoftwareComponentDocumentation.py +80 -0
  29. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AccessCount.py +9 -1
  30. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +5 -4
  31. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +11 -1
  32. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +16 -2
  33. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +9 -1
  34. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +167 -5
  35. armodel/models/M2/AUTOSARTemplates/SystemTemplate/{ECUResourceMapping.py → EcuResourceMapping.py} +4 -3
  36. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +31 -21
  37. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetFrame.py +5 -3
  38. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +18 -6
  39. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayCommunication.py +76 -0
  40. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayTopology.py +654 -0
  41. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/__init__.py +0 -0
  42. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +64 -31
  43. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +158 -40
  44. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +19 -6
  45. armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +2 -0
  46. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Transformer/__init__.py +524 -0
  47. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +15 -13
  48. armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +10 -1
  49. armodel/models/M2/MSR/Documentation/BlockElements/Figure.py +163 -0
  50. armodel/models/M2/MSR/Documentation/BlockElements/__init__.py +0 -0
  51. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/ListElements.py +5 -3
  52. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/PaginationAndView.py +22 -1
  53. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/__init__.py +94 -9
  54. armodel/models/__init__.py +7 -1
  55. armodel/parser/abstract_arxml_parser.py +39 -32
  56. armodel/parser/arxml_parser.py +1439 -551
  57. armodel/parser/file_parser.py +5 -3
  58. armodel/tests/test_armodel/models/test_ar_package.py +6 -11
  59. armodel/tests/test_armodel/models/test_port_interface.py +116 -117
  60. armodel/tests/test_armodel/parser/test_bsw_module_descriiption.py +109 -109
  61. armodel/tests/test_armodel/parser/test_sw_components.py +301 -28
  62. armodel/tests/test_armodel/parser/test_system.py +2 -8
  63. armodel/transformer/__init__.py +0 -0
  64. armodel/transformer/abstract.py +6 -0
  65. armodel/transformer/admin_data.py +31 -0
  66. armodel/writer/abstract_arxml_writer.py +22 -29
  67. armodel/writer/arxml_writer.py +1500 -526
  68. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/METADATA +61 -1
  69. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/RECORD +73 -57
  70. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/LICENSE +0 -0
  71. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/WHEEL +0 -0
  72. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/entry_points.txt +0 -0
  73. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/top_level.txt +0 -0
@@ -1,13 +1,11 @@
1
1
  import xml.etree.cElementTree as ET
2
2
  from typing import List
3
3
 
4
- from armodel.models.M2.AUTOSARTemplates.SystemTemplate.ECUResourceMapping import ECUMapping
5
- from armodel.models.M2.AUTOSARTemplates.SystemTemplate.SWmapping import SwcToImplMapping
6
-
7
- from ..models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfoSet
8
4
  from ..models.M2.MSR.AsamHdo.AdminData import AdminData
9
5
  from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition, SwBaseType
10
- from ..models.M2.MSR.AsamHdo.ComputationMethod import Compu, CompuConst, CompuConstContent, CompuConstFormulaContent, CompuConstNumericContent, CompuConstTextContent, CompuMethod, CompuNominatorDenominator, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
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
11
9
  from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstr, InternalConstrs, PhysConstrs
12
10
  from ..models.M2.MSR.AsamHdo.SpecialData import Sdg
13
11
  from ..models.M2.MSR.AsamHdo.Units import PhysicalDimension, Unit
@@ -19,87 +17,193 @@ from ..models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps, SwP
19
17
  from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayout, SwRecordLayoutGroup, SwRecordLayoutV
20
18
  from ..models.M2.MSR.DataDictionary.ServiceProcessTask import SwServiceArg
21
19
  from ..models.M2.MSR.Documentation.Annotation import Annotation
20
+ from ..models.M2.MSR.Documentation.BlockElements.Figure import Graphic, MlFigure
21
+ from ..models.M2.MSR.Documentation.TextModel.BlockElements.PaginationAndView import DocumentViewSelectable, Paginateable
22
22
  from ..models.M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
23
- from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
23
+ from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ARList
24
24
  from ..models.M2.MSR.Documentation.TextModel.LanguageDataModel import LLongName, LPlainText, LanguageSpecific
25
- from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultiLanguagePlainText, MultilanguageLongName
25
+ from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultiLanguagePlainText
26
+ from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultilanguageLongName
26
27
 
27
28
  from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
29
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswApiOptions, BswAsynchronousServerCallPoint, BswBackgroundEvent
30
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswCalledEntity, BswDataReceivedEvent, BswModuleCallPoint
31
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalTriggerOccurredEvent, BswOperationInvokedEvent
32
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswDataReceptionPolicy, BswEvent, BswExternalTriggerOccurredEvent
33
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalBehavior, BswInterruptEntity, BswModeSenderPolicy, BswModuleEntity
34
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswQueuedDataReceptionPolicy, BswSchedulableEntity, BswScheduleEvent
35
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswTimingEvent, BswVariableAccess, BswInternalTriggeringPoint
28
36
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
29
37
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
30
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
31
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswBackgroundEvent, BswCalledEntity, BswDataReceivedEvent, BswEvent, BswExternalTriggerOccurredEvent, BswInternalBehavior, BswInterruptEntity, BswModeSenderPolicy, BswModuleEntity, BswSchedulableEntity, BswScheduleEvent, BswTimingEvent
32
- from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, ConstantSpecification, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
38
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleClientServerEntry, BswModuleEntry
39
+ from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference
40
+ from ..models.M2.AUTOSARTemplates.CommonStructure import ConstantSpecification, NumericalValueSpecification, RecordValueSpecification
41
+ from ..models.M2.AUTOSARTemplates.CommonStructure import TextValueSpecification, ValueSpecification
33
42
  from ..models.M2.AUTOSARTemplates.CommonStructure.FlatMap import FlatInstanceDescriptor, FlatMap
34
43
  from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
35
- from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
36
44
  from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Code, Implementation, ImplementationProps
37
- from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming, TimingExtension
38
- from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import EOCExecutableEntityRef, ExecutionOrderConstraint
39
- from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal, DiagnosticCommunicationManagerNeeds, DiagnosticEventInfoNeeds, DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds, EcuStateMgrUserNeeds, NvBlockNeeds, RoleBasedDataAssignment, RoleBasedDataTypeAssignment, ServiceDependency
40
- from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity
41
45
  from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
46
+ from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity
42
47
  from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
43
48
  from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclaration, ModeDeclarationGroup, ModeDeclarationGroupPrototype
44
49
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
45
50
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import RoughEstimateStackUsage, StackUsage
51
+ from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
52
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal
53
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticCapabilityElement, DtcStatusChangeNotificationNeeds
54
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticCommunicationManagerNeeds, DiagnosticEventInfoNeeds
55
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds
56
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import EcuStateMgrUserNeeds, NvBlockNeeds, RoleBasedDataAssignment
57
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import RoleBasedDataTypeAssignment, ServiceDependency
58
+ from ..models.M2.AUTOSARTemplates.CommonStructure.StandardizationTemplate.Keyword import KeywordSet, Keyword
59
+ from ..models.M2.AUTOSARTemplates.CommonStructure.StandardizationTemplate.BlueprintDedicated.PortPrototypeBlueprint import PortPrototypeBlueprint
60
+ from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming, TimingExtension
61
+ from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import EOCExecutableEntityRef
62
+ from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import ExecutionOrderConstraint
63
+ from ..models.M2.AUTOSARTemplates.CommonStructure.TriggerDeclaration import Trigger
46
64
  from ..models.M2.AUTOSARTemplates.DiagnosticExtract.DiagnosticContribution import DiagnosticServiceTable
47
- from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
48
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
49
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Identifiable, MultilanguageReferrable, Referrable
65
+ from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue
66
+ from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue
67
+ from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
68
+ from ..models.M2.AUTOSARTemplates.EcuResourceTemplate import HwDescriptionEntity, HwElement, HwPinGroup
69
+ from ..models.M2.AUTOSARTemplates.EcuResourceTemplate.HwElementCategory import HwAttributeDef, HwCategory, HwType
50
70
  from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyInstanceRef
71
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ElementCollection import Collection
51
72
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage, ReferenceBase
73
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
74
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Describable, Identifiable
75
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Referrable, MultilanguageReferrable
52
76
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral, Limit
53
-
54
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption, PortDefinedArgumentValue
55
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import AsynchronousServerCallReturnsEvent, BackgroundEvent, DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent, ModeSwitchedAckEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent, TimingEvent
77
+ from ..models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfo, LifeCycleInfoSet, LifeCyclePeriod
78
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, ModeSwitchedAckRequest
79
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import TransmissionAcknowledgementRequest
80
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec
81
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import NonqueuedReceiverComSpec, NonqueuedSenderComSpec, PPortComSpec
82
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec
83
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import RPortComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
84
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype
85
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import ApplicationSwComponentType, AtomicSwComponentType
86
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import ComplexDeviceDriverSwComponentType, CompositionSwComponentType
87
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import EcuAbstractionSwComponentType, PRPortPrototype, PortGroup, SwComponentType
88
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import PPortPrototype, PortPrototype, RPortPrototype, SymbolProps
89
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import ServiceSwComponentType
90
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef
91
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import ModeGroupInAtomicSwcInstanceRef
92
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import PModeGroupInAtomicSwcInstanceRef
93
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import RModeGroupInAtomicSWCInstanceRef
94
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
95
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector, SwComponentPrototype, SwConnector
96
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef
97
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
98
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationArrayElement
99
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationCompositeElementDataPrototype
100
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationRecordElement, AutosarDataPrototype, DataPrototype
101
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ParameterDataPrototype, VariableDataPrototype
102
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType, ApplicationCompositeDataType
103
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationDataType, ApplicationPrimitiveDataType
104
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationRecordDataType, AutosarDataType
105
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import DataTypeMappingSet
106
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndDescription, EndToEndProtection, EndToEndProtectionISignalIPdu
107
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionVariablePrototype
108
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet
109
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ApplicationError, ArgumentDataPrototype, ClientServerInterface
110
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ClientServerInterfaceMapping, ClientServerOperationMapping
111
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ClientServerOperation, DataInterface
112
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import DataPrototypeMapping, ModeSwitchInterface, ParameterInterface
113
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import PortInterface, PortInterfaceMappingSet, SenderReceiverInterface
114
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import TriggerInterface, VariableAndParameterInterfaceMapping
115
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
116
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import AsynchronousServerCallPoint, RunnableEntity, RunnableEntityArgument
117
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import SwcInternalBehavior, SynchronousServerCallPoint
118
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AutosarVariableRef import AutosarVariableRef
119
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.DataElements import ParameterAccess, VariableAccess
120
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef
121
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortDefinedArgumentValue
122
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import AsynchronousServerCallReturnsEvent, BackgroundEvent
123
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent
124
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import ModeSwitchedAckEvent, OperationInvokedEvent, RTEEvent
125
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import SwcModeSwitchEvent, TimingEvent
56
126
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
57
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, ApplicationPrimitiveDataType, ApplicationRecordDataType, AutosarDataType
58
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndDescription, EndToEndProtection, EndToEndProtectionVariablePrototype
59
127
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet
60
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, ModeSwitchedAckRequest, TransmissionAcknowledgementRequest
61
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, CompositionSwComponentType, EcuAbstractionSwComponentType, PRPortPrototype, PortGroup, SwComponentType, PPortPrototype, PortPrototype, RPortPrototype, SymbolProps
62
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
63
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import AsynchronousServerCallPoint, RunnableEntity, RunnableEntityArgument, SwcInternalBehavior, SynchronousServerCallPoint
64
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AutosarVariableRef import AutosarVariableRef
128
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import ModeAccessPoint, ModeSwitchPoint
65
129
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
66
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.DataElements import ParameterAccess, VariableAccess
67
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector, SwComponentPrototype, SwConnector
68
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef, ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
69
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
70
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef, VariableInAtomicSWCTypeInstanceRef
71
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, PPortComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, RPortComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
72
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef
73
130
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
74
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationArrayElement, ApplicationCompositeElementDataPrototype, ApplicationRecordElement, AutosarDataPrototype, DataPrototype, ParameterDataPrototype, VariableDataPrototype
75
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import ServiceSwComponentType
76
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import DataTypeMappingSet
77
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet
78
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ApplicationError, ClientServerInterface, ClientServerOperation, DataPrototypeMapping, ModeSwitchInterface, ParameterInterface, PortInterface, PortInterfaceMappingSet, SenderReceiverInterface, TriggerInterface, VariableAndParameterInterfaceMapping
79
131
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import SwcImplementation
80
132
 
81
133
  from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping, System, SystemMapping
82
- from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
134
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderRecCompositeTypeMapping, SenderRecRecordElementMapping
135
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderRecRecordTypeMapping, SenderReceiverToSignalGroupMapping
136
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalMapping
83
137
  from ..models.M2.AUTOSARTemplates.SystemTemplate.DiagnosticConnection import DiagnosticConnection
84
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import DynamicPart, DynamicPartAlternative, FrameTriggering, GeneralPurposeIPdu, GeneralPurposePdu, IPdu, IPduTiming, ISignalGroup, ISignalIPdu, ISignalIPduGroup, ISignalToIPduMapping, ISignalTriggering, MultiplexedIPdu, MultiplexedPart, Pdu, PduTriggering, SecureCommunicationAuthenticationProps, SecureCommunicationFreshnessProps, SecureCommunicationProps, SecureCommunicationPropsSet, SecuredIPdu, SegmentPosition, StaticPart, SystemSignal, DcmIPdu, Frame, ISignal, NPdu, NmPdu, SystemSignalGroup, UserDefinedIPdu, UserDefinedPdu
85
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
86
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
87
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SoAdRoutingGroup, SocketConnection, SocketConnectionBundle, SocketConnectionIpduIdentifier
88
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import GenericEthernetFrame
89
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import CouplingPort, CouplingPortDetails, CouplingPortFifo, CouplingPortScheduler, CouplingPortStructuralElement, EthernetCluster, EthernetCommunicationConnector, EthernetCommunicationController, EthernetPriorityRegeneration, InitialSdDelayConfig, MacMulticastGroup, RequestResponseDelay, SdClientConfig, VlanMembership
90
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import DoIpEntity, InfrastructureServices, Ipv6Configuration, NetworkEndpoint, NetworkEndpointAddress
91
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ApplicationEndpoint, ConsumedEventGroup, ConsumedServiceInstance, EventHandler, GenericTp, ProvidedServiceInstance, SdServerConfig, SoAdConfig, SocketAddress, TcpTp, TpPort, TransportProtocolConfiguration, UdpTp
92
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway, IPduMapping, ISignalMapping, TargetIPduRef
138
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.EcuResourceMapping import ECUMapping
93
139
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrame, CanFrameTriggering, RxIdentifierRange
94
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import AbstractCanCommunicationController, AbstractCanCommunicationControllerAttributes, CanCommunicationConnector, CanCommunicationController, CanControllerConfigurationRequirements, CanControllerFdConfiguration, CanControllerFdConfigurationRequirements
95
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import ApplicationEntry, LinFrameTriggering, LinScheduleTable, LinUnconditionalFrame, ScheduleTableEntry
96
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, CanClusterBusOffRecovery, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, CommunicationController, EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort, LinCluster, LinPhysicalChannel, PhysicalChannel
140
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import AbstractCanCommunicationController
141
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import AbstractCanCommunicationControllerAttributes
142
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
143
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanControllerConfigurationRequirements
144
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanControllerFdConfiguration
145
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanControllerFdConfigurationRequirements
146
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SoAdRoutingGroup, SocketConnection
147
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SocketConnectionBundle
148
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SocketConnectionIpduIdentifier
149
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import GenericEthernetFrame
150
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import CouplingPort, CouplingPortDetails, CouplingPortFifo
151
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import CouplingPortScheduler, CouplingPortStructuralElement
152
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCluster, EthernetCommunicationConnector
153
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCommunicationController
154
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetPriorityRegeneration, InitialSdDelayConfig
155
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import MacMulticastGroup, RequestResponseDelay, SdClientConfig
156
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import VlanMembership
157
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import DoIpEntity, InfrastructureServices, Ipv6Configuration
158
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import NetworkEndpoint, NetworkEndpointAddress
159
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ApplicationEndpoint, ConsumedEventGroup
160
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ConsumedServiceInstance, EventHandler, GenericTp
161
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ProvidedServiceInstance, SdServerConfig, SoAdConfig
162
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import SocketAddress, TcpTp, TpPort
163
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import TransportProtocolConfiguration, UdpTp
164
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayCommunication import FlexrayAbsolutelyScheduledTiming, FlexrayFrame
165
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayCommunication import FlexrayFrameTriggering
166
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayTopology import FlexrayCluster, FlexrayCommunicationConnector
167
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayTopology import FlexrayCommunicationController
168
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import ApplicationEntry, LinFrameTriggering, LinScheduleTable
169
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinUnconditionalFrame, ScheduleTableEntry
97
170
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinTopology import LinCommunicationConnector, LinCommunicationController, LinMaster
171
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway, IPduMapping, ISignalMapping, TargetIPduRef
172
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import DynamicPart, DynamicPartAlternative, FrameTriggering
173
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import GeneralPurposeIPdu, GeneralPurposePdu, IPdu, IPduTiming
174
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import ISignalGroup, ISignalIPdu, ISignalIPduGroup
175
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import ISignalToIPduMapping, ISignalTriggering, MultiplexedIPdu
176
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import MultiplexedPart, Pdu, PduTriggering
177
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import SecureCommunicationAuthenticationProps
178
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import SecureCommunicationFreshnessProps, SecureCommunicationProps
179
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import SecureCommunicationPropsSet, SecuredIPdu, SegmentPosition
180
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import StaticPart, SystemSignal, DcmIPdu, Frame, ISignal, NPdu
181
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import NmPdu, SystemSignalGroup, UserDefinedIPdu, UserDefinedPdu
182
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, CanClusterBusOffRecovery
183
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import FlexrayPhysicalChannel, CommunicationCycle, CycleRepetition
184
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import CanPhysicalChannel, CommConnectorPort, CommunicationCluster
185
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import CommunicationConnector, CommunicationController
186
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort
187
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import LinCluster, LinPhysicalChannel, PhysicalChannel
188
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
189
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType
190
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import TransmissionModeCondition, TransmissionModeDeclaration
191
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import TransmissionModeTiming
98
192
  from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
99
- from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmEcu, NmNode, UdpNmCluster, UdpNmClusterCoupling, UdpNmEcu, UdpNmNode
100
- from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpAddress, CanTpChannel, CanTpConfig, CanTpConnection, CanTpEcu, CanTpNode, DoIpLogicAddress, DoIpTpConfig, DoIpTpConnection, LinTpConfig, LinTpConnection, LinTpNode, TpAddress, TpConfig, TpConnection
193
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmEcu
194
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import NmNode, UdpNmCluster, UdpNmClusterCoupling, UdpNmEcu, UdpNmNode
195
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.SWmapping import SwcToImplMapping
196
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import BufferProperties, DataTransformation, DataTransformationSet
197
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import EndToEndTransformationISignalProps, TransformationISignalProps
198
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import EndToEndTransformationDescription, TransformationDescription
199
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import TransformationTechnology
200
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpAddress, CanTpChannel, CanTpConfig, CanTpConnection, CanTpEcu
201
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpNode, DoIpLogicAddress, DoIpTpConfig, DoIpTpConnection, LinTpConfig
202
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import LinTpConnection, LinTpNode, TpAddress, TpConfig, TpConnection
101
203
 
102
204
  from .abstract_arxml_writer import AbstractARXMLWriter
205
+
206
+
103
207
  class ARXMLWriter(AbstractARXMLWriter):
104
208
  def __init__(self, options=None) -> None:
105
209
  super().__init__(options)
@@ -113,7 +217,7 @@ class ARXMLWriter(AbstractARXMLWriter):
113
217
  def setChildElementRxIdentifierRange(self, element: ET.Element, key: str, range: RxIdentifierRange):
114
218
  if range is not None:
115
219
  child_element = ET.SubElement(element, key)
116
- self.setChildElementOptionalNumericalValue(child_element, "LOWER-CAN-ID", range.getLowerCanId())
220
+ self.setChildElementOptionalNumericalValue(child_element, "LOWER-CAN-ID", range.getLowerCanId())
117
221
  self.setChildElementOptionalNumericalValue(child_element, "UPPER-CAN-ID", range.getUpperCanId())
118
222
 
119
223
  def writeSds(self, parent: ET.Element, sdg: Sdg):
@@ -217,17 +321,17 @@ class ARXMLWriter(AbstractARXMLWriter):
217
321
  self.setAnnotations(element, identifiable.getAnnotations())
218
322
  self.setMultiLanguageOverviewParagraph(element, "DESC", identifiable.getDesc())
219
323
  self.setChildElementOptionalLiteral(element, "CATEGORY", identifiable.getCategory())
220
- self.setDocumentationBlock(element, "INTRODUCTION", identifiable.getIntroduction())
324
+ self.writeDocumentationBlock(element, "INTRODUCTION", identifiable.getIntroduction())
221
325
  self.setAdminData(element, identifiable.getAdminData())
222
326
 
223
327
  def writeARElement(self, parent: ET.Element, ar_element: ARElement):
224
328
  self.writeIdentifiable(parent, ar_element)
225
-
329
+
226
330
  def setTransmissionAcknowledgementRequest(self, element: ET.Element, acknowledge: TransmissionAcknowledgementRequest):
227
- if (acknowledge != None):
331
+ if (acknowledge is not None):
228
332
  child_element = ET.SubElement(element, "TRANSMISSION-ACKNOWLEDGE")
229
333
  self.writeARObjectAttributes(child_element, acknowledge)
230
- if acknowledge.timeout != None:
334
+ if acknowledge.timeout is not None:
231
335
  self.setChildElementOptionalFloatValue(child_element, "TIMEOUT", acknowledge.timeout)
232
336
 
233
337
  def setSenderComSpec(self, element: ET.Element, com_spec: SenderComSpec):
@@ -241,18 +345,18 @@ class ARXMLWriter(AbstractARXMLWriter):
241
345
  self.setChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE", com_spec.getHandleOutOfRange())
242
346
  self.setTransmissionAcknowledgementRequest(element, com_spec.getTransmissionAcknowledge())
243
347
  self.setChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION", com_spec.getUsesEndToEndProtection())
244
-
348
+
245
349
  def setNonqueuedSenderComSpec(self, element: ET.Element, com_spec: NonqueuedSenderComSpec):
246
350
  child_element = ET.SubElement(element, "NONQUEUED-SENDER-COM-SPEC")
247
351
  self.writeARObjectAttributes(child_element, com_spec)
248
352
  self.setSenderComSpec(child_element, com_spec)
249
353
  self.setValueSpecification(child_element, "INIT-VALUE", com_spec.getInitValue())
250
-
354
+
251
355
  def setServerComSpec(self, element: ET.Element, com_spec: ServerComSpec):
252
356
  child_element = ET.SubElement(element, "SERVER-COM-SPEC")
253
357
  self.writeARObjectAttributes(child_element, com_spec)
254
358
  self.setChildElementOptionalRefType(child_element, "OPERATION-REF", com_spec.getOperationRef())
255
- self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.getQueueLength())
359
+ self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.getQueueLength())
256
360
 
257
361
  def setQueuedSenderComSpec(self, element: ET.Element, com_spec: QueuedSenderComSpec):
258
362
  child_element = ET.SubElement(element, "QUEUED-SENDER-COM-SPEC")
@@ -283,14 +387,14 @@ class ARXMLWriter(AbstractARXMLWriter):
283
387
  self.setModeSwitchSenderComSpec(com_specs_tag, com_spec)
284
388
  else:
285
389
  self.notImplemented("Unsupported PPortComSpec %s" % type(com_spec))
286
-
287
- def setApplicationCompositeElementInPortInterfaceInstanceRef(self, element: ET.Element, key:str, iref: ApplicationCompositeElementInPortInterfaceInstanceRef):
390
+
391
+ def setApplicationCompositeElementInPortInterfaceInstanceRef(self, element: ET.Element, key: str, iref: ApplicationCompositeElementInPortInterfaceInstanceRef): # noqa E501
288
392
  if iref is not None:
289
393
  child_element = ET.SubElement(element, key)
290
394
  self.setChildElementOptionalRefType(child_element, "ROOT-DATA-PROTOTYPE-REF", iref.root_data_prototype_ref)
291
395
  self.setChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF", iref.target_data_prototype_ref)
292
396
  return iref
293
-
397
+
294
398
  def setCompositeNetworkRepresentation(self, element: ET.Element, representation: CompositeNetworkRepresentation):
295
399
  if representation is not None:
296
400
  self.logger.debug("setCompositeNetworkRepresentation")
@@ -335,28 +439,21 @@ class ARXMLWriter(AbstractARXMLWriter):
335
439
  def writeValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
336
440
  if value_spec is not None:
337
441
  self.writeARObjectAttributes(element, value_spec)
338
- self.setChildElementOptionalLiteral(element, "SHORT-LABEL", value_spec.getShortLabel())
339
-
340
- def setApplicationValueSpecification(self, element: ET.Element, value_spec: ApplicationValueSpecification):
341
- if value_spec is not None:
342
- value_spec_tag = ET.SubElement(element, "APPLICATION-VALUE-SPECIFICATION")
343
- self.writeValueSpecification(value_spec_tag, value_spec)
344
- self.setChildElementOptionalLiteral(value_spec_tag, "CATEGORY", value_spec.getCategory())
345
- self.writeSwValueCont(value_spec_tag, value_spec.getSwValueCont())
442
+ self.setChildElementOptionalLiteral(element, "SHORT-LABEL", value_spec.getShortLabel())
346
443
 
347
- def setTextValueSpecification(self, element: ET.Element, value_spec: TextValueSpecification):
444
+ def writeTextValueSpecification(self, element: ET.Element, value_spec: TextValueSpecification):
348
445
  if value_spec is not None:
349
446
  value_spec_tag = ET.SubElement(element, "TEXT-VALUE-SPECIFICATION")
350
447
  self.writeValueSpecification(value_spec_tag, value_spec)
351
448
  self.setChildElementOptionalLiteral(value_spec_tag, "VALUE", value_spec.getValue())
352
449
 
353
- def setNumericalValueSpecification(self, element: ET.Element, value_spec: NumericalValueSpecification):
450
+ def writeNumericalValueSpecification(self, element: ET.Element, value_spec: NumericalValueSpecification):
354
451
  if value_spec is not None:
355
452
  value_spec_tag = ET.SubElement(element, "NUMERICAL-VALUE-SPECIFICATION")
356
453
  self.writeValueSpecification(value_spec_tag, value_spec)
357
454
  self.setChildElementOptionalFloatValue(value_spec_tag, "VALUE", value_spec.getValue())
358
455
 
359
- def setArrayValueSpecification(self, element: ET.Element, value_spec: ArrayValueSpecification):
456
+ def writeArrayValueSpecification(self, element: ET.Element, value_spec: ArrayValueSpecification):
360
457
  value_spec_tag = ET.SubElement(element, "ARRAY-VALUE-SPECIFICATION")
361
458
  self.writeValueSpecification(value_spec_tag, value_spec)
362
459
  sub_elements = value_spec.getElements()
@@ -364,18 +461,18 @@ class ARXMLWriter(AbstractARXMLWriter):
364
461
  elements_tag = ET.SubElement(value_spec_tag, "ELEMENTS")
365
462
  for sub_element in sub_elements:
366
463
  if isinstance(sub_element, NumericalValueSpecification):
367
- self.setNumericalValueSpecification(elements_tag, sub_element)
464
+ self.writeNumericalValueSpecification(elements_tag, sub_element)
368
465
  elif isinstance(sub_element, ApplicationValueSpecification):
369
- self.setApplicationValueSpecification(elements_tag, sub_element)
466
+ self.writeApplicationValueSpecification(elements_tag, sub_element)
370
467
  elif isinstance(sub_element, TextValueSpecification):
371
- self.setTextValueSpecification(elements_tag, sub_element)
468
+ self.writeTextValueSpecification(elements_tag, sub_element)
372
469
  elif isinstance(sub_element, ArrayValueSpecification):
373
- self.setArrayValueSpecification(elements_tag, sub_element)
470
+ self.writeArrayValueSpecification(elements_tag, sub_element)
374
471
  elif isinstance(sub_element, RecordValueSpecification):
375
- self.setRecordValueSpecification(elements_tag, sub_element)
472
+ self.writeRecordValueSpecification(elements_tag, sub_element)
376
473
  else:
377
474
  self.notImplemented("Unsupported element type of <%s> of ArrayValueSpecification" % type(sub_element))
378
-
475
+
379
476
  def setConstantReference(self, element: ET.Element, value_spec: ConstantReference):
380
477
  value_spec_tag = ET.SubElement(element, "CONSTANT-REFERENCE")
381
478
  self.writeValueSpecification(value_spec_tag, value_spec)
@@ -385,17 +482,17 @@ class ARXMLWriter(AbstractARXMLWriter):
385
482
  if value_spec is not None:
386
483
  child_element = ET.SubElement(element, key)
387
484
  if isinstance(value_spec, ApplicationValueSpecification):
388
- self.setApplicationValueSpecification(child_element, value_spec)
485
+ self.writeApplicationValueSpecification(child_element, value_spec)
389
486
  elif isinstance(value_spec, TextValueSpecification):
390
- self.setTextValueSpecification(child_element, value_spec)
487
+ self.writeTextValueSpecification(child_element, value_spec)
391
488
  elif isinstance(value_spec, ConstantReference):
392
489
  self.setConstantReference(child_element, value_spec)
393
490
  elif isinstance(value_spec, NumericalValueSpecification):
394
- self.setNumericalValueSpecification(child_element, value_spec)
491
+ self.writeNumericalValueSpecification(child_element, value_spec)
395
492
  elif isinstance(value_spec, ArrayValueSpecification):
396
- self.setArrayValueSpecification(child_element, value_spec)
493
+ self.writeArrayValueSpecification(child_element, value_spec)
397
494
  elif isinstance(value_spec, RecordValueSpecification):
398
- self.setRecordValueSpecification(child_element, value_spec)
495
+ self.writeRecordValueSpecification(child_element, value_spec)
399
496
  else:
400
497
  self.notImplemented("Unsupported ValueSpecification %s" % type(value_spec))
401
498
 
@@ -471,7 +568,7 @@ class ARXMLWriter(AbstractARXMLWriter):
471
568
  if len(com_specs) > 0:
472
569
  com_specs_tag = ET.SubElement(element, "REQUIRED-COM-SPECS")
473
570
  for com_spec in com_specs:
474
- self.writeRPortComSpec(com_specs_tag, com_spec)
571
+ self.writeRPortComSpec(com_specs_tag, com_spec)
475
572
 
476
573
  def writeRPortPrototype(self, ports_tag: ET.Element, prototype: RPortPrototype):
477
574
  self.logger.debug("write RPortPrototype %s" % prototype.getShortName())
@@ -487,21 +584,24 @@ class ARXMLWriter(AbstractARXMLWriter):
487
584
  self.setAbstractProvidedPortPrototype(prototype_tag, prototype)
488
585
  self.setAbstractRequiredPortPrototype(prototype_tag, prototype)
489
586
  self.setChildElementOptionalRefType(prototype_tag, "PROVIDED-REQUIRED-INTERFACE-TREF", prototype.getProvidedRequiredInterface())
490
-
491
- def writePortPrototypes(self, ports_tag: ET.Element, port_prototypes: List[PortPrototype]):
492
- for port_prototype in port_prototypes:
493
- if isinstance(port_prototype, PPortPrototype):
494
- self.writePPortPrototype(ports_tag, port_prototype)
495
- elif isinstance(port_prototype, RPortPrototype):
496
- self.writeRPortPrototype(ports_tag, port_prototype)
497
- elif isinstance(port_prototype, PRPortPrototype):
498
- self.writePRPortPrototype(ports_tag, port_prototype)
499
- else:
500
- self._raiseError("Invalid PortPrototype")
587
+
588
+ def writeSwComponentTypePorts(self, element: ET.Element, sw_component: SwComponentType):
589
+ ports = sw_component.getPorts()
590
+ if len(ports) > 0:
591
+ child_element = ET.SubElement(element, "PORTS")
592
+ for port in ports:
593
+ if isinstance(port, PPortPrototype):
594
+ self.writePPortPrototype(child_element, port)
595
+ elif isinstance(port, RPortPrototype):
596
+ self.writeRPortPrototype(child_element, port)
597
+ elif isinstance(port, PRPortPrototype):
598
+ self.writePRPortPrototype(child_element, port)
599
+ else:
600
+ self.notImplemented("Unsupported Port Prototype <%s>" % type(port))
501
601
 
502
602
  def writeInnerGroupIRef(self, element: ET.Element, inner_group_iref: InnerPortGroupInCompositionInstanceRef):
503
603
  child_element = ET.SubElement(element, "INNER-GROUP-IREF")
504
- #self.setChildElementOptionalRefType(child_element, "CONTEXT-REF", inner_group_iref.contextRef)
604
+ # self.setChildElementOptionalRefType(child_element, "CONTEXT-REF", inner_group_iref.contextRef)
505
605
  self.setChildElementOptionalRefType(child_element, "TARGET-REF", inner_group_iref.getTargetRef())
506
606
 
507
607
  def writePortGroupInnerGroupIRefs(self, element: ET.Element, parent: PortGroup):
@@ -535,10 +635,7 @@ class ARXMLWriter(AbstractARXMLWriter):
535
635
 
536
636
  def writeSwComponentType(self, element: ET.Element, sw_component: SwComponentType):
537
637
  self.writeIdentifiable(element, sw_component)
538
- port_prototypes = sw_component.getPortPrototypes()
539
- if len(port_prototypes) > 0:
540
- ports_tag = ET.SubElement(element, "PORTS")
541
- self.writePortPrototypes(ports_tag, port_prototypes)
638
+ self.writeSwComponentTypePorts(element, sw_component)
542
639
  self.writeSwComponentTypePortGroups(element, sw_component)
543
640
 
544
641
  def writeSwComponentPrototype(self, element: ET.Element, prototype: SwComponentPrototype):
@@ -546,17 +643,19 @@ class ARXMLWriter(AbstractARXMLWriter):
546
643
  self.writeIdentifiable(prototype_tag, prototype)
547
644
  self.setChildElementOptionalRefType(prototype_tag, "TYPE-TREF", prototype.getTypeTRef())
548
645
 
549
- def writeSwComponentPrototypes(self, element: ET.Element, sw_component: CompositionSwComponentType):
550
- prototypes = sw_component.getSwComponentPrototypes()
551
- if len(prototypes) > 0:
646
+ def writeCompositionSwComponentTypeComponents(self, element: ET.Element, sw_component: CompositionSwComponentType):
647
+ components = sw_component.getComponents()
648
+ if len(components) > 0:
552
649
  components_tag = ET.SubElement(element, "COMPONENTS")
553
- for prototype in prototypes:
554
- self.writeSwComponentPrototype(components_tag, prototype)
650
+ for component in components:
651
+ if isinstance(component, SwComponentPrototype):
652
+ self.writeSwComponentPrototype(components_tag, component)
653
+ else:
654
+ self.notImplemented("Unsupported Component <%s>" % type(component))
555
655
 
556
656
  def writeAssemblySwConnector(self, element: ET.Element, sw_connector: AssemblySwConnector):
557
657
  child_element = ET.SubElement(element, "ASSEMBLY-SW-CONNECTOR")
558
- self.writeIdentifiable(child_element, sw_connector)
559
- self.setChildElementOptionalRefType(child_element, "MAPPING-REF", sw_connector.getMappingRef())
658
+ self.writeSwConnector(child_element, sw_connector)
560
659
 
561
660
  if sw_connector.getProviderIRef() is not None:
562
661
  provider_iref_tag = ET.SubElement(child_element, "PROVIDER-IREF")
@@ -592,27 +691,23 @@ class ARXMLWriter(AbstractARXMLWriter):
592
691
 
593
692
  if sw_connector.getOuterPortRef() is not None:
594
693
  self.setChildElementOptionalRefType(connector_tag, "OUTER-PORT-REF", sw_connector.getOuterPortRef())
595
- #self.writeChildOptionalRefElement(requester_iref_tag, "TARGET-R-PORT-REF", sw_connector.requester_iref.target_r_port_ref)
694
+ # self.writeChildOptionalRefElement(requester_iref_tag, "TARGET-R-PORT-REF", sw_connector.requester_iref.target_r_port_ref)
596
695
 
597
696
  def writeSwConnector(self, element: ET.Element, sw_connector: SwConnector):
598
- if isinstance(sw_connector, AssemblySwConnector):
599
- self.writeAssemblySwConnector(element, sw_connector)
600
- elif isinstance(sw_connector, DelegationSwConnector):
601
- self.writeDelegationSwConnector(element, sw_connector)
602
- else:
603
- self.notImplemented("Unsupported Sw Connector %s")
697
+ self.writeIdentifiable(element, sw_connector)
698
+ self.setChildElementOptionalRefType(element, "MAPPING-REF", sw_connector.getMappingRef())
604
699
 
605
- def writeSwConnectors(self, element: ET.Element, sw_component: CompositionSwComponentType):
700
+ def writeCompositionSwComponentTypeSwConnectors(self, element: ET.Element, sw_component: CompositionSwComponentType):
606
701
  sw_connectors = sw_component.getSwConnectors()
607
702
  if len(sw_connectors) > 0:
608
- connectors_tag = ET.SubElement(element, "CONNECTORS")
609
- # Change the implementation to compatible with AUTOSAR builder
703
+ child_element = ET.SubElement(element, "CONNECTORS")
610
704
  for sw_connector in sw_connectors:
611
- self.writeSwConnector(connectors_tag, sw_connector)
612
- #for sw_connector in sw_component.getAssemblySwConnectors():
613
- # self.writeSwConnector(connectors_tag, sw_connector)
614
- #for sw_connector in sw_component.getDelegationSwConnectors():
615
- # self.writeSwConnector(connectors_tag, sw_connector)
705
+ if isinstance(sw_connector, AssemblySwConnector):
706
+ self.writeAssemblySwConnector(child_element, sw_connector)
707
+ elif isinstance(sw_connector, DelegationSwConnector):
708
+ self.writeDelegationSwConnector(child_element, sw_connector)
709
+ else:
710
+ self.notImplemented("Unsupported Sw Connector %s" % type(sw_connector))
616
711
 
617
712
  def writeCompositionSwComponentTypeDataTypeMappingSet(self, element: ET.Element, parent: CompositionSwComponentType):
618
713
  data_type_mappings = parent.getDataTypeMappings()
@@ -626,8 +721,8 @@ class ARXMLWriter(AbstractARXMLWriter):
626
721
  child_element = ET.SubElement(parent, "COMPOSITION-SW-COMPONENT-TYPE")
627
722
 
628
723
  self.writeSwComponentType(child_element, sw_component)
629
- self.writeSwComponentPrototypes(child_element, sw_component)
630
- self.writeSwConnectors(child_element, sw_component)
724
+ self.writeCompositionSwComponentTypeComponents(child_element, sw_component)
725
+ self.writeCompositionSwComponentTypeSwConnectors(child_element, sw_component)
631
726
  self.writeCompositionSwComponentTypeDataTypeMappingSet(child_element, sw_component)
632
727
 
633
728
  def writeCompositionSwComponentTypes(self, element: ET.Element, ar_package: ARPackage):
@@ -649,29 +744,59 @@ class ARXMLWriter(AbstractARXMLWriter):
649
744
  self.writeLParagraphs(child_element, paragraph)
650
745
  return paragraphs
651
746
 
652
- def setListElement(self, element: ET.Element, key: str, list: ListElement):
747
+ def setListElement(self, element: ET.Element, key: str, list: ARList):
653
748
  if list is not None:
654
749
  child_element = ET.SubElement(element, key)
655
750
  type = list.getType()
656
751
  if type is not None:
657
752
  child_element.attrib['TYPE'] = type
658
753
  for item in list.getItems():
659
- self.setDocumentationBlock(child_element, "ITEM", item)
754
+ self.writeDocumentationBlock(child_element, "ITEM", item)
660
755
 
661
- def setDocumentationBlock(self, element: ET.Element, key: str, block: DocumentationBlock):
756
+ def setGraphic(self, element: ET.Element, key: str, graphic: Graphic):
757
+ if graphic is not None:
758
+ child_element = ET.SubElement(element, key)
759
+ if graphic.getFilename() is not None:
760
+ child_element.attrib["FILENAME"] = graphic.getFilename()
761
+
762
+ def writeMlFigureLGraphics(self, element: ET.Element, figure: MlFigure):
763
+ graphics = figure.getLGraphics()
764
+ for graphic in graphics:
765
+ child_element = ET.SubElement(element, "L-GRAPHIC")
766
+ if graphic.getL() is not None:
767
+ child_element.attrib["L"] = graphic.getL()
768
+ self.setGraphic(child_element, "GRAPHIC", graphic.getGraphic())
769
+
770
+ def writeDocumentViewSelectable(self, element: ET.Element, selectable: DocumentViewSelectable):
771
+ self.writeARObjectAttributes(element, selectable)
772
+
773
+ def writePaginateable(self, element: ET.Element, paginateable: Paginateable):
774
+ self.writeDocumentViewSelectable(element, paginateable)
775
+
776
+ def writeMlFigure(self, element: ET.Element, figure: MlFigure):
777
+ self.writePaginateable(element, figure)
778
+ self.writeMlFigureLGraphics(element, figure)
779
+
780
+ def setMlFigures(self, element: ET.Element, key: str, figures: List[MlFigure]):
781
+ for figure in figures:
782
+ child_element = ET.SubElement(element, key)
783
+ self.writeMlFigure(child_element, figure)
784
+
785
+ def writeDocumentationBlock(self, element: ET.Element, key: str, block: DocumentationBlock):
662
786
  if block is not None:
663
787
  child_element = ET.SubElement(element, key)
664
788
  self.writeARObjectAttributes(child_element, block)
665
789
  self.setMultiLanguageParagraphs(child_element, "P", block.getPs())
666
790
  for list in block.getLists():
667
791
  self.setListElement(child_element, "LIST", list)
792
+ self.setMlFigures(child_element, "FIGURE", block.getFigures())
668
793
 
669
794
  def writeGeneralAnnotation(self, element: ET.Element, annotation: Annotation):
670
795
  self.setMultiLongName(element, "LABEL", annotation.getLabel())
671
796
  self.setChildElementOptionalLiteral(element, "ANNOTATION-ORIGIN", annotation.getAnnotationOrigin())
672
- self.setDocumentationBlock(element, "ANNOTATION-TEXT", annotation.getAnnotationText())
797
+ self.writeDocumentationBlock(element, "ANNOTATION-TEXT", annotation.getAnnotationText())
673
798
 
674
- def setAnnotations(self, element: ET.Element, annotations: List[Annotation]) :
799
+ def setAnnotations(self, element: ET.Element, annotations: List[Annotation]):
675
800
  if len(annotations) > 0:
676
801
  annotations_tag = ET.SubElement(element, "ANNOTATIONS")
677
802
  for annotation in annotations:
@@ -683,7 +808,7 @@ class ARXMLWriter(AbstractARXMLWriter):
683
808
  self.writeARObjectAttributes(child_element, props)
684
809
  self.setChildElementOptionalRefType(child_element, "INPUT-VARIABLE-TYPE-REF", props.getInputVariableTypeRef())
685
810
  self.setChildElementOptionalRefType(child_element, "COMPU-METHOD-REF", props.getCompuMethodRef())
686
- self.setChildElementOptionalNumericalValue(child_element, "SW-MAX-AXIS-POINTS", props.getSwMaxAxisPoints())
811
+ self.setChildElementOptionalNumericalValue(child_element, "SW-MAX-AXIS-POINTS", props.getSwMaxAxisPoints())
687
812
  self.setChildElementOptionalNumericalValue(child_element, "SW-MIN-AXIS-POINTS", props.getSwMinAxisPoints())
688
813
  self.setChildElementOptionalRefType(child_element, "DATA-CONSTR-REF", props.getDataConstrRef())
689
814
 
@@ -703,7 +828,7 @@ class ARXMLWriter(AbstractARXMLWriter):
703
828
  elif isinstance(axis.sw_calprm_axis_type_props, SwAxisGrouped):
704
829
  self.setSwAxisGrouped(child_element, axis.sw_calprm_axis_type_props)
705
830
  else:
706
- self._raiseError("Unsupported SwCalprmAxisTypeProps %s" % type(axis.sw_calprm_axis_type_props))
831
+ self.notImplemented("Unsupported SwCalprmAxisTypeProps %s" % type(axis.sw_calprm_axis_type_props))
707
832
 
708
833
  def setSwCalprmAxisSet(self, element: ET.Element, key: str, set: SwCalprmAxisSet):
709
834
  axises = set.getSwCalprmAxises()
@@ -727,11 +852,11 @@ class ARXMLWriter(AbstractARXMLWriter):
727
852
  self.writeARObjectAttributes(conditional_tag, props.conditional)
728
853
  self.setAnnotations(conditional_tag, props.getAnnotations())
729
854
  self.setChildElementOptionalRefType(conditional_tag, "BASE-TYPE-REF", props.getBaseTypeRef())
855
+ self.setChildElementOptionalRefType(conditional_tag, "SW-ADDR-METHOD-REF", props.getSwAddrMethodRef())
856
+ self.setChildElementOptionalLiteral(conditional_tag, "SW-CALIBRATION-ACCESS", props.getSwCalibrationAccess())
730
857
  self.setChildElementOptionalRefType(conditional_tag, "COMPU-METHOD-REF", props.getCompuMethodRef())
731
858
  self.setValueSpecification(conditional_tag, "INVALID-VALUE", props.getInvalidValue())
732
859
  self.setChildElementOptionalFloatValue(conditional_tag, "STEP-SIZE", props.getStepSize())
733
- self.setChildElementOptionalRefType(conditional_tag, "SW-ADDR-METHOD-REF", props.getSwAddrMethodRef())
734
- self.setChildElementOptionalLiteral(conditional_tag, "SW-CALIBRATION-ACCESS", props.getSwCalibrationAccess())
735
860
  self.setChildElementOptionalRefType(conditional_tag, "DATA-CONSTR-REF", props.getDataConstrRef())
736
861
  self.setChildElementOptionalRefType(conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF", props.getImplementationDataTypeRef())
737
862
  self.setSwCalprmAxisSet(conditional_tag, "SW-CALPRM-AXIS-SET", props.getSwCalprmAxisSet())
@@ -757,29 +882,32 @@ class ARXMLWriter(AbstractARXMLWriter):
757
882
  data_type_tag = ET.SubElement(element, "APPLICATION-PRIMITIVE-DATA-TYPE")
758
883
  self.setApplicationDataType(data_type_tag, data_type)
759
884
 
760
- def setDataPrototype(self, element: ET.Element, prototype: DataPrototype):
885
+ def writeDataPrototype(self, element: ET.Element, prototype: DataPrototype):
886
+ self.writeIdentifiable(element, prototype)
761
887
  self.setSwDataDefProps(element, "SW-DATA-DEF-PROPS", prototype.getSwDataDefProps())
762
888
 
763
- def setApplicationCompositeElementDataPrototype(self, element: ET.Element, prototype: ApplicationCompositeElementDataPrototype):
764
- self.writeIdentifiable(element, prototype)
765
- self.setDataPrototype(element, prototype)
889
+ def writeApplicationCompositeElementDataPrototype(self, element: ET.Element, prototype: ApplicationCompositeElementDataPrototype):
890
+ self.writeDataPrototype(element, prototype)
766
891
  self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.typeTRef)
767
892
 
768
- def setApplicationRecordElement(self, element: ET.Element, prototype: ApplicationRecordElement):
769
- self.setApplicationCompositeElementDataPrototype(element, prototype)
770
-
771
- def writeApplicationRecordElements(self, element: ET.Element, data_type: ApplicationRecordDataType):
772
- records = data_type.getApplicationRecordElements()
773
- if len(records) > 0:
774
- elements_tag = ET.SubElement(element, "ELEMENTS")
775
- for record in records:
776
- child_element = ET.SubElement(elements_tag, "APPLICATION-RECORD-ELEMENT")
777
- self.setApplicationRecordElement(child_element, record)
893
+ def writeApplicationRecordElement(self, element: ET.Element, prototype: ApplicationRecordElement):
894
+ child_element = ET.SubElement(element, "APPLICATION-RECORD-ELEMENT")
895
+ self.writeApplicationCompositeElementDataPrototype(child_element, prototype)
896
+
897
+ def writeApplicationRecordDataTypeElements(self, element: ET.Element, data_type: ApplicationRecordDataType):
898
+ record_elements = data_type.getApplicationRecordElements()
899
+ if len(record_elements) > 0:
900
+ child_element = ET.SubElement(element, "ELEMENTS")
901
+ for record_element in record_elements:
902
+ if isinstance(record_element, ApplicationRecordElement):
903
+ self.writeApplicationRecordElement(child_element, record_element)
904
+ else:
905
+ self.notImplemented("Unsupported ApplicationRecordDataType Element <%s>" % type(record_element))
778
906
 
779
907
  def writeApplicationRecordDataType(self, element: ET.Element, data_type: ApplicationRecordDataType):
780
908
  data_type_tag = ET.SubElement(element, "APPLICATION-RECORD-DATA-TYPE")
781
909
  self.setApplicationDataType(data_type_tag, data_type)
782
- self.writeApplicationRecordElements(data_type_tag, data_type)
910
+ self.writeApplicationRecordDataTypeElements(data_type_tag, data_type)
783
911
 
784
912
  def writeApplicationDataTypes(self, parent: ET.Element, ar_package: ARPackage):
785
913
  for data_type in ar_package.getApplicationDataType():
@@ -840,18 +968,22 @@ class ARXMLWriter(AbstractARXMLWriter):
840
968
  else:
841
969
  self.notImplemented("Unsupported CompuConstContent <%s>" % type(content))
842
970
 
971
+ def setCompuScale(self, element: ET.Element, key: str, compu_scale: CompuScale):
972
+ if compu_scale is not None:
973
+ child_element = ET.SubElement(element, key)
974
+ self.writeARObjectAttributes(child_element, compu_scale)
975
+ self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", compu_scale.getShortLabel())
976
+ self.setChildElementOptionalLiteral(child_element, "SYMBOL", compu_scale.getSymbol())
977
+ self.setMultiLanguageOverviewParagraph(child_element, "DESC", compu_scale.getDesc())
978
+ self.setChildLimitElement(child_element, "LOWER-LIMIT", compu_scale.getLowerLimit())
979
+ self.setChildLimitElement(child_element, "UPPER-LIMIT", compu_scale.getUpperLimit())
980
+ self.writeCompuScaleContents(child_element, compu_scale)
981
+
843
982
  def setCompuScales(self, element: ET.Element, compu_scales: CompuScales):
844
983
  if compu_scales is not None:
845
- compu_scales_tag = ET.SubElement(element, "COMPU-SCALES")
984
+ child_element = ET.SubElement(element, "COMPU-SCALES")
846
985
  for compu_scale in compu_scales.getCompuScales():
847
- child_element = ET.SubElement(compu_scales_tag, "COMPU-SCALE")
848
- self.writeARObjectAttributes(child_element, compu_scale)
849
- self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", compu_scale.getShortLabel())
850
- self.setChildElementOptionalLiteral(child_element, "SYMBOL", compu_scale.getSymbol())
851
- self.setMultiLanguageOverviewParagraph(child_element, "DESC", compu_scale.getDesc())
852
- self.setChildLimitElement(child_element, "LOWER-LIMIT", compu_scale.getLowerLimit())
853
- self.setChildLimitElement(child_element, "UPPER-LIMIT", compu_scale.getUpperLimit())
854
- self.writeCompuScaleContents(child_element, compu_scale)
986
+ self.setCompuScale(child_element, "COMPU-SCALE", compu_scale)
855
987
 
856
988
  def setCompuConst(self, element: ET.Element, key: str, compu_const: CompuConst):
857
989
  if compu_const is not None:
@@ -860,7 +992,7 @@ class ARXMLWriter(AbstractARXMLWriter):
860
992
  self.setCompuConstContent(child_element, compu_const.getCompuConstContentType())
861
993
 
862
994
  def setCompu(self, element: ET.Element, key: str, compu: Compu):
863
- if compu is not None:
995
+ if compu is not None:
864
996
  child_element = ET.SubElement(element, key)
865
997
  self.writeARObjectAttributes(child_element, compu)
866
998
  self.setCompuScales(child_element, compu.getCompuContent())
@@ -874,13 +1006,14 @@ class ARXMLWriter(AbstractARXMLWriter):
874
1006
  self.setCompu(child_element, "COMPU-INTERNAL-TO-PHYS", compu_method.getCompuInternalToPhys())
875
1007
  self.setCompu(child_element, "COMPU-PHYS-TO-INTERNAL", compu_method.getCompuPhysToInternal())
876
1008
 
877
- def setApplicationValueSpecification(self, element: ET.Element, spec: ApplicationValueSpecification):
878
- spec_tag = ET.SubElement(element, "APPLICATION-VALUE-SPECIFICATION")
879
- self.setChildElementOptionalLiteral(spec_tag, "SHORT-LABEL", spec.getShortLabel())
880
- self.setChildElementOptionalLiteral(spec_tag, "CATEGORY", spec.category)
881
- self.writeSwValueCont(spec_tag, spec.getSwValueCont())
1009
+ def writeApplicationValueSpecification(self, element: ET.Element, value_spec: ApplicationValueSpecification):
1010
+ if value_spec is not None:
1011
+ child_element = ET.SubElement(element, "APPLICATION-VALUE-SPECIFICATION")
1012
+ self.writeValueSpecification(child_element, value_spec)
1013
+ self.setChildElementOptionalLiteral(child_element, "CATEGORY", value_spec.getCategory())
1014
+ self.writeSwValueCont(child_element, value_spec.getSwValueCont())
882
1015
 
883
- def setRecordValueSpecification(self, element: ET.Element, spec: RecordValueSpecification):
1016
+ def writeRecordValueSpecification(self, element: ET.Element, spec: RecordValueSpecification):
884
1017
  child_element = ET.SubElement(element, "RECORD-VALUE-SPECIFICATION")
885
1018
  self.writeARObjectAttributes(child_element, spec)
886
1019
  self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", spec.getShortLabel())
@@ -889,15 +1022,15 @@ class ARXMLWriter(AbstractARXMLWriter):
889
1022
  fields_tag = ET.SubElement(child_element, "FIELDS")
890
1023
  for field in fields:
891
1024
  if isinstance(field, ApplicationValueSpecification):
892
- self.setApplicationValueSpecification(fields_tag, field)
1025
+ self.writeApplicationValueSpecification(fields_tag, field)
893
1026
  elif isinstance(field, NumericalValueSpecification):
894
- self.setNumericalValueSpecification(fields_tag, field)
1027
+ self.writeNumericalValueSpecification(fields_tag, field)
895
1028
  elif isinstance(field, TextValueSpecification):
896
- self.setTextValueSpecification(fields_tag, field)
1029
+ self.writeTextValueSpecification(fields_tag, field)
897
1030
  elif isinstance(field, ArrayValueSpecification):
898
- self.setArrayValueSpecification(fields_tag, field)
1031
+ self.writeArrayValueSpecification(fields_tag, field)
899
1032
  elif isinstance(field, RecordValueSpecification):
900
- self.setRecordValueSpecification(fields_tag, field)
1033
+ self.writeRecordValueSpecification(fields_tag, field)
901
1034
  else:
902
1035
  self.notImplemented("Unsupported Field <%s>" % type(field))
903
1036
 
@@ -941,7 +1074,7 @@ class ARXMLWriter(AbstractARXMLWriter):
941
1074
  def writeDataConstr(self, element: ET.Element, constr: DataConstr):
942
1075
  child_element = ET.SubElement(element, "DATA-CONSTR")
943
1076
  self.writeIdentifiable(child_element, constr)
944
- self.writeDataConstrRules(child_element, constr)
1077
+ self.writeDataConstrRules(child_element, constr)
945
1078
 
946
1079
  def writeUnit(self, element: ET.Element, unit: Unit):
947
1080
  self.logger.debug("writeUnit %s" % unit.getShortName())
@@ -957,7 +1090,7 @@ class ARXMLWriter(AbstractARXMLWriter):
957
1090
  self.writeARObjectAttributes(child_element, iref)
958
1091
  self.setChildElementOptionalRefType(child_element, "BASE", iref.getBaseRef())
959
1092
  self.setChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF", iref.getContextPortRef())
960
- self.setChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF", iref.getContextModeDeclarationGroupPrototypeRef())
1093
+ self.setChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF", iref.getContextModeDeclarationGroupPrototypeRef()) # noqa E501
961
1094
  self.setChildElementOptionalRefType(child_element, "TARGET-MODE-DECLARATION-REF", iref.getTargetModeDeclarationRef())
962
1095
 
963
1096
  def setPOperationInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: POperationInAtomicSwcInstanceRef):
@@ -1037,7 +1170,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1037
1170
  child_element = ET.SubElement(element, "BACKGROUND-EVENT")
1038
1171
  self.setRTEEvent(child_element, event)
1039
1172
 
1040
- def writeRTEEvents(self, element: ET.Element, parent: SwcInternalBehavior):
1173
+ def writeSwcInternalBehaviorEvents(self, element: ET.Element, parent: SwcInternalBehavior):
1041
1174
  events = parent.getRteEvents()
1042
1175
  if len(events) > 0:
1043
1176
  child_element = ET.SubElement(element, "EVENTS")
@@ -1079,11 +1212,20 @@ class ARXMLWriter(AbstractARXMLWriter):
1079
1212
  for ref in refs:
1080
1213
  self.setChildElementOptionalRefType(refs_tag, "DATA-TYPE-MAPPING-REF", ref)
1081
1214
 
1215
+ def writeInternalBehaviorStaticMemories(self, element: ET.Element, behavior: InternalBehavior):
1216
+ memories = behavior.getStaticMemories()
1217
+ if len(memories) > 0:
1218
+ child_element = ET.SubElement(element, "STATIC-MEMORYS")
1219
+ for memory in memories:
1220
+ if isinstance(memory, VariableDataPrototype):
1221
+ self.writeVariableDataPrototype(child_element, memory)
1222
+
1082
1223
  def writeInternalBehavior(self, element: ET.Element, behavior: InternalBehavior):
1083
1224
  self.writeIdentifiable(element, behavior)
1084
- self.setParameterDataPrototypes(element, "CONSTANT-MEMORYS", behavior.getConstantMemories())
1225
+ self.writeSwcInternalBehaviorParameterDataPrototypes(element, "CONSTANT-MEMORYS", behavior.getConstantMemories())
1085
1226
  self.writeDataTypeMappingRefs(element, behavior)
1086
1227
  self.writeExclusiveAreas(element, behavior)
1228
+ self.writeInternalBehaviorStaticMemories(element, behavior)
1087
1229
 
1088
1230
  def setAutosarVariableRef(self, element: ET.Element, key: str, ref: AutosarVariableRef):
1089
1231
  if ref is not None:
@@ -1091,9 +1233,9 @@ class ARXMLWriter(AbstractARXMLWriter):
1091
1233
  self.writeARObjectAttributes(child_element, ref)
1092
1234
  if ref.getAutosarVariableIRef() is not None:
1093
1235
  child_element = ET.SubElement(child_element, "AUTOSAR-VARIABLE-IREF")
1094
- #self.setARObjectAttributes(child_element, ref)
1236
+ # self.setARObjectAttributes(child_element, ref)
1095
1237
  self.setChildElementOptionalRefType(child_element, "PORT-PROTOTYPE-REF", ref.getAutosarVariableIRef().getPortPrototypeRef())
1096
- self.setChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF", ref.getAutosarVariableIRef().getTargetDataPrototypeRef())
1238
+ self.setChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF", ref.getAutosarVariableIRef().getTargetDataPrototypeRef()) # noqa E501
1097
1239
  self.setChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF", ref.getLocalVariableRef())
1098
1240
 
1099
1241
  def setComponentInSystemInstanceRef(self, element: ET.Element, tag_name: str, ref: ComponentInSystemInstanceRef):
@@ -1119,42 +1261,42 @@ class ARXMLWriter(AbstractARXMLWriter):
1119
1261
  self.writeIdentifiable(child_element, parameter_access)
1120
1262
  self.setAutosarParameterRef(child_element, "ACCESSED-PARAMETER", parameter_access.getAccessedParameter())
1121
1263
 
1122
- def writeParameterAccesses(self, element: ET.Element, entity: RunnableEntity):
1264
+ def writeRunnableEntityParameterAccesses(self, element: ET.Element, entity: RunnableEntity):
1123
1265
  parameter_accesses = entity.getParameterAccesses()
1124
1266
  if len(parameter_accesses) > 0:
1125
1267
  child_element = ET.SubElement(element, "PARAMETER-ACCESSS")
1126
1268
  for parameter_access in parameter_accesses:
1127
1269
  self.writeParameterAccess(child_element, parameter_access)
1128
1270
 
1129
- def writeDataReceivePointByArguments(self, element: ET.Element, entity: RunnableEntity):
1271
+ def writeRunnableEntityDataReceivePointByArguments(self, element: ET.Element, entity: RunnableEntity):
1130
1272
  accesses = entity.getDataReceivePointByArguments()
1131
1273
  if len(accesses) > 0:
1132
1274
  child_element = ET.SubElement(element, "DATA-RECEIVE-POINT-BY-ARGUMENTS")
1133
1275
  for access in accesses:
1134
1276
  self.setVariableAccess(child_element, access)
1135
1277
 
1136
- def writeDataSendPoints(self, element: ET.Element, entity: RunnableEntity):
1278
+ def writeRunnableEntityDataSendPoints(self, element: ET.Element, entity: RunnableEntity):
1137
1279
  points = entity.getDataSendPoints()
1138
1280
  if len(points) > 0:
1139
1281
  child_element = ET.SubElement(element, "DATA-SEND-POINTS")
1140
1282
  for point in points:
1141
1283
  self.setVariableAccess(child_element, point)
1142
1284
 
1143
- def writeDataReadAccesses(self, element: ET.Element, entity: RunnableEntity):
1285
+ def writeRunnableEntityDataReadAccesses(self, element: ET.Element, entity: RunnableEntity):
1144
1286
  accesses = entity.getDataReadAccesses()
1145
1287
  if len(accesses) > 0:
1146
1288
  child_element = ET.SubElement(element, "DATA-READ-ACCESSS")
1147
1289
  for access in accesses:
1148
1290
  self.setVariableAccess(child_element, access)
1149
1291
 
1150
- def writeDataWriteAccesses(self, element: ET.Element, entity: RunnableEntity):
1292
+ def writeRunnableEntityDataWriteAccesses(self, element: ET.Element, entity: RunnableEntity):
1151
1293
  accesses = entity.getDataWriteAccesses()
1152
1294
  if len(accesses) > 0:
1153
1295
  child_element = ET.SubElement(element, "DATA-WRITE-ACCESSS")
1154
1296
  for access in accesses:
1155
1297
  self.setVariableAccess(child_element, access)
1156
1298
 
1157
- def writeReadLocalVariables(self, element: ET.Element, entity: RunnableEntity):
1299
+ def writeRunnableEntityReadLocalVariables(self, element: ET.Element, entity: RunnableEntity):
1158
1300
  variables = entity.getReadLocalVariables()
1159
1301
  if len(variables) > 0:
1160
1302
  child_element = ET.SubElement(element, "READ-LOCAL-VARIABLES")
@@ -1182,7 +1324,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1182
1324
  self.writeIdentifiable(child_element, call_point)
1183
1325
  self.setServerCallPoint(child_element, call_point)
1184
1326
 
1185
- def writeServerCallPoints(self, element: ET.Element, entity: RunnableEntity):
1327
+ def writeRunnableEntityServerCallPoints(self, element: ET.Element, entity: RunnableEntity):
1186
1328
  call_points = entity.getServerCallPoints()
1187
1329
  if len(call_points) > 0:
1188
1330
  child_element = ET.SubElement(element, "SERVER-CALL-POINTS")
@@ -1192,44 +1334,81 @@ class ARXMLWriter(AbstractARXMLWriter):
1192
1334
  elif isinstance(call_point, AsynchronousServerCallPoint):
1193
1335
  self.setAsynchronousServerCallPoint(child_element, call_point)
1194
1336
  else:
1195
- self._raiseError("Unsupported ServerCallPoint type <%s>" % type(call_point))
1337
+ self.notImplemented("Unsupported ServerCallPoint type <%s>" % type(call_point))
1196
1338
 
1197
- def writeWrittenLocalVariable(self, element: ET.Element, entity: RunnableEntity):
1339
+ def writeRunnableEntityWrittenLocalVariable(self, element: ET.Element, entity: RunnableEntity):
1198
1340
  variables = entity.getWrittenLocalVariables()
1199
1341
  if len(variables) > 0:
1200
1342
  child_element = ET.SubElement(element, "WRITTEN-LOCAL-VARIABLES")
1201
1343
  for access in variables:
1202
1344
  self.setVariableAccess(child_element, access)
1203
1345
 
1204
- def setRModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, tag: str, iref: RModeGroupInAtomicSWCInstanceRef):
1205
- if iref is not None:
1206
- child_element = ET.SubElement(element, tag)
1207
- instance_ref_tag = ET.SubElement(child_element, "R-MODE-GROUP-IN-ATOMIC-SWC-INSTANCE-REF")
1208
- self.setChildElementOptionalRefType(instance_ref_tag, "CONTEXT-R-PORT-REF", iref.getContextRPortRef())
1209
- self.setChildElementOptionalRefType(instance_ref_tag, "TARGET-MODE-GROUP-REF", iref.getTargetModeGroupRef())
1346
+ def writeModeGroupInAtomicSwcInstanceRef(self, element: ET.Element, instance_ref: ModeGroupInAtomicSwcInstanceRef):
1347
+ self.setChildElementOptionalRefType(element, "BASE-REF", instance_ref.getBaseRef())
1348
+ self.setChildElementOptionalRefType(element, "CONTEXT-PORT-REF", instance_ref.getContextPortRef())
1210
1349
 
1211
- def setPModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, tag: str, iref: PModeGroupInAtomicSwcInstanceRef):
1212
- if iref is not None:
1213
- child_element = ET.SubElement(element, tag)
1214
- self.setChildElementOptionalRefType(child_element, "CONTEXT-P-PORT-REF", iref.getContextPPortRef())
1215
- self.setChildElementOptionalRefType(child_element, "TARGET-MODE-GROUP-REF", iref.getTargetModeGroupRef())
1350
+ def writeRModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, instance_ref: RModeGroupInAtomicSWCInstanceRef):
1351
+ if instance_ref is not None:
1352
+ child_element = ET.SubElement(element, "R-MODE-GROUP-IN-ATOMIC-SWC-INSTANCE-REF")
1353
+ self.writeModeGroupInAtomicSwcInstanceRef(child_element, instance_ref)
1354
+ self.setChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF", instance_ref.getContextRPortRef())
1355
+ self.setChildElementOptionalRefType(child_element, "TARGET-MODE-GROUP-REF", instance_ref.getTargetModeGroupRef())
1356
+
1357
+ def writePModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, instance_ref: PModeGroupInAtomicSwcInstanceRef):
1358
+ if instance_ref is not None:
1359
+ child_element = ET.SubElement(element, "P-MODE-GROUP-IN-ATOMIC-SWC-INSTANCE-REF")
1360
+ self.writeModeGroupInAtomicSwcInstanceRef(child_element, instance_ref)
1361
+ self.setChildElementOptionalRefType(child_element, "CONTEXT-P-PORT-REF", instance_ref.getContextPPortRef())
1362
+ self.setChildElementOptionalRefType(child_element, "TARGET-MODE-GROUP-REF", instance_ref.getTargetModeGroupRef())
1216
1363
 
1217
- def writeModeAccessPoints(self, element: ET.Element, entity: RunnableEntity):
1364
+ def setModeGroupIRef(self, element: ET.Element, key: str, instance_ref: ModeGroupInAtomicSwcInstanceRef):
1365
+ if instance_ref is not None:
1366
+ child_element = ET.SubElement(element, key)
1367
+ if isinstance(instance_ref, PModeGroupInAtomicSwcInstanceRef):
1368
+ self.writePModeGroupInAtomicSWCInstanceRef(child_element, instance_ref)
1369
+ elif isinstance(instance_ref, RModeGroupInAtomicSWCInstanceRef):
1370
+ self.writeRModeGroupInAtomicSWCInstanceRef(child_element, instance_ref)
1371
+ else:
1372
+ self.notImplemented("Unsupported Mode Group IRef <%s>" % type(instance_ref))
1373
+ return instance_ref
1374
+
1375
+ def writeModeAccessPoint(self, element: ET.Element, point: ModeAccessPoint):
1376
+ if point is not None:
1377
+ child_element = ET.SubElement(element, "MODE-ACCESS-POINT")
1378
+ self.setModeGroupIRef(child_element, "MODE-GROUP-IREF", point.getModeGroupIRef())
1379
+
1380
+ def writeRunnableEntityModeAccessPoints(self, element: ET.Element, entity: RunnableEntity):
1218
1381
  points = entity.getModeAccessPoints()
1219
1382
  if len(points) > 0:
1220
- mode_access_points_tag = ET.SubElement(element, "MODE-ACCESS-POINTS")
1383
+ child_element = ET.SubElement(element, "MODE-ACCESS-POINTS")
1221
1384
  for point in points:
1222
- child_element = ET.SubElement(mode_access_points_tag, "MODE-ACCESS-POINT")
1223
- self.setRModeGroupInAtomicSWCInstanceRef(child_element, "MODE-GROUP-IREF", point.getModeGroupIRef())
1224
-
1225
- def writeModeSwitchPoints(self, element: ET.Element, entity: RunnableEntity):
1385
+ if isinstance(point, ModeAccessPoint):
1386
+ self.writeModeAccessPoint(child_element, point)
1387
+ else:
1388
+ self.notImplemented("Unsupported Mode Access Points <%s>" % type(point))
1389
+
1390
+ def writeModeSwitchPointModeGroupIRef(self, element: ET.Element, point: ModeSwitchPoint):
1391
+ if point is not None:
1392
+ child_element = ET.SubElement(element, "MODE-GROUP-IREF")
1393
+ instance_ref = point.getModeGroupIRef()
1394
+ self.setChildElementOptionalRefType(child_element, "CONTEXT-P-PORT-REF", instance_ref.getContextPPortRef())
1395
+ self.setChildElementOptionalRefType(child_element, "TARGET-MODE-GROUP-REF", instance_ref.getTargetModeGroupRef())
1396
+
1397
+ def writeModeSwitchPoint(self, element: ET.Element, point: ModeSwitchPoint):
1398
+ if point is not None:
1399
+ child_element = ET.SubElement(element, "MODE-SWITCH-POINT")
1400
+ self.writeIdentifiable(child_element, point)
1401
+ self.writeModeSwitchPointModeGroupIRef(child_element, point)
1402
+
1403
+ def writeRunnableEntityModeSwitchPoints(self, element: ET.Element, entity: RunnableEntity):
1226
1404
  points = entity.getModeSwitchPoints()
1227
1405
  if len(points) > 0:
1228
- mode_access_points_tag = ET.SubElement(element, "MODE-SWITCH-POINTS")
1406
+ child_element = ET.SubElement(element, "MODE-SWITCH-POINTS")
1229
1407
  for point in points:
1230
- child_element = ET.SubElement(mode_access_points_tag, "MODE-SWITCH-POINT")
1231
- self.writeIdentifiable(child_element, point)
1232
- self.setPModeGroupInAtomicSWCInstanceRef(child_element, "MODE-GROUP-IREF", point.getModeGroupIRef())
1408
+ if isinstance(point, ModeSwitchPoint):
1409
+ self.writeModeSwitchPoint(child_element, point)
1410
+ else:
1411
+ self.notImplemented("unsupported Mode Switch Point <%s>" % type(point))
1233
1412
 
1234
1413
  def setRunnableEntityArgument(self, element: ET.Element, argument: RunnableEntityArgument):
1235
1414
  child_element = ET.SubElement(element, "RUNNABLE-ENTITY-ARGUMENT")
@@ -1245,7 +1424,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1245
1424
  else:
1246
1425
  self.notImplemented("Unsupported argument of Runnable Entity <%s>" % type(argument))
1247
1426
 
1248
- def writeAsynchronousServerCallResultPoint(self, element: ET.Element, entity: RunnableEntity):
1427
+ def writeRunnableEntityAsynchronousServerCallResultPoint(self, element: ET.Element, entity: RunnableEntity):
1249
1428
  points = entity.getAsynchronousServerCallResultPoints()
1250
1429
  if len(points) > 0:
1251
1430
  points_tag = ET.SubElement(element, "ASYNCHRONOUS-SERVER-CALL-RESULT-POINTS")
@@ -1257,23 +1436,23 @@ class ARXMLWriter(AbstractARXMLWriter):
1257
1436
  def writeRunnableEntity(self, element: ET.Element, entity: RunnableEntity):
1258
1437
  if entity is not None:
1259
1438
  child_element = ET.SubElement(element, "RUNNABLE-ENTITY")
1260
- self.setExecutableEntity(child_element, entity)
1439
+ self.writeExecutableEntity(child_element, entity)
1261
1440
  self.writeRunnableEntityArguments(child_element, entity)
1262
- self.writeAsynchronousServerCallResultPoint(child_element, entity)
1441
+ self.writeRunnableEntityAsynchronousServerCallResultPoint(child_element, entity)
1263
1442
  self.setChildElementOptionalBooleanValue(child_element, "CAN-BE-INVOKED-CONCURRENTLY", entity.getCanBeInvokedConcurrently())
1264
- self.writeDataReadAccesses(child_element, entity)
1265
- self.writeDataReceivePointByArguments(child_element, entity)
1266
- self.writeDataSendPoints(child_element, entity)
1267
- self.writeDataWriteAccesses(child_element, entity)
1268
- self.writeModeAccessPoints(child_element, entity)
1269
- self.writeModeSwitchPoints(child_element, entity)
1270
- self.writeParameterAccesses(child_element, entity)
1271
- self.writeReadLocalVariables(child_element, entity)
1272
- self.writeServerCallPoints(child_element, entity)
1443
+ self.writeRunnableEntityDataReadAccesses(child_element, entity)
1444
+ self.writeRunnableEntityDataReceivePointByArguments(child_element, entity)
1445
+ self.writeRunnableEntityDataSendPoints(child_element, entity)
1446
+ self.writeRunnableEntityDataWriteAccesses(child_element, entity)
1447
+ self.writeRunnableEntityModeAccessPoints(child_element, entity)
1448
+ self.writeRunnableEntityModeSwitchPoints(child_element, entity)
1449
+ self.writeRunnableEntityParameterAccesses(child_element, entity)
1450
+ self.writeRunnableEntityReadLocalVariables(child_element, entity)
1451
+ self.writeRunnableEntityServerCallPoints(child_element, entity)
1273
1452
  self.setChildElementOptionalLiteral(child_element, "SYMBOL", entity.symbol)
1274
- self.writeWrittenLocalVariable(child_element, entity)
1453
+ self.writeRunnableEntityWrittenLocalVariable(child_element, entity)
1275
1454
 
1276
- def writeSwcInternalBehaviorRunnableEntities(self, element: ET.Element, behavior: SwcInternalBehavior):
1455
+ def writeSwcInternalBehaviorRunnables(self, element: ET.Element, behavior: SwcInternalBehavior):
1277
1456
  entities = behavior.getRunnableEntities()
1278
1457
  if len(entities) > 0:
1279
1458
  runnables_tag = ET.SubElement(element, "RUNNABLES")
@@ -1291,9 +1470,9 @@ class ARXMLWriter(AbstractARXMLWriter):
1291
1470
  if isinstance(prototype, VariableDataPrototype):
1292
1471
  self.writeVariableDataPrototype(child_element, prototype)
1293
1472
  else:
1294
- self._raiseError("Unsupported ArTypedPerInstanceMemories <%s>" % type(prototype))
1295
-
1296
- def writeExplicitInterRunnableVariables(self, element: ET.Element, behavior: SwcInternalBehavior):
1473
+ self.notImplemented("Unsupported ArTypedPerInstanceMemories <%s>" % type(prototype))
1474
+
1475
+ def writeSwcInternalBehaviorExplicitInterRunnableVariables(self, element: ET.Element, behavior: SwcInternalBehavior):
1297
1476
  prototypes = behavior.getExplicitInterRunnableVariables()
1298
1477
  if len(prototypes) > 0:
1299
1478
  child_element = ET.SubElement(element, "EXPLICIT-INTER-RUNNABLE-VARIABLES")
@@ -1301,9 +1480,9 @@ class ARXMLWriter(AbstractARXMLWriter):
1301
1480
  if isinstance(prototype, VariableDataPrototype):
1302
1481
  self.writeVariableDataPrototype(child_element, prototype)
1303
1482
  else:
1304
- self._raiseError("Unsupported ExplicitInterRunnableVariables <%s>" % type(prototype))
1483
+ self.notImplemented("Unsupported ExplicitInterRunnableVariables <%s>" % type(prototype))
1305
1484
 
1306
- def writePerInstanceMemories(self, element: ET.Element, behavior: SwcInternalBehavior):
1485
+ def writeSwcInternalBehaviorPerInstanceMemories(self, element: ET.Element, behavior: SwcInternalBehavior):
1307
1486
  memories = behavior.getPerInstanceMemories()
1308
1487
  if len(memories) > 0:
1309
1488
  memories_tag = ET.SubElement(element, "PER-INSTANCE-MEMORYS")
@@ -1313,21 +1492,20 @@ class ARXMLWriter(AbstractARXMLWriter):
1313
1492
  self.setChildElementOptionalLiteral(child_element, "INIT-VALUE", memory.getInitValue())
1314
1493
  self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", memory.getSwDataDefProps())
1315
1494
  self.setChildElementOptionalLiteral(child_element, "TYPE", memory.getType())
1316
- self.setChildElementOptionalLiteral (child_element, "TYPE-DEFINITION", memory.getTypeDefinition())
1495
+ self.setChildElementOptionalLiteral(child_element, "TYPE-DEFINITION", memory.getTypeDefinition())
1317
1496
 
1318
- def setParameterDataPrototype(self, element: ET.Element, prototype: ParameterDataPrototype):
1497
+ def writeParameterDataPrototype(self, element: ET.Element, prototype: ParameterDataPrototype):
1319
1498
  child_element = ET.SubElement(element, "PARAMETER-DATA-PROTOTYPE")
1320
- self.writeIdentifiable(child_element, prototype)
1321
- self.setAutosarDataPrototype(child_element, prototype)
1499
+ self.writeAutosarDataPrototype(child_element, prototype)
1322
1500
  self.setValueSpecification(child_element, "INIT-VALUE", prototype.getInitValue())
1323
1501
 
1324
- def setParameterDataPrototypes(self, element: ET.Element, key: str, parameters: List[ParameterDataPrototype]):
1502
+ def writeSwcInternalBehaviorParameterDataPrototypes(self, element: ET.Element, key: str, parameters: List[ParameterDataPrototype]):
1325
1503
  if len(parameters) > 0:
1326
1504
  child_element = ET.SubElement(element, key)
1327
1505
  for parameter in parameters:
1328
- self.setParameterDataPrototype(child_element, parameter)
1506
+ self.writeParameterDataPrototype(child_element, parameter)
1329
1507
 
1330
- def writePortDefinedArgumentValues(self, element: ET.Element, argument_values: List[PortDefinedArgumentValue]) :
1508
+ def writePortDefinedArgumentValues(self, element: ET.Element, argument_values: List[PortDefinedArgumentValue]):
1331
1509
  if len(argument_values) > 0:
1332
1510
  child_element = ET.SubElement(element, "PORT-ARG-VALUES")
1333
1511
  for argument_value in argument_values:
@@ -1336,7 +1514,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1336
1514
  self.setValueSpecification(child_element, "VALUE", argument_value.getValue())
1337
1515
  self.setChildElementOptionalRefType(child_element, "VALUE-TYPE-TREF", argument_value.getValueTypeTRef())
1338
1516
 
1339
- def writePortAPIOptions(self, element: ET.Element, behavior: SwcInternalBehavior):
1517
+ def writeSwcInternalBehaviorPortAPIOptions(self, element: ET.Element, behavior: SwcInternalBehavior):
1340
1518
  options = behavior.getPortAPIOptions()
1341
1519
  if len(options) > 0:
1342
1520
  port_api_options_tag = ET.SubElement(element, "PORT-API-OPTIONS")
@@ -1361,7 +1539,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1361
1539
  if isinstance(data, RoleBasedDataTypeAssignment):
1362
1540
  self.writeRoleBasedDataTypeAssignment(child_element, data)
1363
1541
  else:
1364
- self._raiseError("Unsupported Assigned Data <%s>" % type(data))
1542
+ self.notImplemented("Unsupported Assigned Data <%s>" % type(data))
1365
1543
 
1366
1544
  def writeServiceDependency(self, element: ET.Element, dependency: ServiceDependency):
1367
1545
  self.writeIdentifiable(element, dependency)
@@ -1387,7 +1565,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1387
1565
  if isinstance(data, RoleBasedDataAssignment):
1388
1566
  self.writeRoleBasedDataAssignment(child_element, data)
1389
1567
  else:
1390
- self._raiseError("Unsupported Assigned Data <%s>" % type(data))
1568
+ self.notImplemented("Unsupported Assigned Data <%s>" % type(data))
1391
1569
 
1392
1570
  def writeSwcServiceDependencyAssignedPorts(self, element: ET.Element, dependency: SwcServiceDependency):
1393
1571
  assigned_data = dependency.getAssignedPorts()
@@ -1397,9 +1575,9 @@ class ARXMLWriter(AbstractARXMLWriter):
1397
1575
  if isinstance(data, RoleBasedPortAssignment):
1398
1576
  self.writeRoleBasedPortAssignment(child_element, data)
1399
1577
  else:
1400
- self._raiseError("Unsupported Assigned Data <%s>" % type(data))
1578
+ self.notImplemented("Unsupported Assigned Data <%s>" % type(data))
1401
1579
 
1402
- def setNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
1580
+ def writeNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
1403
1581
  child_element = ET.SubElement(element, "NV-BLOCK-NEEDS")
1404
1582
  self.logger.debug("write NvBlockNeeds %s" % needs.getShortName())
1405
1583
  self.writeIdentifiable(child_element, needs)
@@ -1423,23 +1601,26 @@ class ARXMLWriter(AbstractARXMLWriter):
1423
1601
  self.setChildElementOptionalPositiveInteger(child_element, "WRITING-FREQUENCY", needs.getWritingFrequency())
1424
1602
  self.setChildElementOptionalLiteral(child_element, "WRITING-PRIORITY", needs.getWritingPriority())
1425
1603
 
1426
- def setDiagnosticCommunicationManagerNeeds(self, element: ET.Element, needs: DiagnosticCommunicationManagerNeeds):
1604
+ def writeDiagnosticCapabilityElement(self, element: ET.Element, needs: DiagnosticCapabilityElement):
1605
+ self.writeIdentifiable(element, needs)
1606
+
1607
+ def writeDiagnosticCommunicationManagerNeeds(self, element: ET.Element, needs: DiagnosticCommunicationManagerNeeds):
1427
1608
  child_element = ET.SubElement(element, "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS")
1428
1609
  self.logger.debug("write DiagnosticCommunicationManagerNeeds %s" % needs.getShortName())
1429
- self.writeIdentifiable(child_element, needs)
1430
- self.setChildElementOptionalLiteral(child_element, "SERVICE-REQUEST-CALLBACK-TYPE", needs.getServiceRequestCallbackType())
1431
-
1432
- def setDiagnosticRoutineNeeds(self, element: ET.Element, needs: DiagnosticRoutineNeeds):
1610
+ self.writeDiagnosticCapabilityElement(child_element, needs)
1611
+ self.setChildElementOptionalLiteral(child_element, "SERVICE-REQUEST-CALLBACK-TYPE", needs.getServiceRequestCallbackType())
1612
+
1613
+ def writeDiagnosticRoutineNeeds(self, element: ET.Element, needs: DiagnosticRoutineNeeds):
1433
1614
  child_element = ET.SubElement(element, "DIAGNOSTIC-ROUTINE-NEEDS")
1434
1615
  self.logger.debug("write DiagnosticRoutineNeeds %s" % needs.getShortName())
1435
- self.writeIdentifiable(child_element, needs)
1616
+ self.writeDiagnosticCapabilityElement(child_element, needs)
1436
1617
  self.setChildElementOptionalLiteral(child_element, "DIAG-ROUTINE-TYPE", needs.getDiagRoutineType())
1437
1618
  self.setChildElementOptionalIntegerValue(child_element, "RID-NUMBER", needs.getRidNumber())
1438
1619
 
1439
- def setDiagnosticValueNeeds(self, element: ET.Element, needs: DiagnosticValueNeeds):
1620
+ def writeDiagnosticValueNeeds(self, element: ET.Element, needs: DiagnosticValueNeeds):
1440
1621
  child_element = ET.SubElement(element, "DIAGNOSTIC-VALUE-NEEDS")
1441
1622
  self.logger.debug("write DiagnosticValueNeeds %s" % needs.getShortName())
1442
- self.writeIdentifiable(child_element, needs)
1623
+ self.writeDiagnosticCapabilityElement(child_element, needs)
1443
1624
  self.setChildElementOptionalPositiveInteger(child_element, "DATA-LENGTH", needs.getDataLength())
1444
1625
  self.setChildElementOptionalLiteral(child_element, "DIAGNOSTIC-VALUE-ACCESS", needs.getDiagnosticValueAccess())
1445
1626
  self.setChildElementOptionalIntegerValue(child_element, "DID-NUMBER", needs.getDidNumber())
@@ -1448,8 +1629,8 @@ class ARXMLWriter(AbstractARXMLWriter):
1448
1629
 
1449
1630
  def setDiagEventDebounceMonitorInternal(self, element: ET.Element, algorithm: DiagEventDebounceMonitorInternal):
1450
1631
  child_element = ET.SubElement(element, "DIAG-EVENT-DEBOUNCE-MONITOR-INTERNAL")
1451
- self.writeIdentifiable(child_element, algorithm)
1452
-
1632
+ self.writeDiagnosticCapabilityElement(child_element, algorithm)
1633
+
1453
1634
  def writeDiagEventDebounceAlgorithm(self, element: ET.Element, needs: DiagnosticEventNeeds):
1454
1635
  algorithm = needs.getDiagEventDebounceAlgorithm()
1455
1636
  if algorithm is not None:
@@ -1459,54 +1640,63 @@ class ARXMLWriter(AbstractARXMLWriter):
1459
1640
  else:
1460
1641
  self.notImplemented("Unsupported DiagEventDebounceAlgorithm <%s>" % type(algorithm))
1461
1642
 
1462
- def setDiagnosticEventNeeds(self, element: ET.Element, needs: DiagnosticEventNeeds):
1643
+ def writeDiagnosticEventNeeds(self, element: ET.Element, needs: DiagnosticEventNeeds):
1644
+ # self.logger.debug("Write DiagnosticEventNeeds %s" % needs.getShortName())
1463
1645
  child_element = ET.SubElement(element, "DIAGNOSTIC-EVENT-NEEDS")
1464
- self.logger.debug("write DiagnosticEventNeeds %s" % needs.getShortName())
1465
- self.writeIdentifiable(child_element, needs)
1646
+ self.writeDiagnosticCapabilityElement(child_element, needs)
1466
1647
  self.writeDiagEventDebounceAlgorithm(child_element, needs)
1467
1648
  self.setChildElementOptionalLiteral(child_element, "DTC-KIND", needs.getDtcKind())
1468
1649
  self.setChildElementOptionalIntegerValue(child_element, "UDS-DTC-NUMBER", needs.getUdsDtcNumber())
1469
1650
 
1470
- def setDiagnosticEventInfoNeeds(self, element: ET.Element, needs: DiagnosticEventInfoNeeds):
1651
+ def writeDiagnosticEventInfoNeeds(self, element: ET.Element, needs: DiagnosticEventInfoNeeds):
1652
+ # self.logger.debug("Write DiagnosticEventNeeds %s" % needs.getShortName())
1471
1653
  child_element = ET.SubElement(element, "DIAGNOSTIC-EVENT-INFO-NEEDS")
1472
- self.logger.debug("write DiagnosticEventNeeds %s" % needs.getShortName())
1473
- self.writeIdentifiable(child_element, needs)
1654
+ self.writeDiagnosticCapabilityElement(child_element, needs)
1655
+ self.setChildElementOptionalLiteral(child_element, "DTC-KIND", needs.getDtcKind())
1474
1656
  self.setChildElementOptionalPositiveInteger(child_element, "UDS-DTC-NUMBER", needs.getUdsDtcNumber())
1475
-
1476
- def setCryptoServiceNeeds(self, element: ET.Element, needs: CryptoServiceNeeds):
1657
+
1658
+ def writeCryptoServiceNeeds(self, element: ET.Element, needs: CryptoServiceNeeds):
1659
+ # self.logger.debug("Write CryptoServiceNeeds %s" % needs.getShortName())
1477
1660
  child_element = ET.SubElement(element, "CRYPTO-SERVICE-NEEDS")
1478
- self.logger.debug("write CryptoServiceNeeds %s" % needs.getShortName())
1479
1661
  self.writeIdentifiable(child_element, needs)
1480
1662
  self.setChildElementOptionalPositiveInteger(child_element, "MAXIMUM-KEY-LENGTH", needs.getMaximumKeyLength())
1481
1663
 
1482
- def setEcuStateMgrUserNeeds(self, element: ET.Element, needs: EcuStateMgrUserNeeds):
1664
+ def writeEcuStateMgrUserNeeds(self, element: ET.Element, needs: EcuStateMgrUserNeeds):
1665
+ # self.logger.debug("write EcuStateMgrUserNeeds %s" % needs.getShortName())
1483
1666
  child_element = ET.SubElement(element, "ECU-STATE-MGR-USER-NEEDS")
1484
- self.logger.debug("write EcuStateMgrUserNeeds %s" % needs.getShortName())
1485
1667
  self.writeIdentifiable(child_element, needs)
1486
1668
 
1669
+ def writeDtcStatusChangeNotificationNeeds(self, element: ET.Element, needs: DtcStatusChangeNotificationNeeds):
1670
+ # self.logger.debug("Write DtcStatusChangeNotificationNeeds %s" % needs.getShortName())
1671
+ child_element = ET.SubElement(element, "DTC-STATUS-CHANGE-NOTIFICATION-NEEDS")
1672
+ self.writeDiagnosticCapabilityElement(child_element, needs)
1673
+ self.setChildElementOptionalLiteral(child_element, "DTC-FORMAT-TYPE", needs.getDtcFormatType())
1674
+
1487
1675
  def writeSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
1488
1676
  needs = parent.getServiceNeeds()
1489
1677
  if len(needs) > 0:
1490
1678
  child_element = ET.SubElement(element, "SERVICE-NEEDS")
1491
1679
  for need in needs:
1492
1680
  if isinstance(need, NvBlockNeeds):
1493
- self.setNvBlockNeeds(child_element, need)
1681
+ self.writeNvBlockNeeds(child_element, need)
1494
1682
  elif isinstance(need, DiagnosticCommunicationManagerNeeds):
1495
- self.setDiagnosticCommunicationManagerNeeds(child_element, need)
1683
+ self.writeDiagnosticCommunicationManagerNeeds(child_element, need)
1496
1684
  elif isinstance(need, DiagnosticRoutineNeeds):
1497
- self.setDiagnosticRoutineNeeds(child_element, need)
1685
+ self.writeDiagnosticRoutineNeeds(child_element, need)
1498
1686
  elif isinstance(need, DiagnosticValueNeeds):
1499
- self.setDiagnosticValueNeeds(child_element, need)
1687
+ self.writeDiagnosticValueNeeds(child_element, need)
1500
1688
  elif isinstance(need, DiagnosticEventNeeds):
1501
- self.setDiagnosticEventNeeds(child_element, need)
1689
+ self.writeDiagnosticEventNeeds(child_element, need)
1502
1690
  elif isinstance(need, DiagnosticEventInfoNeeds):
1503
- self.setDiagnosticEventInfoNeeds(child_element, need)
1691
+ self.writeDiagnosticEventInfoNeeds(child_element, need)
1504
1692
  elif isinstance(need, CryptoServiceNeeds):
1505
- self.setCryptoServiceNeeds(child_element, need)
1693
+ self.writeCryptoServiceNeeds(child_element, need)
1506
1694
  elif isinstance(need, EcuStateMgrUserNeeds):
1507
- self.setEcuStateMgrUserNeeds(child_element, need)
1695
+ self.writeEcuStateMgrUserNeeds(child_element, need)
1696
+ elif isinstance(need, DtcStatusChangeNotificationNeeds):
1697
+ self.writeDtcStatusChangeNotificationNeeds(child_element, need)
1508
1698
  else:
1509
- self.notImplemented("Unsupported service needs <%s>" % type(need))
1699
+ self.notImplemented("Unsupported service needs <%s>" % type(need))
1510
1700
 
1511
1701
  def writeSwcServiceDependency(self, element: ET.Element, dependency: SwcServiceDependency):
1512
1702
  child_element = ET.SubElement(element, "SWC-SERVICE-DEPENDENCY")
@@ -1523,7 +1713,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1523
1713
  if isinstance(dependency, SwcServiceDependency):
1524
1714
  self.writeSwcServiceDependency(child_element, dependency)
1525
1715
  else:
1526
- self._raiseError("Unsupported ServiceDependency <%s>" % type(dependency))
1716
+ self.notImplemented("Unsupported ServiceDependency <%s>" % type(dependency))
1527
1717
 
1528
1718
  def setIncludedDataTypeSets(self, element: ET.Element, sets: List[IncludedDataTypeSet]):
1529
1719
  if len(sets) > 0:
@@ -1537,23 +1727,43 @@ class ARXMLWriter(AbstractARXMLWriter):
1537
1727
  for type_ref in type_refs:
1538
1728
  self.setChildElementOptionalRefType(data_type_refs_tag, "DATA-TYPE-REF", type_ref)
1539
1729
 
1730
+ def writeIncludedModeDeclarationGroupSet(self, element: ET.Element, set: IncludedModeDeclarationGroupSet):
1731
+ if set is not None:
1732
+ child_element = ET.SubElement(element, "INCLUDED-MODE-DECLARATION-GROUP-SET")
1733
+ refs = set.getModeDeclarationGroupRefs()
1734
+ if len(refs) > 0:
1735
+ refs_tag = ET.SubElement(child_element, "MODE-DECLARATION-GROUP-REFS")
1736
+ for ref in refs:
1737
+ self.setChildElementOptionalRefType(refs_tag, "MODE-DECLARATION-GROUP-REF", ref)
1738
+ self.setChildElementOptionalLiteral(child_element, "PREFIX", set.getPrefix())
1739
+
1740
+ def writeSwcInternalBehaviorIncludedModeDeclarationGroupSets(self, element: ET.Element, behavior: SwcInternalBehavior):
1741
+ group_sets = behavior.getIncludedModeDeclarationGroupSets()
1742
+ if len(group_sets) > 0:
1743
+ child_element = ET.SubElement(element, "INCLUDED-MODE-DECLARATION-GROUP-SETS")
1744
+ for group_set in group_sets:
1745
+ if isinstance(group_set, IncludedModeDeclarationGroupSet):
1746
+ self.writeIncludedModeDeclarationGroupSet(child_element, group_set)
1747
+ else:
1748
+ self.notImplemented("Unsupported IncludedModeDeclarationGroupSet <%s>" % type(group_set))
1540
1749
 
1541
1750
  def writeSwcInternalBehavior(self, element: ET.Element, behavior: SwcInternalBehavior):
1542
1751
  self.logger.debug("writeSwInternalBehavior %s" % behavior.getShortName())
1543
-
1544
1752
  child_element = ET.SubElement(element, "SWC-INTERNAL-BEHAVIOR")
1545
1753
  self.writeInternalBehavior(child_element, behavior)
1754
+
1546
1755
  self.writeSwcInternalBehaviorArTypedPerInstanceMemories(child_element, behavior)
1547
- self.writeRTEEvents(child_element, behavior)
1548
- self.writeExplicitInterRunnableVariables(child_element, behavior)
1756
+ self.writeSwcInternalBehaviorEvents(child_element, behavior)
1757
+ self.writeSwcInternalBehaviorExplicitInterRunnableVariables(child_element, behavior)
1549
1758
  self.setChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART", behavior.getHandleTerminationAndRestart())
1550
1759
  self.setIncludedDataTypeSets(child_element, behavior.getIncludedDataTypeSets())
1551
- self.writePerInstanceMemories(child_element, behavior)
1552
- self.setParameterDataPrototypes(child_element, "PER-INSTANCE-PARAMETERS", behavior.getPerInstanceParameters())
1553
- self.writePortAPIOptions(child_element, behavior)
1554
- self.writeSwcInternalBehaviorRunnableEntities(child_element, behavior)
1760
+ self.writeSwcInternalBehaviorIncludedModeDeclarationGroupSets(child_element, behavior)
1761
+ self.writeSwcInternalBehaviorPerInstanceMemories(child_element, behavior)
1762
+ self.writeSwcInternalBehaviorParameterDataPrototypes(child_element, "PER-INSTANCE-PARAMETERS", behavior.getPerInstanceParameters())
1763
+ self.writeSwcInternalBehaviorPortAPIOptions(child_element, behavior)
1764
+ self.writeSwcInternalBehaviorRunnables(child_element, behavior)
1555
1765
  self.writeSwcInternalBehaviorServiceDependencies(child_element, behavior)
1556
- self.setParameterDataPrototypes(child_element, "SHARED-PARAMETERS", behavior.getSharedParameters())
1766
+ self.writeSwcInternalBehaviorParameterDataPrototypes(child_element, "SHARED-PARAMETERS", behavior.getSharedParameters())
1557
1767
  self.setChildElementOptionalBooleanValue(child_element, "SUPPORTS-MULTIPLE-INSTANTIATION", behavior.getSupportsMultipleInstantiation())
1558
1768
 
1559
1769
  def writeAtomicSwComponentTypeInternalBehaviors(self, element: ET.Element, behavior: InternalBehavior):
@@ -1562,7 +1772,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1562
1772
  if isinstance(behavior, SwcInternalBehavior):
1563
1773
  self.writeSwcInternalBehavior(behaviors_tag, behavior)
1564
1774
  else:
1565
- self._raiseError("Unsupported Internal Behaviors <%s>" % type(behavior))
1775
+ self.notImplemented("Unsupported Internal Behaviors <%s>" % type(behavior))
1566
1776
 
1567
1777
  def writeAtomicSwComponentType(self, element: ET.Element, sw_component: AtomicSwComponentType):
1568
1778
  self.writeSwComponentType(element, sw_component)
@@ -1584,8 +1794,8 @@ class ARXMLWriter(AbstractARXMLWriter):
1584
1794
  self.setChildElementOptionalLiteral(artifact_desc_tag, "SHORT-LABEL", artifact_desc.short_label)
1585
1795
  self.setChildElementOptionalLiteral(artifact_desc_tag, "CATEGORY", artifact_desc.category)
1586
1796
 
1587
- def setCode(self, element: ET.SubElement, code_desc: Code):
1588
- self.logger.debug("setCode %s" % code_desc.getShortName())
1797
+ def writeCode(self, element: ET.SubElement, code_desc: Code):
1798
+ # self.logger.debug("Write Code %s" % code_desc.getShortName())
1589
1799
  child_element = ET.SubElement(element, "CODE")
1590
1800
  self.writeIdentifiable(child_element, code_desc)
1591
1801
  self.writeArtifactDescriptor(child_element, code_desc)
@@ -1596,9 +1806,9 @@ class ARXMLWriter(AbstractARXMLWriter):
1596
1806
  child_element = ET.SubElement(element, "CODE-DESCRIPTORS")
1597
1807
  for desc in descs:
1598
1808
  if isinstance(desc, Code):
1599
- self.setCode(child_element, desc)
1809
+ self.writeCode(child_element, desc)
1600
1810
  else:
1601
- self._raiseError("Unsupported Code Descriptor <%s>" % type(desc))
1811
+ self.notImplemented("Unsupported Code Descriptor <%s>" % type(desc))
1602
1812
 
1603
1813
  def setMemorySectionOptions(self, element: ET.Element, options: List[ARLiteral]):
1604
1814
  if len(options) > 0:
@@ -1663,7 +1873,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1663
1873
  self.writeImplementation(child_element, impl)
1664
1874
  self.setChildElementOptionalRefType(child_element, "BEHAVIOR-REF", impl.getBehaviorRef())
1665
1875
 
1666
- def writeEndToEndDescriptionDataId(self, element: ET.Element, parent: EndToEndDescription):
1876
+ def writeEndToEndDescriptionDataIds(self, element: ET.Element, parent: EndToEndDescription):
1667
1877
  data_ids = parent.getDataIds()
1668
1878
  if len(data_ids) > 0:
1669
1879
  child_element = ET.SubElement(element, "DATA-IDS")
@@ -1673,24 +1883,28 @@ class ARXMLWriter(AbstractARXMLWriter):
1673
1883
  def setEndToEndDescription(self, element: ET.Element, key: str, desc: EndToEndDescription):
1674
1884
  if desc is not None:
1675
1885
  child_element = ET.SubElement(element, key)
1676
- self.setChildElementOptionalLiteral(child_element, "CATEGORY", desc.category)
1677
- self.writeEndToEndDescriptionDataId(child_element, desc)
1678
- self.setChildElementOptionalNumericalValue(child_element, "DATA-ID-MODE", desc.getDataIdMode())
1679
- self.setChildElementOptionalNumericalValue(child_element, "MAX-DELTA-COUNTER-INIT", desc.getMaxDeltaCounterInit())
1680
- self.setChildElementOptionalNumericalValue(child_element, "CRC-OFFSET", desc.getCrcOffset())
1681
- self.setChildElementOptionalNumericalValue(child_element, "COUNTER-OFFSET", desc.getCounterOffset())
1682
-
1683
- def setVariableDataPrototypeInSystemInstanceRef(self, element: ET.Element, key: str, iref: VariableDataPrototypeInSystemInstanceRef):
1684
- if iref is not None:
1886
+ self.writeARObjectAttributes(child_element, desc)
1887
+ self.setChildElementOptionalLiteral(child_element, "CATEGORY", desc.getCategory())
1888
+ self.writeEndToEndDescriptionDataIds(child_element, desc)
1889
+ self.setChildElementOptionalPositiveInteger(child_element, "DATA-ID-MODE", desc.getDataIdMode())
1890
+ self.setChildElementOptionalPositiveInteger(child_element, "DATA-LENGTH", desc.getDataLength())
1891
+ self.setChildElementOptionalPositiveInteger(child_element, "MAX-DELTA-COUNTER-INIT", desc.getMaxDeltaCounterInit())
1892
+ self.setChildElementOptionalPositiveInteger(child_element, "CRC-OFFSET", desc.getCrcOffset())
1893
+ self.setChildElementOptionalPositiveInteger(child_element, "COUNTER-OFFSET", desc.getCounterOffset())
1894
+
1895
+ def setVariableDataPrototypeInSystemInstanceRef(self, element: ET.Element, key: str, instance_ref: VariableDataPrototypeInSystemInstanceRef):
1896
+ if instance_ref is not None:
1685
1897
  child_element = ET.SubElement(element, key)
1686
- #self.setChildElementOptionalRefType(child_element, "CONTEXT-COMPONENT-REF", iref.getContextComponentRefs()) # TODO
1687
- self.setChildElementOptionalRefType(child_element, "CONTEXT-COMPOSITION-REF", iref.getContextCompositionRef())
1688
- self.setChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF", iref.getContextPortRef())
1689
- self.setChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF", iref.getTargetDataPrototypeRef())
1898
+ for ref in instance_ref.getContextComponentRefs():
1899
+ self.setChildElementOptionalRefType(child_element, "CONTEXT-COMPONENT-REF", ref)
1900
+ self.setChildElementOptionalRefType(child_element, "CONTEXT-COMPOSITION-REF", instance_ref.getContextCompositionRef())
1901
+ self.setChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF", instance_ref.getContextPortRef())
1902
+ self.setChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF", instance_ref.getTargetDataPrototypeRef())
1690
1903
 
1691
- def setEndToEndProtectionVariablePrototype(self, element: ET.Element, key: str, prototype: EndToEndProtectionVariablePrototype):
1904
+ def writeEndToEndProtectionVariablePrototype(self, element: ET.Element, prototype: EndToEndProtectionVariablePrototype):
1692
1905
  if prototype is not None:
1693
- child_element = ET.SubElement(element, key)
1906
+ child_element = ET.SubElement(element, "END-TO-END-PROTECTION-VARIABLE-PROTOTYPE")
1907
+ self.writeARObjectAttributes(child_element, prototype)
1694
1908
  irefs = prototype.getReceiverIrefs()
1695
1909
  if len(irefs) > 0:
1696
1910
  child_element = ET.SubElement(child_element, "RECEIVER-IREFS")
@@ -1698,22 +1912,40 @@ class ARXMLWriter(AbstractARXMLWriter):
1698
1912
  self.setVariableDataPrototypeInSystemInstanceRef(child_element, "RECEIVER-IREF", iref)
1699
1913
  self.setVariableDataPrototypeInSystemInstanceRef(child_element, "SENDER-IREF", prototype.senderIRef)
1700
1914
 
1701
- def writeEndToEndProtectionVariablePrototypes(self, element: ET.Element, parent: EndToEndProtection):
1702
- prototypes = parent.getEndToEndProtectionVariablePrototypes()
1915
+ def writeEndToEndProtectionEndToEndProtectionVariablePrototypes(self, element: ET.Element, protection: EndToEndProtection):
1916
+ prototypes = protection.getEndToEndProtectionVariablePrototypes()
1703
1917
  if len(prototypes) > 0:
1704
1918
  child_element = ET.SubElement(element, "END-TO-END-PROTECTION-VARIABLE-PROTOTYPES")
1705
1919
  for prototype in prototypes:
1706
1920
  if isinstance(prototype, EndToEndProtectionVariablePrototype):
1707
- self.setEndToEndProtectionVariablePrototype(child_element, "END-TO-END-PROTECTION-VARIABLE-PROTOTYPE", prototype)
1921
+ self.writeEndToEndProtectionVariablePrototype(child_element, prototype)
1708
1922
  else:
1709
- self._raiseError("Unsupported End To End Protection Variable Prototype <%s>" % type(prototype))
1923
+ self.notImplemented("Unsupported End To End Protection Variable Prototype <%s>" % type(prototype))
1924
+
1925
+ def writeEndToEndProtectionISignalIPdu(self, element: ET.Element, ipdu: EndToEndProtectionISignalIPdu):
1926
+ if ipdu is not None:
1927
+ child_element = ET.SubElement(element, "END-TO-END-PROTECTION-I-SIGNAL-I-PDU")
1928
+ self.setChildElementOptionalIntegerValue(child_element, "DATA-OFFSET", ipdu.getDataOffset())
1929
+ self.setChildElementOptionalRefType(child_element, "I-SIGNAL-GROUP-REF", ipdu.getISignalGroupRef())
1930
+ self.setChildElementOptionalRefType(child_element, "I-SIGNAL-I-PDU-REF", ipdu.getISignalIPduRef())
1931
+
1932
+ def writeEndToEndProtectionEndToEndProtectionISignalIPdus(self, element: ET.Element, protection: EndToEndProtection):
1933
+ ipdus = protection.getEndToEndProtectionISignalIPdus()
1934
+ if len(ipdus) > 0:
1935
+ child_element = ET.SubElement(element, "END-TO-END-PROTECTION-I-SIGNAL-I-PDUS")
1936
+ for ipdu in ipdus:
1937
+ if isinstance(ipdu, EndToEndProtectionISignalIPdu):
1938
+ self.writeEndToEndProtectionISignalIPdu(child_element, ipdu)
1939
+ else:
1940
+ self.notImplemented("Unsupported EndToEndProtectionISignalIPdu <%s>" % type(ipdu))
1710
1941
 
1711
- def setEndToEndProtection(self, element: ET.Element, protection: EndToEndProtection):
1942
+ def writeEndToEndProtection(self, element: ET.Element, protection: EndToEndProtection):
1712
1943
  if protection is not None:
1713
1944
  child_element = ET.SubElement(element, "END-TO-END-PROTECTION")
1714
1945
  self.writeIdentifiable(child_element, protection)
1715
- self.setEndToEndDescription(child_element, "END-TO-END-PROFILE", protection.endToEndProfile)
1716
- self.writeEndToEndProtectionVariablePrototypes(child_element, protection)
1946
+ self.setEndToEndDescription(child_element, "END-TO-END-PROFILE", protection.getEndToEndProfile())
1947
+ self.writeEndToEndProtectionEndToEndProtectionISignalIPdus(child_element, protection)
1948
+ self.writeEndToEndProtectionEndToEndProtectionVariablePrototypes(child_element, protection)
1717
1949
 
1718
1950
  def writeEndToEndProtections(self, element: ET.Element, protection_set: EndToEndProtectionSet):
1719
1951
  protections = protection_set.getEndToEndProtections()
@@ -1721,7 +1953,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1721
1953
  child_element = ET.SubElement(element, "END-TO-END-PROTECTIONS")
1722
1954
  for protection in protections:
1723
1955
  if isinstance(protection, EndToEndProtection):
1724
- self.setEndToEndProtection(child_element, protection)
1956
+ self.writeEndToEndProtection(child_element, protection)
1725
1957
 
1726
1958
  def writeEndToEndProtectionSet(self, element: ET.Element, protection_set: EndToEndProtectionSet):
1727
1959
  self.logger.debug("writeEndToEndProtectionSet %s" % protection_set.getShortName())
@@ -1729,15 +1961,14 @@ class ARXMLWriter(AbstractARXMLWriter):
1729
1961
  self.writeIdentifiable(child_element, protection_set)
1730
1962
  self.writeEndToEndProtections(child_element, protection_set)
1731
1963
 
1732
- def setAutosarDataPrototype(self, element: ET.Element, prototype: AutosarDataPrototype):
1733
- self.setDataPrototype(element, prototype)
1964
+ def writeAutosarDataPrototype(self, element: ET.Element, prototype: AutosarDataPrototype):
1965
+ self.writeDataPrototype(element, prototype)
1734
1966
  self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.typeTRef)
1735
1967
 
1736
1968
  def writeVariableDataPrototype(self, element: ET.Element, prototype: VariableDataPrototype):
1737
1969
  self.logger.debug("writeVariableDataPrototype %s" % prototype.getShortName())
1738
1970
  child_element = ET.SubElement(element, "VARIABLE-DATA-PROTOTYPE")
1739
- self.writeIdentifiable(child_element, prototype)
1740
- self.setAutosarDataPrototype(child_element, prototype)
1971
+ self.writeAutosarDataPrototype(child_element, prototype)
1741
1972
  self.setValueSpecification(child_element, "INIT-VALUE", prototype.getInitValue())
1742
1973
 
1743
1974
  def writeSenderReceiverInterfaceDataElements(self, element: ET.Element, sr_interface: SenderReceiverInterface):
@@ -1748,7 +1979,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1748
1979
  if isinstance(data_element, VariableDataPrototype):
1749
1980
  self.writeVariableDataPrototype(data_elements_tag, data_element)
1750
1981
  else:
1751
- self._raiseError("Unsupported Data Element <%s>" % type(data_element))
1982
+ self.notImplemented("Unsupported Data Element <%s>" % type(data_element))
1752
1983
 
1753
1984
  def writeSenderReceiverInterfaceInvalidationPolicies(self, element: ET.Element, sr_interface: SenderReceiverInterface):
1754
1985
  policies = sr_interface.getInvalidationPolicies()
@@ -1767,25 +1998,38 @@ class ARXMLWriter(AbstractARXMLWriter):
1767
1998
  self.writeSenderReceiverInterfaceDataElements(child_element, sr_interface)
1768
1999
  self.writeSenderReceiverInterfaceInvalidationPolicies(child_element, sr_interface)
1769
2000
 
1770
- def writerBswModuleDescriptionImplementedEntry(self, element: ET.Element, desc: BswModuleDescription):
1771
- entries = desc.getImplementedEntries()
1772
- if len(entries) > 0:
2001
+ def writeBswModuleDescriptionImplementedEntryRefs(self, element: ET.Element, desc: BswModuleDescription):
2002
+ refs = desc.getImplementedEntryRefs()
2003
+ if len(refs) > 0:
1773
2004
  entries_tag = ET.SubElement(element, "PROVIDED-ENTRYS")
1774
- for entry in entries:
2005
+ for ref in refs:
1775
2006
  entry_tag = ET.SubElement(entries_tag, "BSW-MODULE-ENTRY-REF-CONDITIONAL")
1776
- self.setChildElementOptionalRefType(entry_tag, "BSW-MODULE-ENTRY-REF", entry)
2007
+ self.setChildElementOptionalRefType(entry_tag, "BSW-MODULE-ENTRY-REF", ref)
1777
2008
 
1778
- def setModeDeclarationGroupPrototype(self, element: ET.Element, prototype: ModeDeclarationGroupPrototype):
1779
- self.writeIdentifiable(element, prototype)
1780
- self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.type_tref)
2009
+ def writeModeDeclarationGroupPrototype(self, element: ET.Element, prototype: ModeDeclarationGroupPrototype):
2010
+ child_element = ET.SubElement(element, "MODE-DECLARATION-GROUP-PROTOTYPE")
2011
+ self.writeIdentifiable(child_element, prototype)
2012
+ self.setChildElementOptionalRefType(child_element, "TYPE-TREF", prototype.getTypeTRef())
1781
2013
 
1782
- def writeProvidedModeGroup(self, element: ET.Element, parent: BswModuleDescription):
2014
+ def writeBswModuleDescriptionProvidedModeGroups(self, element: ET.Element, parent: BswModuleDescription):
1783
2015
  mode_groups = parent.getProvidedModeGroups()
1784
2016
  if len(mode_groups) > 0:
1785
- mode_groups_tag = ET.SubElement(element, "PROVIDED-MODE-GROUPS")
2017
+ child_element = ET.SubElement(element, "PROVIDED-MODE-GROUPS")
2018
+ for mode_group in mode_groups:
2019
+ if isinstance(mode_group, ModeDeclarationGroupPrototype):
2020
+ self.writeModeDeclarationGroupPrototype(child_element, mode_group)
2021
+ else:
2022
+ self.notImplemented("Unsupported ProvidedModeGroup <%s>" % type(mode_group))
2023
+
2024
+ def writeBswModuleDescriptionRequiredModeGroups(self, element: ET.Element, desc: BswModuleDescription):
2025
+ mode_groups = desc.getRequiredModeGroups()
2026
+ if len(mode_groups) > 0:
2027
+ child_element = ET.SubElement(element, "REQUIRED-MODE-GROUPS")
1786
2028
  for mode_group in mode_groups:
1787
- child_element = ET.SubElement(mode_groups_tag, "MODE-DECLARATION-GROUP-PROTOTYPE")
1788
- self.setModeDeclarationGroupPrototype(child_element, mode_group)
2029
+ if isinstance(mode_group, ModeDeclarationGroupPrototype):
2030
+ self.writeModeDeclarationGroupPrototype(child_element, mode_group)
2031
+ else:
2032
+ self.notImplemented("Unsupported ProvidedModeGroup <%s>" % type(mode_group))
1789
2033
 
1790
2034
  def writeCanEnterExclusiveAreaRefs(self, element: ET.Element, entity: ExecutableEntity):
1791
2035
  refs = entity.getCanEnterExclusiveAreaRefs()
@@ -1794,13 +2038,13 @@ class ARXMLWriter(AbstractARXMLWriter):
1794
2038
  for ref in refs:
1795
2039
  self.setChildElementOptionalRefType(child_element, "CAN-ENTER-EXCLUSIVE-AREA-REF", ref)
1796
2040
 
1797
- def setExecutableEntity(self, element: ET.Element, entity: ExecutableEntity):
2041
+ def writeExecutableEntity(self, element: ET.Element, entity: ExecutableEntity):
1798
2042
  self.writeIdentifiable(element, entity)
1799
2043
  self.writeCanEnterExclusiveAreaRefs(element, entity)
1800
2044
  self.setChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL", entity.getMinimumStartInterval())
1801
2045
  self.setChildElementOptionalRefType(element, "SW-ADDR-METHOD-REF", entity.getSwAddrMethodRef())
1802
2046
 
1803
- def writeBswModuleEntityManagedModeGroup(self, element: ET.Element, entity: BswModuleEntity):
2047
+ def writeBswModuleEntityManagedModeGroups(self, element: ET.Element, entity: BswModuleEntity):
1804
2048
  mode_group_refs = entity.getManagedModeGroupRefs()
1805
2049
  if len(mode_group_refs) > 0:
1806
2050
  mode_groups_tag = ET.SubElement(element, "MANAGED-MODE-GROUPS")
@@ -1808,48 +2052,113 @@ class ARXMLWriter(AbstractARXMLWriter):
1808
2052
  child_element = ET.SubElement(mode_groups_tag, "MODE-DECLARATION-GROUP-PROTOTYPE-REF-CONDITIONAL")
1809
2053
  self.setChildElementOptionalRefType(child_element, "MODE-DECLARATION-GROUP-PROTOTYPE-REF", mode_group_ref)
1810
2054
 
1811
- def setBswModuleEntity(self, element: ET.Element, entity: BswModuleEntity):
1812
- self.setExecutableEntity(element, entity)
2055
+ def writeBswVariableAccess(self, element: ET.Element, access: BswVariableAccess):
2056
+ if access is not None:
2057
+ child_element = ET.SubElement(element, "BSW-VARIABLE-ACCESS")
2058
+ self.writeReferrable(child_element, access)
2059
+ self.setChildElementOptionalRefType(child_element, "ACCESSED-VARIABLE-REF", access.getAccessedVariableRef())
2060
+
2061
+ def writeBswModuleEntityDataSendPoints(self, element: ET.Element, entity: BswModuleEntity):
2062
+ points = entity.getDataSendPoints()
2063
+ if len(points) > 0:
2064
+ child_element = ET.SubElement(element, "DATA-SEND-POINTS")
2065
+ for point in points:
2066
+ if isinstance(point, BswVariableAccess):
2067
+ self.writeBswVariableAccess(child_element, point)
2068
+ else:
2069
+ self.notImplemented("Unsupported Data Send Point <%s>" % type(point))
2070
+
2071
+ def writeBswModuleEntityDataReceivePoints(self, element: ET.Element, entity: BswModuleEntity):
2072
+ points = entity.getDataReceivePoints()
2073
+ if len(points) > 0:
2074
+ child_element = ET.SubElement(element, "DATA-RECEIVE-POINTS")
2075
+ for point in points:
2076
+ if isinstance(point, BswVariableAccess):
2077
+ self.writeBswVariableAccess(child_element, point)
2078
+ else:
2079
+ self.notImplemented("Unsupported Data Receive Point <%s>" % type(point))
2080
+
2081
+ def writeBswModuleEntityIssuedTriggerRefs(self, element: ET.Element, entity: BswModuleEntity):
2082
+ refs = entity.getIssuedTriggerRefs()
2083
+ if len(refs) > 0:
2084
+ child_element = ET.SubElement(element, "ISSUED-TRIGGERS")
2085
+ for ref in refs:
2086
+ cond_tag = ET.SubElement(child_element, "TRIGGER-REF-CONDITIONAL")
2087
+ self.setChildElementOptionalRefType(cond_tag, "TRIGGER-REF", ref)
2088
+
2089
+ def writeBswModuleEntityActivationPointRefs(self, element: ET.Element, entity: BswModuleEntity):
2090
+ refs = entity.getActivationPointRefs()
2091
+ if len(refs) > 0:
2092
+ child_element = ET.SubElement(element, "ACTIVATION-POINTS")
2093
+ for ref in refs:
2094
+ cond_tag = ET.SubElement(child_element, "BSW-INTERNAL-TRIGGERING-POINT-REF-CONDITIONAL")
2095
+ self.setChildElementOptionalRefType(cond_tag, "BSW-INTERNAL-TRIGGERING-POINT-REF", ref)
2096
+
2097
+ def writeBswModuleCallPoint(self, element: ET.Element, point: BswModuleCallPoint):
2098
+ self.writeReferrable(element, point)
2099
+
2100
+ def writeBswAsynchronousServerCallPoint(self, element: ET.Element, point: BswAsynchronousServerCallPoint):
2101
+ child_element = ET.SubElement(element, "BSW-ASYNCHRONOUS-SERVER-CALL-POINT")
2102
+ self.writeBswModuleCallPoint(child_element, point)
2103
+ self.setChildElementOptionalRefType(child_element, "CALLED-ENTRY-REF", point.getCalledEntryRef())
2104
+
2105
+ def writeBswModuleEntityCallPoints(self, element: ET.Element, entity: BswModuleEntity):
2106
+ points = entity.getCallPoints()
2107
+ if len(points) > 0:
2108
+ child_element = ET.SubElement(element, "CALL-POINTS")
2109
+ for point in points:
2110
+ if isinstance(point, BswAsynchronousServerCallPoint):
2111
+ self.writeBswAsynchronousServerCallPoint(child_element, point)
2112
+ else:
2113
+ self.notImplemented("Unsupported Call Point <%s>" % type(point))
2114
+
2115
+ def writeBswModuleEntity(self, element: ET.Element, entity: BswModuleEntity):
2116
+ self.writeExecutableEntity(element, entity)
2117
+ self.writeBswModuleEntityActivationPointRefs(element, entity)
2118
+ self.writeBswModuleEntityCallPoints(element, entity)
2119
+ self.writeBswModuleEntityDataSendPoints(element, entity)
2120
+ self.writeBswModuleEntityDataReceivePoints(element, entity)
1813
2121
  self.setChildElementOptionalRefType(element, "IMPLEMENTED-ENTRY-REF", entity.implementedEntryRef)
1814
- self.writeBswModuleEntityManagedModeGroup(element, entity)
2122
+ self.writeBswModuleEntityManagedModeGroups(element, entity)
2123
+ self.writeBswModuleEntityIssuedTriggerRefs(element, entity)
1815
2124
 
1816
- def setBswCalledEntity(self, element: ET.Element, entity: BswCalledEntity):
1817
- self.logger.debug("setBswCalledEntity %s" % entity.getShortName())
2125
+ def writeBswCalledEntity(self, element: ET.Element, entity: BswCalledEntity):
2126
+ self.logger.debug("Write BswCalledEntity <%s>" % entity.getShortName())
1818
2127
  child_element = ET.SubElement(element, "BSW-CALLED-ENTITY")
1819
- self.setBswModuleEntity(child_element, entity)
2128
+ self.writeBswModuleEntity(child_element, entity)
1820
2129
 
1821
- def setBswSchedulableEntity(self, element: ET.Element, entity: BswSchedulableEntity):
1822
- self.logger.debug("set BswSchedulableEntity %s" % entity.getShortName())
2130
+ def writeBswSchedulableEntity(self, element: ET.Element, entity: BswSchedulableEntity):
2131
+ self.logger.debug("Write BswSchedulableEntity <%s>" % entity.getShortName())
1823
2132
  child_element = ET.SubElement(element, "BSW-SCHEDULABLE-ENTITY")
1824
- self.setBswModuleEntity(child_element, entity)
2133
+ self.writeBswModuleEntity(child_element, entity)
1825
2134
 
1826
2135
  def setBswInterruptEntity(self, element: ET.Element, entity: BswInterruptEntity):
1827
- self.logger.debug("read BswInterruptEntity %s" % entity.getShortName())
2136
+ self.logger.debug("Write BswInterruptEntity <%s>" % entity.getShortName())
1828
2137
  child_element = ET.SubElement(element, "BSW-INTERRUPT-ENTITY")
1829
- self.setBswModuleEntity(child_element, entity)
2138
+ self.writeBswModuleEntity(child_element, entity)
1830
2139
  self.setChildElementOptionalLiteral(child_element, "INTERRUPT-CATEGORY", entity.getInterruptCategory())
1831
2140
  self.setChildElementOptionalLiteral(child_element, "INTERRUPT-SOURCE", entity.getInterruptSource())
1832
2141
 
1833
- def writeBswInternalBehaviorBswModuleEntities(self, element: ET.Element, parent: BswInternalBehavior):
1834
- entities = parent.getBswModuleEntities()
2142
+ def writeBswInternalBehaviorEntities(self, element: ET.Element, parent: BswInternalBehavior):
2143
+ entities = parent.getBswModuleEntities()
1835
2144
  if len(entities) > 0:
1836
2145
  child_element = ET.SubElement(element, "ENTITYS")
1837
2146
  for entity in entities:
1838
2147
  if isinstance(entity, BswCalledEntity):
1839
- self.setBswCalledEntity(child_element, entity)
2148
+ self.writeBswCalledEntity(child_element, entity)
1840
2149
  elif isinstance(entity, BswSchedulableEntity):
1841
- self.setBswSchedulableEntity(child_element, entity)
2150
+ self.writeBswSchedulableEntity(child_element, entity)
1842
2151
  elif isinstance(entity, BswInterruptEntity):
1843
2152
  self.setBswInterruptEntity(child_element, entity)
1844
2153
  else:
1845
2154
  self.notImplemented("Unsupported BswModuleEntity <%s>" % type(entity))
1846
2155
 
1847
- def setBswEvent(self, element: ET.Element, event: BswEvent):
2156
+ def writeBswEvent(self, element: ET.Element, event: BswEvent):
1848
2157
  self.writeIdentifiable(element, event)
1849
2158
  self.setChildElementOptionalRefType(element, "STARTS-ON-EVENT-REF", event.startsOnEventRef)
1850
2159
 
1851
2160
  def writeBswScheduleEvent(self, element: ET.Element, event: BswScheduleEvent):
1852
- self.setBswEvent(element, event)
2161
+ self.writeBswEvent(element, event)
1853
2162
 
1854
2163
  def writeBswTimingEvent(self, element: ET.Element, event: BswTimingEvent):
1855
2164
  self.logger.debug("Write BswTimingEvent <%s>" % event.getShortName())
@@ -1862,20 +2171,33 @@ class ARXMLWriter(AbstractARXMLWriter):
1862
2171
  child_element = ET.SubElement(element, "BSW-BACKGROUND-EVENT")
1863
2172
  self.writeBswScheduleEvent(child_element, event)
1864
2173
 
2174
+ def writeBswInternalTriggerOccurredEvent(self, element: ET.Element, event: BswInternalTriggerOccurredEvent):
2175
+ self.logger.debug("Write BswInternalTriggerOccurredEvent <%s>" % event.getShortName())
2176
+ child_element = ET.SubElement(element, "BSW-INTERNAL-TRIGGER-OCCURRED-EVENT")
2177
+ self.writeBswScheduleEvent(child_element, event)
2178
+ self.setChildElementOptionalRefType(child_element, "EVENT-SOURCE-REF", event.getEventSourceRef())
2179
+
1865
2180
  def writeBswExternalTriggerOccurredEvent(self, element: ET.Element, event: BswExternalTriggerOccurredEvent):
1866
- self.logger.debug("Write BswExternalTriggerOccurredEvent %s" % event.getShortName())
2181
+ self.logger.debug("Write BswExternalTriggerOccurredEvent <%s>" % event.getShortName())
1867
2182
  child_element = ET.SubElement(element, "BSW-EXTERNAL-TRIGGER-OCCURRED-EVENT")
1868
2183
  self.writeBswScheduleEvent(child_element, event)
1869
2184
  self.setChildElementOptionalRefType(child_element, "TRIGGER-REF", event.getTriggerRef())
1870
2185
 
1871
2186
  def writeBswDataReceivedEvent(self, element: ET.Element, event: BswDataReceivedEvent):
1872
- self.logger.debug("Write BswDataReceivedEvent %s" % event.getShortName())
2187
+ self.logger.debug("Write BswDataReceivedEvent <%s>" % event.getShortName())
1873
2188
  # Read the Inherit BswScheduleEvent
1874
2189
  child_element = ET.SubElement(element, "BSW-DATA-RECEIVED-EVENT")
1875
2190
  self.writeBswScheduleEvent(child_element, event)
1876
2191
  self.setChildElementOptionalRefType(child_element, "DATA-REF", event.getDataRef())
1877
2192
 
1878
- def writeBswInternalBehaviorBswEvents(self, element: ET.Element, parent: BswInternalBehavior):
2193
+ def writeBswOperationInvokedEvent(self, element: ET.Element, event: BswOperationInvokedEvent):
2194
+ self.logger.debug("Write BswOperationInvokedEvent <%s>" % event.getShortName())
2195
+ # Read the Inherit BswScheduleEvent
2196
+ child_element = ET.SubElement(element, "BSW-OPERATION-INVOKED-EVENT")
2197
+ self.writeBswEvent(child_element, event)
2198
+ self.setChildElementOptionalRefType(child_element, "ENTRY-REF", event.getEntryRef())
2199
+
2200
+ def writeBswInternalBehaviorEvents(self, element: ET.Element, parent: BswInternalBehavior):
1879
2201
  events = parent.getBswEvents()
1880
2202
  if len(events) > 0:
1881
2203
  child_element = ET.SubElement(element, "EVENTS")
@@ -1884,12 +2206,16 @@ class ARXMLWriter(AbstractARXMLWriter):
1884
2206
  self.writeBswTimingEvent(child_element, event)
1885
2207
  elif isinstance(event, BswBackgroundEvent):
1886
2208
  self.writeBswBackgroundEvent(child_element, event)
2209
+ elif isinstance(event, BswInternalTriggerOccurredEvent):
2210
+ self.writeBswInternalTriggerOccurredEvent(child_element, event)
1887
2211
  elif isinstance(event, BswExternalTriggerOccurredEvent):
1888
2212
  self.writeBswExternalTriggerOccurredEvent(child_element, event)
1889
2213
  elif isinstance(event, BswDataReceivedEvent):
1890
2214
  self.writeBswDataReceivedEvent(child_element, event)
2215
+ elif isinstance(event, BswOperationInvokedEvent):
2216
+ self.writeBswOperationInvokedEvent(child_element, event)
1891
2217
  else:
1892
- self._raiseError("Unsupported BswModuleEntity <%s>" % type(event))
2218
+ self.notImplemented("Unsupported BswModuleEntity <%s>" % type(event))
1893
2219
 
1894
2220
  def setBswModeSenderPolicy(self, element: ET.Element, policy: BswModeSenderPolicy):
1895
2221
  child_element = ET.SubElement(element, "BSW-MODE-SENDER-POLICY")
@@ -1904,52 +2230,158 @@ class ARXMLWriter(AbstractARXMLWriter):
1904
2230
  if isinstance(policy, BswModeSenderPolicy):
1905
2231
  self.setBswModeSenderPolicy(child_element, policy)
1906
2232
  else:
1907
- self._raiseError("Unsupported ModeSenderPolicy type <%s>." % type(policy))
1908
-
1909
- def setIncludedModeDeclarationGroupSet(self, element: ET.Element, group_set: IncludedModeDeclarationGroupSet):
1910
- child_element = ET.SubElement(element, "INCLUDED-MODE-DECLARATION-GROUP-SET")
2233
+ self.notImplemented("Unsupported ModeSenderPolicy type <%s>." % type(policy))
1911
2234
 
1912
2235
  def writeBswInternalBehaviorIncludedModeDeclarationGroupSets(self, element: ET.Element, behavior: BswInternalBehavior):
1913
2236
  group_sets = behavior.getIncludedModeDeclarationGroupSets()
1914
2237
  if len(group_sets) > 0:
1915
2238
  child_element = ET.SubElement(element, "INCLUDED-MODE-DECLARATION-GROUP-SETS")
1916
2239
  for group_set in group_sets:
1917
- self.setIncludedModeDeclarationGroupSet(child_element, group_set)
2240
+ self.writeIncludedModeDeclarationGroupSet(child_element, group_set)
2241
+
2242
+ def writeBswApiOptions(self, element: ET.Element, options: BswApiOptions):
2243
+ self.writeARObjectAttributes(element, options)
2244
+ self.setChildElementOptionalBooleanValue(element, "ENABLE-TAKE-ADDRESS", options.getEnableTakeAddress())
2245
+
2246
+ def writeBswDataReceptionPolicy(self, element: ET.Element, policy: BswDataReceptionPolicy):
2247
+ self.writeBswApiOptions(element, policy)
2248
+ self.setChildElementOptionalRefType(element, "RECEIVED-DATA-REF", policy.getReceivedDataRef())
2249
+
2250
+ def writeBswQueuedDataReceptionPolicy(self, element: ET.Element, policy: BswQueuedDataReceptionPolicy):
2251
+ child_element = ET.SubElement(element, "BSW-QUEUED-DATA-RECEPTION-POLICY")
2252
+ self.writeBswDataReceptionPolicy(child_element, policy)
2253
+ self.setChildElementOptionalPositiveInteger(child_element, "QUEUE-LENGTH", policy.getQueueLength())
2254
+
2255
+ def writeBswInternalBehaviorReceptionPolicies(self, element: ET.Element, behavior: BswInternalBehavior):
2256
+ policies = behavior.getReceptionPolicies()
2257
+ if len(policies) > 0:
2258
+ child_element = ET.SubElement(element, "RECEPTION-POLICYS")
2259
+ for policy in policies:
2260
+ if isinstance(policy, BswQueuedDataReceptionPolicy):
2261
+ self.writeBswQueuedDataReceptionPolicy(child_element, policy)
2262
+ else:
2263
+ self.notImplemented("Unsupported Reception Policies <%s>" % type(policy))
2264
+
2265
+ def writeBswInternalTriggeringPoint(self, element: ET.Element, point: BswInternalTriggeringPoint):
2266
+ child_element = ET.SubElement(element, "BSW-INTERNAL-TRIGGERING-POINT")
2267
+ self.writeIdentifiable(child_element, point)
1918
2268
 
1919
- def setBswInternalBehavior(self, element: ET.Element, behavior: BswInternalBehavior):
2269
+ def writeBswInternalBehaviorInternalTriggeringPoints(self, element: ET.Element, behavior: BswInternalBehavior):
2270
+ points = behavior.getInternalTriggeringPoints()
2271
+ if len(points) > 0:
2272
+ child_element = ET.SubElement(element, "INTERNAL-TRIGGERING-POINTS")
2273
+ for point in points:
2274
+ if isinstance(point, BswInternalTriggeringPoint):
2275
+ self.writeBswInternalTriggeringPoint(child_element, point)
2276
+ else:
2277
+ self.notImplemented("Unsupported Internal Triggering Points <%s>" % type(point))
2278
+
2279
+ def writeBswInternalBehavior(self, element: ET.Element, behavior: BswInternalBehavior):
1920
2280
  child_element = ET.SubElement(element, "BSW-INTERNAL-BEHAVIOR")
1921
2281
  self.writeInternalBehavior(child_element, behavior)
1922
- self.writeBswInternalBehaviorBswModuleEntities(child_element, behavior)
1923
- self.writeBswInternalBehaviorBswEvents(child_element, behavior)
2282
+ self.writeBswInternalBehaviorInternalTriggeringPoints(child_element, behavior)
2283
+ self.writeBswInternalBehaviorEntities(child_element, behavior)
2284
+ self.writeBswInternalBehaviorEvents(child_element, behavior)
1924
2285
  self.writeBswInternalBehaviorModeSenderPolicy(child_element, behavior)
1925
2286
  self.writeBswInternalBehaviorIncludedModeDeclarationGroupSets(child_element, behavior)
2287
+ self.writeBswInternalBehaviorReceptionPolicies(child_element, behavior)
1926
2288
 
1927
- def writeBswModuleDescriptionInternalBehaviors(self, element: ET.Element, behaviors: List[InternalBehavior]):
2289
+ def writeBswModuleDescriptionInternalBehaviors(self, element: ET.Element, desc: BswModuleDescription):
2290
+ behaviors = desc.getInternalBehaviors()
1928
2291
  if len(behaviors) > 0:
1929
2292
  child_element = ET.SubElement(element, "INTERNAL-BEHAVIORS")
1930
2293
  for behavior in behaviors:
1931
2294
  if isinstance(behavior, BswInternalBehavior):
1932
- self.setBswInternalBehavior(child_element, behavior)
2295
+ self.writeBswInternalBehavior(child_element, behavior)
2296
+ else:
2297
+ self.notImplemented("Unsupported Internal Behavior <%s>" % type(behavior))
2298
+
2299
+ def writeTrigger(self, element: ET.Element, trigger: Trigger):
2300
+ child_element = ET.SubElement(element, "TRIGGER")
2301
+ self.writeIdentifiable(child_element, trigger)
2302
+
2303
+ def writeBswModuleDescriptionReleasedTriggers(self, element: ET.Element, desc: BswModuleDescription):
2304
+ triggers = desc.getReleasedTriggers()
2305
+ if len(triggers) > 0:
2306
+ child_element = ET.SubElement(element, "RELEASED-TRIGGERS")
2307
+ for trigger in triggers:
2308
+ if isinstance(trigger, Trigger):
2309
+ self.writeTrigger(child_element, trigger)
1933
2310
  else:
1934
- self._raiseError("Unsupported BswInternalBehavior <%s>" % type(behavior))
2311
+ self.notImplemented("Unsupported Released Trigger <%s>" % type(trigger))
2312
+
2313
+ def writeBswModuleDescriptionRequiredTriggers(self, element: ET.Element, desc: BswModuleDescription):
2314
+ triggers = desc.getRequiredTriggers()
2315
+ if len(triggers) > 0:
2316
+ child_element = ET.SubElement(element, "REQUIRED-TRIGGERS")
2317
+ for trigger in triggers:
2318
+ if isinstance(trigger, Trigger):
2319
+ self.writeTrigger(child_element, trigger)
2320
+ else:
2321
+ self.notImplemented("Unsupported Required Trigger <%s>" % type(trigger))
2322
+
2323
+ def writeBswModuleDescriptionProvidedDatas(self, element: ET.Element, desc: BswModuleDescription):
2324
+ datas = desc.getProvidedDatas()
2325
+ if len(datas) > 0:
2326
+ child_element = ET.SubElement(element, "PROVIDED-DATAS")
2327
+ for data in datas:
2328
+ if isinstance(data, VariableDataPrototype):
2329
+ self.writeVariableDataPrototype(child_element, data)
2330
+ else:
2331
+ self.notImplemented("Unsupported Provided Data <%s>" % type(data))
2332
+
2333
+ def writeBswModuleDescriptionRequiredDatas(self, element: ET.Element, desc: BswModuleDescription):
2334
+ datas = desc.getRequiredDatas()
2335
+ if len(datas) > 0:
2336
+ child_element = ET.SubElement(element, "REQUIRED-DATAS")
2337
+ for data in datas:
2338
+ if isinstance(data, VariableDataPrototype):
2339
+ self.writeVariableDataPrototype(child_element, data)
2340
+ else:
2341
+ self.notImplemented("Unsupported Required Data <%s>" % type(data))
2342
+
2343
+ def writeBswModuleClientServerEntry(self, element: ET.Element, entry: BswModuleClientServerEntry):
2344
+ if entry is not None:
2345
+ child_element = ET.SubElement(element, "BSW-MODULE-CLIENT-SERVER-ENTRY")
2346
+ self.writeReferrable(child_element, entry)
2347
+ self.setChildElementOptionalRefType(child_element, "ENCAPSULATED-ENTRY-REF", entry.getEncapsulatedEntryRef())
2348
+ self.setChildElementOptionalBooleanValue(child_element, "IS-REENTRANT", entry.getIsReentrant())
2349
+ self.setChildElementOptionalBooleanValue(child_element, "IS-SYNCHRONOUS", entry.getIsSynchronous())
2350
+
2351
+ def writeBswModuleDescriptionProvidedClientServerEntries(self, element: ET.Element, desc: BswModuleDescription):
2352
+ entries = desc.getProvidedClientServerEntries()
2353
+ if len(entries) > 0:
2354
+ child_element = ET.SubElement(element, "PROVIDED-CLIENT-SERVER-ENTRYS")
2355
+ for entry in entries:
2356
+ if isinstance(entry, BswModuleClientServerEntry):
2357
+ self.writeBswModuleClientServerEntry(child_element, entry)
2358
+ else:
2359
+ self.notImplemented("Unsupported Provided Client Server Entry <%s>" % type(entry))
2360
+
2361
+ def writeBswModuleDescriptionRequiredClientServerEntries(self, element: ET.Element, desc: BswModuleDescription):
2362
+ entries = desc.getRequiredClientServerEntries()
2363
+ if len(entries) > 0:
2364
+ child_element = ET.SubElement(element, "REQUIRED-CLIENT-SERVER-ENTRYS")
2365
+ for entry in entries:
2366
+ if isinstance(entry, BswModuleClientServerEntry):
2367
+ self.writeBswModuleClientServerEntry(child_element, entry)
2368
+ else:
2369
+ self.notImplemented("Unsupported Provided Client Server Entry <%s>" % type(entry))
1935
2370
 
1936
2371
  def writeBswModuleDescription(self, element: ET.Element, desc: BswModuleDescription):
1937
2372
  self.logger.debug("writeBswModuleDescription %s" % desc.getShortName())
1938
2373
  child_element = ET.SubElement(element, "BSW-MODULE-DESCRIPTION")
1939
2374
  self.writeIdentifiable(child_element, desc)
1940
2375
  self.setChildElementOptionalNumericalValue(child_element, "MODULE-ID", desc.getModuleId())
1941
- self.writerBswModuleDescriptionImplementedEntry(child_element, desc)
1942
- self.writeProvidedModeGroup(child_element, desc)
1943
- #self.readRequiredModeGroup(element, bsw_module_description)
1944
- self.writeBswModuleDescriptionInternalBehaviors(child_element, desc.getBswInternalBehaviors())
1945
-
1946
- def writeBswModuleEntityManagedModeGroup(self, element: ET.Element, entity: BswModuleEntity):
1947
- mode_group_refs = entity.getManagedModeGroupRefs()
1948
- if len(mode_group_refs) > 0:
1949
- mode_groups_tag = ET.SubElement(element, "MANAGED-MODE-GROUPS")
1950
- for mode_group_ref in mode_group_refs:
1951
- child_element = ET.SubElement(mode_groups_tag, "MODE-DECLARATION-GROUP-PROTOTYPE-REF-CONDITIONAL")
1952
- self.setChildElementOptionalRefType(child_element, "MODE-DECLARATION-GROUP-PROTOTYPE-REF", mode_group_ref)
2376
+ self.writeBswModuleDescriptionImplementedEntryRefs(child_element, desc)
2377
+ self.writeBswModuleDescriptionProvidedModeGroups(child_element, desc)
2378
+ self.writeBswModuleDescriptionRequiredModeGroups(child_element, desc)
2379
+ self.writeBswModuleDescriptionProvidedClientServerEntries(child_element, desc)
2380
+ self.writeBswModuleDescriptionRequiredClientServerEntries(child_element, desc)
2381
+ self.writeBswModuleDescriptionProvidedDatas(child_element, desc)
2382
+ self.writeBswModuleDescriptionRequiredDatas(child_element, desc)
2383
+ self.writeBswModuleDescriptionInternalBehaviors(child_element, desc)
2384
+ self.writeBswModuleDescriptionReleasedTriggers(child_element, desc)
1953
2385
 
1954
2386
  def setSwServiceArg(self, element: ET.Element, arg: SwServiceArg):
1955
2387
  self.logger.debug("Set SwServiceArg <%s>" % arg.getShortName())
@@ -1991,7 +2423,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1991
2423
  if isinstance(mapping, SwcBswRunnableMapping):
1992
2424
  self.setSwcBswRunnableMapping(child_element, mapping)
1993
2425
  else:
1994
- self._raiseError("Unsupported Runnable Mapping <%s>" % type(mapping))
2426
+ self.notImplemented("Unsupported Runnable Mapping <%s>" % type(mapping))
1995
2427
 
1996
2428
  def writeSwcBswMapping(self, element: ET.Element, mapping: SwcBswMapping):
1997
2429
  self.logger.debug("writeBswModuleDescription %s" % mapping.getShortName())
@@ -2006,8 +2438,8 @@ class ARXMLWriter(AbstractARXMLWriter):
2006
2438
  self.setChildElementOptionalLiteral(element, "SHORT-LABEL", engineering_obj.short_label)
2007
2439
  self.setChildElementOptionalLiteral(element, "CATEGORY", engineering_obj.category)
2008
2440
 
2009
- def setAutosarEngineeringObject(self, element: ET.Element, obj: AutosarEngineeringObject):
2010
- self.logger.debug("readArtifactDescriptor %s", obj.short_label)
2441
+ def writeAutosarEngineeringObject(self, element: ET.Element, obj: AutosarEngineeringObject):
2442
+ # self.logger.debug("write ArtifactDescriptor %s", obj.short_label)
2011
2443
  child_element = ET.SubElement(element, "AUTOSAR-ENGINEERING-OBJECT")
2012
2444
  self.writeEngineeringObject(child_element, obj)
2013
2445
 
@@ -2017,15 +2449,15 @@ class ARXMLWriter(AbstractARXMLWriter):
2017
2449
  child_element = ET.SubElement(element, "ARTIFACT-DESCRIPTORS")
2018
2450
  for artifact_desc in artifact_descs:
2019
2451
  if isinstance(artifact_desc, AutosarEngineeringObject):
2020
- self.setAutosarEngineeringObject(child_element, artifact_desc)
2452
+ self.writeAutosarEngineeringObject(child_element, artifact_desc)
2021
2453
  else:
2022
- self._raiseError("Unsupported Artifact descriptor <%s>" % type(artifact_desc))
2454
+ self.notImplemented("Unsupported Artifact descriptor <%s>" % type(artifact_desc))
2023
2455
 
2024
2456
  def writeBswImplementationVendorSpecificModuleDefRefs(self, element: ET.Element, parent: BswImplementation):
2025
2457
  refs = parent.getVendorSpecificModuleDefRefs()
2026
2458
  if len(refs) > 0:
2027
2459
  child_element = ET.SubElement(element, "VENDOR-SPECIFIC-MODULE-DEF-REFS")
2028
- if child_element != None:
2460
+ if child_element is not None:
2029
2461
  for ref in refs:
2030
2462
  self.setChildElementOptionalRefType(child_element, "VENDOR-SPECIFIC-MODULE-DEF-REF", ref)
2031
2463
 
@@ -2035,6 +2467,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2035
2467
  self.writeImplementation(child_element, impl)
2036
2468
  self.setChildElementOptionalLiteral(child_element, "AR-RELEASE-VERSION", impl.getArReleaseVersion())
2037
2469
  self.setChildElementOptionalRefType(child_element, "BEHAVIOR-REF", impl.getBehaviorRef())
2470
+ self.setChildElementOptionalLiteral(child_element, "VENDOR-API-INFIX", impl.getVendorApiInfix())
2038
2471
  self.writeBswImplementationVendorSpecificModuleDefRefs(child_element, impl)
2039
2472
 
2040
2473
  def writeImplementationDataTypeElements(self, element: ET.Element, parent: ImplementationDataType):
@@ -2071,33 +2504,37 @@ class ARXMLWriter(AbstractARXMLWriter):
2071
2504
  self.writeImplementationDataTypeSymbolProps(child_element, data_type)
2072
2505
  self.setChildElementOptionalLiteral(child_element, "TYPE-EMITTER", data_type.getTypeEmitter())
2073
2506
 
2074
- def writeArgumentDataPrototypes(self, element: ET.Element, parent: ClientServerOperation):
2075
- arguments = parent.getArgumentDataPrototypes()
2507
+ def writeArgumentDataPrototype(self, element: ET.Element, prototype: ArgumentDataPrototype):
2508
+ child_element = ET.SubElement(element, "ARGUMENT-DATA-PROTOTYPE")
2509
+ self.writeAutosarDataPrototype(child_element, prototype)
2510
+ self.setChildElementOptionalLiteral(child_element, "DIRECTION", prototype.getDirection())
2511
+ self.setChildElementOptionalLiteral(child_element, "SERVER-ARGUMENT-IMPL-POLICY", prototype.getServerArgumentImplPolicy())
2512
+
2513
+ def writeClientServerOperationArguments(self, element: ET.Element, parent: ClientServerOperation):
2514
+ arguments = parent.getArguments()
2076
2515
  if len(arguments) > 0:
2077
- arguments_tag = ET.SubElement(element, "ARGUMENTS")
2078
- for prototype in arguments:
2079
- child_element = ET.SubElement(arguments_tag, "ARGUMENT-DATA-PROTOTYPE")
2080
- self.writeIdentifiable(child_element, prototype)
2081
- self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", prototype.swDataDefProps)
2082
- self.setChildElementOptionalRefType(child_element, "TYPE-TREF", prototype.typeTRef)
2083
- self.setChildElementOptionalLiteral(child_element, "DIRECTION", prototype.direction)
2084
- self.setChildElementOptionalLiteral(child_element, "SERVER-ARGUMENT-IMPL-POLICY", prototype.serverArgumentImplPolicy)
2085
-
2086
- def writePossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
2087
- error_refs = parent.getPossbileErrorRefs()
2516
+ child_element = ET.SubElement(element, "ARGUMENTS")
2517
+ for argument in arguments:
2518
+ if isinstance(argument, ArgumentDataPrototype):
2519
+ self.writeArgumentDataPrototype(child_element, argument)
2520
+ else:
2521
+ self.notImplemented("Unsupported Argument <%s>" % type(argument))
2522
+
2523
+ def writeClientServerOperationPossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
2524
+ error_refs = parent.getPossibleErrorRefs()
2088
2525
  if len(error_refs) > 0:
2089
- error_refs_tag = ET.SubElement(element, "POSSIBLE-ERROR-REFS")
2526
+ child_element = ET.SubElement(element, "POSSIBLE-ERROR-REFS")
2090
2527
  for error_ref in error_refs:
2091
- self.setChildElementOptionalRefType(error_refs_tag, "POSSIBLE-ERROR-REF", error_ref)
2528
+ self.setChildElementOptionalRefType(child_element, "POSSIBLE-ERROR-REF", error_ref)
2092
2529
 
2093
2530
  def writeClientServerOperation(self, element: ET.Element, operation: ClientServerOperation):
2094
2531
  self.logger.debug("writeClientServerOperation %s" % operation.getShortName())
2095
2532
  child_element = ET.SubElement(element, "CLIENT-SERVER-OPERATION")
2096
2533
  self.writeIdentifiable(child_element, operation)
2097
- self.writeArgumentDataPrototypes(child_element, operation)
2098
- self.writePossibleErrorRefs(child_element, operation)
2534
+ self.writeClientServerOperationArguments(child_element, operation)
2535
+ self.writeClientServerOperationPossibleErrorRefs(child_element, operation)
2099
2536
 
2100
- def writeOperations(self, element: ET.Element, parent: ClientServerInterface):
2537
+ def writeClientServerInterfaceOperations(self, element: ET.Element, parent: ClientServerInterface):
2101
2538
  operations = parent.getOperations()
2102
2539
  if len(operations) > 0:
2103
2540
  operations_tag = ET.SubElement(element, "OPERATIONS")
@@ -2105,7 +2542,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2105
2542
  if isinstance(operation, ClientServerOperation):
2106
2543
  self.writeClientServerOperation(operations_tag, operation)
2107
2544
  else:
2108
- self._raiseError("Unsupported Operation <%s>" % type(operation))
2545
+ self.notImplemented("Unsupported Operation <%s>" % type(operation))
2109
2546
 
2110
2547
  def writeApplicationError(self, element: ET.Element, error: ApplicationError):
2111
2548
  self.logger.debug("writeApplicationError %s" % error.getShortName())
@@ -2121,24 +2558,27 @@ class ARXMLWriter(AbstractARXMLWriter):
2121
2558
  if isinstance(error, ApplicationError):
2122
2559
  self.writeApplicationError(errors_tag, error)
2123
2560
  else:
2124
- self._raiseError("Unsupported PossibleError %s" % type(error))
2561
+ self.notImplemented("Unsupported PossibleError %s" % type(error))
2125
2562
 
2126
- def setPortInterface(self, element: ET.Element, port_interface: PortInterface):
2563
+ def writePortInterface(self, element: ET.Element, port_interface: PortInterface):
2127
2564
  self.writeIdentifiable(element, port_interface)
2128
2565
  self.setChildElementOptionalBooleanValue(element, "IS-SERVICE", port_interface.isService)
2129
2566
  self.setChildElementOptionalLiteral(element, "SERVICE-KIND", port_interface.serviceKind)
2130
2567
 
2131
- def writeParameterInterface(self, element: ET.Element, param_interface: ParameterInterface):
2132
- self.logger.debug("Write ParameterInterface %s" % param_interface.getShortName())
2568
+ def writeDataInterface(self, element: ET.Element, interface: DataInterface):
2569
+ self.writePortInterface(element, interface)
2570
+
2571
+ def writeParameterInterface(self, element: ET.Element, interface: ParameterInterface):
2572
+ self.logger.debug("Write ParameterInterface %s" % interface.getShortName())
2133
2573
  child_element = ET.SubElement(element, "PARAMETER-INTERFACE")
2134
- self.setPortInterface(child_element, param_interface)
2135
- self.setParameterDataPrototypes(child_element, "PARAMETERS", param_interface.getParameters())
2574
+ self.writeDataInterface(child_element, interface)
2575
+ self.writeSwcInternalBehaviorParameterDataPrototypes(child_element, "PARAMETERS", interface.getParameters())
2136
2576
 
2137
2577
  def writeClientServerInterface(self, element: ET.Element, cs_interface: ClientServerInterface):
2138
2578
  self.logger.debug("writeClientServerInterface %s" % cs_interface.getShortName())
2139
2579
  child_element = ET.SubElement(element, "CLIENT-SERVER-INTERFACE")
2140
- self.setPortInterface(child_element, cs_interface)
2141
- self.writeOperations(child_element, cs_interface)
2580
+ self.writePortInterface(child_element, cs_interface)
2581
+ self.writeClientServerInterfaceOperations(child_element, cs_interface)
2142
2582
  self.writePossibleErrors(child_element, cs_interface)
2143
2583
 
2144
2584
  def writeApplicationSwComponentType(self, element: ET.Element, sw_component: ApplicationSwComponentType):
@@ -2154,7 +2594,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2154
2594
  def setApplicationArrayElement(self, element: ET.Element, array_element: ApplicationArrayElement):
2155
2595
  if array_element is not None:
2156
2596
  child_element = ET.SubElement(element, "ELEMENT")
2157
- self.setApplicationCompositeElementDataPrototype(child_element, array_element)
2597
+ self.writeApplicationCompositeElementDataPrototype(child_element, array_element)
2158
2598
  self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE-HANDLING", array_element.getArraySizeHandling())
2159
2599
  self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE-SEMANTICS", array_element.getArraySizeSemantics())
2160
2600
  self.setChildElementOptionalNumericalValue(child_element, "MAX-NUMBER-OF-ELEMENTS", array_element.getMaxNumberOfElements())
@@ -2185,12 +2625,12 @@ class ARXMLWriter(AbstractARXMLWriter):
2185
2625
  child_element = ET.SubElement(element, key)
2186
2626
  self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", group.getShortLabel())
2187
2627
  self.setChildElementOptionalLiteral(child_element, "CATEGORY", group.getCategory())
2188
- #self.writeSwRecordLayoutGroupSwRecordLayoutGroupContentType(child_element, group)
2189
2628
  self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS", group.getSwRecordLayoutGroupAxis())
2190
2629
  self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-INDEX", group.getSwRecordLayoutGroupIndex())
2191
2630
  self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-FROM", group.getSwRecordLayoutGroupFrom())
2192
2631
  self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-TO", group.getSwRecordLayoutGroupTo())
2193
2632
  self.setChildElementOptionalIntegerValue(child_element, "SW-RECORD-LAYOUT-GROUP-STEP", group.getSwRecordLayoutGroupStep())
2633
+ self.writeSwRecordLayoutGroupSwRecordLayoutGroupContentType(child_element, group)
2194
2634
 
2195
2635
  def writeSwRecordLayout(self, element: ET.Element, layout: SwRecordLayout):
2196
2636
  self.logger.debug("writeSwRecordLayout %s" % layout.getShortName())
@@ -2213,7 +2653,8 @@ class ARXMLWriter(AbstractARXMLWriter):
2213
2653
 
2214
2654
  def writeTriggerInterface(self, element: ET.Element, trigger_if: TriggerInterface):
2215
2655
  self.logger.debug("writeTriggerInterface %s" % trigger_if.getShortName())
2216
- child_element = ET.SubElement(element, "TRIGGER-INTERFACE")
2656
+ # child_element = ET.SubElement(element, "TRIGGER-INTERFACE")
2657
+ # self.writePortInterface()
2217
2658
 
2218
2659
  def writeServiceSwComponentType(self, element: ET.Element, sw_component: ServiceSwComponentType):
2219
2660
  self.logger.debug("writeServiceSwComponentType %s" % sw_component.getShortName())
@@ -2278,7 +2719,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2278
2719
  def writeModeSwitchInterface(self, element: ET.Element, mode_interface: ModeSwitchInterface):
2279
2720
  self.logger.debug("writeModeSwitchInterface %s" % mode_interface.getShortName())
2280
2721
  child_element = ET.SubElement(element, "MODE-SWITCH-INTERFACE")
2281
- self.setPortInterface(child_element, mode_interface)
2722
+ self.writePortInterface(child_element, mode_interface)
2282
2723
  self.writeModeSwitchInterfaceModeGroup(child_element, mode_interface)
2283
2724
 
2284
2725
  def setEOCExecutableEntityRefSuccessorRefs(self, element: ET.Element, successor_refs: List[RefType]):
@@ -2300,7 +2741,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2300
2741
  if isinstance(order_element, EOCExecutableEntityRef):
2301
2742
  self.writeEOCExecutableEntityRef(child_element, order_element)
2302
2743
  else:
2303
- self._raiseError("Unsupported order element <%s>" % type(order_element))
2744
+ self.notImplemented("Unsupported order element <%s>" % type(order_element))
2304
2745
 
2305
2746
  def writeExecutionOrderConstraint(self, element: ET.Element, constraint: ExecutionOrderConstraint):
2306
2747
  self.logger.debug("writeExecutionOrderConstraint %s" % constraint.getShortName())
@@ -2316,7 +2757,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2316
2757
  if isinstance(requirement, ExecutionOrderConstraint):
2317
2758
  self.writeExecutionOrderConstraint(child_element, requirement)
2318
2759
  else:
2319
- self._raiseError("Unsupported timing requirement <%s>" % type(requirement))
2760
+ self.notImplemented("Unsupported timing requirement <%s>" % type(requirement))
2320
2761
 
2321
2762
  def writeTimingExtension(self, element: ET.Element, extension: TimingExtension):
2322
2763
  self.writeTimingRequirements(element, extension)
@@ -2340,7 +2781,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2340
2781
 
2341
2782
  def writeFrame(self, element: ET.Element, frame: Frame):
2342
2783
  self.writeIdentifiable(element, frame)
2343
- self.setChildElementOptionalNumericalValue(element, "FRAME-LENGTH", frame.frameLength)
2784
+ self.setChildElementOptionalNumericalValue(element, "FRAME-LENGTH", frame.frameLength)
2344
2785
  self.writePduToFrameMappings(element, frame)
2345
2786
 
2346
2787
  def writeLinUnconditionalFrame(self, element: ET.Element, frame: LinUnconditionalFrame):
@@ -2417,7 +2858,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2417
2858
  self.logger.debug("Write NmConfigNmClusterCouplings <%s>" % config.getShortName())
2418
2859
  couplings = config.getNmClusterCouplings()
2419
2860
  if len(couplings) > 0:
2420
- child_element= ET.SubElement(element, "NM-CLUSTER-COUPLINGS")
2861
+ child_element = ET.SubElement(element, "NM-CLUSTER-COUPLINGS")
2421
2862
  for coupling in couplings:
2422
2863
  if isinstance(coupling, CanNmClusterCoupling):
2423
2864
  self.writeCanNmClusterCoupling(child_element, coupling)
@@ -2573,7 +3014,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2573
3014
  if props is not None:
2574
3015
  child_element = ET.SubElement(element, key)
2575
3016
  self.setChildElementOptionalPositiveInteger(child_element, "AUTH-DATA-FRESHNESS-LENGTH", props.getAuthDataFreshnessLength())
2576
- self.setChildElementOptionalPositiveInteger(child_element, "AUTH-DATA-FRESHNESS-START-POSITION", props.getAuthDataFreshnessStartPosition())
3017
+ self.setChildElementOptionalPositiveInteger(child_element, "AUTH-DATA-FRESHNESS-START-POSITION", props.getAuthDataFreshnessStartPosition()) # noqa E501
2577
3018
  self.setChildElementOptionalPositiveInteger(child_element, "AUTH-INFO-TX-LENGTH", props.getAuthInfoTxLength())
2578
3019
  self.setChildElementOptionalPositiveInteger(child_element, "AUTHENTICATION-BUILD-ATTEMPTS", props.getAuthenticationBuildAttempts())
2579
3020
  self.setChildElementOptionalPositiveInteger(child_element, "AUTHENTICATION-RETRIES", props.getAuthenticationRetries())
@@ -2712,7 +3153,6 @@ class ARXMLWriter(AbstractARXMLWriter):
2712
3153
  else:
2713
3154
  self.notImplemented("Unsupported TpNode <%s>" % type(tp_node))
2714
3155
 
2715
-
2716
3156
  def writeCanTpConfig(self, element: ET.Element, config: CanTpConfig):
2717
3157
  self.logger.debug("Write CanTpConfig <%s>" % config.getShortName())
2718
3158
  child_element = ET.SubElement(element, "CAN-TP-CONFIG")
@@ -2791,6 +3231,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2791
3231
  self.writeLinTpConfigTpNodes(child_element, config)
2792
3232
 
2793
3233
  def writeFrameTriggering(self, element: ET.Element, triggering: FrameTriggering):
3234
+ self.writeIdentifiable(element, triggering)
2794
3235
  ref_list = triggering.getFramePortRefs()
2795
3236
  if len(ref_list) > 0:
2796
3237
  frame_port_refs_tag = ET.SubElement(element, "FRAME-PORT-REFS")
@@ -2802,13 +3243,12 @@ class ARXMLWriter(AbstractARXMLWriter):
2802
3243
  if len(refs) > 0:
2803
3244
  triggerings_tag = ET.SubElement(element, "PDU-TRIGGERINGS")
2804
3245
  for ref in refs:
2805
- child_element = ET.SubElement(triggerings_tag, 'PDU-TRIGGERING-REF-CONDITIONAL')
2806
- self.setChildElementOptionalRefType(child_element, "PDU-TRIGGERING-REF", ref)
3246
+ child_element = ET.SubElement(triggerings_tag, 'PDU-TRIGGERING-REF-CONDITIONAL')
3247
+ self.setChildElementOptionalRefType(child_element, "PDU-TRIGGERING-REF", ref)
2807
3248
 
2808
3249
  def writeCanFrameTriggering(self, element: ET.Element, triggering: CanFrameTriggering):
2809
3250
  self.logger.debug("WRite CanFrameTriggering %s" % triggering.getShortName())
2810
3251
  child_element = ET.SubElement(element, "CAN-FRAME-TRIGGERING")
2811
- self.writeIdentifiable(child_element, triggering)
2812
3252
  self.writeFrameTriggering(child_element, triggering)
2813
3253
  self.setChildElementOptionalLiteral(child_element, "CAN-ADDRESSING-MODE", triggering.getCanAddressingMode())
2814
3254
  self.setChildElementOptionalBooleanValue(child_element, "CAN-FD-FRAME-SUPPORT", triggering.getCanFdFrameSupport())
@@ -2820,11 +3260,55 @@ class ARXMLWriter(AbstractARXMLWriter):
2820
3260
  def writeLinFrameTriggering(self, element: ET.Element, triggering: LinFrameTriggering):
2821
3261
  self.logger.debug("Write LinFrameTriggering %s" % triggering.getShortName())
2822
3262
  child_element = ET.SubElement(element, "LIN-FRAME-TRIGGERING")
2823
- self.writeIdentifiable(child_element, triggering)
2824
3263
  self.writeFrameTriggering(child_element, triggering)
2825
3264
  self.setChildElementOptionalNumericalValue(child_element, "IDENTIFIER", triggering.getIdentifier())
2826
3265
  self.setChildElementOptionalLiteral(child_element, "LIN-CHECKSUM", triggering.getLinChecksum())
2827
3266
 
3267
+ def writeCommunicationCycle(self, element: ET.Element, cycle: CommunicationCycle):
3268
+ self.writeARObjectAttributes(element, cycle)
3269
+
3270
+ def writeCycleRepetition(self, element: ET.Element, cycle: CycleRepetition):
3271
+ if cycle is not None:
3272
+ child_element = ET.SubElement(element, "CYCLE-REPETITION")
3273
+ self.writeCommunicationCycle(child_element, cycle)
3274
+ self.setChildElementOptionalIntegerValue(child_element, "BASE-CYCLE", cycle.getBaseCycle())
3275
+ self.setChildElementOptionalLiteral(child_element, "CYCLE-REPETITION", cycle.getCycleRepetition())
3276
+
3277
+ def writeFlexrayAbsolutelyScheduledTimingCommunicationCycle(self, element: ET.Element, timing: FlexrayAbsolutelyScheduledTiming):
3278
+ cycle = timing.getCommunicationCycle()
3279
+ if cycle is not None:
3280
+ child_element = ET.SubElement(element, "COMMUNICATION-CYCLE")
3281
+ if isinstance(cycle, CycleRepetition):
3282
+ self.writeCycleRepetition(child_element, cycle)
3283
+ else:
3284
+ self.notImplemented("Unsupported CommunicationCycle <%s>" % type(child_element))
3285
+
3286
+ def writeFlexrayAbsolutelyScheduledTiming(self, element: ET.Element, timing: FlexrayAbsolutelyScheduledTiming):
3287
+ if timing is not None:
3288
+ child_element = ET.SubElement(element, "FLEXRAY-ABSOLUTELY-SCHEDULED-TIMING")
3289
+ self.writeARObjectAttributes(child_element, timing)
3290
+ self.writeFlexrayAbsolutelyScheduledTimingCommunicationCycle(child_element, timing)
3291
+ self.setChildElementOptionalPositiveInteger(child_element, "SLOT-ID", timing.getSlotID())
3292
+
3293
+ def writeFlexrayFrameTriggeringAbsolutelyScheduledTimings(self, element: ET.Element, triggering: FlexrayFrameTriggering):
3294
+ timings = triggering.getAbsolutelyScheduledTimings()
3295
+ if len(timings) > 0:
3296
+ child_element = ET.SubElement(element, "ABSOLUTELY-SCHEDULED-TIMINGS")
3297
+ for timing in timings:
3298
+ if isinstance(timing, FlexrayAbsolutelyScheduledTiming):
3299
+ self.writeFlexrayAbsolutelyScheduledTiming(child_element, timing)
3300
+ else:
3301
+ self.notImplemented("Unsupported AbsolutelyScheduledTiming <%s>" % type(timing))
3302
+
3303
+ def writeFlexrayFrameTriggering(self, element: ET.Element, triggering: FlexrayFrameTriggering):
3304
+ self.logger.debug("Write FlexrayFrameTriggering %s" % triggering.getShortName())
3305
+ child_element = ET.SubElement(element, "FLEXRAY-FRAME-TRIGGERING")
3306
+ self.writeFrameTriggering(child_element, triggering)
3307
+ self.writeFlexrayFrameTriggeringAbsolutelyScheduledTimings(child_element, triggering)
3308
+ self.setChildElementOptionalBooleanValue(child_element, "ALLOW-DYNAMIC-L-SDU-LENGTH", triggering.getAllowDynamicLSduLength())
3309
+ self.setChildElementOptionalPositiveInteger(child_element, "MESSAGE-ID", triggering.getMessageId())
3310
+ self.setChildElementOptionalBooleanValue(child_element, "PAYLOAD-PREAMBLE-INDICATOR", triggering.getPayloadPreambleIndicator())
3311
+
2828
3312
  def writeISignalTriggering(self, element: ET.Element, triggering: ISignalTriggering):
2829
3313
  self.logger.debug("Write ISignalTriggering %s" % triggering.getShortName())
2830
3314
  child_element = ET.SubElement(element, "I-SIGNAL-TRIGGERING")
@@ -2852,17 +3336,18 @@ class ARXMLWriter(AbstractARXMLWriter):
2852
3336
  if len(refs) > 0:
2853
3337
  triggerings_tag = ET.SubElement(child_element, "I-SIGNAL-TRIGGERINGS")
2854
3338
  for ref in refs:
2855
- child_element = ET.SubElement(triggerings_tag, 'I-SIGNAL-TRIGGERING-REF-CONDITIONAL')
2856
- self.setChildElementOptionalRefType(child_element, "I-SIGNAL-TRIGGERING-REF", ref)
3339
+ child_element = ET.SubElement(triggerings_tag, 'I-SIGNAL-TRIGGERING-REF-CONDITIONAL')
3340
+ self.setChildElementOptionalRefType(child_element, "I-SIGNAL-TRIGGERING-REF", ref)
2857
3341
 
2858
- def writePhysicalChannel(self, element: ET.Element, channel: PhysicalChannel):
3342
+ def writePhysicalChannelCommConnectorRefs(self, element, channel):
2859
3343
  connectors = channel.getCommConnectorRefs()
2860
3344
  if len(connectors) > 0:
2861
3345
  connectors_tag = ET.SubElement(element, "COMM-CONNECTORS")
2862
3346
  for connector in connectors:
2863
- child_element = ET.SubElement(connectors_tag, 'COMMUNICATION-CONNECTOR-REF-CONDITIONAL')
2864
- self.setChildElementOptionalRefType(child_element, "COMMUNICATION-CONNECTOR-REF", connector)
3347
+ child_element = ET.SubElement(connectors_tag, 'COMMUNICATION-CONNECTOR-REF-CONDITIONAL')
3348
+ self.setChildElementOptionalRefType(child_element, "COMMUNICATION-CONNECTOR-REF", connector)
2865
3349
 
3350
+ def writePhysicalChannelFrameTriggerings(self, element, channel):
2866
3351
  triggerings = channel.getFrameTriggerings()
2867
3352
  if len(triggerings) > 0:
2868
3353
  triggerings_tag = ET.SubElement(element, "FRAME-TRIGGERINGS")
@@ -2871,9 +3356,12 @@ class ARXMLWriter(AbstractARXMLWriter):
2871
3356
  self.writeCanFrameTriggering(triggerings_tag, triggering)
2872
3357
  elif isinstance(triggering, LinFrameTriggering):
2873
3358
  self.writeLinFrameTriggering(triggerings_tag, triggering)
3359
+ elif isinstance(triggering, FlexrayFrameTriggering):
3360
+ self.writeFlexrayFrameTriggering(triggerings_tag, triggering)
2874
3361
  else:
2875
3362
  self.notImplemented("Unsupported Frame Triggering <%s>" % type(triggering))
2876
-
3363
+
3364
+ def writePhysicalChannelISignalTriggerings(self, element, channel):
2877
3365
  triggerings = channel.getISignalTriggerings()
2878
3366
  if len(triggerings) > 0:
2879
3367
  triggerings_tag = ET.SubElement(element, "I-SIGNAL-TRIGGERINGS")
@@ -2882,7 +3370,8 @@ class ARXMLWriter(AbstractARXMLWriter):
2882
3370
  self.writeISignalTriggering(triggerings_tag, triggering)
2883
3371
  else:
2884
3372
  self.notImplemented("Unsupported ISignalTriggering <%s>" % type(triggering))
2885
-
3373
+
3374
+ def writePhysicalChannelPduTriggerings(self, element, channel):
2886
3375
  triggerings = channel.getPduTriggerings()
2887
3376
  if len(triggerings) > 0:
2888
3377
  triggerings_tag = ET.SubElement(element, "PDU-TRIGGERINGS")
@@ -2892,10 +3381,17 @@ class ARXMLWriter(AbstractARXMLWriter):
2892
3381
  else:
2893
3382
  self.notImplemented("Unsupported PduTriggering <%s>" % type(triggering))
2894
3383
 
3384
+ def writePhysicalChannel(self, element: ET.Element, channel: PhysicalChannel):
3385
+ self.writeIdentifiable(element, channel)
3386
+
3387
+ self.writePhysicalChannelCommConnectorRefs(element, channel)
3388
+ self.writePhysicalChannelFrameTriggerings(element, channel)
3389
+ self.writePhysicalChannelISignalTriggerings(element, channel)
3390
+ self.writePhysicalChannelPduTriggerings(element, channel)
3391
+
2895
3392
  def writeCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
2896
3393
  self.logger.debug("Set CanPhysicalChannel %s" % channel.getShortName())
2897
3394
  child_element = ET.SubElement(element, "CAN-PHYSICAL-CHANNEL")
2898
- self.writeIdentifiable(child_element, channel)
2899
3395
  self.writePhysicalChannel(child_element, channel)
2900
3396
 
2901
3397
  def writeScheduleTableEntry(self, element: ET.Element, entry: ScheduleTableEntry):
@@ -2938,7 +3434,6 @@ class ARXMLWriter(AbstractARXMLWriter):
2938
3434
  def writeLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
2939
3435
  self.logger.debug("Set LinPhysicalChannel %s" % channel.getShortName())
2940
3436
  child_element = ET.SubElement(element, "LIN-PHYSICAL-CHANNEL")
2941
- self.writeIdentifiable(child_element, channel)
2942
3437
  self.writePhysicalChannel(child_element, channel)
2943
3438
  self.writeLinPhysicalChannelScheduleTables(child_element, channel)
2944
3439
 
@@ -2986,7 +3481,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2986
3481
  for end_point in end_points:
2987
3482
  self.writeNetworkEndPoint(child_element, end_point)
2988
3483
 
2989
- def setSocketConnectionIpduIdentifier(self, element: ET.Element,identifier: SocketConnectionIpduIdentifier):
3484
+ def setSocketConnectionIpduIdentifier(self, element: ET.Element, identifier: SocketConnectionIpduIdentifier):
2990
3485
  if identifier is not None:
2991
3486
  child_element = ET.SubElement(element, "SOCKET-CONNECTION-IPDU-IDENTIFIER")
2992
3487
  self.setChildElementOptionalPositiveInteger(child_element, "HEADER-ID", identifier.getHeaderId())
@@ -3007,8 +3502,8 @@ class ARXMLWriter(AbstractARXMLWriter):
3007
3502
  def setSocketConnection(self, element: ET.Element, connection: SocketConnection):
3008
3503
  if connection is not None:
3009
3504
  child_element = ET.SubElement(element, "SOCKET-CONNECTION")
3010
- self.setChildElementOptionalBooleanValue(child_element, "CLIENT-IP-ADDR-FROM-CONNECTION-REQUEST", connection.getClientIpAddrFromConnectionRequest())
3011
- self.setChildElementOptionalBooleanValue(child_element, "CLIENT-PORT-FROM-CONNECTION-REQUEST", connection.getClientPortFromConnectionRequest())
3505
+ self.setChildElementOptionalBooleanValue(child_element, "CLIENT-IP-ADDR-FROM-CONNECTION-REQUEST", connection.getClientIpAddrFromConnectionRequest()) # noqa E501
3506
+ self.setChildElementOptionalBooleanValue(child_element, "CLIENT-PORT-FROM-CONNECTION-REQUEST", connection.getClientPortFromConnectionRequest()) # noqa E501
3012
3507
  self.setChildElementOptionalRefType(child_element, "CLIENT-PORT-REF", connection.getClientPortRef())
3013
3508
  self.setSocketConnectionPdus(child_element, "PDUS", connection.getPdus())
3014
3509
  self.setChildElementOptionalPositiveInteger(child_element, "PDU-COLLECTION-MAX-BUFFER-SIZE", connection.getPduCollectionMaxBufferSize())
@@ -3095,14 +3590,6 @@ class ARXMLWriter(AbstractARXMLWriter):
3095
3590
  self.setChildElementOptionalTimeValue(child_element, "MAX-VALUE", delay.getMaxValue())
3096
3591
  self.setChildElementOptionalTimeValue(child_element, "MIN-VALUE", delay.getMinValue())
3097
3592
 
3098
- def setInitialSdDelayConfig(self, element: ET.Element, key: str, config: InitialSdDelayConfig):
3099
- if config is not None:
3100
- child_element = ET.SubElement(element, key)
3101
- self.setChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MAX-VALUE", config.getInitialDelayMaxValue())
3102
- self.setChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MIN-VALUE", config.getInitialDelayMinValue())
3103
- self.setChildElementOptionalTimeValue(child_element, "INITIAL-REPETITIONS-BASE-DELAY", config.getInitialRepetitionsBaseDelay())
3104
- self.setChildElementOptionalPositiveInteger(child_element, "INITIAL-REPETITIONS-MAX", config.getInitialRepetitionsMax())
3105
-
3106
3593
  def setSdClientConfig(self, element: ET.Element, key: str, config: SdClientConfig):
3107
3594
  if config is not None:
3108
3595
  child_element = ET.SubElement(element, key)
@@ -3130,7 +3617,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3130
3617
  if isinstance(group, ConsumedEventGroup):
3131
3618
  self.writeConsumedEventGroup(child_element, group)
3132
3619
  else:
3133
- self.notImplemented("Unsupported ConsumedEventGroups <%s>" % type(group))
3620
+ self.notImplemented("Unsupported ConsumedEventGroups <%s>" % type(group))
3134
3621
 
3135
3622
  def writeConsumedServiceInstance(self, element: ET.Element, instance: ConsumedServiceInstance):
3136
3623
  if instance is not None:
@@ -3147,7 +3634,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3147
3634
  for instance in instances:
3148
3635
  if isinstance(instance, ConsumedServiceInstance):
3149
3636
  self.writeConsumedServiceInstance(child_element, instance)
3150
- else:
3637
+ else:
3151
3638
  self.notImplemented("Unsupported ConsumedServiceInstances <%s>" % type(instance))
3152
3639
 
3153
3640
  def setInitialSdDelayConfig(self, element: ET.Element, key: str, config: InitialSdDelayConfig):
@@ -3241,7 +3728,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3241
3728
  self.writeIdentifiable(child_element, address)
3242
3729
  self.writeSocketAddressApplicationEndpoint(child_element, address)
3243
3730
  self.writeSocketAddressMulticastConnectorRefs(child_element, address)
3244
- self.setChildElementOptionalRefType(child_element, "CONNECTOR-REF", address.getConnectorRef())
3731
+ self.setChildElementOptionalRefType(child_element, "CONNECTOR-REF", address.getConnectorRef())
3245
3732
  self.setChildElementOptionalPositiveInteger(child_element, "PORT-ADDRESS", address.getPortAddress())
3246
3733
 
3247
3734
  def writeSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
@@ -3270,12 +3757,17 @@ class ARXMLWriter(AbstractARXMLWriter):
3270
3757
  def writeEthernetPhysicalChannel(self, element: ET.Element, channel: EthernetPhysicalChannel):
3271
3758
  self.logger.debug("Set EthernetPhysicalChannel %s" % channel.getShortName())
3272
3759
  child_element = ET.SubElement(element, "ETHERNET-PHYSICAL-CHANNEL")
3273
- self.writeIdentifiable(child_element, channel)
3274
3760
  self.writePhysicalChannel(child_element, channel)
3275
3761
  self.writeEthernetPhysicalChannelNetworkEndPoints(child_element, channel.getNetworkEndpoints())
3276
3762
  self.writeSoAdConfig(child_element, "SO-AD-CONFIG", channel.getSoAdConfig())
3277
3763
  self.writeEthernetPhysicalChannelVlan(child_element, channel)
3278
3764
 
3765
+ def writeFlexrayPhysicalChannel(self, element: ET.Element, channel: FlexrayPhysicalChannel):
3766
+ self.logger.debug("Set FlexrayPhysicalChannel %s" % channel.getShortName())
3767
+ child_element = ET.SubElement(element, "FLEXRAY-PHYSICAL-CHANNEL")
3768
+ self.writePhysicalChannel(child_element, channel)
3769
+ self.setChildElementOptionalLiteral(child_element, "CHANNEL-NAME", channel.getChannelName())
3770
+
3279
3771
  def writeCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
3280
3772
  channels = cluster.getPhysicalChannels()
3281
3773
  if len(channels) > 0:
@@ -3287,6 +3779,8 @@ class ARXMLWriter(AbstractARXMLWriter):
3287
3779
  self.writeLinPhysicalChannel(child_element, channel)
3288
3780
  elif isinstance(channel, EthernetPhysicalChannel):
3289
3781
  self.writeEthernetPhysicalChannel(child_element, channel)
3782
+ elif isinstance(channel, FlexrayPhysicalChannel):
3783
+ self.writeFlexrayPhysicalChannel(child_element, channel)
3290
3784
  else:
3291
3785
  self.notImplemented("Unsupported Physical Channel <%s>" % type(channel))
3292
3786
 
@@ -3309,22 +3803,130 @@ class ARXMLWriter(AbstractARXMLWriter):
3309
3803
  self.setChildElementOptionalNumericalValue(element, "SPEED", cluster.getSpeed())
3310
3804
 
3311
3805
  def writeLinCluster(self, element: ET.Element, cluster: LinCluster):
3312
- self.logger.debug("LinCluster %s" % cluster.getShortName())
3313
- child_element = ET.SubElement(element, "LIN-CLUSTER")
3314
- self.writeIdentifiable(child_element, cluster)
3315
- child_element = ET.SubElement(child_element, "LIN-CLUSTER-VARIANTS")
3316
- child_element = ET.SubElement(child_element, "LIN-CLUSTER-CONDITIONAL")
3317
- self.writeCommunicationCluster(child_element, cluster)
3806
+ if cluster is not None:
3807
+ self.logger.debug("LinCluster %s" % cluster.getShortName())
3808
+ child_element = ET.SubElement(element, "LIN-CLUSTER")
3809
+ self.writeIdentifiable(child_element, cluster)
3810
+
3811
+ child_element = ET.SubElement(child_element, "LIN-CLUSTER-VARIANTS")
3812
+ child_element = ET.SubElement(child_element, "LIN-CLUSTER-CONDITIONAL")
3813
+ self.writeCommunicationCluster(child_element, cluster)
3318
3814
 
3319
3815
  def writeCanCluster(self, element: ET.Element, cluster: CanCluster):
3320
- self.logger.debug("CanCluster %s" % cluster.getShortName())
3321
- child_element = ET.SubElement(element, "CAN-CLUSTER")
3322
- self.writeIdentifiable(child_element, cluster)
3816
+ if cluster is not None:
3817
+ self.logger.debug("CanCluster %s" % cluster.getShortName())
3818
+ child_element = ET.SubElement(element, "CAN-CLUSTER")
3819
+ self.writeIdentifiable(child_element, cluster)
3820
+
3821
+ child_element = ET.SubElement(child_element, "CAN-CLUSTER-VARIANTS")
3822
+ child_element = ET.SubElement(child_element, "CAN-CLUSTER-CONDITIONAL")
3823
+ self.writeCommunicationCluster(child_element, cluster)
3824
+ self.writeAbstractCanCluster(child_element, cluster)
3825
+
3826
+ def writeFlexrayCluster(self, element: ET.Element, cluster: FlexrayCluster):
3827
+ if cluster is not None:
3828
+ self.logger.debug("Write FlexrayCluster <%s>" % cluster.getShortName())
3829
+ child_element = ET.SubElement(element, "FLEXRAY-CLUSTER")
3830
+ self.writeIdentifiable(child_element, cluster)
3831
+
3832
+ child_element = ET.SubElement(child_element, "FLEXRAY-CLUSTER-VARIANTS")
3833
+ child_element = ET.SubElement(child_element, "FLEXRAY-CLUSTER-CONDITIONAL")
3834
+ self.writeCommunicationCluster(child_element, cluster)
3835
+
3836
+ self.setChildElementOptionalIntegerValue(child_element, "ACTION-POINT-OFFSET", cluster.getActionPointOffset())
3837
+ self.setChildElementOptionalTimeValue(child_element, "BIT", cluster.getBit())
3838
+ self.setChildElementOptionalIntegerValue(child_element, "CAS-RX-LOW-MAX", cluster.getCasRxLowMax())
3839
+ self.setChildElementOptionalIntegerValue(child_element, "COLD-START-ATTEMPTS", cluster.getColdStartAttempts())
3840
+ self.setChildElementOptionalTimeValue(child_element, "CYCLE", cluster.getCycle())
3841
+ self.setChildElementOptionalIntegerValue(child_element, "CYCLE-COUNT-MAX", cluster.getCycleCountMax())
3842
+ self.setChildElementOptionalBooleanValue(child_element, "DETECT-NIT-ERROR", cluster.getDetectNitError())
3843
+ self.setChildElementOptionalIntegerValue(child_element, "DYNAMIC-SLOT-IDLE-PHASE", cluster.getDynamicSlotIdlePhase())
3844
+ self.setChildElementOptionalIntegerValue(child_element, "IGNORE-AFTER-TX", cluster.getIgnoreAfterTx())
3845
+ self.setChildElementOptionalIntegerValue(child_element, "LISTEN-NOISE", cluster.getListenNoise())
3846
+ self.setChildElementOptionalIntegerValue(child_element, "MACRO-PER-CYCLE", cluster.getMacroPerCycle())
3847
+ self.setChildElementOptionalTimeValue(child_element, "MACROTICK-DURATION", cluster.getMacrotickDuration())
3848
+ self.setChildElementOptionalIntegerValue(child_element, "MAX-WITHOUT-CLOCK-CORRECTION-FATAL", cluster.getMaxWithoutClockCorrectionFatal())
3849
+ self.setChildElementOptionalIntegerValue(child_element, "MAX-WITHOUT-CLOCK-CORRECTION-PASSIVE", cluster.getMaxWithoutClockCorrectionPassive()) # noqa E501
3850
+ self.setChildElementOptionalIntegerValue(child_element, "MINISLOT-ACTION-POINT-OFFSET", cluster.getMinislotActionPointOffset())
3851
+ self.setChildElementOptionalIntegerValue(child_element, "MINISLOT-DURATION", cluster.getMinislotDuration())
3852
+ self.setChildElementOptionalIntegerValue(child_element, "NETWORK-IDLE-TIME", cluster.getNetworkIdleTime())
3853
+ self.setChildElementOptionalIntegerValue(child_element, "NETWORK-MANAGEMENT-VECTOR-LENGTH", cluster.getNetworkManagementVectorLength())
3854
+ self.setChildElementOptionalIntegerValue(child_element, "NUMBER-OF-MINISLOTS", cluster.getNumberOfMinislots())
3855
+ self.setChildElementOptionalIntegerValue(child_element, "NUMBER-OF-STATIC-SLOTS", cluster.getNumberOfStaticSlots())
3856
+ self.setChildElementOptionalIntegerValue(child_element, "OFFSET-CORRECTION-START", cluster.getOffsetCorrectionStart())
3857
+ self.setChildElementOptionalIntegerValue(child_element, "PAYLOAD-LENGTH-STATIC", cluster.getPayloadLengthStatic())
3858
+ self.setChildElementOptionalIntegerValue(child_element, "SAFETY-MARGIN", cluster.getSafetyMargin())
3859
+ self.setChildElementOptionalTimeValue(child_element, "SAMPLE-CLOCK-PERIOD", cluster.getSampleClockPeriod())
3860
+ self.setChildElementOptionalIntegerValue(child_element, "STATIC-SLOT-DURATION", cluster.getStaticSlotDuration())
3861
+ self.setChildElementOptionalIntegerValue(child_element, "SYNC-FRAME-ID-COUNT-MAX", cluster.getSyncFrameIdCountMax())
3862
+ self.setChildElementOptionalIntegerValue(child_element, "TRANSMISSION-START-SEQUENCE-DURATION", cluster.getTransmissionStartSequenceDuration()) # noqa E501
3863
+ self.setChildElementOptionalIntegerValue(child_element, "WAKEUP-RX-IDLE", cluster.getWakeupRxIdle())
3864
+ self.setChildElementOptionalIntegerValue(child_element, "WAKEUP-RX-LOW", cluster.getWakeupRxLow())
3865
+ self.setChildElementOptionalIntegerValue(child_element, "WAKEUP-RX-WINDOW", cluster.getWakeupRxWindow())
3866
+ self.setChildElementOptionalIntegerValue(child_element, "WAKEUP-TX-ACTIVE", cluster.getWakeupTxActive())
3867
+ self.setChildElementOptionalIntegerValue(child_element, "WAKEUP-TX-IDLE", cluster.getWakeupTxIdle())
3868
+
3869
+ def writeCollectionElementRefs(self, element: ET.Element, collection: Collection):
3870
+ refs = collection.getElementRefs()
3871
+ if len(refs) > 0:
3872
+ child_element = ET.SubElement(element, "ELEMENT-REFS")
3873
+ for ref in refs:
3874
+ self.setChildElementOptionalRefType(child_element, "ELEMENT-REF", ref)
3323
3875
 
3324
- child_element = ET.SubElement(child_element, "CAN-CLUSTER-VARIANTS")
3325
- child_element = ET.SubElement(child_element, "CAN-CLUSTER-CONDITIONAL")
3326
- self.writeCommunicationCluster(child_element, cluster)
3327
- self.writeAbstractCanCluster(child_element, cluster)
3876
+ def writeCollectionSourceElementRefs(self, element: ET.Element, collection: Collection):
3877
+ refs = collection.getSourceElementRefs()
3878
+ if len(refs) > 0:
3879
+ child_element = ET.SubElement(element, "SOURCE-ELEMENT-REFS")
3880
+ for ref in refs:
3881
+ self.setChildElementOptionalRefType(child_element, "SOURCE-ELEMENT-REF", ref)
3882
+
3883
+ def writeCollection(self, element: ET.Element, collection: Collection):
3884
+ if collection is not None:
3885
+ child_element = ET.SubElement(element, "COLLECTION")
3886
+ self.writeARElement(child_element, collection)
3887
+ self.setChildElementOptionalLiteral(child_element, "AUTO-COLLECT", collection.getAutoCollect())
3888
+ self.setChildElementOptionalLiteral(child_element, "ELEMENT-ROLE", collection.getElementRole())
3889
+ self.writeCollectionElementRefs(child_element, collection)
3890
+ self.writeCollectionSourceElementRefs(child_element, collection)
3891
+
3892
+ def writeKeywordClassifications(self, element: ET.Element, keyword: Keyword):
3893
+ classifications = keyword.getClassifications()
3894
+ if len(classifications) > 0:
3895
+ child_element = ET.SubElement(element, "CLASSIFICATIONS")
3896
+ for classification in classifications:
3897
+ self.setChildElementOptionalLiteral(child_element, "CLASSIFICATION", classification)
3898
+
3899
+ def writeKeyword(self, element: ET.Element, keyword: Keyword):
3900
+ if keyword is not None:
3901
+ # self.logger.debug("Write Keyword <%s>" % keyword.getShortName())
3902
+ child_element = ET.SubElement(element, "KEYWORD")
3903
+ self.writeIdentifiable(child_element, keyword)
3904
+ self.setChildElementOptionalLiteral(child_element, "ABBR-NAME", keyword.getAbbrName())
3905
+ self.writeKeywordClassifications(child_element, keyword)
3906
+
3907
+ def writeKeywordSetKeywords(self, element: ET.Element, keyword_set: KeywordSet):
3908
+ keywords = keyword_set.getKeywords()
3909
+ if len(keywords) > 0:
3910
+ child_element = ET.SubElement(element, "KEYWORDS")
3911
+ for keyword in keywords:
3912
+ if isinstance(keyword, Keyword):
3913
+ self.writeKeyword(child_element, keyword)
3914
+ else:
3915
+ self.notImplemented("Unsupported Keyword <%s>" % type(keyword))
3916
+
3917
+ def writeKeywordSet(self, element: ET.Element, keyword_set: KeywordSet):
3918
+ if keyword_set is not None:
3919
+ self.logger.debug("Write KeywordSet <%s>" % keyword_set.getShortName())
3920
+ child_element = ET.SubElement(element, "KEYWORD-SET")
3921
+ self.writeARElement(child_element, keyword_set)
3922
+ self.writeKeywordSetKeywords(child_element, keyword_set)
3923
+
3924
+ def writePortPrototypeBlueprint(self, element: ET.Element, blueprint: PortPrototypeBlueprint):
3925
+ if blueprint is not None:
3926
+ self.logger.debug("Write PortPrototypeBlueprint <%s>" % blueprint.getShortName())
3927
+ child_element = ET.SubElement(element, "PORT-PROTOTYPE-BLUEPRINT")
3928
+ self.writeARElement(child_element, blueprint)
3929
+ self.setChildElementOptionalRefType(child_element, "INTERFACE-REF", blueprint.getInterfaceRef())
3328
3930
 
3329
3931
  def writeMacMulticastGroup(self, element: ET.Element, group: MacMulticastGroup):
3330
3932
  if group is not None:
@@ -3390,27 +3992,28 @@ class ARXMLWriter(AbstractARXMLWriter):
3390
3992
  elif isinstance(port, ISignalPort):
3391
3993
  self.writeISignalPort(instances_tag, port)
3392
3994
  else:
3393
- self._raiseError("Unsupported CommConnectorPort <%s>" % type(port))
3995
+ self.notImplemented("Unsupported CommConnectorPort <%s>" % type(port))
3394
3996
 
3395
3997
  def writeCommunicationController(self, element: ET.Element, controller: CommunicationController):
3396
3998
  self.setChildElementOptionalBooleanValue(element, "WAKE-UP-BY-CONTROLLER-SUPPORTED", controller.getWakeUpByControllerSupported())
3397
3999
 
3398
4000
  def setCanControllerFdConfiguration(self, element: ET.Element, key: str, configuration: CanControllerFdConfiguration):
3399
4001
  if configuration is not None:
3400
- child_element = ET.SubElement(element, key)
3401
- #TODO: need to implemented
4002
+ pass
4003
+ # child_element = ET.SubElement(element, key)
4004
+ # TODO: need to implemented
3402
4005
 
3403
4006
  def setCanControllerFdConfigurationRequirements(self, element: ET.Element, key: str, requirements: CanControllerFdConfigurationRequirements):
3404
4007
  if requirements is not None:
3405
4008
  child_element = ET.SubElement(element, key)
3406
- self.setChildElementOptionalIntegerValue(child_element, "MAX-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMaxNumberOfTimeQuantaPerBit())
4009
+ self.setChildElementOptionalIntegerValue(child_element, "MAX-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMaxNumberOfTimeQuantaPerBit()) # noqa E501
3407
4010
  self.setChildElementOptionalFloatValue(child_element, "MAX-SAMPLE-POINT", requirements.getMaxSamplePoint())
3408
4011
  self.setChildElementOptionalFloatValue(child_element, "MAX-SYNC-JUMP-WIDTH", requirements.getMaxSyncJumpWidth())
3409
- self.setChildElementOptionalTimeValue(child_element, "MAX-TRCV-DELAY-COMPENSATION-OFFSET", requirements.getMaxTrcvDelayCompensationOffset())
3410
- self.setChildElementOptionalIntegerValue(child_element, "MIN-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMinNumberOfTimeQuantaPerBit())
4012
+ self.setChildElementOptionalTimeValue(child_element, "MAX-TRCV-DELAY-COMPENSATION-OFFSET", requirements.getMaxTrcvDelayCompensationOffset()) # noqa E501
4013
+ self.setChildElementOptionalIntegerValue(child_element, "MIN-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMinNumberOfTimeQuantaPerBit()) # noqa E501
3411
4014
  self.setChildElementOptionalFloatValue(child_element, "MIN-SAMPLE-POINT", requirements.getMinSamplePoint())
3412
4015
  self.setChildElementOptionalFloatValue(child_element, "MIN-SYNC-JUMP-WIDTH", requirements.getMinSyncJumpWidth())
3413
- self.setChildElementOptionalTimeValue(child_element, "MIN-TRCV-DELAY-COMPENSATION-OFFSET", requirements.getMinTrcvDelayCompensationOffset())
4016
+ self.setChildElementOptionalTimeValue(child_element, "MIN-TRCV-DELAY-COMPENSATION-OFFSET", requirements.getMinTrcvDelayCompensationOffset()) # noqa E501
3414
4017
  self.setChildElementOptionalBooleanValue(child_element, "TX-BIT-RATE-SWITCH", requirements.getTxBitRateSwitch())
3415
4018
 
3416
4019
  def writeAbstractCanCommunicationControllerAttributes(self, element: ET.Element, attributes: AbstractCanCommunicationControllerAttributes):
@@ -3421,10 +4024,10 @@ class ARXMLWriter(AbstractARXMLWriter):
3421
4024
  if requirements is not None:
3422
4025
  child_element = ET.SubElement(element, "CAN-CONTROLLER-CONFIGURATION-REQUIREMENTS")
3423
4026
  self.writeAbstractCanCommunicationControllerAttributes(child_element, requirements)
3424
- self.setChildElementOptionalIntegerValue(child_element, "MAX-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMaxNumberOfTimeQuantaPerBit())
4027
+ self.setChildElementOptionalIntegerValue(child_element, "MAX-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMaxNumberOfTimeQuantaPerBit()) # noqa E501
3425
4028
  self.setChildElementOptionalFloatValue(child_element, "MAX-SAMPLE-POINT", requirements.getMaxSamplePoint())
3426
4029
  self.setChildElementOptionalFloatValue(child_element, "MAX-SYNC-JUMP-WIDTH", requirements.getMaxSyncJumpWidth())
3427
- self.setChildElementOptionalIntegerValue(child_element, "MIN-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMinNumberOfTimeQuantaPerBit())
4030
+ self.setChildElementOptionalIntegerValue(child_element, "MIN-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMinNumberOfTimeQuantaPerBit()) # noqa E501
3428
4031
  self.setChildElementOptionalFloatValue(child_element, "MIN-SAMPLE-POINT", requirements.getMinSamplePoint())
3429
4032
  self.setChildElementOptionalFloatValue(child_element, "MIN-SYNC-JUMP-WIDTH", requirements.getMinSyncJumpWidth())
3430
4033
 
@@ -3435,7 +4038,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3435
4038
  if isinstance(attributes, CanControllerConfigurationRequirements):
3436
4039
  self.writeCanControllerConfigurationRequirements(child_element, attributes)
3437
4040
  else:
3438
- self.notImplemented("Unsupported CanControllerAttributes <%s>" % type(attributes))
4041
+ self.notImplemented("Unsupported CanControllerAttributes <%s>" % type(attributes))
3439
4042
 
3440
4043
  def writeAbstractCanCommunicationController(self, element: ET.Element, controller: AbstractCanCommunicationController):
3441
4044
  self.writeCommunicationController(element, controller)
@@ -3494,10 +4097,10 @@ class ARXMLWriter(AbstractARXMLWriter):
3494
4097
 
3495
4098
  def setCouplingPortDetails(self, element: ET.Element, key: str, details: CouplingPortDetails):
3496
4099
  if details is not None:
3497
- child_element = ET.SubElement(element, key)
3498
- self.writeCouplingPortDetailsCouplingPortStructuralElements(child_element, details)
3499
- self.writeCouplingPortDetailsEthernetPriorityRegenerations(child_element, details)
3500
- self.setChildElementOptionalRefType(child_element, "LAST-EGRESS-SCHEDULER-REF", details.getLastEgressSchedulerRef())
4100
+ child_element = ET.SubElement(element, key)
4101
+ self.writeCouplingPortDetailsCouplingPortStructuralElements(child_element, details)
4102
+ self.writeCouplingPortDetailsEthernetPriorityRegenerations(child_element, details)
4103
+ self.setChildElementOptionalRefType(child_element, "LAST-EGRESS-SCHEDULER-REF", details.getLastEgressSchedulerRef())
3501
4104
 
3502
4105
  def writeVlanMembership(self, element: ET.Element, membership: VlanMembership):
3503
4106
  if membership is not None:
@@ -3519,7 +4122,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3519
4122
  child_element = ET.SubElement(element, "COUPLING-PORT")
3520
4123
  self.writeIdentifiable(child_element, port)
3521
4124
  self.setCouplingPortDetails(child_element, "COUPLING-PORT-DETAILS", port.getCouplingPortDetails())
3522
- self.setChildElementOptionalLiteral(child_element, "MAC-LAYER-TYPE", port.getMacAddressVlanAssignments())
4125
+ self.setChildElementOptionalLiteral(child_element, "MAC-LAYER-TYPE", port.getMacLayerType())
3523
4126
  self.writeCouplingPortVlanMemberships(child_element, port)
3524
4127
 
3525
4128
  def writeEthernetCommunicationControllerCouplingPorts(self, element: ET.Element, controller: EthernetCommunicationController):
@@ -3552,6 +4155,8 @@ class ARXMLWriter(AbstractARXMLWriter):
3552
4155
  self.writeEthernetCommunicationController(child_element, controller)
3553
4156
  elif isinstance(controller, LinMaster):
3554
4157
  self.writeLinMaster(child_element, controller)
4158
+ elif isinstance(controller, FlexrayCommunicationController):
4159
+ self.writeFlexrayCommunicationController(child_element, controller)
3555
4160
  else:
3556
4161
  self.notImplemented("Unsupported Communication Controller <%s>" % type(controller))
3557
4162
 
@@ -3582,6 +4187,10 @@ class ARXMLWriter(AbstractARXMLWriter):
3582
4187
  self.logger.debug("Write LinCommunicationConnector %s" % connector.getShortName())
3583
4188
  self.writeCommunicationConnector(element, connector)
3584
4189
 
4190
+ def writeFlexrayCommunicationConnector(self, element: ET.Element, connector: FlexrayCommunicationConnector):
4191
+ self.logger.debug("Write FlexrayCommunicationConnector %s" % connector.getShortName())
4192
+ self.writeCommunicationConnector(element, connector)
4193
+
3585
4194
  def writeEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
3586
4195
  connectors = instance.getConnectors()
3587
4196
  if len(connectors) > 0:
@@ -3596,8 +4205,11 @@ class ARXMLWriter(AbstractARXMLWriter):
3596
4205
  elif isinstance(connector, LinCommunicationConnector):
3597
4206
  child_element = ET.SubElement(connectors_tag, "LIN-COMMUNICATION-CONNECTOR")
3598
4207
  self.writeLinCommunicationConnector(child_element, connector)
4208
+ elif isinstance(connector, FlexrayCommunicationConnector):
4209
+ child_element = ET.SubElement(connectors_tag, "FLEXRAY-COMMUNICATION-CONNECTOR")
4210
+ self.writeFlexrayCommunicationConnector(child_element, connector)
3599
4211
  else:
3600
- self._raiseError("Unsupported Communication connector <%s>" % type(connector))
4212
+ self.notImplemented("Unsupported Communication connector <%s>" % type(connector))
3601
4213
 
3602
4214
  def writeEcuInstanceAssociatedComIPduGroupRefs(self, element: ET.Element, instance: EcuInstance):
3603
4215
  refs = instance.getAssociatedComIPduGroupRefs()
@@ -3614,7 +4226,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3614
4226
  self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-GW-TIME-BASE", instance.getComConfigurationGwTimeBase())
3615
4227
  self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-RX-TIME-BASE", instance.getComConfigurationRxTimeBase())
3616
4228
  self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-TX-TIME-BASE", instance.getComConfigurationTxTimeBase())
3617
- self.setChildElementOptionalBooleanValue(child_element, "COM-ENABLE-MDT-FOR-CYCLIC-TRANSMISSION", instance.getComEnableMDTForCyclicTransmission())
4229
+ self.setChildElementOptionalBooleanValue(child_element, "COM-ENABLE-MDT-FOR-CYCLIC-TRANSMISSION", instance.getComEnableMDTForCyclicTransmission()) # noqa E501
3618
4230
  self.writeEcuInstanceCommControllers(child_element, instance)
3619
4231
  self.writeEcuInstanceConnectors(child_element, instance)
3620
4232
  self.setChildElementOptionalIntegerValue(child_element, "DIAGNOSTIC-ADDRESS", instance.getDiagnosticAddress())
@@ -3631,16 +4243,53 @@ class ARXMLWriter(AbstractARXMLWriter):
3631
4243
  for signal_ref in signal_refs:
3632
4244
  self.setChildElementOptionalRefType(signal_refs_tag, "SYSTEM-SIGNAL-REF", signal_ref)
3633
4245
 
3634
- def setSenderReceiverToSignalMapping(self, element: ET.Element, mapping: SenderReceiverToSignalMapping):
4246
+ def writeSenderReceiverToSignalMapping(self, element: ET.Element, mapping: SenderReceiverToSignalMapping):
3635
4247
  child_element = ET.SubElement(element, "SENDER-RECEIVER-TO-SIGNAL-MAPPING")
3636
4248
  self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-DIRECTION", mapping.getCommunicationDirection())
3637
4249
  self.setVariableDataPrototypeInSystemInstanceRef(child_element, "DATA-ELEMENT-IREF", mapping.getDataElementIRef())
3638
4250
  self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-REF", mapping.getSystemSignalRef())
3639
4251
 
3640
- def setSenderReceiverToSignalGroupMapping(self, element: ET.Element, mapping: SenderReceiverToSignalGroupMapping):
4252
+ def writeSenderRecCompositeTypeMapping(self, element: ET.Element, mapping: SenderRecCompositeTypeMapping):
4253
+ self.writeARObjectAttributes(element, mapping)
4254
+
4255
+ def writeSenderRecRecordElementMapping(self, element: ET.Element, mapping: SenderRecRecordElementMapping):
4256
+ if mapping is not None:
4257
+ child_element = ET.SubElement(element, "SENDER-REC-RECORD-ELEMENT-MAPPING")
4258
+ self.writeARObjectAttributes(child_element, mapping)
4259
+ self.setChildElementOptionalRefType(child_element, "APPLICATION-RECORD-ELEMENT-REF", mapping.getApplicationRecordElementRef())
4260
+ self.setChildElementOptionalRefType(child_element, "IMPLEMENTATION-RECORD-ELEMENT-REF", mapping.getImplementationRecordElementRef())
4261
+ self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-REF", mapping.getSystemSignalRef())
4262
+
4263
+ def writeSenderRecArrayTypeMappingRecordElementMapping(self, element: ET.Element, mapping: SenderRecRecordTypeMapping):
4264
+ record_element_mappings = mapping.getRecordElementMappings()
4265
+ if len(record_element_mappings) > 0:
4266
+ child_element = ET.SubElement(element, "RECORD-ELEMENT-MAPPINGS")
4267
+ for record_element_mapping in record_element_mappings:
4268
+ if isinstance(record_element_mapping, SenderRecRecordElementMapping):
4269
+ self.writeSenderRecRecordElementMapping(child_element, record_element_mapping)
4270
+ else:
4271
+ self.notImplemented("Unsupported RecordElementMapping %s" % type(record_element_mapping))
4272
+
4273
+ def writeSenderRecRecordTypeMapping(self, element: ET.Element, mapping: SenderRecRecordTypeMapping):
4274
+ if mapping is not None:
4275
+ child_element = ET.SubElement(element, "SENDER-REC-RECORD-TYPE-MAPPING")
4276
+ self.writeSenderRecCompositeTypeMapping(child_element, mapping)
4277
+ self.writeSenderRecArrayTypeMappingRecordElementMapping(child_element, mapping)
4278
+
4279
+ def writeSenderReceiverToSignalGroupMappingTypeMapping(self, element: ET.Element, mapping: SenderReceiverToSignalGroupMapping):
4280
+ type_mapping = mapping.getTypeMapping()
4281
+ if type_mapping is not None:
4282
+ child_element = ET.SubElement(element, "TYPE-MAPPING")
4283
+ if isinstance(type_mapping, SenderRecRecordTypeMapping):
4284
+ self.writeSenderRecRecordTypeMapping(child_element, type_mapping)
4285
+ else:
4286
+ self.notImplemented("Unsupported Type Mapping %s" % type(type_mapping))
4287
+
4288
+ def writeSenderReceiverToSignalGroupMapping(self, element: ET.Element, mapping: SenderReceiverToSignalGroupMapping):
3641
4289
  child_element = ET.SubElement(element, "SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING")
3642
4290
  self.setVariableDataPrototypeInSystemInstanceRef(child_element, "DATA-ELEMENT-IREF", mapping.getDataElementIRef())
3643
4291
  self.setChildElementOptionalRefType(child_element, "SIGNAL-GROUP-REF", mapping.getSignalGroupRef())
4292
+ self.writeSenderReceiverToSignalGroupMappingTypeMapping(child_element, mapping)
3644
4293
 
3645
4294
  def writeSystemMappingDataMappings(self, element: ET.Element, system_mapping: SystemMapping):
3646
4295
  data_mappings = system_mapping.getDataMappings()
@@ -3648,9 +4297,9 @@ class ARXMLWriter(AbstractARXMLWriter):
3648
4297
  child_element = ET.SubElement(element, "DATA-MAPPINGS")
3649
4298
  for data_mapping in data_mappings:
3650
4299
  if isinstance(data_mapping, SenderReceiverToSignalMapping):
3651
- self.setSenderReceiverToSignalMapping(child_element, data_mapping)
4300
+ self.writeSenderReceiverToSignalMapping(child_element, data_mapping)
3652
4301
  elif isinstance(data_mapping, SenderReceiverToSignalGroupMapping):
3653
- self.setSenderReceiverToSignalGroupMapping(child_element, data_mapping)
4302
+ self.writeSenderReceiverToSignalGroupMapping(child_element, data_mapping)
3654
4303
  else:
3655
4304
  self.notImplemented("Unsupported Data Mapping %s" % type(data_mapping))
3656
4305
 
@@ -3767,6 +4416,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3767
4416
  self.setChildElementOptionalNumericalValue(child_element, "LENGTH-EXP", dimension.getLengthExp())
3768
4417
  self.setChildElementOptionalNumericalValue(child_element, "LUMINOUS-INTENSITY-EXP", dimension.getLuminousIntensityExp())
3769
4418
  self.setChildElementOptionalNumericalValue(child_element, "MASS-EXP", dimension.getMassExp())
4419
+ self.setChildElementOptionalNumericalValue(child_element, "MOLAR-AMOUNT-EXP", dimension.getMolarAmountExp())
3770
4420
  self.setChildElementOptionalNumericalValue(child_element, "TEMPERATURE-EXP", dimension.getTemperatureExp())
3771
4421
  self.setChildElementOptionalNumericalValue(child_element, "TIME-EXP", dimension.getTimeExp())
3772
4422
  self.setChildElementOptionalNumericalValue(child_element, "CURRENT-EXP", dimension.getCurrentExp())
@@ -3805,19 +4455,43 @@ class ARXMLWriter(AbstractARXMLWriter):
3805
4455
  for mapping in mappings:
3806
4456
  self.setDataPrototypeMapping(child_element, mapping)
3807
4457
 
3808
- def setVariableAndParameterInterfaceMapping(self, element: ET.Element, mapping: VariableAndParameterInterfaceMapping):
3809
- self.logger.debug("set VariableAndParameterInterfaceMapping %s" % mapping.getShortName())
4458
+ def writeVariableAndParameterInterfaceMapping(self, element: ET.Element, mapping: VariableAndParameterInterfaceMapping):
4459
+ # self.logger.debug("Write VariableAndParameterInterfaceMapping %s" % mapping.getShortName())
3810
4460
  child_element = ET.SubElement(element, "VARIABLE-AND-PARAMETER-INTERFACE-MAPPING")
3811
4461
  self.writeIdentifiable(child_element, mapping)
3812
4462
  self.setDataPrototypeMappings(child_element, "DATA-MAPPINGS", mapping.getDataMappings())
3813
4463
 
4464
+ def writeClientServerOperationMapping(self, element: ET.Element, mapping: ClientServerOperationMapping):
4465
+ child_element = ET.SubElement(element, "CLIENT-SERVER-OPERATION-MAPPING")
4466
+ self.setChildElementOptionalRefType(child_element, "FIRST-OPERATION-REF", mapping.getFirstOperationRef())
4467
+ self.setChildElementOptionalRefType(child_element, "SECOND-OPERATION-REF", mapping.getSecondOperationRef())
4468
+
4469
+ def writeClientServerInterfaceMappingOperationMappings(self, element: ET.Element, mapping: ClientServerInterfaceMapping):
4470
+ operation_mappings = mapping.getOperationMappings()
4471
+ if len(operation_mappings) > 0:
4472
+ child_element = ET.SubElement(element, "OPERATION-MAPPINGS")
4473
+ for operation_mapping in operation_mappings:
4474
+ if isinstance(operation_mapping, ClientServerOperationMapping):
4475
+ self.writeClientServerOperationMapping(child_element, operation_mapping)
4476
+ else:
4477
+ self.notImplemented("Unsupported Operation Mapping <%s>" % type(operation_mapping))
4478
+
4479
+ def writeClientServerInterfaceMapping(self, element: ET.Element, mapping: ClientServerInterfaceMapping):
4480
+ # self.logger.debug("Read ClientServerInterfaceMapping %s" % mapping.getShortName())
4481
+ if mapping is not None:
4482
+ child_element = ET.SubElement(element, "CLIENT-SERVER-INTERFACE-MAPPING")
4483
+ self.writeIdentifiable(child_element, mapping)
4484
+ self.writeClientServerInterfaceMappingOperationMappings(child_element, mapping)
4485
+
3814
4486
  def writePortInterfaceMappings(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
3815
4487
  mappings = mapping_set.getPortInterfaceMappings()
3816
4488
  if len(mappings) > 0:
3817
4489
  child_element = ET.SubElement(element, "PORT-INTERFACE-MAPPINGS")
3818
4490
  for mapping in mappings:
3819
4491
  if isinstance(mapping, VariableAndParameterInterfaceMapping):
3820
- self.setVariableAndParameterInterfaceMapping(child_element, mapping)
4492
+ self.writeVariableAndParameterInterfaceMapping(child_element, mapping)
4493
+ elif isinstance(mapping, ClientServerInterfaceMapping):
4494
+ self.writeClientServerInterfaceMapping(child_element, mapping)
3821
4495
  else:
3822
4496
  self.notImplemented("Unsupported PortInterfaceMapping <%s>" % type(mapping))
3823
4497
 
@@ -3873,7 +4547,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3873
4547
  ecuc_values_tag = ET.SubElement(element, "ECUC-VALUES")
3874
4548
  for value_ref in value_refs:
3875
4549
  child_element = ET.SubElement(ecuc_values_tag, "ECUC-MODULE-CONFIGURATION-VALUES-REF-CONDITIONAL")
3876
- self.setChildElementOptionalRefType(child_element, "ECUC-MODULE-CONFIGURATION-VALUES-REF", value_ref)
4550
+ self.setChildElementOptionalRefType(child_element, "ECUC-MODULE-CONFIGURATION-VALUES-REF", value_ref)
3877
4551
 
3878
4552
  def writeEcucValueCollection(self, element: ET.Element, collection: EcucValueCollection):
3879
4553
  self.logger.debug("EcucValueCollection %s" % collection.getShortName())
@@ -3890,7 +4564,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3890
4564
  if isinstance(sub_container, EcucContainerValue):
3891
4565
  self.writeEcucContainValue(sub_containers_tag, sub_container)
3892
4566
  else:
3893
- self.notImplemented("Unsupported Sub Container %s" % type(container))
4567
+ self.notImplemented("Unsupported Sub Container %s" % type(container))
3894
4568
 
3895
4569
  def writeEcucParameterValue(self, element: ET.Element, param_value: EcucParameterValue):
3896
4570
  self.setChildElementOptionalRefType(element, "DEFINITION-REF", param_value.getDefinitionRef())
@@ -3909,7 +4583,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3909
4583
  def writeEcucContainerValueParameterValues(self, element: ET.Element, container_value: EcucContainerValue):
3910
4584
  param_values = container_value.getParameterValues()
3911
4585
  if len(param_values) > 0:
3912
- child_element = ET.SubElement(element, "PARAMETER-VALUES")
4586
+ child_element = ET.SubElement(element, "PARAMETER-VALUES")
3913
4587
  for param_value in param_values:
3914
4588
  if isinstance(param_value, EcucTextualParamValue):
3915
4589
  self.setEcucTextualParamValue(child_element, param_value)
@@ -3922,7 +4596,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3922
4596
  self.setChildElementOptionalRefType(element, "DEFINITION-REF", value.getDefinitionRef())
3923
4597
  self.setAnnotations(element, value.getAnnotations())
3924
4598
 
3925
- def setEcucReferenceValue(self, element: ET.Element, value = EcucReferenceValue()):
4599
+ def setEcucReferenceValue(self, element: ET.Element, value=EcucReferenceValue()):
3926
4600
  child_element = ET.SubElement(element, "ECUC-REFERENCE-VALUE")
3927
4601
  self.writeEcucAbstractReferenceValue(child_element, value)
3928
4602
  self.setChildElementOptionalRefType(child_element, "VALUE-REF", value.getValueRef())
@@ -3931,13 +4605,13 @@ class ARXMLWriter(AbstractARXMLWriter):
3931
4605
  def setAnyInstanceRef(self, element: ET.Element, key, instance_ref: AnyInstanceRef):
3932
4606
  if instance_ref is not None:
3933
4607
  child_element = ET.SubElement(element, key)
3934
- self.setChildElementOptionalRefType(child_element, "BASE-REF", instance_ref.getBaseRef())
4608
+ self.setChildElementOptionalRefType(child_element, "BASE-REF", instance_ref.getBaseRef())
3935
4609
  for ref in instance_ref.getContextElementRefs():
3936
4610
  self.setChildElementOptionalRefType(child_element, "CONTEXT-ELEMENT-REF", ref)
3937
4611
  self.setChildElementOptionalRefType(child_element, "TARGET-REF", instance_ref.getTargetRef())
3938
4612
  return instance_ref
3939
4613
 
3940
- def setEcucInstanceReferenceValue(self, element: ET.Element, value : EcucInstanceReferenceValue):
4614
+ def setEcucInstanceReferenceValue(self, element: ET.Element, value: EcucInstanceReferenceValue):
3941
4615
  child_element = ET.SubElement(element, "ECUC-INSTANCE-REFERENCE-VALUE")
3942
4616
  self.writeEcucAbstractReferenceValue(child_element, value)
3943
4617
  self.setAnyInstanceRef(child_element, "VALUE-IREF", value.getValueIRef())
@@ -3946,7 +4620,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3946
4620
  def writeEcucContainerValueReferenceValues(self, element: ET.Element, container_value: EcucContainerValue):
3947
4621
  reference_values = container_value.getReferenceValues()
3948
4622
  if len(reference_values) > 0:
3949
- child_element = ET.SubElement(element, "REFERENCE-VALUES")
4623
+ child_element = ET.SubElement(element, "REFERENCE-VALUES")
3950
4624
  for reference_value in reference_values:
3951
4625
  if isinstance(reference_value, EcucReferenceValue):
3952
4626
  self.setEcucReferenceValue(child_element, reference_value)
@@ -3972,7 +4646,7 @@ class ARXMLWriter(AbstractARXMLWriter):
3972
4646
  if isinstance(container, EcucContainerValue):
3973
4647
  self.writeEcucContainValue(containers_tag, container)
3974
4648
  else:
3975
- self.notImplemented("Unsupported Container %s" % type(container))
4649
+ self.notImplemented("Unsupported Container %s" % type(container))
3976
4650
 
3977
4651
  def writeEcucModuleConfigurationValues(self, element: ET.Element, values: EcucModuleConfigurationValues):
3978
4652
  self.logger.debug("EcucModuleConfigurationValues %s" % values.getShortName())
@@ -3983,16 +4657,58 @@ class ARXMLWriter(AbstractARXMLWriter):
3983
4657
  self.setChildElementOptionalRefType(child_element, "MODULE-DESCRIPTION-REF", values.getModuleDescriptionRef())
3984
4658
  self.writeEcucModuleConfigurationValuesContainers(child_element, values)
3985
4659
 
4660
+ def writeISignalGroupISignalRef(self, element: ET.Element, group: ISignalGroup):
4661
+ signal_refs = group.getISignalRefs()
4662
+ if len(signal_refs) > 0:
4663
+ child_element = ET.SubElement(element, "I-SIGNAL-REFS")
4664
+ for signal_ref in signal_refs:
4665
+ self.setChildElementOptionalRefType(child_element, "I-SIGNAL-REF", signal_ref)
4666
+
4667
+ def writeISignalGroupComBasedSignalGroupTransformation(self, element: ET.Element, group: ISignalGroup):
4668
+ refs = group.getComBasedSignalGroupTransformationRefs()
4669
+ if len(refs) > 0:
4670
+ com_based_element = ET.SubElement(element, "COM-BASED-SIGNAL-GROUP-TRANSFORMATIONS")
4671
+ cond_element = ET.SubElement(com_based_element, "DATA-TRANSFORMATION-REF-CONDITIONAL")
4672
+ for ref in refs:
4673
+ self.setChildElementOptionalRefType(cond_element, "DATA-TRANSFORMATION-REF", ref)
4674
+
4675
+ def writeTransformationISignalProps(self, element: ET.Element, props: TransformationISignalProps):
4676
+ self.writeDescribable(element, props)
4677
+
4678
+ def writeEndToEndTransformationISignalPropsDataIds(self, element: ET.Element, props: EndToEndTransformationISignalProps):
4679
+ ids = props.getDataIds()
4680
+ if len(ids) > 0:
4681
+ child_element = ET.SubElement(element, "DATA-IDS")
4682
+ for id in ids:
4683
+ self.setChildElementOptionalPositiveInteger(child_element, "DATA-ID", id)
4684
+
4685
+ def writeEndToEndTransformationISignalProps(self, element: ET.Element, props: EndToEndTransformationISignalProps):
4686
+ if props is not None:
4687
+ props_element = ET.SubElement(element, "END-TO-END-TRANSFORMATION-I-SIGNAL-PROPS")
4688
+ variant_element = ET.SubElement(props_element, "END-TO-END-TRANSFORMATION-I-SIGNAL-PROPS-VARIANTS")
4689
+ child_element = ET.SubElement(variant_element, "END-TO-END-TRANSFORMATION-I-SIGNAL-PROPS-CONDITIONAL")
4690
+ self.writeTransformationISignalProps(child_element, props)
4691
+ self.setChildElementOptionalRefType(child_element, "TRANSFORMER-REF", props.getTransformerRef())
4692
+ self.writeEndToEndTransformationISignalPropsDataIds(child_element, props)
4693
+ self.setChildElementOptionalPositiveInteger(child_element, "DATA-LENGTH", props.getDataLength())
4694
+
4695
+ def writeISignalGroupTransformationISignalProps(self, element: ET.Element, group: ISignalGroup):
4696
+ props = group.getTransformationISignalProps()
4697
+ if props is not None:
4698
+ child_element = ET.SubElement(element, "TRANSFORMATION-I-SIGNAL-PROPSS")
4699
+ if isinstance(props, EndToEndTransformationISignalProps):
4700
+ self.writeEndToEndTransformationISignalProps(child_element, props)
4701
+ else:
4702
+ self.notImplemented("Unsupported TransformationISignalProps %s" % type(props))
4703
+
3986
4704
  def writeISignalGroup(self, element: ET.Element, group: ISignalGroup):
3987
4705
  self.logger.debug("ISignalGroup %s" % group.getShortName())
3988
4706
  child_element = ET.SubElement(element, "I-SIGNAL-GROUP")
3989
4707
  self.writeIdentifiable(child_element, group)
3990
- signal_refs = group.getISignalRefs()
3991
- if len(signal_refs) > 0:
3992
- signal_refs_tag = ET.SubElement(child_element, "I-SIGNAL-REFS")
3993
- for signal_ref in signal_refs:
3994
- self.setChildElementOptionalRefType(signal_refs_tag, "I-SIGNAL-REF", signal_ref)
4708
+ self.writeISignalGroupComBasedSignalGroupTransformation(child_element, group)
4709
+ self.writeISignalGroupISignalRef(child_element, group)
3995
4710
  self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-GROUP-REF", group.getSystemSignalGroupRef())
4711
+ self.writeISignalGroupTransformationISignalProps(child_element, group)
3996
4712
 
3997
4713
  def writeISignalIPduGroup(self, element: ET.Element, group: ISignalIPduGroup):
3998
4714
  self.logger.debug("Set ISignalIPduGroup %s" % group.getShortName())
@@ -4024,10 +4740,47 @@ class ARXMLWriter(AbstractARXMLWriter):
4024
4740
  child_element = ET.SubElement(element, "ETHERNET-FRAME")
4025
4741
  self.writeFrame(child_element, frame)
4026
4742
 
4027
- def writeLifeCycleInfoSet(self, element: ET.Element, set: LifeCycleInfoSet):
4028
- self.logger.debug("Write LifeCycleInfoSet %s" % set.getShortName())
4029
- child_element = ET.SubElement(element, "LIFE-CYCLE-INFO-SET")
4030
- self.writeIdentifiable(child_element, set)
4743
+ def setLifeCyclePeriod(self, element: ET.Element, key: str, period: LifeCyclePeriod):
4744
+ if period is not None:
4745
+ child_element = ET.SubElement(element, key)
4746
+ self.setChildElementOptionalRevisionLabelString(child_element, "AR-RELEASE-VERSION", period.getArReleaseVersion())
4747
+
4748
+ def writeLifeCycleInfoUseInsteadRefs(self, element: ET.Element, info: LifeCycleInfo):
4749
+ refs = info.getUseInsteadRefs()
4750
+ if len(refs) > 0:
4751
+ child_element = ET.SubElement(element, "USE-INSTEAD-REFS")
4752
+ for ref in refs:
4753
+ self.setChildElementOptionalRefType(child_element, "USE-INSTEAD-REF", ref)
4754
+
4755
+ def writeLifeCycleInfo(self, element: ET.Element, info: LifeCycleInfo):
4756
+ if info is not None:
4757
+ child_element = ET.SubElement(element, "LIFE-CYCLE-INFO")
4758
+ self.writeARObjectAttributes(child_element, info)
4759
+ self.setChildElementOptionalRefType(child_element, "LC-OBJECT-REF", info.getLcObjectRef())
4760
+ self.setChildElementOptionalRefType(child_element, "LC-STATE-REF", info.getLcStateRef())
4761
+ self.setLifeCyclePeriod(child_element, "PERIOD-BEGIN", info.getPeriodBegin())
4762
+ self.writeDocumentationBlock(child_element, "REMARK", info.getRemark())
4763
+ self.writeLifeCycleInfoUseInsteadRefs(child_element, info)
4764
+
4765
+ def writeLifeCycleInfoSetLifeCycleInfos(self, element: ET.Element, info_set: LifeCycleInfoSet):
4766
+ infos = info_set.getLifeCycleInfos()
4767
+ if len(infos) > 0:
4768
+ child_element = ET.SubElement(element, "LIFE-CYCLE-INFOS")
4769
+ for info in infos:
4770
+ if isinstance(info, LifeCycleInfo):
4771
+ self.writeLifeCycleInfo(child_element, info)
4772
+ else:
4773
+ self.notImplemented("Unsupported Life Cycle Info <%s>" % type(info))
4774
+
4775
+ def writeLifeCycleInfoSet(self, element: ET.Element, info_set: LifeCycleInfoSet):
4776
+ if info_set is not None:
4777
+ self.logger.debug("Write LifeCycleInfoSet %s" % info_set.getShortName())
4778
+ child_element = ET.SubElement(element, "LIFE-CYCLE-INFO-SET")
4779
+ self.writeIdentifiable(child_element, info_set)
4780
+ self.setChildElementOptionalRefType(child_element, "DEFAULT-LC-STATE-REF", info_set.getDefaultLcStateRef())
4781
+ self.writeLifeCycleInfoSetLifeCycleInfos(child_element, info_set)
4782
+ self.setChildElementOptionalRefType(child_element, "USED-LIFE-CYCLE-STATE-DEFINITION-GROUP-REF",
4783
+ info_set.getUsedLifeCycleStateDefinitionGroupRef())
4031
4784
 
4032
4785
  def writeDiagnosticConnectionFunctionalRequestRefs(self, element: ET.Element, connection: DiagnosticConnection):
4033
4786
  refs = connection.getFunctionalRequestRefs()
@@ -4252,6 +5005,66 @@ class ARXMLWriter(AbstractARXMLWriter):
4252
5005
  self.writeDoIpTpConfigDoIpLogicAddresses(child_element, config)
4253
5006
  self.writeDoIpTpConfigTpConnections(child_element, config)
4254
5007
 
5008
+ def writeHwDescriptionEntityHwCategoryRefs(self, element: ET.Element, entity: HwDescriptionEntity):
5009
+ refs = entity.getHwCategoryRefs()
5010
+ if len(refs) > 0:
5011
+ child_element = ET.SubElement(element, "HW-CATEGORY-REFS")
5012
+ for ref in refs:
5013
+ self.setChildElementOptionalRefType(child_element, "HW-CATEGORY-REF", ref)
5014
+
5015
+ def writeHwDescriptionEntity(self, element: ET.Element, entity: HwDescriptionEntity):
5016
+ self.writeARElement(element, entity)
5017
+ self.writeHwDescriptionEntityHwCategoryRefs(element, entity)
5018
+
5019
+ def writeHwPinGroup(self, element: ET.SubElement, pin_group: HwPinGroup):
5020
+ if pin_group is not None:
5021
+ child_element = ET.SubElement(element, "HW-PIN-GROUP")
5022
+ self.writeHwDescriptionEntity(child_element, pin_group)
5023
+
5024
+ def writeHwElementHwPinGroups(self, element: ET.Element, hw_element: HwElement):
5025
+ pin_groups = hw_element.getHwPinGroups()
5026
+ if len(pin_groups) > 0:
5027
+ child_element = ET.SubElement(element, "HW-PIN-GROUPS")
5028
+ for pin_group in pin_groups:
5029
+ if isinstance(pin_group, HwPinGroup):
5030
+ self.writeHwPinGroup(child_element, pin_group)
5031
+ else:
5032
+ self.notImplemented("Unsupported Hw Pin Group <%s>" % type(pin_group))
5033
+
5034
+ def writeHwElement(self, element: ET.Element, hw_element: HwElement):
5035
+ if hw_element is not None:
5036
+ self.logger.debug("Write HwElement <%s>" % hw_element.getShortName())
5037
+ child_element = ET.SubElement(element, "HW-ELEMENT")
5038
+ self.writeHwDescriptionEntity(child_element, hw_element)
5039
+ self.writeHwElementHwPinGroups(child_element, hw_element)
5040
+
5041
+ def writeHwAttributeDef(self, element: ET.Element, attribute_def: HwAttributeDef):
5042
+ if attribute_def is not None:
5043
+ child_element = ET.SubElement(element, "HW-ATTRIBUTE-DEF")
5044
+ self.writeIdentifiable(child_element, attribute_def)
5045
+ self.setChildElementOptionalRefType(child_element, "UNIT-REF", attribute_def.getUnitRef())
5046
+
5047
+ def writeHwCategoryHwAttributeDef(self, element: ET.Element, hw_category: HwCategory):
5048
+ attribute_defs = hw_category.getHwAttributeDefs()
5049
+ if len(attribute_defs) > 0:
5050
+ child_element = ET.SubElement(element, "HW-ATTRIBUTE-DEFS")
5051
+ for attribute_def in attribute_defs:
5052
+ if isinstance(attribute_def, HwAttributeDef):
5053
+ self.writeHwAttributeDef(child_element, attribute_def)
5054
+ else:
5055
+ self.notImplemented("Unsupported Hw Attribute Defs <%s>" % type(attribute_def))
5056
+
5057
+ def writeHwCategory(self, element: ET.Element, hw_category: HwCategory):
5058
+ self.logger.debug("write HwCategory <%s>" % hw_category.getShortName())
5059
+ child_element = ET.SubElement(element, "HW-CATEGORY")
5060
+ self.writeARElement(child_element, hw_category)
5061
+ self.writeHwCategoryHwAttributeDef(child_element, hw_category)
5062
+
5063
+ def writeHwType(self, element: ET.Element, type: HwType):
5064
+ self.logger.debug("Write HwType <%s>" % type.getShortName())
5065
+ child_element = ET.SubElement(element, "HW-TYPE")
5066
+ self.writeARElement(child_element, type)
5067
+
4255
5068
  def writeLinCommunicationController(self, element: ET.Element, controller: LinCommunicationController):
4256
5069
  self.writeCommunicationController(element, controller)
4257
5070
  self.setChildElementOptionalLiteral(element, "PROTOCOL-VERSION", controller.getProtocolVersion())
@@ -4296,7 +5109,7 @@ class ARXMLWriter(AbstractARXMLWriter):
4296
5109
  self.setChildElementOptionalRefType(child_element, "I-SIGNAL-IN-I-PDU-REF", condition.getISignalInIPduRef())
4297
5110
 
4298
5111
  def setTimeRangeType(self, element: ET.Element, key: str, time_range: TimeRangeType):
4299
- if time_range is not None:
5112
+ if time_range is not None:
4300
5113
  child_element = ET.SubElement(element, key)
4301
5114
  self.setChildElementOptionalTimeValue(child_element, "VALUE", time_range.getValue())
4302
5115
 
@@ -4305,12 +5118,7 @@ class ARXMLWriter(AbstractARXMLWriter):
4305
5118
  child_element = ET.SubElement(element, key)
4306
5119
  self.setChildElementOptionalIntegerValue(child_element, "NUMBER-OF-REPETITIONS", timing.getNumberOfRepetitions())
4307
5120
  self.setTimeRangeType(child_element, "REPETITION-PERIOD", timing.getRepetitionPeriod())
4308
-
4309
- def setTimeRangeType(self, element: ET.Element, key: str, time_range: TimeRangeType):
4310
- if time_range is not None:
4311
- child_element = ET.SubElement(element, key)
4312
- self.setChildElementOptionalTimeValue(child_element, "VALUE", time_range.getValue())
4313
-
5121
+
4314
5122
  def setCyclicTiming(self, element: ET.Element, key: str, timing: CyclicTiming):
4315
5123
  if timing is not None:
4316
5124
  child_element = ET.SubElement(element, key)
@@ -4324,7 +5132,7 @@ class ARXMLWriter(AbstractARXMLWriter):
4324
5132
  self.setCyclicTiming(child_element, "CYCLIC-TIMING", timing.getCyclicTiming())
4325
5133
  self.setEventControlledTiming(child_element, "EVENT-CONTROLLED-TIMING", timing.getEventControlledTiming())
4326
5134
 
4327
- def setTransmissionModeDeclaration(self, element: ET.Element, key: str, decl : TransmissionModeDeclaration):
5135
+ def setTransmissionModeDeclaration(self, element: ET.Element, key: str, decl: TransmissionModeDeclaration):
4328
5136
  if decl is not None:
4329
5137
  child_element = ET.SubElement(element, key)
4330
5138
  self.setTransmissionModeConditions(child_element, "TRANSMISSION-MODE-CONDITIONS", decl.getTransmissionModeConditions())
@@ -4347,6 +5155,144 @@ class ARXMLWriter(AbstractARXMLWriter):
4347
5155
  self.writeISignalToPduMappings(child_element, ipdu)
4348
5156
  self.setChildElementOptionalIntegerValue(child_element, "UNUSED-BIT-PATTERN", ipdu.getUnusedBitPattern())
4349
5157
 
5158
+ def writeFlexrayFrame(self, element: ET.Element, frame: FlexrayFrame):
5159
+ if frame is not None:
5160
+ self.logger.debug("Write FlexrayFrame <%s>" % frame.getShortName())
5161
+ child_element = ET.SubElement(element, "FLEXRAY-FRAME")
5162
+ self.writeFrame(child_element, frame)
5163
+
5164
+ def writeFlexrayCommunicationController(self, element: ET.Element, controller: FlexrayCommunicationController):
5165
+ if controller is not None:
5166
+ self.logger.debug("Write FlexrayCommunicationController <%s>" % controller.getShortName())
5167
+ controller_element = ET.SubElement(element, "FLEXRAY-COMMUNICATION-CONTROLLER")
5168
+ self.writeIdentifiable(controller_element, controller)
5169
+ variant_element = ET.SubElement(controller_element, "FLEXRAY-COMMUNICATION-CONTROLLER-VARIANTS")
5170
+ child_element = ET.SubElement(variant_element, "FLEXRAY-COMMUNICATION-CONTROLLER-CONDITIONAL")
5171
+ self.writeCommunicationController(controller_element, controller)
5172
+ self.setChildElementOptionalIntegerValue(child_element, "ACCEPTED-STARTUP-RANGE", controller.getAcceptedStartupRange())
5173
+ self.setChildElementOptionalBooleanValue(child_element, "ALLOW-HALT-DUE-TO-CLOCK", controller.getAllowHaltDueToClock())
5174
+ self.setChildElementOptionalIntegerValue(child_element, "ALLOW-PASSIVE-TO-ACTIVE", controller.getAllowPassiveToActive())
5175
+ self.setChildElementOptionalIntegerValue(child_element, "CLUSTER-DRIFT-DAMPING", controller.getClusterDriftDamping())
5176
+ self.setChildElementOptionalIntegerValue(child_element, "DECODING-CORRECTION", controller.getDecodingCorrection())
5177
+ self.setChildElementOptionalIntegerValue(child_element, "DELAY-COMPENSATION-A", controller.getDelayCompensationA())
5178
+ self.setChildElementOptionalIntegerValue(child_element, "DELAY-COMPENSATION-B", controller.getDelayCompensationB())
5179
+ self.setChildElementOptionalBooleanValue(child_element, "KEY-SLOT-ONLY-ENABLED", controller.getKeySlotOnlyEnabled())
5180
+ self.setChildElementOptionalBooleanValue(child_element, "KEY-SLOT-USED-FOR-START-UP", controller.getKeySlotUsedForStartUp())
5181
+ self.setChildElementOptionalBooleanValue(child_element, "KEY-SLOT-USED-FOR-SYNC", controller.getKeySlotUsedForSync())
5182
+ self.setChildElementOptionalIntegerValue(child_element, "LATEST-TX", controller.getLatestTX())
5183
+ self.setChildElementOptionalIntegerValue(child_element, "LISTEN-TIMEOUT", controller.getListenTimeout())
5184
+ self.setChildElementOptionalIntegerValue(child_element, "MACRO-INITIAL-OFFSET-A", controller.getMacroInitialOffsetA())
5185
+ self.setChildElementOptionalIntegerValue(child_element, "MACRO-INITIAL-OFFSET-B", controller.getMacroInitialOffsetB())
5186
+ self.setChildElementOptionalIntegerValue(child_element, "MAXIMUM-DYNAMIC-PAYLOAD-LENGTH", controller.getMaximumDynamicPayloadLength())
5187
+ self.setChildElementOptionalIntegerValue(child_element, "MICRO-INITIAL-OFFSET-A", controller.getMicroInitialOffsetA())
5188
+ self.setChildElementOptionalIntegerValue(child_element, "MICRO-INITIAL-OFFSET-B", controller.getMicroInitialOffsetB())
5189
+ self.setChildElementOptionalIntegerValue(child_element, "MICRO-PER-CYCLE", controller.getMicroPerCycle())
5190
+ self.setChildElementOptionalTimeValue(child_element, "MICROTICK-DURATION", controller.getMicrotickDuration())
5191
+ self.setChildElementOptionalIntegerValue(child_element, "OFFSET-CORRECTION-OUT", controller.getOffsetCorrectionOut())
5192
+ self.setChildElementOptionalIntegerValue(child_element, "RATE-CORRECTION-OUT", controller.getRateCorrectionOut())
5193
+ self.setChildElementOptionalIntegerValue(child_element, "SAMPLES-PER-MICROTICK", controller.getSamplesPerMicrotick())
5194
+ self.setChildElementOptionalIntegerValue(child_element, "WAKE-UP-PATTERN", controller.getWakeUpPattern())
5195
+
5196
+ def writeDataTransformationTransformerChainRefs(self, element: ET.Element, dtf: DataTransformation):
5197
+ refs = dtf.getTransformerChainRefs()
5198
+ if len(refs) > 0:
5199
+ child_element = ET.SubElement(element, "TRANSFORMER-CHAIN-REFS")
5200
+ for ref in refs:
5201
+ self.setChildElementOptionalRefType(child_element, "TRANSFORMER-CHAIN-REF", ref)
5202
+
5203
+ def writeDataTransformation(self, element: ET.Element, dtf: DataTransformation):
5204
+ if dtf is not None:
5205
+ child_element = ET.SubElement(element, "DATA-TRANSFORMATION")
5206
+ self.writeIdentifiable(child_element, dtf)
5207
+ self.setChildElementOptionalBooleanValue(child_element, "EXECUTE-DESPITE-DATA-UNAVAILABILITY", dtf.getExecuteDespiteDataUnavailability())
5208
+ self.writeDataTransformationTransformerChainRefs(child_element, dtf)
5209
+
5210
+ def writeDataTransformationSetDataTransformations(self, element: ET.Element, dtf_set: DataTransformationSet):
5211
+ dtfs = dtf_set.getDataTransformations()
5212
+ if len(dtfs) > 0:
5213
+ child_element = ET.SubElement(element, "DATA-TRANSFORMATIONS")
5214
+ for dtf in dtfs:
5215
+ if isinstance(dtf, DataTransformation):
5216
+ self.writeDataTransformation(child_element, dtf)
5217
+ else:
5218
+ self.notImplemented("Unsupported DataTransformation <%s>" % type(dtf))
5219
+
5220
+ def writeDataTransformationSetTransformationTechnologies(self, element: ET.Element, dtf_set: DataTransformationSet):
5221
+ techs = dtf_set.getTransformationTechnologies()
5222
+ if len(techs) > 0:
5223
+ child_element = ET.SubElement(element, "TRANSFORMATION-TECHNOLOGYS")
5224
+ for tech in techs:
5225
+ if isinstance(tech, TransformationTechnology):
5226
+ self.writeTransformationTechnology(child_element, tech)
5227
+ else:
5228
+ self.notImplemented("Unsupported TransformationTechnology <%s>" % type(tech))
5229
+
5230
+ def writeBufferPropertiesBufferComputation(self, element: ET.Element, properties: BufferProperties):
5231
+ computation = properties.getBufferComputation()
5232
+ if computation is not None:
5233
+ self.setCompuScale(element, "BUFFER-COMPUTATION", computation)
5234
+
5235
+ def setBufferProperties(self, element: ET.Element, key: str, properties: BufferProperties):
5236
+ if properties is not None:
5237
+ child_element = ET.SubElement(element, key)
5238
+ self.writeBufferPropertiesBufferComputation(child_element, properties)
5239
+ self.setChildElementOptionalIntegerValue(child_element, "HEADER-LENGTH", properties.getHeaderLength())
5240
+ self.setChildElementOptionalBooleanValue(child_element, "IN-PLACE", properties.getInPlace())
5241
+
5242
+ def writeDescribable(self, element: ET.Element, desc: Describable):
5243
+ self.writeARObjectAttributes(element, desc)
5244
+
5245
+ def writeTransformationDescription(self, element: ET.Element, desc: TransformationDescription):
5246
+ self.writeDescribable(element, desc)
5247
+
5248
+ def writeEndToEndTransformationDescription(self, element: ET.Element, desc: EndToEndTransformationDescription):
5249
+ if desc is not None:
5250
+ child_element = ET.SubElement(element, "END-TO-END-TRANSFORMATION-DESCRIPTION")
5251
+ self.writeTransformationDescription(child_element, desc)
5252
+ self.setChildElementOptionalLiteral(child_element, "DATA-ID-MODE", desc.getDataIdMode())
5253
+ self.setChildElementOptionalPositiveInteger(child_element, "MAX-DELTA-COUNTER", desc.getMaxDeltaCounter())
5254
+ self.setChildElementOptionalPositiveInteger(child_element, "MAX-ERROR-STATE-INIT", desc.getMaxErrorStateInit())
5255
+ self.setChildElementOptionalPositiveInteger(child_element, "MAX-ERROR-STATE-INVALID", desc.getMaxErrorStateInvalid())
5256
+ self.setChildElementOptionalPositiveInteger(child_element, "MAX-ERROR-STATE-VALID", desc.getMaxErrorStateValid())
5257
+ self.setChildElementOptionalPositiveInteger(child_element, "MAX-NO-NEW-OR-REPEATED-DATA", desc.getMaxNoNewOrRepeatedData())
5258
+ self.setChildElementOptionalPositiveInteger(child_element, "MIN-OK-STATE-INIT", desc.getMinOkStateInit())
5259
+ self.setChildElementOptionalPositiveInteger(child_element, "MIN-OK-STATE-INVALID", desc.getMinOkStateInvalid())
5260
+ self.setChildElementOptionalPositiveInteger(child_element, "MIN-OK-STATE-VALID", desc.getMinOkStateValid())
5261
+ self.setChildElementOptionalLiteral(child_element, "PROFILE-BEHAVIOR", desc.getProfileBehavior())
5262
+ self.setChildElementOptionalLiteral(child_element, "PROFILE-NAME", desc.getProfileName())
5263
+ self.setChildElementOptionalPositiveInteger(child_element, "SYNC-COUNTER-INIT", desc.getSyncCounterInit())
5264
+ self.setChildElementOptionalPositiveInteger(child_element, "UPPER-HEADER-BITS-TO-SHIFT", desc.getUpperHeaderBitsToShift())
5265
+ self.setChildElementOptionalPositiveInteger(child_element, "WINDOW-SIZE-INIT", desc.getWindowSizeInit())
5266
+ self.setChildElementOptionalPositiveInteger(child_element, "WINDOW-SIZE-INVALID", desc.getWindowSizeInvalid())
5267
+ self.setChildElementOptionalPositiveInteger(child_element, "WINDOW-SIZE-VALID", desc.getWindowSizeValid())
5268
+
5269
+ def writeTransformationTechnologyTransformationDescriptions(self, element: ET.Element, tech: TransformationTechnology):
5270
+ desc = tech.getTransformationDescription()
5271
+ if desc is not None:
5272
+ child_element = ET.SubElement(element, "TRANSFORMATION-DESCRIPTIONS")
5273
+ if isinstance(desc, EndToEndTransformationDescription):
5274
+ self.writeEndToEndTransformationDescription(child_element, desc)
5275
+ else:
5276
+ self.notImplemented("Unsupported TransformationDescription <%s>" % type(desc))
5277
+
5278
+ def writeTransformationTechnology(self, element: ET.Element, tech: TransformationTechnology):
5279
+ if tech is not None:
5280
+ child_element = ET.SubElement(element, "TRANSFORMATION-TECHNOLOGY")
5281
+ self.writeIdentifiable(child_element, tech)
5282
+ self.setBufferProperties(child_element, "BUFFER-PROPERTIES", tech.getBufferProperties())
5283
+ self.setChildElementOptionalBooleanValue(child_element, "NEEDS-ORIGINAL-DATA", tech.getNeedsOriginalData())
5284
+ self.setChildElementOptionalLiteral(child_element, "PROTOCOL", tech.getProtocol())
5285
+ self.writeTransformationTechnologyTransformationDescriptions(child_element, tech)
5286
+ self.setChildElementOptionalLiteral(child_element, "TRANSFORMER-CLASS", tech.getTransformerClass())
5287
+ self.setChildElementOptionalLiteral(child_element, "VERSION", tech.getVersion())
5288
+
5289
+ def writeDataTransformationSet(self, element: ET.Element, dtf_set: DataTransformationSet):
5290
+ if dtf_set is not None:
5291
+ child_element = ET.SubElement(element, "DATA-TRANSFORMATION-SET")
5292
+ self.writeIdentifiable(child_element, dtf_set)
5293
+ self.writeDataTransformationSetDataTransformations(child_element, dtf_set)
5294
+ self.writeDataTransformationSetTransformationTechnologies(child_element, dtf_set)
5295
+
4350
5296
  def writeARPackageElement(self, element: ET.Element, ar_element: ARElement):
4351
5297
  if isinstance(ar_element, ComplexDeviceDriverSwComponentType):
4352
5298
  self.writeComplexDeviceDriverSwComponentType(element, ar_element)
@@ -4476,9 +5422,31 @@ class ARXMLWriter(AbstractARXMLWriter):
4476
5422
  self.writeSoAdRoutingGroup(element, ar_element)
4477
5423
  elif isinstance(ar_element, DoIpTpConfig):
4478
5424
  self.writeDoIpTpConfig(element, ar_element)
5425
+ elif isinstance(ar_element, HwElement):
5426
+ self.writeHwElement(element, ar_element)
5427
+ elif isinstance(ar_element, HwCategory):
5428
+ self.writeHwCategory(element, ar_element)
5429
+ elif isinstance(ar_element, HwType):
5430
+ self.writeHwType(element, ar_element)
5431
+ elif isinstance(ar_element, DataTransformationSet):
5432
+ self.writeDataTransformationSet(element, ar_element)
5433
+ elif isinstance(ar_element, FlexrayFrame):
5434
+ self.writeFlexrayFrame(element, ar_element)
5435
+ elif isinstance(ar_element, ISignalGroup):
5436
+ self.writeISignalGroup(element, ar_element)
5437
+ elif isinstance(ar_element, SystemSignalGroup):
5438
+ self.writeSystemSignalGroup(element, ar_element)
5439
+ elif isinstance(ar_element, FlexrayCluster):
5440
+ self.writeFlexrayCluster(element, ar_element)
5441
+ elif isinstance(ar_element, Collection):
5442
+ self.writeCollection(element, ar_element)
5443
+ elif isinstance(ar_element, KeywordSet):
5444
+ self.writeKeywordSet(element, ar_element)
5445
+ elif isinstance(ar_element, PortPrototypeBlueprint):
5446
+ self.writePortPrototypeBlueprint(element, ar_element)
4479
5447
  else:
4480
5448
  self.notImplemented("Unsupported Elements of ARPackage <%s>" % type(ar_element))
4481
-
5449
+
4482
5450
  def writeReferenceBases(self, element: ET.Element, bases: List[ReferenceBase]):
4483
5451
  self.logger.debug("Write ReferenceBases")
4484
5452
  if len(bases) > 0:
@@ -4488,40 +5456,46 @@ class ARXMLWriter(AbstractARXMLWriter):
4488
5456
  self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", base.getShortLabel())
4489
5457
  self.setChildElementOptionalBooleanValue(child_element, "IS-DEFAULT", base.getIsDefault())
4490
5458
  self.setChildElementOptionalBooleanValue(child_element, "IS-GLOBAL", base.getIsDefault())
4491
- self.setChildElementOptionalBooleanValue(child_element, "BASE-IS-THIS-PACKAGE", base.getBaseIsThisPackage())
5459
+ self.setChildElementOptionalBooleanValue(child_element, "BASE-IS-THIS-PACKAGE", base.getBaseIsThisPackage())
4492
5460
  self.setChildElementOptionalRefType(child_element, "PACKAGE-REF", base.getPackageRef())
4493
-
4494
- def writeARPackages(self, element: ET.Element, pkgs: List[ARPackage]):
4495
- if len(pkgs) > 0:
4496
- pkgs_tag = ET.SubElement(element, "AR-PACKAGES")
4497
5461
 
4498
- for pkg in pkgs:
4499
- pkg_tag = ET.SubElement(pkgs_tag, "AR-PACKAGE")
4500
-
4501
- self.writeIdentifiable(pkg_tag, pkg)
4502
- self.logger.debug("writeARPackage %s" % pkg.full_name)
5462
+ def writeARPackage(self, element: ET.Element, pkg: ARPackage):
5463
+ self.logger.debug("Write ARPackage %s" % pkg.getFullName())
5464
+ child_element = ET.SubElement(element, "AR-PACKAGE")
4503
5465
 
4504
- self.writeReferenceBases(pkg_tag, pkg.getReferenceBases())
5466
+ self.writeIdentifiable(child_element, pkg)
5467
+ self.writeReferenceBases(child_element, pkg.getReferenceBases())
5468
+ self.writeARPackageElements(child_element, pkg)
5469
+ self.writeARPackages(child_element, pkg.getARPackages())
4505
5470
 
4506
- if pkg.getTotalElement() > 0:
4507
- elements_tag = ET.SubElement(pkg_tag, "ELEMENTS")
5471
+ def writeARPackageElements(self, element: ET.Element, pkg: ARPackage):
5472
+ if pkg.getTotalElement() > 0:
5473
+ elements_tag = ET.SubElement(element, "ELEMENTS")
4508
5474
 
4509
- for ar_element in pkg.getElements():
4510
- if not isinstance(ar_element, ARPackage):
4511
- self.writeARPackageElement(elements_tag, ar_element)
5475
+ for ar_element in pkg.getElements():
5476
+ if not isinstance(ar_element, ARPackage):
5477
+ self.writeARPackageElement(elements_tag, ar_element)
4512
5478
 
4513
- self.writeARPackages(pkg_tag, pkg.getARPackages())
4514
-
5479
+ def writeARPackages(self, element: ET.Element, pkgs: List[ARPackage]):
5480
+ if len(pkgs) > 0:
5481
+ child_element = ET.SubElement(element, "AR-PACKAGES")
5482
+ for pkg in pkgs:
5483
+ if isinstance(pkg, ARPackage):
5484
+ self.writeARPackage(child_element, pkg)
5485
+ else:
5486
+ self.notImplemented("Unsupported ARPackage <%s>" % type(pkg))
4515
5487
 
4516
5488
  def save(self, filename, document: AUTOSAR):
4517
5489
  self.logger.info("Saving %s ..." % filename)
4518
5490
 
4519
5491
  root = ET.Element("AUTOSAR", self.nsmap)
4520
5492
  root.attrib["xmlns:xsi"] = "http://www.w3.org/2001/XMLSchema-instance"
4521
- root.attrib["xsi:schemaLocation"] = document.schema_location
5493
+ if document.schema_location is not None:
5494
+ root.attrib["xsi:schemaLocation"] = document.schema_location
5495
+ else:
5496
+ root.attrib["xsi:schemaLocation"] = "http://autosar.org/schema/r4.0 AUTOSAR_4-0-3.xsd"
4522
5497
 
4523
5498
  self.setAdminData(root, document.getAdminData())
4524
5499
  self.writeARPackages(root, document.getARPackages())
4525
5500
 
4526
5501
  self.saveToFile(filename, root)
4527
-