armodel 1.7.6__py3-none-any.whl → 1.7.7__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 (41) hide show
  1. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +41 -2
  2. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +47 -6
  3. armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +17 -7
  4. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +1 -1
  5. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +9 -3
  6. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +17 -1
  7. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +19 -5
  8. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +53 -0
  9. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +2 -2
  10. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/DataPrototypes.py +41 -16
  11. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +10 -3
  12. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +26 -8
  13. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +19 -5
  14. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DoIp.py +29 -0
  15. armodel/models/M2/AUTOSARTemplates/SystemTemplate/ECUResourceMapping.py +44 -0
  16. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +9 -0
  17. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +483 -54
  18. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +9 -0
  19. armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +245 -130
  20. armodel/models/M2/AUTOSARTemplates/SystemTemplate/SWmapping.py +27 -0
  21. armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +592 -17
  22. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +20 -10
  23. armodel/models/M2/MSR/AsamHdo/AdminData.py +1 -2
  24. armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +3 -1
  25. armodel/models/M2/MSR/AsamHdo/SpecialData.py +35 -8
  26. armodel/models/M2/MSR/DataDictionary/RecordLayout.py +0 -3
  27. armodel/models/__init__.py +4 -0
  28. armodel/parser/abstract_arxml_parser.py +3 -0
  29. armodel/parser/arxml_parser.py +614 -123
  30. armodel/tests/test_armodel/models/test_bsw_module_template.py +5 -3
  31. armodel/tests/test_armodel/models/test_datatype.py +1 -1
  32. armodel/tests/test_armodel/parser/test_bsw_module_descriiption.py +218 -0
  33. armodel/tests/test_armodel/parser/test_sw_components.py +22 -1
  34. armodel/writer/abstract_arxml_writer.py +7 -6
  35. armodel/writer/arxml_writer.py +694 -139
  36. {armodel-1.7.6.dist-info → armodel-1.7.7.dist-info}/METADATA +41 -3
  37. {armodel-1.7.6.dist-info → armodel-1.7.7.dist-info}/RECORD +41 -37
  38. {armodel-1.7.6.dist-info → armodel-1.7.7.dist-info}/LICENSE +0 -0
  39. {armodel-1.7.6.dist-info → armodel-1.7.7.dist-info}/WHEEL +0 -0
  40. {armodel-1.7.6.dist-info → armodel-1.7.7.dist-info}/entry_points.txt +0 -0
  41. {armodel-1.7.6.dist-info → armodel-1.7.7.dist-info}/top_level.txt +0 -0
@@ -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, Integer, PositiveInteger, RefType, ARBoolean, TimeValue
6
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical, Boolean, Integer, PositiveInteger, RefType, ARBoolean, TimeValue
7
7
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
8
8
 
9
9
  class NmClusterCoupling(ARObject, metaclass = ABCMeta):
@@ -62,10 +62,7 @@ class FlexrayNmClusterCoupling(NmClusterCoupling):
62
62
  def setNmScheduleVariant(self, value):
63
63
  self.nmScheduleVariant = value
64
64
  return self
65
-
66
- class UdpNmClusterCoupling(NmClusterCoupling):
67
- def __init__(self):
68
- super().__init__()
65
+
69
66
 
70
67
  class NmNode(Identifiable, metaclass = ABCMeta):
71
68
  def __init__(self, parent: ARObject, short_name: str):
@@ -203,6 +200,223 @@ class UdpNmNode(NmNode):
203
200
  def __init__(self, parent: ARObject, short_name: str):
204
201
  super().__init__(parent, short_name)
205
202
 
