armodel 1.7.4__py3-none-any.whl → 1.7.6__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/file_list_cli.py +70 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +2 -2
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +4 -0
- armodel/models/M2/AUTOSARTemplates/DiagnosticExtract/DiagnosticContribution.py +47 -0
- armodel/models/M2/AUTOSARTemplates/DiagnosticExtract/__init__.py +0 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +73 -3
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +22 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DiagnosticConnection.py +58 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +165 -4
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetCommunication.py +16 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +514 -17
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/NetworkEndpoint.py +104 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/ServiceInstances.py +783 -13
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinCommunication.py +114 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinTopology.py +92 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Multiplatform.py +76 -10
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +151 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +143 -36
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +13 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +135 -13
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +79 -2
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +4 -2
- armodel/models/M2/MSR/DataDictionary/RecordLayout.py +1 -1
- armodel/models/__init__.py +3 -0
- armodel/parser/abstract_arxml_parser.py +7 -5
- armodel/parser/arxml_parser.py +927 -438
- armodel/writer/arxml_writer.py +799 -178
- {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/METADATA +52 -1
- {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/RECORD +33 -28
- {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/entry_points.txt +1 -0
- {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/LICENSE +0 -0
- {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/WHEEL +0 -0
- {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/top_level.txt +0 -0
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
from abc import ABCMeta
|
|
2
2
|
from enum import Enum
|
|
3
3
|
from typing import List
|
|
4
|
-
|
|
5
|
-
|
|
6
4
|
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
7
|
-
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, Boolean, PositiveInteger, RefType, ARLiteral, TimeValue
|
|
5
|
+
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, Boolean, PositiveInteger, PositiveUnlimitedInteger, RefType, ARLiteral, TimeValue
|
|
8
6
|
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
|
|
9
|
-
from ......M2.AUTOSARTemplates.SWComponentTemplate.Communication import HandleInvalidEnum
|
|
10
7
|
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrameTriggering
|
|
11
|
-
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering
|
|
8
|
+
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering, LinScheduleTable
|
|
12
9
|
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import FibexElement, FrameTriggering, ISignalTriggering, PduTriggering
|
|
13
10
|
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import NetworkEndpoint
|
|
14
11
|
|
|
@@ -84,6 +81,41 @@ class LinPhysicalChannel(PhysicalChannel):
|
|
|
84
81
|
def __init__(self, parent: ARObject, short_name: str):
|
|
85
82
|
super().__init__(parent, short_name)
|
|
86
83
|
|
|
84
|
+
self.busIdleTimeoutPeriod = None # type: TimeValue
|
|
85
|
+
# type: List[LinScheduleTable]
|
|
86
|
+
self.scheduleTables = []
|
|
87
|
+
|
|
88
|
+
def getBusIdleTimeoutPeriod(self):
|
|
89
|
+
return self.busIdleTimeoutPeriod
|
|
90
|
+
|
|
91
|
+
def setBusIdleTimeoutPeriod(self, value):
|
|
92
|
+
if value is not None:
|
|
93
|
+
self.busIdleTimeoutPeriod = value
|
|
94
|
+
return self
|
|
95
|
+
|
|
96
|
+
def getScheduleTables(self):
|
|
97
|
+
return self.scheduleTables
|
|
98
|
+
|
|
99
|
+
def createLinScheduleTable(self, short_name:str) -> LinScheduleTable:
|
|
100
|
+
if (short_name not in self.elements):
|
|
101
|
+
end_point = LinScheduleTable(self, short_name)
|
|
102
|
+
self.addElement(end_point)
|
|
103
|
+
self.scheduleTables.append(end_point)
|
|
104
|
+
return self.getElement(short_name)
|
|
105
|
+
|
|
106
|
+
class VlanConfig(Identifiable):
|
|
107
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
108
|
+
super().__init__(parent, short_name)
|
|
109
|
+
|
|
110
|
+
self.vlanIdentifier = None # type: PositiveInteger
|
|
111
|
+
|
|
112
|
+
def getVlanIdentifier(self):
|
|
113
|
+
return self.vlanIdentifier
|
|
114
|
+
|
|
115
|
+
def setVlanIdentifier(self, value):
|
|
116
|
+
if value is not None:
|
|
117
|
+
self.vlanIdentifier = value
|
|
118
|
+
return self
|
|
87
119
|
class EthernetPhysicalChannel(PhysicalChannel):
|
|
88
120
|
def __init__(self, parent: ARObject, short_name: str):
|
|
89
121
|
super().__init__(parent, short_name)
|
|
@@ -112,9 +144,12 @@ class EthernetPhysicalChannel(PhysicalChannel):
|
|
|
112
144
|
def getVlan(self):
|
|
113
145
|
return self.vlan
|
|
114
146
|
|
|
115
|
-
def
|
|
116
|
-
self.
|
|
117
|
-
|
|
147
|
+
def createVlanConfig(self, short_name: str) -> VlanConfig:
|
|
148
|
+
if (short_name not in self.elements):
|
|
149
|
+
config = VlanConfig(self, short_name)
|
|
150
|
+
self.vlan = config
|
|
151
|
+
self.addElement(config)
|
|
152
|
+
return self.getElement(short_name)
|
|
118
153
|
|
|
119
154
|
class CommunicationCluster(FibexElement, metaclass = ABCMeta):
|
|
120
155
|
def __init__(self, parent: ARObject, short_name: str):
|
|
@@ -176,8 +211,58 @@ class CommunicationCluster(FibexElement, metaclass = ABCMeta):
|
|
|
176
211
|
|
|
177
212
|
def setProtocolVersion(self, value):
|
|
178
213
|
self.protocolVersion = value
|
|
179
|
-
return self
|
|
214
|
+
return self
|
|
180
215
|
|
|
216
|
+
class CanClusterBusOffRecovery(ARObject):
|
|
217
|
+
def __init__(self):
|
|
218
|
+
super().__init__()
|
|
219
|
+
|
|
220
|
+
self.borCounterL1ToL2 = None # type: PositiveInteger
|
|
221
|
+
self.borTimeL1 = None # type: TimeValue
|
|
222
|
+
self.borTimeL2 = None # type: TimeValue
|
|
223
|
+
self.borTimeTxEnsured = None # type: TimeValue
|
|
224
|
+
self.mainFunctionPeriod = None # type: TimeValue
|
|
225
|
+
|
|
226
|
+
def getBorCounterL1ToL2(self):
|
|
227
|
+
return self.borCounterL1ToL2
|
|
228
|
+
|
|
229
|
+
def setBorCounterL1ToL2(self, value):
|
|
230
|
+
if value is not None:
|
|
231
|
+
self.borCounterL1ToL2 = value
|
|
232
|
+
return self
|
|
233
|
+
|
|
234
|
+
def getBorTimeL1(self):
|
|
235
|
+
return self.borTimeL1
|
|
236
|
+
|
|
237
|
+
def setBorTimeL1(self, value):
|
|
238
|
+
if value is not None:
|
|
239
|
+
self.borTimeL1 = value
|
|
240
|
+
return self
|
|
241
|
+
|
|
242
|
+
def getBorTimeL2(self):
|
|
243
|
+
return self.borTimeL2
|
|
244
|
+
|
|
245
|
+
def setBorTimeL2(self, value):
|
|
246
|
+
if value is not None:
|
|
247
|
+
self.borTimeL2 = value
|
|
248
|
+
return self
|
|
249
|
+
|
|
250
|
+
def getBorTimeTxEnsured(self):
|
|
251
|
+
return self.borTimeTxEnsured
|
|
252
|
+
|
|
253
|
+
def setBorTimeTxEnsured(self, value):
|
|
254
|
+
if value is not None:
|
|
255
|
+
self.borTimeTxEnsured = value
|
|
256
|
+
return self
|
|
257
|
+
|
|
258
|
+
def getMainFunctionPeriod(self):
|
|
259
|
+
return self.mainFunctionPeriod
|
|
260
|
+
|
|
261
|
+
def setMainFunctionPeriod(self, value):
|
|
262
|
+
if value is not None:
|
|
263
|
+
self.mainFunctionPeriod = value
|
|
264
|
+
return self
|
|
265
|
+
|
|
181
266
|
class AbstractCanCluster(CommunicationCluster, metaclass = ABCMeta):
|
|
182
267
|
def __init__(self, parent: ARObject, short_name: str):
|
|
183
268
|
if type(self) == AbstractCanCluster:
|
|
@@ -185,10 +270,10 @@ class AbstractCanCluster(CommunicationCluster, metaclass = ABCMeta):
|
|
|
185
270
|
|
|
186
271
|
super().__init__(parent, short_name)
|
|
187
272
|
|
|
188
|
-
self.busOffRecovery = None
|
|
189
|
-
self.canFdBaudrate = None
|
|
190
|
-
self.canXlBaudrate = None
|
|
191
|
-
self.speed = None
|
|
273
|
+
self.busOffRecovery = None # type: CanClusterBusOffRecovery
|
|
274
|
+
self.canFdBaudrate = None # type: PositiveUnlimitedInteger
|
|
275
|
+
self.canXlBaudrate = None # type: PositiveUnlimitedInteger
|
|
276
|
+
self.speed = None # type: PositiveUnlimitedInteger
|
|
192
277
|
|
|
193
278
|
def getBusOffRecovery(self):
|
|
194
279
|
return self.busOffRecovery
|
|
@@ -257,15 +342,15 @@ class CommConnectorPort(Identifiable, metaclass = ABCMeta):
|
|
|
257
342
|
raise NotImplementedError("CommConnectorPort is an abstract class.")
|
|
258
343
|
|
|
259
344
|
super().__init__(parent, short_name)
|
|
345
|
+
|
|
346
|
+
self.communicationDirection = None # type: CommunicationDirectionType
|
|
260
347
|
|
|
261
|
-
|
|
262
|
-
self.communicationDirection = None
|
|
263
|
-
|
|
264
|
-
def getCommunicationDirection(self) -> CommunicationDirectionType:
|
|
348
|
+
def getCommunicationDirection(self):
|
|
265
349
|
return self.communicationDirection
|
|
266
350
|
|
|
267
|
-
def setCommunicationDirection(self, value
|
|
268
|
-
|
|
351
|
+
def setCommunicationDirection(self, value):
|
|
352
|
+
if value is not None:
|
|
353
|
+
self.communicationDirection = value
|
|
269
354
|
return self
|
|
270
355
|
|
|
271
356
|
|
|
@@ -280,9 +365,9 @@ class IPduSignalProcessingEnum(Enum):
|
|
|
280
365
|
class IPduPort(CommConnectorPort):
|
|
281
366
|
def __init__(self, parent: ARObject, short_name: str):
|
|
282
367
|
super().__init__(parent, short_name)
|
|
283
|
-
|
|
284
|
-
# type: IPduSignalProcessingEnum
|
|
285
|
-
self.
|
|
368
|
+
|
|
369
|
+
self.iPduSignalProcessing = None # type: IPduSignalProcessingEnum
|
|
370
|
+
self.keyId = None # type: PositiveInteger
|
|
286
371
|
self.rxSecurityVerification = None # type: Boolean
|
|
287
372
|
self.timestampRxAcceptanceWindow = None # type: TimeValue
|
|
288
373
|
self.useAuthDataFreshness = None # type: Boolean
|
|
@@ -291,68 +376,90 @@ class IPduPort(CommConnectorPort):
|
|
|
291
376
|
return self.iPduSignalProcessing
|
|
292
377
|
|
|
293
378
|
def setIPduSignalProcessing(self, value):
|
|
294
|
-
|
|
379
|
+
if value is not None:
|
|
380
|
+
self.iPduSignalProcessing = value
|
|
381
|
+
return self
|
|
382
|
+
|
|
383
|
+
def getKeyId(self):
|
|
384
|
+
return self.keyId
|
|
385
|
+
|
|
386
|
+
def setKeyId(self, value):
|
|
387
|
+
if value is not None:
|
|
388
|
+
self.keyId = value
|
|
295
389
|
return self
|
|
296
390
|
|
|
297
391
|
def getRxSecurityVerification(self):
|
|
298
392
|
return self.rxSecurityVerification
|
|
299
393
|
|
|
300
394
|
def setRxSecurityVerification(self, value):
|
|
301
|
-
|
|
395
|
+
if value is not None:
|
|
396
|
+
self.rxSecurityVerification = value
|
|
302
397
|
return self
|
|
303
398
|
|
|
304
399
|
def getTimestampRxAcceptanceWindow(self):
|
|
305
400
|
return self.timestampRxAcceptanceWindow
|
|
306
401
|
|
|
307
402
|
def setTimestampRxAcceptanceWindow(self, value):
|
|
308
|
-
|
|
403
|
+
if value is not None:
|
|
404
|
+
self.timestampRxAcceptanceWindow = value
|
|
309
405
|
return self
|
|
310
406
|
|
|
311
407
|
def getUseAuthDataFreshness(self):
|
|
312
408
|
return self.useAuthDataFreshness
|
|
313
409
|
|
|
314
410
|
def setUseAuthDataFreshness(self, value):
|
|
315
|
-
|
|
411
|
+
if value is not None:
|
|
412
|
+
self.useAuthDataFreshness = value
|
|
316
413
|
return self
|
|
317
414
|
|
|
318
415
|
class ISignalPort(CommConnectorPort):
|
|
319
416
|
def __init__(self, parent: ARObject, short_name: str):
|
|
320
417
|
super().__init__(parent, short_name)
|
|
321
418
|
|
|
322
|
-
# type: DataFilter
|
|
323
|
-
self.dataFilter = None
|
|
419
|
+
self.dataFilter = None # type: DataFilter
|
|
324
420
|
self.ddsQosProfileRef = None # type: RefType
|
|
325
|
-
# type: TimeValue
|
|
326
|
-
self.
|
|
327
|
-
# type:
|
|
328
|
-
self.handleInvalid = None
|
|
421
|
+
self.firstTimeout = None # type: TimeValue
|
|
422
|
+
self.handleInvalid = None # type: HandleInvalidEnum
|
|
423
|
+
self.timeout = None # type: TimeValue
|
|
329
424
|
|
|
330
425
|
def getDataFilter(self):
|
|
331
426
|
return self.dataFilter
|
|
332
427
|
|
|
333
428
|
def setDataFilter(self, value):
|
|
334
|
-
|
|
429
|
+
if value is not None:
|
|
430
|
+
self.dataFilter = value
|
|
335
431
|
return self
|
|
336
432
|
|
|
337
433
|
def getDdsQosProfileRef(self):
|
|
338
434
|
return self.ddsQosProfileRef
|
|
339
435
|
|
|
340
436
|
def setDdsQosProfileRef(self, value):
|
|
341
|
-
|
|
437
|
+
if value is not None:
|
|
438
|
+
self.ddsQosProfileRef = value
|
|
342
439
|
return self
|
|
343
440
|
|
|
344
441
|
def getFirstTimeout(self):
|
|
345
442
|
return self.firstTimeout
|
|
346
443
|
|
|
347
444
|
def setFirstTimeout(self, value):
|
|
348
|
-
|
|
445
|
+
if value is not None:
|
|
446
|
+
self.firstTimeout = value
|
|
349
447
|
return self
|
|
350
448
|
|
|
351
449
|
def getHandleInvalid(self):
|
|
352
450
|
return self.handleInvalid
|
|
353
451
|
|
|
354
452
|
def setHandleInvalid(self, value):
|
|
355
|
-
|
|
453
|
+
if value is not None:
|
|
454
|
+
self.handleInvalid = value
|
|
455
|
+
return self
|
|
456
|
+
|
|
457
|
+
def getTimeout(self):
|
|
458
|
+
return self.timeout
|
|
459
|
+
|
|
460
|
+
def setTimeout(self, value):
|
|
461
|
+
if value is not None:
|
|
462
|
+
self.timeout = value
|
|
356
463
|
return self
|
|
357
464
|
|
|
358
465
|
class CommunicationConnector(Identifiable, metaclass = ABCMeta):
|
|
@@ -4,6 +4,7 @@ from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication i
|
|
|
4
4
|
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
|
|
5
5
|
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import FibexElement
|
|
6
6
|
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import CommunicationConnector, CommunicationController
|
|
7
|
+
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinTopology import LinCommunicationConnector, LinMaster
|
|
7
8
|
from typing import List
|
|
8
9
|
|
|
9
10
|
class EcuInstance(FibexElement):
|
|
@@ -114,6 +115,12 @@ class EcuInstance(FibexElement):
|
|
|
114
115
|
controller = EthernetCommunicationController(self, short_name)
|
|
115
116
|
self.addElement(controller)
|
|
116
117
|
return self.getElement(short_name)
|
|
118
|
+
|
|
119
|
+
def createLinMaster(self, short_name: str) -> LinMaster:
|
|
120
|
+
if (short_name not in self.elements):
|
|
121
|
+
controller = LinMaster(self, short_name)
|
|
122
|
+
self.addElement(controller)
|
|
123
|
+
return self.getElement(short_name)
|
|
117
124
|
|
|
118
125
|
def getConnectors(self):
|
|
119
126
|
return list(sorted(filter(lambda a: isinstance(a, CommunicationConnector), self.elements.values()), key= lambda o:o.short_name))
|
|
@@ -129,6 +136,12 @@ class EcuInstance(FibexElement):
|
|
|
129
136
|
connector = EthernetCommunicationConnector(self, short_name)
|
|
130
137
|
self.addElement(connector)
|
|
131
138
|
return self.getElement(short_name)
|
|
139
|
+
|
|
140
|
+
def createLinCommunicationConnector(self, short_name: str) -> LinCommunicationConnector:
|
|
141
|
+
if (short_name not in self.elements):
|
|
142
|
+
connector = LinCommunicationConnector(self, short_name)
|
|
143
|
+
self.addElement(connector)
|
|
144
|
+
return self.getElement(short_name)
|
|
132
145
|
|
|
133
146
|
def getDltConfig(self):
|
|
134
147
|
return self.dltConfig
|
|
@@ -3,7 +3,7 @@ from typing import List
|
|
|
3
3
|
from ....M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import RxIdentifierRange
|
|
4
4
|
from ....M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import FibexElement
|
|
5
5
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
6
|
-
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical, RefType, ARBoolean
|
|
6
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical, Integer, PositiveInteger, RefType, ARBoolean, TimeValue
|
|
7
7
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
|
|
8
8
|
|
|
9
9
|
class NmClusterCoupling(ARObject, metaclass = ABCMeta):
|
|
@@ -210,7 +210,7 @@ class NmCluster(Identifiable, metaclass=ABCMeta):
|
|
|
210
210
|
self.communicationClusterRef = None
|
|
211
211
|
self.nmChannelId = None
|
|
212
212
|
self.nmChannelSleepMaster = None
|
|
213
|
-
self.
|
|
213
|
+
self.nmNodes = [] # type: List[NmNode]
|
|
214
214
|
self.nmNodeDetectionEnabled = None
|
|
215
215
|
self.nmNodeIdEnabled = None
|
|
216
216
|
self.nmPncParticipation = None
|
|
@@ -240,14 +240,24 @@ class NmCluster(Identifiable, metaclass=ABCMeta):
|
|
|
240
240
|
|
|
241
241
|
def createCanNmNode(self, short_name: str) -> CanNmNode:
|
|
242
242
|
if (short_name not in self.elements):
|
|
243
|
-
|
|
244
|
-
self.
|
|
245
|
-
self.
|
|
246
|
-
return self.
|
|
243
|
+
node = CanNmNode(self, short_name)
|
|
244
|
+
self.addElement(node)
|
|
245
|
+
self.nmNodes.append(node)
|
|
246
|
+
return self.getElement(short_name)
|
|
247
|
+
|
|
248
|
+
def readUdpNmNode(self, short_name: str) -> UdpNmNode:
|
|
249
|
+
if (short_name not in self.elements):
|
|
250
|
+
node = UdpNmNode(self, short_name)
|
|
251
|
+
self.addElement(node)
|
|
252
|
+
self.nmNodes.append(node)
|
|
253
|
+
return self.getElement(short_name)
|
|
247
254
|
|
|
248
255
|
def getCanNmNodes(self) -> List[CanNmNode]:
|
|
249
256
|
return list(sorted(filter(lambda a: isinstance(a, CanNmNode), self.elements.values()), key= lambda o:o.short_name))
|
|
250
257
|
|
|
258
|
+
def getUdpNmNodes(self) -> List[UdpNmNode]:
|
|
259
|
+
return list(sorted(filter(lambda a: isinstance(a, UdpNmNode), self.elements.values()), key= lambda o:o.short_name))
|
|
260
|
+
|
|
251
261
|
def getNmNodes(self) -> List[NmNode]:
|
|
252
262
|
return list(sorted(filter(lambda a: isinstance(a, NmNode), self.elements.values()), key= lambda o:o.short_name))
|
|
253
263
|
|
|
@@ -514,10 +524,7 @@ class NmEcu(Identifiable):
|
|
|
514
524
|
|
|
515
525
|
def setNmUserDataEnabled(self, value):
|
|
516
526
|
self.nmUserDataEnabled = value
|
|
517
|
-
return self
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
527
|
+
return self
|
|
521
528
|
|
|
522
529
|
class NmConfig(FibexElement):
|
|
523
530
|
def __init__(self, parent: ARObject, short_name: str):
|
|
@@ -529,12 +536,21 @@ class NmConfig(FibexElement):
|
|
|
529
536
|
def createCanNmCluster(self, short_name: str) -> CanNmCluster:
|
|
530
537
|
if (short_name not in self.elements):
|
|
531
538
|
cluster = CanNmCluster(self, short_name)
|
|
532
|
-
self.
|
|
533
|
-
return self.
|
|
539
|
+
self.addElement(cluster)
|
|
540
|
+
return self.getElement(short_name)
|
|
534
541
|
|
|
542
|
+
def createUdpNmCluster(self, short_name: str) -> UdpNmCluster:
|
|
543
|
+
if (short_name not in self.elements):
|
|
544
|
+
cluster = UdpNmCluster(self, short_name)
|
|
545
|
+
self.addElement(cluster)
|
|
546
|
+
return self.getElement(short_name)
|
|
547
|
+
|
|
535
548
|
def getCanNmClusters(self) -> List[CanNmCluster]:
|
|
536
549
|
return list(sorted(filter(lambda a: isinstance(a, CanNmCluster), self.elements.values()), key= lambda o:o.short_name))
|
|
537
550
|
|
|
551
|
+
def getUdpNmClusters(self) -> List[UdpNmCluster]:
|
|
552
|
+
return list(sorted(filter(lambda a: isinstance(a, UdpNmCluster), self.elements.values()), key= lambda o:o.short_name))
|
|
553
|
+
|
|
538
554
|
def getNmClusters(self) -> List[NmCluster]:
|
|
539
555
|
return list(sorted(filter(lambda a: isinstance(a, NmCluster), self.elements.values()), key= lambda o:o.short_name))
|
|
540
556
|
|
|
@@ -550,4 +566,110 @@ class NmConfig(FibexElement):
|
|
|
550
566
|
|
|
551
567
|
def addNmIfEcus(self, value):
|
|
552
568
|
self.nmIfEcus.append(value)
|
|
553
|
-
return self
|
|
569
|
+
return self
|
|
570
|
+
|
|
571
|
+
class UdpNmCluster(NmCluster):
|
|
572
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
573
|
+
super().__init__(parent, short_name)
|
|
574
|
+
|
|
575
|
+
self.nmCbvPosition = None # type: Integer
|
|
576
|
+
self.nmImmediateNmCycleTime = None # type: TimeValue
|
|
577
|
+
self.nmImmediateNmTransmissions = None # type: PositiveInteger
|
|
578
|
+
self.nmMessageTimeoutTime = None # type: TimeValue
|
|
579
|
+
self.nmMsgCycleTime = None # type: TimeValue
|
|
580
|
+
self.nmNetworkTimeout = None # type: TimeValue
|
|
581
|
+
self.nmNidPosition = None # type: Integer
|
|
582
|
+
self.nmRemoteSleepIndicationTime = None # type: TimeValue
|
|
583
|
+
self.nmRepeatMessageTime = None # type: TimeValue
|
|
584
|
+
self.nmWaitBusSleepTime = None # type: TimeValue
|
|
585
|
+
self.vlanRef = None # type: RefType
|
|
586
|
+
|
|
587
|
+
def getNmCbvPosition(self):
|
|
588
|
+
return self.nmCbvPosition
|
|
589
|
+
|
|
590
|
+
def setNmCbvPosition(self, value):
|
|
591
|
+
if value is not None:
|
|
592
|
+
self.nmCbvPosition = value
|
|
593
|
+
return self
|
|
594
|
+
|
|
595
|
+
def getNmImmediateNmCycleTime(self):
|
|
596
|
+
return self.nmImmediateNmCycleTime
|
|
597
|
+
|
|
598
|
+
def setNmImmediateNmCycleTime(self, value):
|
|
599
|
+
if value is not None:
|
|
600
|
+
self.nmImmediateNmCycleTime = value
|
|
601
|
+
return self
|
|
602
|
+
|
|
603
|
+
def getNmImmediateNmTransmissions(self):
|
|
604
|
+
return self.nmImmediateNmTransmissions
|
|
605
|
+
|
|
606
|
+
def setNmImmediateNmTransmissions(self, value):
|
|
607
|
+
if value is not None:
|
|
608
|
+
self.nmImmediateNmTransmissions = value
|
|
609
|
+
return self
|
|
610
|
+
|
|
611
|
+
def getNmMessageTimeoutTime(self):
|
|
612
|
+
return self.nmMessageTimeoutTime
|
|
613
|
+
|
|
614
|
+
def setNmMessageTimeoutTime(self, value):
|
|
615
|
+
if value is not None:
|
|
616
|
+
self.nmMessageTimeoutTime = value
|
|
617
|
+
return self
|
|
618
|
+
|
|
619
|
+
def getNmMsgCycleTime(self):
|
|
620
|
+
return self.nmMsgCycleTime
|
|
621
|
+
|
|
622
|
+
def setNmMsgCycleTime(self, value):
|
|
623
|
+
if value is not None:
|
|
624
|
+
self.nmMsgCycleTime = value
|
|
625
|
+
return self
|
|
626
|
+
|
|
627
|
+
def getNmNetworkTimeout(self):
|
|
628
|
+
return self.nmNetworkTimeout
|
|
629
|
+
|
|
630
|
+
def setNmNetworkTimeout(self, value):
|
|
631
|
+
if value is not None:
|
|
632
|
+
self.nmNetworkTimeout = value
|
|
633
|
+
return self
|
|
634
|
+
|
|
635
|
+
def getNmNidPosition(self):
|
|
636
|
+
return self.nmNidPosition
|
|
637
|
+
|
|
638
|
+
def setNmNidPosition(self, value):
|
|
639
|
+
if value is not None:
|
|
640
|
+
self.nmNidPosition = value
|
|
641
|
+
return self
|
|
642
|
+
|
|
643
|
+
def getNmRemoteSleepIndicationTime(self):
|
|
644
|
+
return self.nmRemoteSleepIndicationTime
|
|
645
|
+
|
|
646
|
+
def setNmRemoteSleepIndicationTime(self, value):
|
|
647
|
+
if value is not None:
|
|
648
|
+
self.nmRemoteSleepIndicationTime = value
|
|
649
|
+
return self
|
|
650
|
+
|
|
651
|
+
def getNmRepeatMessageTime(self):
|
|
652
|
+
return self.nmRepeatMessageTime
|
|
653
|
+
|
|
654
|
+
def setNmRepeatMessageTime(self, value):
|
|
655
|
+
if value is not None:
|
|
656
|
+
self.nmRepeatMessageTime = value
|
|
657
|
+
return self
|
|
658
|
+
|
|
659
|
+
def getNmWaitBusSleepTime(self):
|
|
660
|
+
return self.nmWaitBusSleepTime
|
|
661
|
+
|
|
662
|
+
def setNmWaitBusSleepTime(self, value):
|
|
663
|
+
if value is not None:
|
|
664
|
+
self.nmWaitBusSleepTime = value
|
|
665
|
+
return self
|
|
666
|
+
|
|
667
|
+
def getVlanRef(self):
|
|
668
|
+
return self.vlanRef
|
|
669
|
+
|
|
670
|
+
def setVlanRef(self, value):
|
|
671
|
+
if value is not None:
|
|
672
|
+
self.vlanRef = value
|
|
673
|
+
return self
|
|
674
|
+
|
|
675
|
+
|
|
@@ -1,6 +1,83 @@
|
|
|
1
|
+
from abc import ABCMeta
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
|
|
1
5
|
from ....M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import FibexElement
|
|
2
6
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
3
7
|
|
|
4
|
-
class
|
|
8
|
+
class TpConfig(FibexElement, metaclass = ABCMeta):
|
|
9
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
10
|
+
if type(self) == ARObject:
|
|
11
|
+
raise NotImplementedError("ARObject is an abstract class.")
|
|
12
|
+
|
|
13
|
+
super().__init__(parent, short_name)
|
|
14
|
+
|
|
15
|
+
self.communicationClusterRef = None # type: RefType
|
|
16
|
+
|
|
17
|
+
def getCommunicationClusterRef(self):
|
|
18
|
+
return self.communicationClusterRef
|
|
19
|
+
|
|
20
|
+
def setCommunicationClusterRef(self, value):
|
|
21
|
+
if value is not None:
|
|
22
|
+
self.communicationClusterRef = value
|
|
23
|
+
return self
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class CanTpConfig(TpConfig):
|
|
27
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
28
|
+
super().__init__(parent, short_name)
|
|
29
|
+
|
|
30
|
+
class DoIpTpConfig(TpConfig):
|
|
5
31
|
def __init__(self, parent: ARObject, short_name: str):
|
|
6
|
-
super().__init__(parent, short_name)
|
|
32
|
+
super().__init__(parent, short_name)
|
|
33
|
+
|
|
34
|
+
self.doIpLogicAddresses = [] # type: List[DoIpLogicAddress]
|
|
35
|
+
self.tpConnections = [] # typeL List[DoIpTpConnection]
|
|
36
|
+
|
|
37
|
+
def getDoIpLogicAddresses(self):
|
|
38
|
+
return self.doIpLogicAddresses
|
|
39
|
+
|
|
40
|
+
def addDoIpLogicAddress(self, value):
|
|
41
|
+
if value is not None:
|
|
42
|
+
self.doIpLogicAddresses.append(value)
|
|
43
|
+
return self
|
|
44
|
+
|
|
45
|
+
def getTpConnections(self):
|
|
46
|
+
return self.tpConnections
|
|
47
|
+
|
|
48
|
+
def addTpConnection(self, value):
|
|
49
|
+
if value is not None:
|
|
50
|
+
self.tpConnections.append(value)
|
|
51
|
+
return self
|
|
52
|
+
|
|
53
|
+
class LinTpConfig(TpConfig):
|
|
54
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
55
|
+
super().__init__(parent, short_name)
|
|
56
|
+
|
|
57
|
+
self.tpAddresses = [] # type: List[TpAddress]
|
|
58
|
+
self.tpConnections = [] # type: List[LinTpConnection]
|
|
59
|
+
self.tpNodes = [] # type: List[LinTpNode]
|
|
60
|
+
|
|
61
|
+
def getTpAddresses(self):
|
|
62
|
+
return self.tpAddresses
|
|
63
|
+
|
|
64
|
+
def addTpAddress(self, value):
|
|
65
|
+
if value is not None:
|
|
66
|
+
self.tpAddresses.append(value)
|
|
67
|
+
return self
|
|
68
|
+
|
|
69
|
+
def getTpConnections(self):
|
|
70
|
+
return self.tpConnections
|
|
71
|
+
|
|
72
|
+
def addTpConnection(self, value):
|
|
73
|
+
if value is not None:
|
|
74
|
+
self.tpConnections.append(value)
|
|
75
|
+
return self
|
|
76
|
+
|
|
77
|
+
def getTpNodes(self):
|
|
78
|
+
return self.tpNodes
|
|
79
|
+
|
|
80
|
+
def setTpNode(self, value):
|
|
81
|
+
if value is not None:
|
|
82
|
+
self.tpNodes.append(value)
|
|
83
|
+
return self
|
|
@@ -277,7 +277,7 @@ class System(ARElement):
|
|
|
277
277
|
self.clientIdDefinitionSetRefs = [] # type: List[RefType]
|
|
278
278
|
self.containerIPduHeaderByteOrder = None
|
|
279
279
|
self.ecuExtractVersion = None
|
|
280
|
-
self.fibexElements = []
|
|
280
|
+
self.fibexElements = [] # type: List[RefType]
|
|
281
281
|
self.interpolationRoutineMappingSetRefs = [] # type: List[RefType]
|
|
282
282
|
self.j1939SharedAddressClusters = []
|
|
283
283
|
self.mappings = [] # type: List[SystemMapping]
|
|
@@ -310,10 +310,12 @@ class System(ARElement):
|
|
|
310
310
|
return self
|
|
311
311
|
|
|
312
312
|
def getFibexElementRefs(self):
|
|
313
|
+
#return sorted(self.fibexElements, key= lambda i: i.getShortValue())
|
|
313
314
|
return self.fibexElements
|
|
314
315
|
|
|
315
316
|
def addFibexElementRef(self, value):
|
|
316
|
-
|
|
317
|
+
if value is not None:
|
|
318
|
+
self.fibexElements.append(value)
|
|
317
319
|
return self
|
|
318
320
|
|
|
319
321
|
def getInterpolationRoutineMappingSetRefs(self):
|
|
@@ -114,7 +114,7 @@ class SwRecordLayoutGroup(ARObject):
|
|
|
114
114
|
self.shortLabel = None # type: ARLiteral
|
|
115
115
|
self.swGenericAxisParamTypeRef = None # type: RefType
|
|
116
116
|
self.swRecordLayoutComponent = None # type: ARLiteral
|
|
117
|
-
self.swRecordLayoutGroupAxis = None # type:
|
|
117
|
+
self.swRecordLayoutGroupAxis = None # type: AxisIndexType
|
|
118
118
|
self.swRecordLayoutGroupContentType = None # type: SwRecordLayoutGroupContent
|
|
119
119
|
self.swRecordLayoutGroupFrom = None # type: ARLiteral
|
|
120
120
|
self.swRecordLayoutGroupIndex = None # type: ARLiteral
|
armodel/models/__init__.py
CHANGED
|
@@ -34,6 +34,7 @@ from .M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.MemorySectionUsage
|
|
|
34
34
|
from .M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import *
|
|
35
35
|
from .M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import *
|
|
36
36
|
from .M2.AUTOSARTemplates.CommonStructure.TriggerDeclaration import *
|
|
37
|
+
from .M2.AUTOSARTemplates.DiagnosticExtract.DiagnosticContribution import *
|
|
37
38
|
from .M2.AUTOSARTemplates.SWComponentTemplate import *
|
|
38
39
|
from .M2.AUTOSARTemplates.SWComponentTemplate.Communication import *
|
|
39
40
|
from .M2.AUTOSARTemplates.SWComponentTemplate.Components import *
|
|
@@ -52,6 +53,7 @@ from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall imp
|
|
|
52
53
|
from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import *
|
|
53
54
|
from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.Trigger import *
|
|
54
55
|
from .M2.AUTOSARTemplates.SystemTemplate.DataMapping import *
|
|
56
|
+
from .M2.AUTOSARTemplates.SystemTemplate.DiagnosticConnection import *
|
|
55
57
|
from .M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import *
|
|
56
58
|
from .M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import *
|
|
57
59
|
from .M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import *
|
|
@@ -59,6 +61,7 @@ from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import *
|
|
|
59
61
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import *
|
|
60
62
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import *
|
|
61
63
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import *
|
|
64
|
+
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinTopology import *
|
|
62
65
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import *
|
|
63
66
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import *
|
|
64
67
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import *
|