armodel 1.7.6__py3-none-any.whl → 1.7.8__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) 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 +95 -21
  4. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +359 -59
  5. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +134 -35
  6. armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +17 -7
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +10 -1
  8. armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +18 -2
  9. armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +20 -19
  10. armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/HwElementCategory.py +59 -0
  11. armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/__init__.py +145 -0
  12. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +215 -157
  13. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +69 -35
  14. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +17 -1
  15. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +19 -5
  16. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +113 -39
  17. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +3 -2
  18. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/DataPrototypes.py +41 -16
  19. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +10 -3
  20. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +13 -6
  21. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +111 -38
  22. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AccessCount.py +9 -1
  23. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +5 -4
  24. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +26 -8
  25. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +28 -6
  26. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +167 -5
  27. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DoIp.py +29 -0
  28. armodel/models/M2/AUTOSARTemplates/SystemTemplate/EcuResourceMapping.py +45 -0
  29. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +31 -21
  30. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetFrame.py +5 -3
  31. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +9 -0
  32. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayCommunication.py +76 -0
  33. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayTopology.py +654 -0
  34. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/__init__.py +0 -0
  35. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +539 -77
  36. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +158 -40
  37. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +28 -6
  38. armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +2 -0
  39. armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +245 -130
  40. armodel/models/M2/AUTOSARTemplates/SystemTemplate/SWmapping.py +27 -0
  41. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Transformer/__init__.py +524 -0
  42. armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +592 -17
  43. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +33 -21
  44. armodel/models/M2/MSR/AsamHdo/AdminData.py +1 -2
  45. armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +3 -1
  46. armodel/models/M2/MSR/AsamHdo/SpecialData.py +35 -8
  47. armodel/models/M2/MSR/DataDictionary/RecordLayout.py +0 -3
  48. armodel/models/__init__.py +8 -0
  49. armodel/parser/abstract_arxml_parser.py +34 -27
  50. armodel/parser/arxml_parser.py +1778 -616
  51. armodel/parser/file_parser.py +5 -3
  52. armodel/tests/test_armodel/models/test_ar_package.py +6 -11
  53. armodel/tests/test_armodel/models/test_bsw_module_template.py +5 -3
  54. armodel/tests/test_armodel/models/test_datatype.py +1 -1
  55. armodel/tests/test_armodel/models/test_port_interface.py +116 -117
  56. armodel/tests/test_armodel/parser/test_bsw_module_descriiption.py +218 -0
  57. armodel/tests/test_armodel/parser/test_sw_components.py +54 -22
  58. armodel/tests/test_armodel/parser/test_system.py +2 -8
  59. armodel/transformer/__init__.py +0 -0
  60. armodel/transformer/abstract.py +6 -0
  61. armodel/transformer/admin_data.py +31 -0
  62. armodel/writer/abstract_arxml_writer.py +27 -33
  63. armodel/writer/arxml_writer.py +1875 -599
  64. {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/METADATA +81 -3
  65. {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/RECORD +69 -56
  66. {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/LICENSE +0 -0
  67. {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/WHEEL +0 -0
  68. {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/entry_points.txt +0 -0
  69. {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/top_level.txt +0 -0
@@ -2,11 +2,15 @@ from abc import ABCMeta
2
2
  from typing import List
3
3
  from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Identifiable, Describable
4
4
  from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
5
- from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical, ARPositiveInteger, Boolean, Integer, RefType, ARBoolean, String, TimeValue, UnlimitedInteger
5
+ from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical, ARPositiveInteger, Boolean
6
+ from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Integer, PositiveInteger, RefType, ARBoolean, String
7
+ from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import TimeValue, UnlimitedInteger
6
8
  from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import TransmissionModeDeclaration
7
- class FibexElement(Identifiable, metaclass = ABCMeta):
9
+
10
+
11
+ class FibexElement(Identifiable, metaclass=ABCMeta):
8
12
  def __init__(self, parent: ARObject, short_name: str):
9
- if type(self) == FibexElement:
13
+ if type(self) is FibexElement:
10
14
  raise NotImplementedError("FibexElement is an abstract class.")
11
15
 
12
16
  super().__init__(parent, short_name)
@@ -49,9 +53,10 @@ class PduToFrameMapping(Identifiable):
49
53
  self.updateIndicationBitPosition = value
50
54
  return self
51
55
 
52
- class Frame(Identifiable, metaclass = ABCMeta):
56
+
57
+ class Frame(Identifiable, metaclass=ABCMeta):
53
58
  def __init__(self, parent: ARObject, short_name: str):
54
- if type(self) == Frame:
59
+ if type(self) is Frame:
55
60
  raise NotImplementedError("Frame is an abstract class.")
56
61
 
57
62
  super().__init__(parent, short_name)
@@ -74,8 +79,9 @@ class Frame(Identifiable, metaclass = ABCMeta):
74
79
  return self.elements[short_name]
75
80
 
76
81
  def getPduToFrameMappings(self) -> List[PduToFrameMapping]:
77
- return list(sorted(filter(lambda a: isinstance(a, PduToFrameMapping), self.elements.values()), key= lambda o:o.short_name))
78
-
82
+ return list(sorted(filter(lambda a: isinstance(a, PduToFrameMapping), self.elements.values()), key=lambda o: o.short_name))
83
+
84
+
79
85
  class ContainedIPduProps(ARObject):
80
86
  def __init__(self):
81
87
  super().__init__()
@@ -137,20 +143,22 @@ class ContainedIPduProps(ARObject):
137
143
  self.updateIndicationBitPosition = value
138
144
  return self
139
145
 
146
+
140
147
  class ISignalGroup(FibexElement):
141
148
  def __init__(self, parent, short_name):
142
149
  super().__init__(parent, short_name)
143
150
 
144
- self.comBasedSignalGroupTransformationRef = None # type: RefType
151
+ self.comBasedSignalGroupTransformationRefs = [] # type: List[RefType]
145
152
  self.iSignalRefs = [] # type: List[RefType]
146
153
  self.systemSignalGroupRef = None
147
154
  self.transformationISignalProps = None
148
155
 
149
- def getComBasedSignalGroupTransformationRef(self):
150
- return self.comBasedSignalGroupTransformationRef
156
+ def getComBasedSignalGroupTransformationRefs(self):
157
+ return self.comBasedSignalGroupTransformationRefs
151
158
 
152
- def setComBasedSignalGroupTransformationRef(self, value):
153
- self.comBasedSignalGroupTransformationRef = value
159
+ def addComBasedSignalGroupTransformationRef(self, value):
160
+ if value is not None:
161
+ self.comBasedSignalGroupTransformationRefs.append(value)
154
162
  return self
155
163
 
156
164
  def getISignalRefs(self):
@@ -219,15 +227,25 @@ class ISignalIPduGroup(FibexElement):
219
227
  def addNmPduRef(self, value):
220
228
  self.nmPduRefs.append(value)
221
229
  return self
222
-
223
- class Pdu(FibexElement, metaclass = ABCMeta):
230
+
231
+
232
+ class Pdu(FibexElement, metaclass=ABCMeta):
224
233
  def __init__(self, parent: ARObject, short_name: str):
225
- if type(self) == Pdu:
234
+ if type(self) is Pdu:
226
235
  raise NotImplementedError("Pdu is an abstract class.")
227
236
 
228
237
  super().__init__(parent, short_name)
229
238
 
230
- self.length = None # type: ARNumerical
239
+ self.hasDynamicLength = None # type: Boolean
240
+ self.length = None # type: UnlimitedInteger
241
+
242
+ def getHasDynamicLength(self):
243
+ return self.hasDynamicLength
244
+
245
+ def setHasDynamicLength(self, value):
246
+ if value is not None:
247
+ self.hasDynamicLength = value
248
+ return self
231
249
 
232
250
  def getLength(self):
233
251
  return self.length
@@ -236,69 +254,227 @@ class Pdu(FibexElement, metaclass = ABCMeta):
236
254
  self.length = value
237
255
  return self
238
256
 
239
- class IPdu(Pdu, metaclass = ABCMeta):
257
+
258
+ class IPdu(Pdu, metaclass=ABCMeta):
240
259
  def __init__(self, parent: ARObject, short_name: str):
241
- if type(self) == IPdu:
260
+ if type(self) is IPdu:
242
261
  raise NotImplementedError("IPdu is an abstract class.")
243
262
 
244
263
  super().__init__(parent, short_name)
245
264
 
246
- self.containedOpduProps = None # type: ContainedIPduProps
265
+ # type: ContainedIPduProps
266
+ self.containedIPduProps = None
267
+
268
+ def getContainedIPduProps(self):
269
+ return self.containedIPduProps
270
+
271
+ def setContainedIPduProps(self, value):
272
+ if value is not None:
273
+ self.containedIPduProps = value
274
+ return self
275
+
276
+
277
+ class SecureCommunicationProps(ARObject):
278
+ def __init__(self):
279
+ super().__init__()
280
+
281
+ self.authDataFreshnessLength = None # type: PositiveInteger
282
+ self.authDataFreshnessStartPosition = None # type: PositiveInteger
283
+ self.authInfoTxLength = None # type: PositiveInteger
284
+ self.authenticationBuildAttempts = None # type: PositiveInteger
285
+ self.authenticationRetries = None # type: PositiveInteger
286
+ self.dataId = None # type: PositiveInteger
287
+ self.freshnessValueId = None # type: PositiveInteger
288
+ self.freshnessValueLength = None # type: PositiveInteger
289
+ self.freshnessValueTxLength = None # type: PositiveInteger
290
+ self.messageLinkLength = None # type: PositiveInteger
291
+ self.messageLinkPosition = None # type: PositiveInteger
292
+ self.secondaryFreshnessValueId = None # type: PositiveInteger
293
+ self.securedAreaLength = None # type: PositiveInteger
294
+ self.securedAreaOffset = None # type: PositiveInteger
295
+
296
+ def getAuthDataFreshnessLength(self):
297
+ return self.authDataFreshnessLength
298
+
299
+ def setAuthDataFreshnessLength(self, value):
300
+ if value is not None:
301
+ self.authDataFreshnessLength = value
302
+ return self
303
+
304
+ def getAuthDataFreshnessStartPosition(self):
305
+ return self.authDataFreshnessStartPosition
306
+
307
+ def setAuthDataFreshnessStartPosition(self, value):
308
+ if value is not None:
309
+ self.authDataFreshnessStartPosition = value
310
+ return self
311
+
312
+ def getAuthInfoTxLength(self):
313
+ return self.authInfoTxLength
314
+
315
+ def setAuthInfoTxLength(self, value):
316
+ if value is not None:
317
+ self.authInfoTxLength = value
318
+ return self
319
+
320
+ def getAuthenticationBuildAttempts(self):
321
+ return self.authenticationBuildAttempts
247
322
 
248
- def getContainedOpduProps(self):
249
- return self.containedOpduProps
323
+ def setAuthenticationBuildAttempts(self, value):
324
+ if value is not None:
325
+ self.authenticationBuildAttempts = value
326
+ return self
327
+
328
+ def getAuthenticationRetries(self):
329
+ return self.authenticationRetries
330
+
331
+ def setAuthenticationRetries(self, value):
332
+ if value is not None:
333
+ self.authenticationRetries = value
334
+ return self
335
+
336
+ def getDataId(self):
337
+ return self.dataId
338
+
339
+ def setDataId(self, value):
340
+ if value is not None:
341
+ self.dataId = value
342
+ return self
250
343
 
251
- def setContainedOpduProps(self, value):
252
- self.containedOpduProps = value
344
+ def getFreshnessValueId(self):
345
+ return self.freshnessValueId
346
+
347
+ def setFreshnessValueId(self, value):
348
+ if value is not None:
349
+ self.freshnessValueId = value
253
350
  return self
254
351
 
352
+ def getFreshnessValueLength(self):
353
+ return self.freshnessValueLength
354
+
355
+ def setFreshnessValueLength(self, value):
356
+ if value is not None:
357
+ self.freshnessValueLength = value
358
+ return self
359
+
360
+ def getFreshnessValueTxLength(self):
361
+ return self.freshnessValueTxLength
362
+
363
+ def setFreshnessValueTxLength(self, value):
364
+ if value is not None:
365
+ self.freshnessValueTxLength = value
366
+ return self
367
+
368
+ def getMessageLinkLength(self):
369
+ return self.messageLinkLength
370
+
371
+ def setMessageLinkLength(self, value):
372
+ if value is not None:
373
+ self.messageLinkLength = value
374
+ return self
375
+
376
+ def getMessageLinkPosition(self):
377
+ return self.messageLinkPosition
378
+
379
+ def setMessageLinkPosition(self, value):
380
+ if value is not None:
381
+ self.messageLinkPosition = value
382
+ return self
383
+
384
+ def getSecondaryFreshnessValueId(self):
385
+ return self.secondaryFreshnessValueId
386
+
387
+ def setSecondaryFreshnessValueId(self, value):
388
+ if value is not None:
389
+ self.secondaryFreshnessValueId = value
390
+ return self
391
+
392
+ def getSecuredAreaLength(self):
393
+ return self.securedAreaLength
394
+
395
+ def setSecuredAreaLength(self, value):
396
+ if value is not None:
397
+ self.securedAreaLength = value
398
+ return self
399
+
400
+ def getSecuredAreaOffset(self):
401
+ return self.securedAreaOffset
402
+
403
+ def setSecuredAreaOffset(self, value):
404
+ if value is not None:
405
+ self.securedAreaOffset = value
406
+ return self
407
+
408
+
255
409
  class SecuredIPdu(IPdu):
256
410
  def __init__(self, parent: ARObject, short_name: str):
257
411
  super().__init__(parent, short_name)
258
-
259
- class NmPdu(Pdu):
260
- def __init__(self, parent: ARObject, short_name: str):
261
- super().__init__(parent, short_name)
262
-
263
412
 
264
- class NPdu(IPdu):
265
- def __init__(self, parent: ARObject, short_name: str):
266
- super().__init__(parent, short_name)
413
+ self.authenticationPropsRef = None # type: RefType
414
+ self.dynamicRuntimeLengthHandling = None # type: Boolean
415
+ self.freshnessPropsRef = None # type: RefType
416
+ self.payloadRef = None # type: RefType
417
+ self.secureCommunicationProps = None # type: SecureCommunicationProps
418
+ self.useAsCryptographicIPdu = None # type: Boolean
419
+ self.useSecuredPduHeader = None # type: SecuredPduHeaderEnum
267
420
 
268
- class DcmIPdu(IPdu):
269
- def __init__(self, parent: ARObject, short_name: str):
270
- super().__init__(parent, short_name)
421
+ def getAuthenticationPropsRef(self):
422
+ return self.authenticationPropsRef
271
423
 
272
- self.diagPduType = None # type: ARLiteral
424
+ def setAuthenticationPropsRef(self, value):
425
+ if value is not None:
426
+ self.authenticationPropsRef = value
427
+ return self
273
428
 
274
- def getDiagPduType(self):
275
- return self.diagPduType
429
+ def getDynamicRuntimeLengthHandling(self):
430
+ return self.dynamicRuntimeLengthHandling
276
431
 
277
- def setDiagPduType(self, value):
278
- self.diagPduType = value
432
+ def setDynamicRuntimeLengthHandling(self, value):
433
+ if value is not None:
434
+ self.dynamicRuntimeLengthHandling = value
279
435
  return self
280
436
 
281
- class IPduTiming(Describable):
282
- def __init__(self):
283
- super().__init__()
437
+ def getFreshnessPropsRef(self):
438
+ return self.freshnessPropsRef
284
439
 
285
- self.minimumDelay = None # type: TimeValue
286
- self.transmissionModeDeclaration = None # type: TransmissionModeDeclaration
440
+ def setFreshnessPropsRef(self, value):
441
+ if value is not None:
442
+ self.freshnessPropsRef = value
443
+ return self
287
444
 
288
- def getMinimumDelay(self):
289
- return self.minimumDelay
445
+ def getPayloadRef(self):
446
+ return self.payloadRef
290
447
 
291
- def setMinimumDelay(self, value):
292
- self.minimumDelay = value
448
+ def setPayloadRef(self, value):
449
+ if value is not None:
450
+ self.payloadRef = value
293
451
  return self
294
452
 
295
- def getTransmissionModeDeclaration(self):
296
- return self.transmissionModeDeclaration
453
+ def getSecureCommunicationProps(self):
454
+ return self.secureCommunicationProps
297
455
 
298
- def setTransmissionModeDeclaration(self, value):
299
- self.transmissionModeDeclaration = value
456
+ def setSecureCommunicationProps(self, value):
457
+ if value is not None:
458
+ self.secureCommunicationProps = value
300
459
  return self
301
-
460
+
461
+ def getUseAsCryptographicIPdu(self):
462
+ return self.useAsCryptographicIPdu
463
+
464
+ def setUseAsCryptographicIPdu(self, value):
465
+ if value is not None:
466
+ self.useAsCryptographicIPdu = value
467
+ return self
468
+
469
+ def getUseSecuredPduHeader(self):
470
+ return self.useSecuredPduHeader
471
+
472
+ def setUseSecuredPduHeader(self, value):
473
+ if value is not None:
474
+ self.useSecuredPduHeader = value
475
+ return self
476
+
477
+
302
478
  class ISignalToIPduMapping(Identifiable):
303
479
  def __init__(self, parent, short_name):
304
480
  super().__init__(parent, short_name)
@@ -306,10 +482,9 @@ class ISignalToIPduMapping(Identifiable):
306
482
  self.iSignalRef = None # type: RefType
307
483
  self.iSignalGroupRef = None # type: RefType
308
484
  self.packingByteOrder = None # type: ByteOrderEnum
309
- self.startPosition = None # type: ARNumerical
310
- # type: TransferPropertyEnum
311
- self.transferProperty = None
312
- self.updateIndicationBitPosition = None # type: ARNumerical
485
+ self.startPosition = None # type: UnlimitedInteger
486
+ self.transferProperty = None # type: TransferPropertyEnum
487
+ self.updateIndicationBitPosition = None # type: UnlimitedInteger
313
488
 
314
489
  def getISignalRef(self):
315
490
  return self.iSignalRef
@@ -353,14 +528,99 @@ class ISignalToIPduMapping(Identifiable):
353
528
  self.updateIndicationBitPosition = value
354
529
  return self
355
530
 
356
-
531
+
532
+ class NmPdu(Pdu):
533
+ def __init__(self, parent: ARObject, short_name: str):
534
+ super().__init__(parent, short_name)
535
+
536
+ self.iSignalToIPduMappings = [] # type: List[ISignalToIPduMapping]
537
+ self.nmDataInformation = None # type: Boolean
538
+ self.nmVoteInformation = None # type: Boolean
539
+ self.unusedBitPattern = None # type: Integer
540
+
541
+ def getISignalToIPduMappings(self):
542
+ return self.iSignalToIPduMappings
543
+
544
+ def createISignalToIPduMapping(self, short_name: str) -> ISignalToIPduMapping:
545
+ if (not self.IsElementExists(short_name)):
546
+ mapping = ISignalToIPduMapping(self, short_name)
547
+ self.addElement(mapping)
548
+ self.iSignalToIPduMappings.append(mapping)
549
+ return self.getElement(short_name)
550
+
551
+ def getNmDataInformation(self):
552
+ return self.nmDataInformation
553
+
554
+ def setNmDataInformation(self, value):
555
+ if value is not None:
556
+ self.nmDataInformation = value
557
+ return self
558
+
559
+ def getNmVoteInformation(self):
560
+ return self.nmVoteInformation
561
+
562
+ def setNmVoteInformation(self, value):
563
+ if value is not None:
564
+ self.nmVoteInformation = value
565
+ return self
566
+
567
+ def getUnusedBitPattern(self):
568
+ return self.unusedBitPattern
569
+
570
+ def setUnusedBitPattern(self, value):
571
+ if value is not None:
572
+ self.unusedBitPattern = value
573
+ return self
574
+
575
+
576
+ class NPdu(IPdu):
577
+ def __init__(self, parent: ARObject, short_name: str):
578
+ super().__init__(parent, short_name)
579
+
580
+
581
+ class DcmIPdu(IPdu):
582
+ def __init__(self, parent: ARObject, short_name: str):
583
+ super().__init__(parent, short_name)
584
+
585
+ self.diagPduType = None # type: ARLiteral
586
+
587
+ def getDiagPduType(self):
588
+ return self.diagPduType
589
+
590
+ def setDiagPduType(self, value):
591
+ self.diagPduType = value
592
+ return self
593
+
594
+
595
+ class IPduTiming(Describable):
596
+ def __init__(self):
597
+ super().__init__()
598
+
599
+ self.minimumDelay = None # type: TimeValue
600
+ self.transmissionModeDeclaration = None # type: TransmissionModeDeclaration
601
+
602
+ def getMinimumDelay(self):
603
+ return self.minimumDelay
604
+
605
+ def setMinimumDelay(self, value):
606
+ self.minimumDelay = value
607
+ return self
608
+
609
+ def getTransmissionModeDeclaration(self):
610
+ return self.transmissionModeDeclaration
611
+
612
+ def setTransmissionModeDeclaration(self, value):
613
+ self.transmissionModeDeclaration = value
614
+ return self
615
+
616
+
357
617
  class ISignalIPdu(IPdu):
358
618
  def __init__(self, parent, short_name):
359
619
  super().__init__(parent, short_name)
360
620
 
361
621
  self.iPduTimingSpecification = None # type: IPduTiming
362
622
  self.iSignalToPduMappings = [] # type: List[ISignalToIPduMapping]
363
- self.unusedBitPattern = None # type: ARNumerical
623
+ self.unusedBitPattern = None # type: Integer
364
624
 
365
625
  def getIPduTimingSpecification(self):
366
626
  return self.iPduTimingSpecification
@@ -471,7 +731,8 @@ class ISignal(FibexElement):
471
731
  def addTransformationISignalProps(self, value):
472
732
  self.transformationISignalProps.append(value)
473
733
  return self
474
-
734
+
735
+
475
736
  class PduTriggering(Identifiable):
476
737
  def __init__(self, parent, short_name):
477
738
  super().__init__(parent, short_name)
@@ -497,7 +758,8 @@ class PduTriggering(Identifiable):
497
758
  return self
498
759
 
499
760
  def getISignalTriggeringRefs(self):
500
- return sorted(self.iSignalTriggeringRefs, key = lambda i: i.getShortValue())
761
+ # return sorted(self.iSignalTriggeringRefs, key = lambda i: i.getShortValue())
762
+ return self.iSignalTriggeringRefs
501
763
 
502
764
  def addISignalTriggeringRef(self, value):
503
765
  self.iSignalTriggeringRefs.append(value)
@@ -518,9 +780,9 @@ class PduTriggering(Identifiable):
518
780
  return self
519
781
 
520
782
 
521
- class FrameTriggering(Identifiable, metaclass = ABCMeta):
783
+ class FrameTriggering(Identifiable, metaclass=ABCMeta):
522
784
  def __init__(self, parent, short_name):
523
- if type(self) == FrameTriggering:
785
+ if type(self) is FrameTriggering:
524
786
  raise NotImplementedError("FrameTriggering is an abstract class.")
525
787
 
526
788
  super().__init__(parent, short_name)
@@ -550,6 +812,7 @@ class FrameTriggering(Identifiable, metaclass = ABCMeta):
550
812
  self.pduTriggeringRefs.append(value)
551
813
  return self
552
814
 
815
+
553
816
  class SystemSignal(ARElement):
554
817
  def __init__(self, parent, short_name):
555
818
  super().__init__(parent, short_name)
@@ -571,6 +834,7 @@ class SystemSignal(ARElement):
571
834
  self.physicalProps = value
572
835
  return self
573
836
 
837
+
574
838
  class SystemSignalGroup(ARElement):
575
839
  def __init__(self, parent, short_name):
576
840
  super().__init__(parent, short_name)
@@ -581,7 +845,7 @@ class SystemSignalGroup(ARElement):
581
845
  def getSystemSignalRefs(self):
582
846
  return self.systemSignalRefs
583
847
 
584
- def addSystemSignalRefs(self, value:RefType):
848
+ def addSystemSignalRefs(self, value: RefType):
585
849
  self.systemSignalRefs.append(value)
586
850
  return self
587
851
 
@@ -592,6 +856,7 @@ class SystemSignalGroup(ARElement):
592
856
  self.transformingSystemSignalRef = value
593
857
  return self
594
858
 
859
+
595
860
  class ISignalTriggering(Identifiable):
596
861
  def __init__(self, parent, short_name):
597
862
  super().__init__(parent, short_name)
@@ -621,6 +886,121 @@ class ISignalTriggering(Identifiable):
621
886
  self.iSignalPortRefs.append(value)
622
887
  return self
623
888
 
889
+
890
+ class SegmentPosition(ARObject):
891
+ def __init__(self):
892
+ super().__init__()
893
+
894
+ self.segmentByteOrder = None # type: ByteOrderEnum
895
+ self.segmentLength = None # type: Integer
896
+ self.segmentPosition = None # type: Integer
897
+
898
+ def getSegmentByteOrder(self):
899
+ return self.segmentByteOrder
900
+
901
+ def setSegmentByteOrder(self, value):
902
+ if value is not None:
903
+ self.segmentByteOrder = value
904
+ return self
905
+
906
+ def getSegmentLength(self):
907
+ return self.segmentLength
908
+
909
+ def setSegmentLength(self, value):
910
+ if value is not None:
911
+ self.segmentLength = value
912
+ return self
913
+
914
+ def getSegmentPosition(self):
915
+ return self.segmentPosition
916
+
917
+ def setSegmentPosition(self, value):
918
+ if value is not None:
919
+ self.segmentPosition = value
920
+ return self
921
+
922
+
923
+ class MultiplexedPart(ARObject, metaclass=ABCMeta):
924
+ def __init__(self):
925
+ if type(self) is MultiplexedPart:
926
+ raise NotImplementedError("MultiplexedPart is an abstract class.")
927
+
928
+ super().__init__()
929
+
930
+ self.segmentPositions = [] # type: List[SegmentPosition]
931
+
932
+ def getSegmentPositions(self):
933
+ return self.segmentPositions
934
+
935
+ def addSegmentPosition(self, value):
936
+ if value is not None:
937
+ self.segmentPositions.append(value)
938
+ return self
939
+
940
+
941
+ class StaticPart(MultiplexedPart):
942
+ def __init__(self):
943
+ super().__init__()
944
+
945
+ self.iPduRef = None # type: RefType
946
+
947
+ def getIPduRef(self):
948
+ return self.iPduRef
949
+
950
+ def setIPduRef(self, value):
951
+ if value is not None:
952
+ self.iPduRef = value
953
+ return self
954
+
955
+
956
+ class DynamicPartAlternative(ARObject):
957
+ def __init__(self):
958
+ super().__init__()
959
+
960
+ self.initialDynamicPart = None # type: Boolean
961
+ self.iPduRef = None # type: RefType
962
+ self.selectorFieldCode = None # type: Integer
963
+
964
+ def getInitialDynamicPart(self):
965
+ return self.initialDynamicPart
966
+
967
+ def setInitialDynamicPart(self, value):
968
+ if value is not None:
969
+ self.initialDynamicPart = value
970
+ return self
971
+
972
+ def getIPduRef(self):
973
+ return self.iPduRef
974
+
975
+ def setIPduRef(self, value):
976
+ if value is not None:
977
+ self.iPduRef = value
978
+ return self
979
+
980
+ def getSelectorFieldCode(self):
981
+ return self.selectorFieldCode
982
+
983
+ def setSelectorFieldCode(self, value):
984
+ if value is not None:
985
+ self.selectorFieldCode = value
986
+ return self
987
+
988
+
989
+ class DynamicPart(MultiplexedPart):
990
+ def __init__(self):
991
+ super().__init__()
992
+
993
+ self.dynamicPartAlternatives = [] # type: List[DynamicPartAlternative]
994
+
995
+ def getDynamicPartAlternatives(self):
996
+ return self.dynamicPartAlternatives
997
+
998
+ def addDynamicPartAlternative(self, value):
999
+ if value is not None:
1000
+ self.dynamicPartAlternatives.append(value)
1001
+ return self
1002
+
1003
+
624
1004
  class MultiplexedIPdu(IPdu):
625
1005
  def __init__(self, parent, short_name):
626
1006
  super().__init__(parent, short_name)
@@ -689,6 +1069,7 @@ class MultiplexedIPdu(IPdu):
689
1069
  self.unusedBitPattern = value
690
1070
  return self
691
1071
 
1072
+
692
1073
  class UserDefinedIPdu(IPdu):
693
1074
  def __init__(self, parent, short_name):
694
1075
  super().__init__(parent, short_name)
@@ -703,10 +1084,12 @@ class UserDefinedIPdu(IPdu):
703
1084
  self.cddType = value
704
1085
  return self
705
1086
 
1087
+
706
1088
  class GeneralPurposeIPdu(IPdu):
707
1089
  def __init__(self, parent: ARObject, short_name: str):
708
1090
  super().__init__(parent, short_name)
709
1091
 
1092
+
710
1093
  class UserDefinedPdu(Pdu):
711
1094
  def __init__(self, parent: ARObject, short_name: str):
712
1095
  super().__init__(parent, short_name)
@@ -721,6 +1104,7 @@ class UserDefinedPdu(Pdu):
721
1104
  self.cddType = value
722
1105
  return self
723
1106
 
1107
+
724
1108
  class GeneralPurposePdu(Pdu):
725
1109
  def __init__(self, parent: ARObject, short_name: str):
726
1110
  super().__init__(parent, short_name)
@@ -744,27 +1128,105 @@ class GeneralPurposePdu(Pdu):
744
1128
  self.length = value
745
1129
  return self
746
1130
 
747
- class SecureCommunicationPropsSet(Identifiable):
1131
+
1132
+ class SecureCommunicationAuthenticationProps(Identifiable):
748
1133
  def __init__(self, parent: ARObject, short_name: str):
749
1134
  super().__init__(parent, short_name)
750
1135
 
751
- # type: List[SecureCommunicationAuthenticationProps]
752
- self.authenticationProps = []
753
- # type: List[SecureCommunicationFreshnessProps]
754
- self.freshnessProps = []
1136
+ self.authAlgorithm = None # type: String
1137
+ self.authInfoTxLength = None # type: PositiveInteger
755
1138
 
756
- def getAuthenticationProps(self):
757
- return self.authenticationProps
1139
+ def getAuthAlgorithm(self):
1140
+ return self.authAlgorithm
758
1141
 
759
- def addAuthenticationProp(self, value):
1142
+ def setAuthAlgorithm(self, value):
760
1143
  if value is not None:
761
- self.authenticationProps.append(value)
1144
+ self.authAlgorithm = value
762
1145
  return self
763
1146
 
764
- def getFreshnessProps(self):
765
- return self.freshnessProps
1147
+ def getAuthInfoTxLength(self):
1148
+ return self.authInfoTxLength
1149
+
1150
+ def setAuthInfoTxLength(self, value):
1151
+ if value is not None:
1152
+ self.authInfoTxLength = value
1153
+ return self
1154
+
1155
+
1156
+ class SecureCommunicationFreshnessProps(Identifiable):
1157
+ def __init__(self, parent: ARObject, short_name: str):
1158
+ super().__init__(parent, short_name)
1159
+
1160
+ self.freshnessCounterSyncAttempts = None # type: PositiveInteger
1161
+ self.freshnessTimestampTimePeriodFactor = None # type: PositiveInteger
1162
+ self.freshnessValueLength = None # type: PositiveInteger
1163
+ self.freshnessValueTxLength = None # type: PositiveInteger
1164
+ self.useFreshnessTimestamp = None # type: Boolean
1165
+
1166
+ def getFreshnessCounterSyncAttempts(self):
1167
+ return self.freshnessCounterSyncAttempts
1168
+
1169
+ def setFreshnessCounterSyncAttempts(self, value):
1170
+ if value is not None:
1171
+ self.freshnessCounterSyncAttempts = value
1172
+ return self
1173
+
1174
+ def getFreshnessTimestampTimePeriodFactor(self):
1175
+ return self.freshnessTimestampTimePeriodFactor
1176
+
1177
+ def setFreshnessTimestampTimePeriodFactor(self, value):
1178
+ if value is not None:
1179
+ self.freshnessTimestampTimePeriodFactor = value
1180
+ return self
1181
+
1182
+ def getFreshnessValueLength(self):
1183
+ return self.freshnessValueLength
1184
+
1185
+ def setFreshnessValueLength(self, value):
1186
+ if value is not None:
1187
+ self.freshnessValueLength = value
1188
+ return self
1189
+
1190
+ def getFreshnessValueTxLength(self):
1191
+ return self.freshnessValueTxLength
1192
+
1193
+ def setFreshnessValueTxLength(self, value):
1194
+ if value is not None:
1195
+ self.freshnessValueTxLength = value
1196
+ return self
766
1197
 
767
- def addFreshnessProp(self, value):
1198
+ def getUseFreshnessTimestamp(self):
1199
+ return self.useFreshnessTimestamp
1200
+
1201
+ def setUseFreshnessTimestamp(self, value):
768
1202
  if value is not None:
769
- self.freshnessProps.append(value)
1203
+ self.useFreshnessTimestamp = value
770
1204
  return self
1205
+
1206
+
1207
+ class SecureCommunicationPropsSet(Identifiable):
1208
+ def __init__(self, parent: ARObject, short_name: str):
1209
+ super().__init__(parent, short_name)
1210
+
1211
+ self.authenticationProps = [] # type: List[SecureCommunicationAuthenticationProps]
1212
+ self.freshnessProps = [] # type: List[SecureCommunicationFreshnessProps]
1213
+
1214
+ def getAuthenticationProps(self):
1215
+ return self.authenticationProps
1216
+
1217
+ def createSecureCommunicationAuthenticationProps(self, short_name: str) -> SecureCommunicationAuthenticationProps:
1218
+ if (not self.IsElementExists(short_name)):
1219
+ props = SecureCommunicationAuthenticationProps(self, short_name)
1220
+ self.addElement(props)
1221
+ self.authenticationProps.append(props)
1222
+ return self.getElement(short_name)
1223
+
1224
+ def getFreshnessProps(self):
1225
+ return self.freshnessProps
1226
+
1227
+ def createSecureCommunicationFreshnessProps(self, short_name: str) -> SecureCommunicationFreshnessProps:
1228
+ if (not self.IsElementExists(short_name)):
1229
+ props = SecureCommunicationFreshnessProps(self, short_name)
1230
+ self.addElement(props)
1231
+ self.freshnessProps.append(props)
1232
+ return self.getElement(short_name)