203
+ self.allNmMessagesKeepAwake = None # type: Boolean
204
+ self.nmMsgCycleOffset = None # type: TimeValue
205
+
206
+ def getAllNmMessagesKeepAwake(self):
207
+ return self.allNmMessagesKeepAwake
208
+
209
+ def setAllNmMessagesKeepAwake(self, value):
210
+ if value is not None:
211
+ self.allNmMessagesKeepAwake = value
212
+ return self
213
+
214
+ def getNmMsgCycleOffset(self):
215
+ return self.nmMsgCycleOffset
216
+
217
+ def setNmMsgCycleOffset(self, value):
218
+ if value is not None:
219
+ self.nmMsgCycleOffset = value
220
+ return self
221
+
222
+ class BusspecificNmEcu(ARObject, metaclass = ABCMeta):
223
+ def __init__(self):
224
+ super().__init__()
225
+
226
+ class CanNmEcu(BusspecificNmEcu):
227
+ def __init__(self):
228
+ super().__init__()
229
+
230
+ class FlexrayNmEcu(BusspecificNmEcu):
231
+ def __init__(self):
232
+ super().__init__()
233
+
234
+ class J1939NmEcu(BusspecificNmEcu):
235
+ def __init__(self):
236
+ super().__init__()
237
+
238
+ class UdpNmEcu(BusspecificNmEcu):
239
+ def __init__(self):
240
+ super().__init__()
241
+
242
+ self.nmSynchronizationPointEnabled = None # type: Boolean ## Only AR 4.3.1
243
+
244
+ def getNmSynchronizationPointEnabled(self):
245
+ return self.nmSynchronizationPointEnabled
246
+
247
+ def setNmSynchronizationPointEnabled(self, value):
248
+ if value is not None:
249
+ self.nmSynchronizationPointEnabled = value
250
+ return self
251
+
252
+
253
+ class NmEcu(Identifiable):
254
+ def __init__(self, parent: ARObject, short_name: str):
255
+ super().__init__(parent, short_name)
256
+
257
+ self.busDependentNmEcus = [] # type: List[BusspecificNmEcu]
258
+ self.ecuInstanceRef = None # type: RefType
259
+ self.nmBusSynchronizationEnabled = None # type: Boolean
260
+ self.nmComControlEnabled = None # type: Boolean
261
+ self.nmCoordinator = None # type: NmCoordinator
262
+ self.nmCycletimeMainFunction = None # type: TimeValue
263
+ self.nmNodeDetectionEnabled = None # type: Boolean
264
+ self.nmNodeIdEnabled = None # type: Boolean
265
+ self.nmPduRxIndicationEnabled = None # type: Boolean
266
+ self.nmRemoteSleepIndEnabled = None # type: Boolean
267
+ self.nmRepeatMsgIndEnabled = None # type: Boolean
268
+ self.nmStateChangeIndEnabled = None # type: Boolean
269
+ self.nmUserDataEnabled = None # type: Boolean
270
+
271
+ def getBusDependentNmEcus(self):
272
+ return self.busDependentNmEcus
273
+
274
+ def addBusDependentNmEcu(self, value):
275
+ if value is not None:
276
+ self.busDependentNmEcus.append(value)
277
+ return self
278
+
279
+ def getEcuInstanceRef(self):
280
+ return self.ecuInstanceRef
281
+
282
+ def setEcuInstanceRef(self, value):
283
+ if value is not None:
284
+ self.ecuInstanceRef = value
285
+ return self
286
+
287
+ def getNmBusSynchronizationEnabled(self):
288
+ return self.nmBusSynchronizationEnabled
289
+
290
+ def setNmBusSynchronizationEnabled(self, value):
291
+ if value is not None:
292
+ self.nmBusSynchronizationEnabled = value
293
+ return self
294
+
295
+ def getNmComControlEnabled(self):
296
+ return self.nmComControlEnabled
297
+
298
+ def setNmComControlEnabled(self, value):
299
+ if value is not None:
300
+ self.nmComControlEnabled = value
301
+ return self
302
+
303
+ def getNmCoordinator(self):
304
+ return self.nmCoordinator
305
+
306
+ def setNmCoordinator(self, value):
307
+ if value is not None:
308
+ self.nmCoordinator = value
309
+ return self
310
+
311
+ def getNmCycletimeMainFunction(self):
312
+ return self.nmCycletimeMainFunction
313
+
314
+ def setNmCycletimeMainFunction(self, value):
315
+ if value is not None:
316
+ self.nmCycletimeMainFunction = value
317
+ return self
318
+
319
+ def getNmNodeDetectionEnabled(self):
320
+ return self.nmNodeDetectionEnabled
321
+
322
+ def setNmNodeDetectionEnabled(self, value):
323
+ if value is not None:
324
+ self.nmNodeDetectionEnabled = value
325
+ return self
326
+
327
+ def getNmNodeIdEnabled(self):
328
+ return self.nmNodeIdEnabled
329
+
330
+ def setNmNodeIdEnabled(self, value):
331
+ if value is not None:
332
+ self.nmNodeIdEnabled = value
333
+ return self
334
+
335
+ def getNmPduRxIndicationEnabled(self):
336
+ return self.nmPduRxIndicationEnabled
337
+
338
+ def setNmPduRxIndicationEnabled(self, value):
339
+ if value is not None:
340
+ self.nmPduRxIndicationEnabled = value
341
+ return self
342
+
343
+ def getNmRemoteSleepIndEnabled(self):
344
+ return self.nmRemoteSleepIndEnabled
345
+
346
+ def setNmRemoteSleepIndEnabled(self, value):
347
+ if value is not None:
348
+ self.nmRemoteSleepIndEnabled = value
349
+ return self
350
+
351
+ def getNmRepeatMsgIndEnabled(self):
352
+ return self.nmRepeatMsgIndEnabled
353
+
354
+ def setNmRepeatMsgIndEnabled(self, value):
355
+ if value is not None:
356
+ self.nmRepeatMsgIndEnabled = value
357
+ return self
358
+
359
+ def getNmStateChangeIndEnabled(self):
360
+ return self.nmStateChangeIndEnabled
361
+
362
+ def setNmStateChangeIndEnabled(self, value):
363
+ if value is not None:
364
+ self.nmStateChangeIndEnabled = value
365
+ return self
366
+
367
+ def getNmUserDataEnabled(self):
368
+ return self.nmUserDataEnabled
369
+
370
+ def setNmUserDataEnabled(self, value):
371
+ if value is not None:
372
+ self.nmUserDataEnabled = value
373
+ return self
374
+
375
+ class NmConfig(FibexElement):
376
+ def __init__(self, parent: ARObject, short_name: str):
377
+ super().__init__(parent, short_name)
378
+
379
+ self.nmClusterCouplings = [] # type: List[NmClusterCoupling]
380
+ self.nmIfEcus = [] # type: List[NmEcu]
381
+
382
+ def createCanNmCluster(self, short_name: str): # type: (str) -> CanNmCluster
383
+ if (short_name not in self.elements):
384
+ cluster = CanNmCluster(self, short_name)
385
+ self.addElement(cluster)
386
+ return self.getElement(short_name)
387
+
388
+ def createUdpNmCluster(self, short_name: str): # type: (str) -> UdpNmCluster
389
+ if (short_name not in self.elements):
390
+ cluster = UdpNmCluster(self, short_name)
391
+ self.addElement(cluster)
392
+ return self.getElement(short_name)
393
+
394
+ def getCanNmClusters(self): # type: () -> List[CanNmCluster]
395
+ return list(sorted(filter(lambda a: isinstance(a, CanNmCluster), self.elements.values()), key= lambda o:o.short_name))
396
+
397
+ def getUdpNmClusters(self): # type: () -> List[UdpNmCluster]
398
+ return list(sorted(filter(lambda a: isinstance(a, UdpNmCluster), self.elements.values()), key= lambda o:o.short_name))
399
+
400
+ def getNmClusters(self): # type: () -> List[NmCluster]
401
+ return list(sorted(filter(lambda a: isinstance(a, NmCluster), self.elements.values()), key= lambda o:o.short_name))
402
+
403
+ def getNmClusterCouplings(self):
404
+ return self.nmClusterCouplings
405
+
406
+ def addNmClusterCouplings(self, value):
407
+ self.nmClusterCouplings.append(value)
408
+ return self
409
+
410
+ def getNmIfEcus(self):
411
+ return self.nmIfEcus
412
+
413
+ def createNmEcu(self, short_name: str) -> NmEcu:
414
+ if (short_name not in self.elements):
415
+ cluster = NmEcu(self, short_name)
416
+ self.addElement(cluster)
417
+ self.nmIfEcus.append(cluster)
418
+ return self.getElement(short_name)
419
+
206
420
  class NmCluster(Identifiable, metaclass=ABCMeta):
