armodel 1.6.4__py3-none-any.whl → 1.7.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- armodel/cli/arxml_format_cli.py +14 -11
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +50 -13
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +1 -1
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +86 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +3 -4
- armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +1 -1
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +95 -13
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +14 -4
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +103 -10
- armodel/models/M2/AUTOSARTemplates/GenericStructure/LifeCycles.py +5 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +21 -8
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +24 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +1 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +173 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Multiplatform.py +1 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +6 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +237 -28
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +223 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/Timing.py +177 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +37 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +88 -16
- armodel/models/M2/MSR/AsamHdo/AdminData.py +34 -8
- armodel/models/M2/MSR/Documentation/Annotation.py +1 -1
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/ListElements.py +54 -0
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/PaginationAndView.py +9 -0
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/__init__.py +25 -0
- armodel/models/M2/MSR/Documentation/TextModel/LanguageDataModel.py +33 -5
- armodel/models/M2/MSR/Documentation/TextModel/MultilanguageData.py +15 -2
- armodel/models/M2/MSR/Documentation/__init__.py +1 -1
- armodel/models/__init__.py +15 -2
- armodel/parser/abstract_arxml_parser.py +55 -18
- armodel/parser/arxml_parser.py +344 -101
- armodel/tests/test_armodel/models/test_ar_ref.py +7 -4
- armodel/tests/test_armodel/parser/test_sw_components.py +6 -19
- armodel/tests/test_armodel/parser/test_system.py +2 -2
- armodel/writer/abstract_arxml_writer.py +17 -8
- armodel/writer/arxml_writer.py +291 -78
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/METADATA +23 -1
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/RECORD +43 -35
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/LICENSE +0 -0
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/WHEEL +0 -0
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/entry_points.txt +0 -0
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/top_level.txt +0 -0
|
@@ -1,14 +1,27 @@
|
|
|
1
1
|
from abc import ABCMeta
|
|
2
2
|
from typing import List
|
|
3
|
+
from ....M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps
|
|
4
|
+
from ....M2.AUTOSARTemplates.CommonStructure import ValueSpecification
|
|
5
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
6
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import AREnum, ARLiteral, ARNumerical, ARPositiveInteger
|
|
7
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARBoolean
|
|
8
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
|
|
9
|
+
from ....M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
|
|
10
|
+
|
|
11
|
+
class HandleInvalidEnum(AREnum):
|
|
12
|
+
DONT_INVALIDATE = "dontInvalidate"
|
|
13
|
+
EXTERNAL_REPLACEMENT = "externalReplacement"
|
|
14
|
+
KEEP = "keep"
|
|
15
|
+
REPLACE = "replace"
|
|
3
16
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
17
|
+
def __init__(self):
|
|
18
|
+
super().__init__((
|
|
19
|
+
HandleInvalidEnum.DONT_INVALIDATE,
|
|
20
|
+
HandleInvalidEnum.EXTERNAL_REPLACEMENT,
|
|
21
|
+
HandleInvalidEnum.KEEP,
|
|
22
|
+
HandleInvalidEnum.REPLACE
|
|
23
|
+
))
|
|
24
|
+
|
|
12
25
|
|
|
13
26
|
class PPortComSpec(ARObject, metaclass = ABCMeta):
|
|
14
27
|
"""
|
armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from armodel.models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, RefType
|
|
2
|
+
from typing import List
|
|
1
3
|
from .....M2.AUTOSARTemplates.SWComponentTemplate.RPTScenario import ModeAccessPointIdent
|
|
2
4
|
from .....M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef
|
|
3
5
|
from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AccessCount import AbstractAccessPoint
|
|
@@ -36,3 +38,25 @@ class ModeSwitchPoint(AbstractAccessPoint):
|
|
|
36
38
|
def setModeGroupIRef(self, value):
|
|
37
39
|
self.modeGroupIRef = value
|
|
38
40
|
return self
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class IncludedModeDeclarationGroupSet(ARObject):
|
|
44
|
+
def __init__(self):
|
|
45
|
+
super().__init__()
|
|
46
|
+
|
|
47
|
+
self.mode_declaration_group_refs = [] # type: List[RefType]
|
|
48
|
+
self.prefix = None # type: ARLiteral
|
|
49
|
+
|
|
50
|
+
def addModeDeclarationGroupRef(self, ref: RefType):
|
|
51
|
+
self.mode_declaration_group_refs.append(ref)
|
|
52
|
+
return self
|
|
53
|
+
|
|
54
|
+
def getModeDeclarationGroupRefs(self) -> List[RefType]:
|
|
55
|
+
return self.mode_declaration_group_refs
|
|
56
|
+
|
|
57
|
+
def setPrefix(self, prefix: str):
|
|
58
|
+
self.prefix = prefix
|
|
59
|
+
return self
|
|
60
|
+
|
|
61
|
+
def getPrefix(self) -> ARLiteral:
|
|
62
|
+
return self.prefix
|
|
@@ -176,7 +176,7 @@ class RunnableEntity(ExecutableEntity):
|
|
|
176
176
|
if (short_name not in self.elements):
|
|
177
177
|
point = InternalTriggeringPoint(self, short_name)
|
|
178
178
|
self.elements[point.short_name] = point
|
|
179
|
-
return self.elements[
|
|
179
|
+
return self.elements[short_name]
|
|
180
180
|
|
|
181
181
|
def getInternalTriggeringPoints(self) -> List[InternalTriggeringPoint]:
|
|
182
182
|
return filter(lambda o: isinstance(o, InternalTriggeringPoint), self.elements)
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
from abc import ABCMeta
|
|
2
|
+
|
|
3
|
+
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Boolean, Float, Integer, PositiveInteger, PositiveUnlimitedInteger
|
|
4
|
+
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
5
|
+
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import CommunicationConnector, CommunicationController
|
|
6
|
+
|
|
7
|
+
class AbstractCanCommunicationControllerAttributes(ARObject, metaclass = ABCMeta):
|
|
8
|
+
def __init__(self):
|
|
9
|
+
super().__init__()
|
|
10
|
+
|
|
11
|
+
self.canControllerFdAttributes = None # type: CanControllerFdConfiguration
|
|
12
|
+
self.canControllerFdRequirements = None # type: CanControllerFdConfigurationRequirements
|
|
13
|
+
self.canControllerXlAttributes = None # type: CanControllerXlConfiguration
|
|
14
|
+
self.canControllerXlRequirements = None # type: CanControllerXlConfigurationRequirements
|
|
15
|
+
|
|
16
|
+
def getCanControllerFdAttributes(self):
|
|
17
|
+
return self.canControllerFdAttributes
|
|
18
|
+
|
|
19
|
+
def setCanControllerFdAttributes(self, value):
|
|
20
|
+
self.canControllerFdAttributes = value
|
|
21
|
+
return self
|
|
22
|
+
|
|
23
|
+
def getCanControllerFdRequirements(self):
|
|
24
|
+
return self.canControllerFdRequirements
|
|
25
|
+
|
|
26
|
+
def setCanControllerFdRequirements(self, value):
|
|
27
|
+
self.canControllerFdRequirements = value
|
|
28
|
+
return self
|
|
29
|
+
|
|
30
|
+
def getCanControllerXlAttributes(self):
|
|
31
|
+
return self.canControllerXlAttributes
|
|
32
|
+
|
|
33
|
+
def setCanControllerXlAttributes(self, value):
|
|
34
|
+
self.canControllerXlAttributes = value
|
|
35
|
+
return self
|
|
36
|
+
|
|
37
|
+
def getCanControllerXlRequirements(self):
|
|
38
|
+
return self.canControllerXlRequirements
|
|
39
|
+
|
|
40
|
+
def setCanControllerXlRequirements(self, value):
|
|
41
|
+
self.canControllerXlRequirements = value
|
|
42
|
+
return self
|
|
43
|
+
|
|
44
|
+
class CanControllerConfigurationRequirements(AbstractCanCommunicationControllerAttributes):
|
|
45
|
+
def __init__(self):
|
|
46
|
+
super().__init__()
|
|
47
|
+
|
|
48
|
+
self.maxNumberOfTimeQuantaPerBit = None # type: Integer
|
|
49
|
+
self.maxSamplePoint = None # type: Float
|
|
50
|
+
self.maxSyncJumpWidth = None # type: Float
|
|
51
|
+
self.minNumberOfTimeQuantaPerBit = None # type: Integer
|
|
52
|
+
self.minSamplePoint = None # type: Float
|
|
53
|
+
self.minSyncJumpWidth = None # type: Float
|
|
54
|
+
|
|
55
|
+
def getMaxNumberOfTimeQuantaPerBit(self):
|
|
56
|
+
return self.maxNumberOfTimeQuantaPerBit
|
|
57
|
+
|
|
58
|
+
def setMaxNumberOfTimeQuantaPerBit(self, value):
|
|
59
|
+
self.maxNumberOfTimeQuantaPerBit = value
|
|
60
|
+
return self
|
|
61
|
+
|
|
62
|
+
def getMaxSamplePoint(self):
|
|
63
|
+
return self.maxSamplePoint
|
|
64
|
+
|
|
65
|
+
def setMaxSamplePoint(self, value):
|
|
66
|
+
self.maxSamplePoint = value
|
|
67
|
+
return self
|
|
68
|
+
|
|
69
|
+
def getMaxSyncJumpWidth(self):
|
|
70
|
+
return self.maxSyncJumpWidth
|
|
71
|
+
|
|
72
|
+
def setMaxSyncJumpWidth(self, value):
|
|
73
|
+
self.maxSyncJumpWidth = value
|
|
74
|
+
return self
|
|
75
|
+
|
|
76
|
+
def getMinNumberOfTimeQuantaPerBit(self):
|
|
77
|
+
return self.minNumberOfTimeQuantaPerBit
|
|
78
|
+
|
|
79
|
+
def setMinNumberOfTimeQuantaPerBit(self, value):
|
|
80
|
+
self.minNumberOfTimeQuantaPerBit = value
|
|
81
|
+
return self
|
|
82
|
+
|
|
83
|
+
def getMinSamplePoint(self):
|
|
84
|
+
return self.minSamplePoint
|
|
85
|
+
|
|
86
|
+
def setMinSamplePoint(self, value):
|
|
87
|
+
self.minSamplePoint = value
|
|
88
|
+
return self
|
|
89
|
+
|
|
90
|
+
def getMinSyncJumpWidth(self):
|
|
91
|
+
return self.minSyncJumpWidth
|
|
92
|
+
|
|
93
|
+
def setMinSyncJumpWidth(self, value):
|
|
94
|
+
self.minSyncJumpWidth = value
|
|
95
|
+
return self
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
class AbstractCanCommunicationController(CommunicationController, metaclass = ABCMeta):
|
|
100
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
101
|
+
if type(self) == AbstractCanCommunicationController:
|
|
102
|
+
raise NotImplementedError("AbstractCanCommunicationController is an abstract class.")
|
|
103
|
+
|
|
104
|
+
super().__init__(parent, short_name)
|
|
105
|
+
|
|
106
|
+
self.canControllerAttributes = None # type: AbstractCanCommunicationControllerAttributes
|
|
107
|
+
|
|
108
|
+
def getCanControllerAttributes(self):
|
|
109
|
+
return self.canControllerAttributes
|
|
110
|
+
|
|
111
|
+
def setCanControllerAttributes(self, value):
|
|
112
|
+
self.canControllerAttributes = value
|
|
113
|
+
return self
|
|
114
|
+
|
|
115
|
+
class CanCommunicationController(AbstractCanCommunicationController):
|
|
116
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
117
|
+
super().__init__(parent, short_name)
|
|
118
|
+
|
|
119
|
+
class AbstractCanCommunicationConnector(CommunicationConnector, metaclass = ABCMeta):
|
|
120
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
121
|
+
if type(self) == AbstractCanCommunicationConnector:
|
|
122
|
+
raise NotImplementedError("AbstractCanCommunicationConnector is an abstract class.")
|
|
123
|
+
|
|
124
|
+
super().__init__(parent, short_name)
|
|
125
|
+
|
|
126
|
+
class CanCommunicationConnector(AbstractCanCommunicationConnector):
|
|
127
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
128
|
+
super().__init__(parent, short_name)
|
|
129
|
+
|
|
130
|
+
# type: PositiveInteger
|
|
131
|
+
self.pncWakeupCanId = None
|
|
132
|
+
self.pncWakeupCanIdExtended = None # type: Boolean
|
|
133
|
+
# type: PositiveInteger
|
|
134
|
+
self.pncWakeupCanIdMask = None
|
|
135
|
+
# type: PositiveUnlimitedInteger
|
|
136
|
+
self.pncWakeupDataMask = None
|
|
137
|
+
# type: PositiveInteger
|
|
138
|
+
self.pncWakeupDlc = None
|
|
139
|
+
|
|
140
|
+
def getPncWakeupCanId(self):
|
|
141
|
+
return self.pncWakeupCanId
|
|
142
|
+
|
|
143
|
+
def setPncWakeupCanId(self, value):
|
|
144
|
+
self.pncWakeupCanId = value
|
|
145
|
+
return self
|
|
146
|
+
|
|
147
|
+
def getPncWakeupCanIdExtended(self):
|
|
148
|
+
return self.pncWakeupCanIdExtended
|
|
149
|
+
|
|
150
|
+
def setPncWakeupCanIdExtended(self, value):
|
|
151
|
+
self.pncWakeupCanIdExtended = value
|
|
152
|
+
return self
|
|
153
|
+
|
|
154
|
+
def getPncWakeupCanIdMask(self):
|
|
155
|
+
return self.pncWakeupCanIdMask
|
|
156
|
+
|
|
157
|
+
def setPncWakeupCanIdMask(self, value):
|
|
158
|
+
self.pncWakeupCanIdMask = value
|
|
159
|
+
return self
|
|
160
|
+
|
|
161
|
+
def getPncWakeupDataMask(self):
|
|
162
|
+
return self.pncWakeupDataMask
|
|
163
|
+
|
|
164
|
+
def setPncWakeupDataMask(self, value):
|
|
165
|
+
self.pncWakeupDataMask = value
|
|
166
|
+
return self
|
|
167
|
+
|
|
168
|
+
def getPncWakeupDlc(self):
|
|
169
|
+
return self.pncWakeupDlc
|
|
170
|
+
|
|
171
|
+
def setPncWakeupDlc(self, value):
|
|
172
|
+
self.pncWakeupDlc = value
|
|
173
|
+
return self
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from typing import List
|
|
2
2
|
|
|
3
|
-
from
|
|
3
|
+
from ....MSR.Documentation.TextModel.BlockElements import DocumentationBlock
|
|
4
4
|
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
5
5
|
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
|
|
6
6
|
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARPositiveInteger
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
from abc import ABCMeta
|
|
2
2
|
from typing import List
|
|
3
3
|
|
|
4
|
-
from
|
|
5
|
-
|
|
6
|
-
from
|
|
4
|
+
from armodel.models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import TransmissionModeDeclaration
|
|
5
|
+
|
|
6
|
+
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Identifiable, Describable
|
|
7
|
+
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
8
|
+
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical, ARPositiveInteger, RefType, ARBoolean, TimeValue
|
|
7
9
|
|
|
8
10
|
class FibexElement(Identifiable, metaclass = ABCMeta):
|
|
9
11
|
def __init__(self, parent: ARObject, short_name: str):
|
|
@@ -279,14 +281,12 @@ class DcmIPdu(IPdu):
|
|
|
279
281
|
self.diagPduType = value
|
|
280
282
|
return self
|
|
281
283
|
|
|
282
|
-
|
|
283
284
|
class IPduTiming(Describable):
|
|
284
285
|
def __init__(self):
|
|
285
286
|
super().__init__()
|
|
286
287
|
|
|
287
288
|
self.minimumDelay = None # type: TimeValue
|
|
288
|
-
# type: TransmissionModeDeclaration
|
|
289
|
-
self.transmissionModeDeclaration = None
|
|
289
|
+
self.transmissionModeDeclaration = None # type: TransmissionModeDeclaration
|
|
290
290
|
|
|
291
291
|
def getMinimumDelay(self):
|
|
292
292
|
return self.minimumDelay
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
from abc import ABCMeta
|
|
2
|
+
from enum import Enum
|
|
2
3
|
from typing import List
|
|
4
|
+
|
|
5
|
+
from ......M2.AUTOSARTemplates.SWComponentTemplate.Communication import HandleInvalidEnum
|
|
3
6
|
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrameTriggering
|
|
4
7
|
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering
|
|
5
8
|
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import FibexElement, FrameTriggering, ISignalTriggering, PduTriggering
|
|
6
9
|
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
7
|
-
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, RefType, ARLiteral
|
|
10
|
+
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, Boolean, PositiveInteger, RefType, ARLiteral, TimeValue
|
|
8
11
|
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
|
|
9
12
|
|
|
10
13
|
class PhysicalChannel (Identifiable, metaclass = ABCMeta):
|
|
@@ -25,29 +28,28 @@ class PhysicalChannel (Identifiable, metaclass = ABCMeta):
|
|
|
25
28
|
return self
|
|
26
29
|
|
|
27
30
|
def getFrameTriggerings(self) -> List[FrameTriggering]:
|
|
28
|
-
return list(sorted(filter(lambda a: isinstance(a, FrameTriggering), self.elements.values()), key= lambda o:o.
|
|
31
|
+
return list(sorted(filter(lambda a: isinstance(a, FrameTriggering), self.elements.values()), key= lambda o:o.getShortName()))
|
|
29
32
|
|
|
30
33
|
def createCanFrameTriggering(self, short_name: str):
|
|
31
34
|
if (short_name not in self.elements):
|
|
32
|
-
|
|
33
|
-
self.
|
|
34
|
-
return self.
|
|
35
|
+
triggering = CanFrameTriggering(self, short_name)
|
|
36
|
+
self.addElement(triggering)
|
|
37
|
+
return self.getElement(short_name)
|
|
35
38
|
|
|
36
39
|
def createLinFrameTriggering(self, short_name: str):
|
|
37
40
|
if (short_name not in self.elements):
|
|
38
|
-
|
|
39
|
-
self.
|
|
40
|
-
return self.
|
|
41
|
+
triggering = LinFrameTriggering(self, short_name)
|
|
42
|
+
self.addElement(triggering)
|
|
43
|
+
return self.getElement(short_name)
|
|
41
44
|
|
|
42
45
|
def getISignalTriggerings(self) -> List[ISignalTriggering]:
|
|
43
|
-
return list(sorted(filter(lambda a: isinstance(a, ISignalTriggering), self.elements.values()), key= lambda o:o.
|
|
46
|
+
return list(sorted(filter(lambda a: isinstance(a, ISignalTriggering), self.elements.values()), key= lambda o:o.getShortName()))
|
|
44
47
|
|
|
45
48
|
def createISignalTriggering(self, short_name: str):
|
|
46
49
|
if (short_name not in self.elements):
|
|
47
|
-
|
|
48
|
-
self.
|
|
49
|
-
return self.
|
|
50
|
-
|
|
50
|
+
triggering = ISignalTriggering(self, short_name)
|
|
51
|
+
self.addElement(triggering)
|
|
52
|
+
return self.getElement(short_name)
|
|
51
53
|
|
|
52
54
|
def getManagedPhysicalChannelRefs(self):
|
|
53
55
|
return self.managedPhysicalChannelRefs
|
|
@@ -57,13 +59,13 @@ class PhysicalChannel (Identifiable, metaclass = ABCMeta):
|
|
|
57
59
|
return self
|
|
58
60
|
|
|
59
61
|
def getPduTriggerings(self) -> List[PduTriggering]:
|
|
60
|
-
return list(sorted(filter(lambda a: isinstance(a, PduTriggering), self.elements.values()), key= lambda o:o.
|
|
62
|
+
return list(sorted(filter(lambda a: isinstance(a, PduTriggering), self.elements.values()), key= lambda o:o.getShortName()))
|
|
61
63
|
|
|
62
64
|
def createPduTriggering(self, short_name: str):
|
|
63
65
|
if (short_name not in self.elements):
|
|
64
|
-
|
|
65
|
-
self.
|
|
66
|
-
return self.
|
|
66
|
+
triggering = PduTriggering(self, short_name)
|
|
67
|
+
self.addElement(triggering)
|
|
68
|
+
return self.getElement(short_name)
|
|
67
69
|
|
|
68
70
|
class AbstractCanPhysicalChannel(PhysicalChannel, metaclass = ABCMeta):
|
|
69
71
|
def __init__(self, parent, short_name):
|
|
@@ -99,25 +101,25 @@ class CommunicationCluster(FibexElement, metaclass = ABCMeta):
|
|
|
99
101
|
return self
|
|
100
102
|
|
|
101
103
|
def getPhysicalChannels(self) -> List[PhysicalChannel]:
|
|
102
|
-
return list(sorted(filter(lambda a: isinstance(a, PhysicalChannel), self.elements.values()), key= lambda o:o.
|
|
104
|
+
return list(sorted(filter(lambda a: isinstance(a, PhysicalChannel), self.elements.values()), key= lambda o:o.getShortName()))
|
|
103
105
|
|
|
104
106
|
def getCanPhysicalChannels(self) -> List[CanPhysicalChannel]:
|
|
105
|
-
return list(sorted(filter(lambda a: isinstance(a, CanPhysicalChannel), self.elements.values()), key= lambda o:o.
|
|
107
|
+
return list(sorted(filter(lambda a: isinstance(a, CanPhysicalChannel), self.elements.values()), key= lambda o:o.getShortName()))
|
|
106
108
|
|
|
107
109
|
def getLinPhysicalChannels(self) -> List[LinPhysicalChannel]:
|
|
108
|
-
return list(sorted(filter(lambda a: isinstance(a, LinPhysicalChannel), self.elements.values()), key= lambda o:o.
|
|
110
|
+
return list(sorted(filter(lambda a: isinstance(a, LinPhysicalChannel), self.elements.values()), key= lambda o:o.getShortName()))
|
|
109
111
|
|
|
110
112
|
def createCanPhysicalChannel(self, short_name: str):
|
|
111
113
|
if (short_name not in self.elements):
|
|
112
114
|
channel = CanPhysicalChannel(self, short_name)
|
|
113
|
-
self.
|
|
114
|
-
return self.
|
|
115
|
+
self.addElement(channel)
|
|
116
|
+
return self.getElement(short_name)
|
|
115
117
|
|
|
116
118
|
def createLinPhysicalChannel(self, short_name: str):
|
|
117
119
|
if (short_name not in self.elements):
|
|
118
120
|
channel = LinPhysicalChannel(self, short_name)
|
|
119
|
-
self.
|
|
120
|
-
return self.
|
|
121
|
+
self.addElement(channel)
|
|
122
|
+
return self.getElement(short_name)
|
|
121
123
|
|
|
122
124
|
def getProtocolName(self):
|
|
123
125
|
return self.protocolName
|
|
@@ -143,6 +145,7 @@ class AbstractCanCluster(CommunicationCluster, metaclass = ABCMeta):
|
|
|
143
145
|
self.busOffRecovery = None
|
|
144
146
|
self.canFdBaudrate = None
|
|
145
147
|
self.canXlBaudrate = None
|
|
148
|
+
self.speed = None
|
|
146
149
|
|
|
147
150
|
def getBusOffRecovery(self):
|
|
148
151
|
return self.busOffRecovery
|
|
@@ -165,6 +168,12 @@ class AbstractCanCluster(CommunicationCluster, metaclass = ABCMeta):
|
|
|
165
168
|
self.canXlBaudrate = value
|
|
166
169
|
return self
|
|
167
170
|
|
|
171
|
+
def getSpeed(self):
|
|
172
|
+
return self.speed
|
|
173
|
+
|
|
174
|
+
def setSpeed(self, value):
|
|
175
|
+
self.speed = value
|
|
176
|
+
return self
|
|
168
177
|
|
|
169
178
|
class CanCluster(AbstractCanCluster):
|
|
170
179
|
def __init__(self, parent: ARObject, short_name: str):
|
|
@@ -172,8 +181,208 @@ class CanCluster(AbstractCanCluster):
|
|
|
172
181
|
|
|
173
182
|
class LinCluster(CommunicationCluster):
|
|
174
183
|
def __init__(self, parent: ARObject, short_name: str):
|
|
175
|
-
super().__init__(parent, short_name)
|
|
184
|
+
super().__init__(parent, short_name)
|
|
185
|
+
|
|
186
|
+
class CommunicationController(Identifiable, metaclass = ABCMeta):
|
|
187
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
188
|
+
if type(self) == CommunicationController:
|
|
189
|
+
raise NotImplementedError("CommunicationController is an abstract class.")
|
|
190
|
+
|
|
191
|
+
super().__init__(parent, short_name)
|
|
176
192
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
193
|
+
self.wakeUpByControllerSupported = None # type: Boolean
|
|
194
|
+
|
|
195
|
+
def getWakeUpByControllerSupported(self):
|
|
196
|
+
return self.wakeUpByControllerSupported
|
|
197
|
+
|
|
198
|
+
def setWakeUpByControllerSupported(self, value):
|
|
199
|
+
self.wakeUpByControllerSupported = value
|
|
200
|
+
return self
|
|
201
|
+
|
|
202
|
+
class PncGatewayTypeEnum(Enum):
|
|
203
|
+
ENUM_ACTIVE = "active"
|
|
204
|
+
ENUM_NONE = "none"
|
|
205
|
+
ENUM_PASSIVE = "passive"
|
|
206
|
+
|
|
207
|
+
class CommunicationDirectionType(Enum):
|
|
208
|
+
ENUM_IN = "in"
|
|
209
|
+
ENUM_OUT = "out"
|
|
210
|
+
|
|
211
|
+
class CommConnectorPort(Identifiable, metaclass = ABCMeta):
|
|
212
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
213
|
+
if type(self) == CommConnectorPort:
|
|
214
|
+
raise NotImplementedError("CommConnectorPort is an abstract class.")
|
|
215
|
+
|
|
216
|
+
super().__init__(parent, short_name)
|
|
217
|
+
|
|
218
|
+
# type: CommunicationDirectionType
|
|
219
|
+
self.communicationDirection = None
|
|
220
|
+
|
|
221
|
+
def getCommunicationDirection(self) -> CommunicationDirectionType:
|
|
222
|
+
return self.communicationDirection
|
|
223
|
+
|
|
224
|
+
def setCommunicationDirection(self, value: CommunicationDirectionType):
|
|
225
|
+
self.communicationDirection = value
|
|
226
|
+
return self
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
class FramePort(CommConnectorPort):
|
|
230
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
231
|
+
super().__init__(parent, short_name)
|
|
232
|
+
|
|
233
|
+
class IPduSignalProcessingEnum(Enum):
|
|
234
|
+
ENUM_DEFERRED = "deferred"
|
|
235
|
+
ENUM_IMMEDIATE = "immediate"
|
|
236
|
+
|
|
237
|
+
class IPduPort(CommConnectorPort):
|
|
238
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
239
|
+
super().__init__(parent, short_name)
|
|
240
|
+
|
|
241
|
+
# type: IPduSignalProcessingEnum
|
|
242
|
+
self.iPduSignalProcessing = None
|
|
243
|
+
self.rxSecurityVerification = None # type: Boolean
|
|
244
|
+
self.timestampRxAcceptanceWindow = None # type: TimeValue
|
|
245
|
+
self.useAuthDataFreshness = None # type: Boolean
|
|
246
|
+
|
|
247
|
+
def getIPduSignalProcessing(self):
|
|
248
|
+
return self.iPduSignalProcessing
|
|
249
|
+
|
|
250
|
+
def setIPduSignalProcessing(self, value):
|
|
251
|
+
self.iPduSignalProcessing = value
|
|
252
|
+
return self
|
|
253
|
+
|
|
254
|
+
def getRxSecurityVerification(self):
|
|
255
|
+
return self.rxSecurityVerification
|
|
256
|
+
|
|
257
|
+
def setRxSecurityVerification(self, value):
|
|
258
|
+
self.rxSecurityVerification = value
|
|
259
|
+
return self
|
|
260
|
+
|
|
261
|
+
def getTimestampRxAcceptanceWindow(self):
|
|
262
|
+
return self.timestampRxAcceptanceWindow
|
|
263
|
+
|
|
264
|
+
def setTimestampRxAcceptanceWindow(self, value):
|
|
265
|
+
self.timestampRxAcceptanceWindow = value
|
|
266
|
+
return self
|
|
267
|
+
|
|
268
|
+
def getUseAuthDataFreshness(self):
|
|
269
|
+
return self.useAuthDataFreshness
|
|
270
|
+
|
|
271
|
+
def setUseAuthDataFreshness(self, value):
|
|
272
|
+
self.useAuthDataFreshness = value
|
|
273
|
+
return self
|
|
274
|
+
|
|
275
|
+
class ISignalPort(CommConnectorPort):
|
|
276
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
277
|
+
super().__init__(parent, short_name)
|
|
278
|
+
|
|
279
|
+
# type: DataFilter
|
|
280
|
+
self.dataFilter = None
|
|
281
|
+
self.ddsQosProfileRef = None # type: RefType
|
|
282
|
+
# type: TimeValue
|
|
283
|
+
self.firstTimeout = None
|
|
284
|
+
# type: HandleInvalidEnum
|
|
285
|
+
self.handleInvalid = None
|
|
286
|
+
|
|
287
|
+
def getDataFilter(self):
|
|
288
|
+
return self.dataFilter
|
|
289
|
+
|
|
290
|
+
def setDataFilter(self, value):
|
|
291
|
+
self.dataFilter = value
|
|
292
|
+
return self
|
|
293
|
+
|
|
294
|
+
def getDdsQosProfileRef(self):
|
|
295
|
+
return self.ddsQosProfileRef
|
|
296
|
+
|
|
297
|
+
def setDdsQosProfileRef(self, value):
|
|
298
|
+
self.ddsQosProfileRef = value
|
|
299
|
+
return self
|
|
300
|
+
|
|
301
|
+
def getFirstTimeout(self):
|
|
302
|
+
return self.firstTimeout
|
|
303
|
+
|
|
304
|
+
def setFirstTimeout(self, value):
|
|
305
|
+
self.firstTimeout = value
|
|
306
|
+
return self
|
|
307
|
+
|
|
308
|
+
def getHandleInvalid(self):
|
|
309
|
+
return self.handleInvalid
|
|
310
|
+
|
|
311
|
+
def setHandleInvalid(self, value):
|
|
312
|
+
self.handleInvalid = value
|
|
313
|
+
return self
|
|
314
|
+
|
|
315
|
+
class CommunicationConnector(Identifiable, metaclass = ABCMeta):
|
|
316
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
317
|
+
if type(self) == CommunicationConnector:
|
|
318
|
+
raise NotImplementedError("CommunicationConnector is an abstract class.")
|
|
319
|
+
|
|
320
|
+
super().__init__(parent, short_name)
|
|
321
|
+
|
|
322
|
+
self.commControllerRef = None # type: RefType
|
|
323
|
+
self.createEcuWakeupSource = None # type: Boolean
|
|
324
|
+
self.dynamicPncToChannelMappingEnabled = None # type: Boolean
|
|
325
|
+
self.ecuCommPortInstances = [] # type: List[CommConnectorPort]
|
|
326
|
+
self.pncFilterArrayMasks = [] # type: List[PositiveInteger]
|
|
327
|
+
self.pncGatewayType = None # type: PncGatewayTypeEnum
|
|
328
|
+
|
|
329
|
+
def getCommControllerRef(self):
|
|
330
|
+
return self.commControllerRef
|
|
331
|
+
|
|
332
|
+
def setCommControllerRef(self, value):
|
|
333
|
+
self.commControllerRef = value
|
|
334
|
+
return self
|
|
335
|
+
|
|
336
|
+
def getCreateEcuWakeupSource(self):
|
|
337
|
+
return self.createEcuWakeupSource
|
|
338
|
+
|
|
339
|
+
def setCreateEcuWakeupSource(self, value):
|
|
340
|
+
self.createEcuWakeupSource = value
|
|
341
|
+
return self
|
|
342
|
+
|
|
343
|
+
def getDynamicPncToChannelMappingEnabled(self):
|
|
344
|
+
return self.dynamicPncToChannelMappingEnabled
|
|
345
|
+
|
|
346
|
+
def setDynamicPncToChannelMappingEnabled(self, value):
|
|
347
|
+
self.dynamicPncToChannelMappingEnabled = value
|
|
348
|
+
return self
|
|
349
|
+
|
|
350
|
+
def getEcuCommPortInstances(self):
|
|
351
|
+
return list(sorted(filter(lambda a: isinstance(a, CommConnectorPort), self.elements.values()), key= lambda o:o.getShortName()))
|
|
352
|
+
|
|
353
|
+
def createFramePort(self, short_name) -> FramePort:
|
|
354
|
+
if short_name not in self.elements:
|
|
355
|
+
port = FramePort(self, short_name)
|
|
356
|
+
self.addElement(port)
|
|
357
|
+
self.ecuCommPortInstances.append(port)
|
|
358
|
+
return self.getElement(short_name)
|
|
359
|
+
|
|
360
|
+
def createIPduPort(self, short_name) -> IPduPort:
|
|
361
|
+
if short_name not in self.elements:
|
|
362
|
+
port = IPduPort(self, short_name)
|
|
363
|
+
self.addElement(port)
|
|
364
|
+
self.ecuCommPortInstances.append(port)
|
|
365
|
+
return self.getElement(short_name)
|
|
366
|
+
|
|
367
|
+
def createISignalPort(self, short_name) -> ISignalPort:
|
|
368
|
+
if short_name not in self.elements:
|
|
369
|
+
port = ISignalPort(self, short_name)
|
|
370
|
+
self.addElement(port)
|
|
371
|
+
self.ecuCommPortInstances.append(port)
|
|
372
|
+
return self.getElement(short_name)
|
|
373
|
+
|
|
374
|
+
def getPncFilterArrayMasks(self):
|
|
375
|
+
return self.pncFilterArrayMasks
|
|
376
|
+
|
|
377
|
+
def addPncFilterArrayMask(self, value):
|
|
378
|
+
self.pncFilterArrayMasks.append(value)
|
|
379
|
+
return self
|
|
380
|
+
|
|
381
|
+
def getPncGatewayType(self):
|
|
382
|
+
return self.pncGatewayType
|
|
383
|
+
|
|
384
|
+
def setPncGatewayType(self, value):
|
|
385
|
+
self.pncGatewayType = value
|
|
386
|
+
return self
|
|
387
|
+
|
|
388
|
+
|