207
421
  def __init__(self, parent: ARObject, short_name: str):
208
422
  super().__init__(parent, short_name)
@@ -437,142 +651,36 @@ class J1939NmCluster(NmCluster):
437
651
  def __init__(self, parent: ARObject, short_name: str):
438
652
  super().__init__(parent, short_name)
439
653
 
440
- class UdpNmCluster(NmCluster):
441
- def __init__(self, parent: ARObject, short_name: str):
442
- super().__init__(parent, short_name)
443
-
444
- class NmEcu(Identifiable):
445
- def __init__(self, parent: ARObject, short_name: str):
446
- super().__init__(parent, short_name)
447
-
448
- self.busDependentNmEcus = []
449
- self.ecuInstance = None
450
- self.nmBusSynchronizationEnabled = None
451
- self.nmComControlEnabled = None
452
- self.nmCoordinator = None
453
- self.nmCycletimeMainFunction = None
454
- self.nmPduRxIndicationEnabled = None
455
- self.nmRemoteSleepIndEnabled = None
456
- self.nmStateChangeIndEnabled = None
457
- self.nmUserDataEnabled = None
458
-
459
- def getBusDependentNmEcus(self):
460
- return self.busDependentNmEcus
461
-
462
- def addBusDependentNmEcu(self, value):
463
- self.busDependentNmEcus.append(value)
464
- return self
465
-
466
- def getEcuInstance(self):
467
- return self.ecuInstance
468
-
469
- def setEcuInstance(self, value):
470
- self.ecuInstance = value
471
- return self
472
-
473
- def getNmBusSynchronizationEnabled(self):
474
- return self.nmBusSynchronizationEnabled
475
-
476
- def setNmBusSynchronizationEnabled(self, value):
477
- self.nmBusSynchronizationEnabled = value
478
- return self
479
-
480
- def getNmComControlEnabled(self):
481
- return self.nmComControlEnabled
482
-
483
- def setNmComControlEnabled(self, value):
484
- self.nmComControlEnabled = value
485
- return self
486
-
487
- def getNmCoordinator(self):
488
- return self.nmCoordinator
489
-
490
- def setNmCoordinator(self, value):
491
- self.nmCoordinator = value
492
- return self
493
-
494
- def getNmCycletimeMainFunction(self):
495
- return self.nmCycletimeMainFunction
496
-
497
- def setNmCycletimeMainFunction(self, value):
498
- self.nmCycletimeMainFunction = value
499
- return self
500
-
501
- def getNmPduRxIndicationEnabled(self):
502
- return self.nmPduRxIndicationEnabled
503
-
504
- def setNmPduRxIndicationEnabled(self, value):
505
- self.nmPduRxIndicationEnabled = value
506
- return self
507
-
508
- def getNmRemoteSleepIndEnabled(self):
509
- return self.nmRemoteSleepIndEnabled
654
+ class UdpNmClusterCoupling(NmClusterCoupling):
655
+ def __init__(self):
656
+ super().__init__()
510
657
 
511
- def setNmRemoteSleepIndEnabled(self, value):
512
- self.nmRemoteSleepIndEnabled = value
513
- return self
658
+ self.coupledClusterRefs = [] # type: List[RefType]
659
+ self.nmImmediateRestartEnabled = None # type: Boolean
514
660
 
515
- def getNmStateChangeIndEnabled(self):
516
- return self.nmStateChangeIndEnabled
661
+ def getCoupledClusterRefs(self):
662
+ return self.coupledClusterRefs
517
663
 
518
- def setNmStateChangeIndEnabled(self, value):
519
- self.nmStateChangeIndEnabled = value
664
+ def addCoupledClusterRef(self, value):
665
+ if value is not None:
666
+ self.coupledClusterRefs.append(value)
520
667
  return self
521
668
 
522
- def getNmUserDataEnabled(self):
523
- return self.nmUserDataEnabled
524
-
525
- def setNmUserDataEnabled(self, value):
526
- self.nmUserDataEnabled = value
527
- return self
528
-
529
- class NmConfig(FibexElement):
530
- def __init__(self, parent: ARObject, short_name: str):
531
- super().__init__(parent, short_name)
532
-
533
- self.nmClusterCouplings = [] # type: List[NmClusterCoupling]
534
- self.nmIfEcus = [] # type: List[NmEcu]
535
-
536
- def createCanNmCluster(self, short_name: str) -> CanNmCluster:
537
- if (short_name not in self.elements):
538
- cluster = CanNmCluster(self, short_name)
539
- self.addElement(cluster)
540
- return self.getElement(short_name)
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
-
548
- def getCanNmClusters(self) -> List[CanNmCluster]:
549
- return list(sorted(filter(lambda a: isinstance(a, CanNmCluster), self.elements.values()), key= lambda o:o.short_name))
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
-
554
- def getNmClusters(self) -> List[NmCluster]:
555
- return list(sorted(filter(lambda a: isinstance(a, NmCluster), self.elements.values()), key= lambda o:o.short_name))
556
-
557
- def getNmClusterCouplings(self):
558
- return self.nmClusterCouplings
669
+ def getNmImmediateRestartEnabled(self):
670
+ return self.nmImmediateRestartEnabled
559
671
 
560
- def addNmClusterCouplings(self, value):
561
- self.nmClusterCouplings.append(value)
672
+ def setNmImmediateRestartEnabled(self, value):
673
+ if value is not None:
674
+ self.nmImmediateRestartEnabled = value
562
675
  return self
563
676
 
564
- def getNmIfEcus(self):
565
- return self.nmIfEcus
566
677
 
567
- def addNmIfEcus(self, value):
568
- self.nmIfEcus.append(value)
569
- return self
570
-
571
678
  class UdpNmCluster(NmCluster):
572
679
  def __init__(self, parent: ARObject, short_name: str):
573
680
  super().__init__(parent, short_name)
574
681
 
575
682
  self.nmCbvPosition = None # type: Integer
683
+ self.nmChannelActive = None # type: Boolean
576
684
  self.nmImmediateNmCycleTime = None # type: TimeValue
577
685
  self.nmImmediateNmTransmissions = None # type: PositiveInteger
578
686
  self.nmMessageTimeoutTime = None # type: TimeValue
@@ -591,6 +699,15 @@ class UdpNmCluster(NmCluster):
591
699
  if value is not None:
592
700
  self.nmCbvPosition = value
593
701
  return self
702
+
703
+ def getNmChannelActive(self):
704
+ return self.nmChannelActive
705
+
706
+ def setNmChannelActive(self, value):
707
+ if value is not None:
708
+ self.nmChannelActive = value
709
+ return self
710
+
594
711
 
595
712
  def getNmImmediateNmCycleTime(self):
596
713
  return self.nmImmediateNmCycleTime
@@ -670,6 +787,4 @@ class UdpNmCluster(NmCluster):
670
787
  def setVlanRef(self, value):
671
788
  if value is not None:
672
789
  self.vlanRef = value
673
- return self
674
-
675
-
790
+ return self
@@ -0,0 +1,27 @@
1
+ from typing import List
2
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
3
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
4
+ from ....M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef
5
+
6
+ class SwcToImplMapping(Identifiable):
7
+ def __init__(self, parent, short_name):
8
+ super().__init__(parent, short_name)
9
+
10
+ self.componentIRefs = [] # type: List[ComponentInSystemInstanceRef]
11
+ self.componentImplementationRef = None # type: RefType
12
+
13
+ def getComponentIRefs(self):
14
+ return self.componentIRefs
15
+
16
+ def addComponentIRef(self, value):
17
+ if value is not None:
18
+ self.componentIRefs.append(value)
19
+ return self
20
+
21
+ def getComponentImplementationRef(self):
22
+ return self.componentImplementationRef
23
+
24
+ def setComponentImplementationRef(self, value):
25
+ if value is not None:
26
+ self.componentImplementationRef = value
27
+ return self