armodel 1.7.5__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 (48) 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/CommonStructure/ImplementationDataTypes.py +2 -2
  5. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +4 -0
  6. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +8 -2
  7. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +9 -3
  8. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +30 -1
  9. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +19 -5
  10. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +53 -0
  11. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +2 -2
  12. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/DataPrototypes.py +41 -16
  13. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +10 -3
  14. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +26 -8
  15. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +19 -5
  16. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DoIp.py +29 -0
  17. armodel/models/M2/AUTOSARTemplates/SystemTemplate/ECUResourceMapping.py +44 -0
  18. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +165 -4
  19. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +409 -17
  20. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/ServiceInstances.py +356 -8
  21. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinTopology.py +2 -4
  22. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Multiplatform.py +76 -10
  23. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +483 -54
  24. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +45 -23
  25. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +10 -0
  26. armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +245 -130
  27. armodel/models/M2/AUTOSARTemplates/SystemTemplate/SWmapping.py +27 -0
  28. armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +633 -5
  29. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +22 -11
  30. armodel/models/M2/MSR/AsamHdo/AdminData.py +1 -2
  31. armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +3 -1
  32. armodel/models/M2/MSR/AsamHdo/SpecialData.py +35 -8
  33. armodel/models/M2/MSR/DataDictionary/RecordLayout.py +0 -3
  34. armodel/models/__init__.py +4 -0
  35. armodel/parser/abstract_arxml_parser.py +8 -5
  36. armodel/parser/arxml_parser.py +1229 -572
  37. armodel/tests/test_armodel/models/test_bsw_module_template.py +5 -3
  38. armodel/tests/test_armodel/models/test_datatype.py +1 -1
  39. armodel/tests/test_armodel/parser/test_bsw_module_descriiption.py +218 -0
  40. armodel/tests/test_armodel/parser/test_sw_components.py +22 -1
  41. armodel/writer/abstract_arxml_writer.py +7 -6
  42. armodel/writer/arxml_writer.py +1037 -187
  43. {armodel-1.7.5.dist-info → armodel-1.7.7.dist-info}/METADATA +62 -3
  44. {armodel-1.7.5.dist-info → armodel-1.7.7.dist-info}/RECORD +48 -44
  45. {armodel-1.7.5.dist-info → armodel-1.7.7.dist-info}/LICENSE +0 -0
  46. {armodel-1.7.5.dist-info → armodel-1.7.7.dist-info}/WHEEL +0 -0
  47. {armodel-1.7.5.dist-info → armodel-1.7.7.dist-info}/entry_points.txt +0 -0
  48. {armodel-1.7.5.dist-info → armodel-1.7.7.dist-info}/top_level.txt +0 -0
@@ -1,14 +1,18 @@
1
1
  from typing import Dict, List
2
2
 
3
+
3
4
  from ...M2.MSR.AsamHdo.SpecialData import Sdg
4
- from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
5
5
  from ...M2.MSR.AsamHdo import AdminData
6
6
  from ...M2.MSR.AsamHdo.BaseTypes import SwBaseType
7
- from ..MSR.Documentation.TextModel.BlockElements import DocumentationBlock
7
+ from ...M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
8
+ from ...M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
9
+ from ...M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
10
+ from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
8
11
  from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import CollectableElement, Referrable
9
12
  from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage
10
13
  from ...M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationDataType, DataTypeMap
11
14
  from ...M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
15
+ from ...M2.AUTOSARTemplates.SystemTemplate import RootSwCompositionPrototype, System
12
16
 
13
17
  class FileInfoComment(ARObject):
14
18
  def __init__(self):
@@ -33,6 +37,13 @@ class AbstractAUTOSAR(CollectableElement):
33
37
  self._appl_impl_type_maps = {}
34
38
  self._impl_appl_type_maps = {}
35
39
 
40
+ self._behavior_impl_maps = {} # type: Dict[str, str]
41
+ self._impl_behavior_maps = {} # type: Dict[str, str]
42
+
43
+ self.systems = {} # type: Dict[str, System]
44
+
45
+ self.rootSwCompositionPrototype = None # type: RootSwCompositionPrototype
46
+
36
47
  self.adminData = None # type: AdminData
37
48
  self.arPackages = {} # type: Dict[str, ARPackage]
38
49
  self.fileInfoComment = None # type: FileInfoComment
@@ -127,8 +138,36 @@ class AbstractAUTOSAR(CollectableElement):
127
138
  raise IndexError("Invalid Implementation data type <%s>" % impl_data_type)
128
139
 
129
140
  return self.find(self._impl_appl_type_maps[impl_data_type])
141
+
142
+ def getRootSwCompositionPrototype(self):
143
+ return self.rootSwCompositionPrototype
144
+
145
+ def setRootSwCompositionPrototype(self, value):
146
+ if value is not None:
147
+ self.rootSwCompositionPrototype = value
148
+ return self
130
149
 
150
+ def addImplementationBehaviorMap(self, impl: str, behavior: str) -> Implementation:
151
+ self._behavior_impl_maps[behavior] = impl
152
+ self._impl_behavior_maps[impl] = behavior
153
+
154
+ def getBehavior(self, impl_ref: str) -> InternalBehavior:
155
+ if impl_ref in self._impl_behavior_maps:
156
+ return self.find(self._impl_behavior_maps[impl_ref])
157
+ return None
158
+
159
+ def getImplementation(self, behavior_ref:str):
160
+ if behavior_ref in self._behavior_impl_maps:
161
+ return self.find(self._behavior_impl_maps[behavior_ref])
162
+ return None
163
+
164
+ def addSystem(self, system: System):
165
+ short_name = system.getShortName()
166
+ if short_name not in self.systems:
167
+ self.systems[short_name] = system
131
168
 
169
+ def getSystems(self) -> List[System]:
170
+ return list(sorted(self.systems.values(), key = lambda a: a.getShortName()))
132
171
  class AUTOSAR (AbstractAUTOSAR):
133
172
  __instance = None
134
173
 
@@ -287,17 +287,38 @@ class BswModeSenderPolicy(ARObject):
287
287
 
288
288
  def getQueueLength(self) -> ARNumerical:
289
289
  return self._queue_length
290
+
291
+ class BswBackgroundEvent(BswScheduleEvent):
292
+ def __init__(self, parent, short_name):
293
+ super().__init__(parent, short_name)
294
+
295
+ class BswOsTaskExecutionEvent(BswScheduleEvent):
296
+ def __init__(self, parent, short_name):
297
+ super().__init__(parent, short_name)
298
+
299
+ class BswExternalTriggerOccurredEvent(BswScheduleEvent):
300
+ def __init__(self, parent, short_name):
301
+ super().__init__(parent, short_name)
290
302
 
303
+ self.triggerRef = None # type: RefType
304
+
305
+ def getTriggerRef(self):
306
+ return self.triggerRef
307
+
308
+ def setTriggerRef(self, value):
309
+ if value is not None:
310
+ self.triggerRef = value
311
+ return self
291
312
 
292
313
  class BswInternalBehavior(InternalBehavior):
293
314
  def __init__(self, parent: ARObject, short_name: str):
294
315
  super().__init__(parent, short_name)
295
316
 
296
- self.entities = [] # type: List[BswModuleEntity]
297
- self.events = [] # type: List[BswEvent]
298
- self.mode_sender_policies = [] # type: List[BswModeSenderPolicy]
299
- self.included_mode_declaration_group_sets = [] # type: List[IncludedModeDeclarationGroupSet]
300
- self.included_data_type_sets = [] # type: List[IncludedDataTypeSet]
317
+ self.entities = [] # type: List[BswModuleEntity]
318
+ self.events = [] # type: List[BswEvent]
319
+ self.mode_sender_policies = [] # type: List[BswModeSenderPolicy]
320
+ self.included_mode_declaration_group_sets = [] # type: List[IncludedModeDeclarationGroupSet]
321
+ self.included_data_type_sets = [] # type: List[IncludedDataTypeSet]
301
322
 
302
323
  def addModeSenderPolicy(self, policy: BswModeSenderPolicy):
303
324
  self.mode_sender_policies.append(policy)
@@ -374,9 +395,29 @@ class BswInternalBehavior(InternalBehavior):
374
395
  self.elements[short_name] = event
375
396
  self.events.append(event)
376
397
  return self.elements[short_name]
377
-
398
+
378
399
  def getBswInternalTriggerOccurredEvents(self) -> List[BswInternalTriggerOccurredEvent]:
379
400
  return list(filter(lambda a: isinstance(a, BswInternalTriggerOccurredEvent), self.elements.values()))
401
+
402
+ def createBswExternalTriggerOccurredEvent(self, short_name: str) -> BswExternalTriggerOccurredEvent:
403
+ if (short_name not in self.elements):
404
+ event = BswExternalTriggerOccurredEvent(self, short_name)
405
+ self.elements[short_name] = event
406
+ self.events.append(event)
407
+ return self.elements[short_name]
408
+
409
+ def getBswExternalTriggerOccurredEvents(self) -> List[BswExternalTriggerOccurredEvent]:
410
+ return list(filter(lambda a: isinstance(a, BswExternalTriggerOccurredEvent), self.elements.values()))
411
+
412
+ def createBswBackgroundEvent(self, short_name: str) -> BswBackgroundEvent:
413
+ if (short_name not in self.elements):
414
+ event = BswBackgroundEvent(self, short_name)
415
+ self.elements[short_name] = event
416
+ self.events.append(event)
417
+ return self.elements[short_name]
418
+
419
+ def getBswBackgroundEvents(self) -> List[BswBackgroundEvent]:
420
+ return list(filter(lambda a: isinstance(a, BswBackgroundEvent), self.elements.values()))
380
421
 
381
422
  def getBswEvents(self) -> List[BswEvent]:
382
423
  return list(filter(lambda a: isinstance(a, BswEvent), self.elements.values()))
@@ -40,47 +40,57 @@ class DataFilter(ARObject):
40
40
  return self.dataFilterType
41
41
 
42
42
  def setDataFilterType(self, value):
43
- self.dataFilterType = value
43
+ if value is not None:
44
+ self.dataFilterType = value
44
45
  return self
45
46
 
46
47
  def getMask(self):
47
48
  return self.mask
48
49
 
49
50
  def setMask(self, value):
50
- self.mask = value
51
+ if value is not None:
52
+ self.mask = value
51
53
  return self
52
54
 
53
55
  def getMax(self):
54
56
  return self.max
55
57
 
56
58
  def setMax(self, value):
57
- self.max = value
59
+ if value is not None:
60
+ self.max = value
58
61
  return self
59
62
 
60
63
  def getMin(self):
61
64
  return self.min
62
65
 
63
66
  def setMin(self, value):
64
- self.min = value
67
+ if value is not None:
68
+ self.min = value
65
69
  return self
66
70
 
67
71
  def getOffset(self):
68
72
  return self.offset
69
73
 
70
74
  def setOffset(self, value):
71
- self.offset = value
75
+ if value is not None:
76
+ self.offset = value
72
77
  return self
73
78
 
74
79
  def getPeriod(self):
75
80
  return self.period
76
81
 
77
82
  def setPeriod(self, value):
78
- self.period = value
83
+ if value is not None:
84
+ self.period = value
79
85
  return self
80
86
 
81
87
  def getX(self):
82
88
  return self.x
83
89
 
84
90
  def setX(self, value):
85
- self.x = value
91
+ if value is not None:
92
+ self.x = value
86
93
  return self
94
+
95
+
96
+
@@ -156,9 +156,9 @@ class ImplementationDataType(AbstractImplementationDataType):
156
156
  return self._struct_type
157
157
 
158
158
  def createSymbolProps(self, short_name: str) -> SymbolProps:
159
- if short_name not in self.element:
159
+ if short_name not in self.elements:
160
160
  symbol_props = SymbolProps(self, short_name)
161
- self.elements[short_name] = symbol_props
161
+ self.addElement(symbol_props)
162
162
  self.symbolProps = symbol_props
163
163
  return self.symbolProps
164
164
 
@@ -56,6 +56,7 @@ class MemorySection(Identifiable):
56
56
 
57
57
  @alignment.setter
58
58
  def alignment(self, value: ARLiteral):
59
+ '''
59
60
  if value is not None and value.getValue() != "":
60
61
  match = False
61
62
  if value.getValue() in ("UNKNOWN", "UNSPECIFIED", "BOOLEAN", "PTR"):
@@ -69,6 +70,9 @@ class MemorySection(Identifiable):
69
70
 
70
71
  if not match:
71
72
  raise ValueError("Invalid alignment <%s> of memory section <%s>" % (value, self.getShortName()))
73
+ '''
74
+ if value is not None:
75
+ self._alignment = value
72
76
 
73
77
  def addOption(self, option: ARLiteral):
74
78
  self.options.append(option)
@@ -40,7 +40,7 @@ from .....M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucModuleConfigura
40
40
  from .....M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ClientServerInterface, ModeSwitchInterface, ParameterInterface, PortInterfaceMappingSet, SenderReceiverInterface, TriggerInterface
41
41
  from .....M2.AUTOSARTemplates.SystemTemplate import System
42
42
  from .....M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import NmConfig
43
- from .....M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpConfig, DoIpTpConfig
43
+ from .....M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpConfig, DoIpTpConfig, LinTpConfig
44
44
 
45
45
  class ReferenceBase(ARObject):
46
46
  def __init__(self):
@@ -236,7 +236,7 @@ class ARPackage(Identifiable, CollectableElement):
236
236
  return self.getElement(short_name)
237
237
 
238
238
  def createCompuMethod(self, short_name: str) -> CompuMethod:
239
- if (short_name not in self.elements):
239
+ if (not self.IsElementExists(short_name)):
240
240
  compu_method = CompuMethod(self, short_name)
241
241
  self.addElement(compu_method)
242
242
  return self.getElement(short_name)
@@ -390,6 +390,12 @@ class ARPackage(Identifiable, CollectableElement):
390
390
  element = CanTpConfig(self, short_name)
391
391
  self.addElement(element)
392
392
  return self.getElement(short_name)
393
+
394
+ def createLinTpConfig(self, short_name: str) -> LinTpConfig:
395
+ if (short_name not in self.elements):
396
+ element = LinTpConfig(self, short_name)
397
+ self.addElement(element)
398
+ return self.getElement(short_name)
393
399
 
394
400
  def createCanFrame(self, short_name: str) -> CanFrame:
395
401
  if (short_name not in self.elements):
@@ -4,7 +4,7 @@ from .....M2.MSR.Documentation.TextModel.MultilanguageData import MultilanguageL
4
4
  from .....M2.MSR.Documentation.Annotation import Annotation
5
5
  from .....M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph
6
6
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
7
- from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral
7
+ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, CategoryString
8
8
  from abc import ABCMeta
9
9
  from typing import List
10
10
 
@@ -84,6 +84,9 @@ class CollectableElement(ARObject, metaclass = ABCMeta):
84
84
  if (short_name not in self.elements):
85
85
  return None
86
86
  return self.elements[short_name]
87
+
88
+ def IsElementExists(self, short_name: str) -> bool:
89
+ return short_name in self.elements
87
90
 
88
91
  class Identifiable(MultilanguageReferrable, CollectableElement, metaclass = ABCMeta):
89
92
  def __init__(self, parent: ARObject, short_name: str):
@@ -95,7 +98,7 @@ class Identifiable(MultilanguageReferrable, CollectableElement, metaclass = ABCM
95
98
 
96
99
  self.annotations = [] # type: List[Annotation]
97
100
  self.adminData = None # type: AdminData
98
- self.category = None # type: ARLiteral
101
+ self.category = None # type: CategoryString
99
102
  self.introduction = None # type: DocumentationBlock
100
103
  self.desc = None # type: MultiLanguageOverviewParagraph
101
104
 
@@ -117,7 +120,10 @@ class Identifiable(MultilanguageReferrable, CollectableElement, metaclass = ABCM
117
120
  return self.category
118
121
 
119
122
  def setCategory(self, value):
120
- self.category = value
123
+ if isinstance(value, str):
124
+ self.category = CategoryString().setValue(value)
125
+ else:
126
+ self.category = value
121
127
  return self
122
128
 
123
129
  def getIntroduction(self):
@@ -21,7 +21,9 @@ class ARType(metaclass = ABCMeta):
21
21
  return self.value
22
22
 
23
23
  def setValue(self, val):
24
- self.value = val
24
+ if val is not None:
25
+ self.value = val
26
+ return self
25
27
 
26
28
  def getText(self) -> str:
27
29
  return str(self)
@@ -493,5 +495,32 @@ class Ip6AddressString(ARLiteral):
493
495
  * xml.xsd.pattern=[0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){7,7}|ANY
494
496
  * xml.xsd.type=string
495
497
  '''
498
+ def __init__(self):
499
+ super().__init__()
500
+
501
+ class MacAddressString(ARLiteral):
502
+ '''
503
+ This primitive specifies a Mac Address. Notation: FF:FF:FF:FF:FF:FF
504
+ Alternative notations, e.g. using dash instead of colon, or another grouping of numbers, is not allowed.
505
+
506
+ Tags:
507
+ * xml.xsd.customType=MAC-ADDRESS-STRING
508
+ * xml.xsd.pattern=([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}
509
+ * xml.xsd.type=string
510
+ '''
511
+ def __init__(self):
512
+ super().__init__()
513
+
514
+ class CategoryString(ARLiteral):
515
+ '''
516
+ This represents the pattern applicable to categories.
517
+ It is basically the same as Identifier but has a different semantics. Therefore it is modeled as a primitive
518
+ of its own.
519
+
520
+ Tags:
521
+ * xml.xsd.customType=CATEGORY-STRING
522
+ * xml.xsd.pattern=[a-zA-Z][a-zA-Z0-9_]*
523
+ * xml.xsd.type=string
524
+ '''
496
525
  def __init__(self):
497
526
  super().__init__()
@@ -3,7 +3,7 @@ from typing import List
3
3
  from ....M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps
4
4
  from ....M2.AUTOSARTemplates.CommonStructure import ValueSpecification
5
5
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
6
- from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import AREnum, ARLiteral, ARNumerical, ARPositiveInteger, Boolean
6
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import AREnum, ARLiteral, ARNumerical, ARPositiveInteger, Boolean, TimeValue
7
7
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARBoolean
8
8
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
9
9
  from ....M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
@@ -295,15 +295,29 @@ class ReceiverComSpec(RPortComSpec):
295
295
 
296
296
  def getCompositeNetworkRepresentations(self) -> List[CompositeNetworkRepresentation]:
297
297
  return self.compositeNetworkRepresentations
298
+
299
+ class ModeSwitchedAckRequest(ARObject):
300
+ def __init__(self):
301
+ super().__init__()
302
+
303
+ self.timeout = None # type: TimeValue
304
+
305
+ def getTimeout(self):
306
+ return self.timeout
307
+
308
+ def setTimeout(self, value):
309
+ if value is not None:
310
+ self.timeout = value
311
+ return self
298
312
 
299
313
  class ModeSwitchSenderComSpec(RPortComSpec):
300
314
  def __init__(self):
301
315
  super().__init__()
302
316
 
303
- self.enhancedModeApi = None # type: ARBoolean
304
- self.modeGroupRef = None # type: RefType
305
- self.modeSwitchedAck = None # type: ModeSwitchedAckRequest
306
- self.queueLength = None # type: ARPositiveInteger
317
+ self.enhancedModeApi = None # type: ARBoolean
318
+ self.modeGroupRef = None # type: RefType
319
+ self.modeSwitchedAck = None # type: ModeSwitchedAckRequest
320
+ self.queueLength = None # type: ARPositiveInteger
307
321
 
308
322
  def getEnhancedModeApi(self):
309
323
  return self.enhancedModeApi
@@ -287,23 +287,49 @@ class AtomicSwComponentType(SwComponentType, metaclass = ABCMeta):
287
287
  def __init__(self, parent: ARObject, short_name: str):
288
288
  super().__init__(parent, short_name)
289
289
 
290
+ self.internalBehavior = None # type: SwcInternalBehavior
291
+ self.symbolProps = None # type: SymbolProps
292
+
293
+ def getInternalBehavior(self):
294
+ return self.internalBehavior
295
+
290
296
  def createSwcInternalBehavior(self, short_name) -> SwcInternalBehavior:
291
297
  if (short_name not in self.elements):
292
298
  if (len(list(filter(lambda e: isinstance(e, SwcInternalBehavior), self.elements.values()))) >= 1):
293
299
  raise ValueError("The internal behavior of <%s> can not more than 1" % self.short_name)
294
300
  behavior = SwcInternalBehavior(self, short_name)
295
301
  self.elements[short_name] = behavior
302
+ self.internalBehavior = behavior
296
303
  return self.elements[short_name]
297
304
 
305
+ def getSymbolProps(self):
306
+ return self.symbolProps
307
+
308
+ def setSymbolProps(self, value):
309
+ if value is not None:
310
+ self.symbolProps = value
311
+ return self
312
+
313
+ '''
298
314
  @property
299
315
  def internal_behavior(self) -> SwcInternalBehavior:
300
316
  return next(filter(lambda e: isinstance(e, SwcInternalBehavior), self.elements.values()))
317
+ '''
301
318
 
302
319
  class EcuAbstractionSwComponentType(AtomicSwComponentType):
303
320
  def __init__(self, parent:ARObject, short_name: str):
304
321
  super().__init__(parent, short_name)
305
322
 
323
+ self.hardwareElementRefs = [] # List[RefType]
306
324
 
325
+ def getHardwareElementRefs(self):
326
+ return self.hardwareElementRefs
327
+
328
+ def addHardwareElementRefs(self, value):
329
+ if value is not None:
330
+ self.hardwareElementRefs.append(value)
331
+ return self
332
+
307
333
  class ApplicationSwComponentType(AtomicSwComponentType):
308
334
  def __init__(self, parent: ARObject, short_name: str):
309
335
  super().__init__(parent, short_name)
@@ -313,12 +339,39 @@ class ComplexDeviceDriverSwComponentType(AtomicSwComponentType):
313
339
  def __init__(self, parent: ARObject, short_name: str):
314
340
  super().__init__(parent, short_name)
315
341
 
342
+ self.hardwareElementRefs = [] # List[RefType]
343
+
344
+ def getHardwareElementRefs(self):
345
+ return self.hardwareElementRefs
316
346
 
347
+ def addHardwareElementRefs(self, value):
348
+ if value is not None:
349
+ self.hardwareElementRefs.append(value)
350
+ return self
351
+
317
352
  class NvBlockSwComponentType(AtomicSwComponentType):
318
353
  def __init__(self, parent: ARObject, short_name: str):
319
354
  super().__init__(parent, short_name)
320
355
 
356
+ self.bulkNvDataDescriptors = [] # type: List[BulkNvDataDescriptor]
357
+ self.nvBlockDescriptors = [] # type: List[NvBlockDescriptor]
358
+
359
+ def getBulkNvDataDescriptors(self):
360
+ return self.bulkNvDataDescriptors
361
+
362
+ def addBulkNvDataDescriptor(self, value):
363
+ if value is not None:
364
+ self.bulkNvDataDescriptors.append(value)
365
+ return self
366
+
367
+ def getNvBlockDescriptors(self):
368
+ return self.nvBlockDescriptors
321
369
 
370
+ def setNvBlockDescriptor(self, value):
371
+ if value is not None:
372
+ self.nvBlockDescriptors.append(value)
373
+ return self
374
+
322
375
  class SensorActuatorSwComponentType(AtomicSwComponentType):
323
376
  def __init__(self, parent: ARObject, short_name: str):
324
377
  super().__init__(parent, short_name)
@@ -52,10 +52,10 @@ class AssemblySwConnector(SwConnector):
52
52
  self.providerIRef = value
53
53
  return self
54
54
 
55
- def getRequesterIRef(self) -> PPortInCompositionInstanceRef:
55
+ def getRequesterIRef(self) -> RPortInCompositionInstanceRef:
56
56
  return self.requesterIRef
57
57
 
58
- def setRequesterIRef(self, value: PPortInCompositionInstanceRef):
58
+ def setRequesterIRef(self, value: RPortInCompositionInstanceRef):
59
59
  self.requesterIRef = value
60
60
  return self
61
61
 
@@ -1,6 +1,6 @@
1
1
  from abc import ABCMeta
2
2
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
3
- from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARNumerical, TRefType
3
+ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARNumerical, PositiveInteger, TRefType
4
4
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
5
5
  from .....M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps
6
6
  from .....M2.AUTOSARTemplates.CommonStructure import ValueSpecification
@@ -79,32 +79,57 @@ class ApplicationArrayElement(ApplicationCompositeElementDataPrototype):
79
79
  def __init__(self, parent: ARObject, short_name: str):
80
80
  super().__init__(parent, short_name)
81
81
 
82
- self.arraySizeHandling = None # type: str
83
- self.arraySizeSemantics = None # type: str
82
+ self.arraySizeHandling = None # type: ArraySizeHandlingEnum
83
+ self.arraySizeSemantics = None # type: ArraySizeSemanticsEnum
84
84
  self.indexDataTypeRef = None # type: RefType
85
- self.maxNumberOfElements = None # type: ARNumerical
85
+ self.maxNumberOfElements = None # type: PositiveInteger
86
86
 
87
- def setArraySizeHandling(self, handling: str):
88
- self.arraySizeHandling = handling
87
+ def getArraySizeHandling(self):
88
+ return self.arraySizeHandling
89
+
90
+ def setArraySizeHandling(self, value):
91
+ if value is not None:
92
+ self.arraySizeHandling = value
89
93
  return self
90
-
91
- def setArraySizeSemantics(self, semantics: str):
92
- self.arraySizeSemantics = semantics
94
+
95
+ def getArraySizeSemantics(self):
96
+ return self.arraySizeSemantics
97
+
98
+ def setArraySizeSemantics(self, value):
99
+ if value is not None:
100
+ self.arraySizeSemantics = value
93
101
  return self
94
-
95
- def setIndexDataTypeRef(self, ref: RefType):
96
- self.indexDataTypeRef = ref
102
+
103
+ def getIndexDataTypeRef(self):
104
+ return self.indexDataTypeRef
105
+
106
+ def setIndexDataTypeRef(self, value):
107
+ if value is not None:
108
+ self.indexDataTypeRef = value
97
109
  return self
98
-
99
- def setMaxNumberOfElements(self, number: ARNumerical):
100
- self.maxNumberOfElements = number
110
+
111
+ def getMaxNumberOfElements(self):
112
+ return self.maxNumberOfElements
113
+
114
+ def setMaxNumberOfElements(self, value):
115
+ if value is not None:
116
+ self.maxNumberOfElements = value
101
117
  return self
102
118
 
103
119
  class ApplicationRecordElement(ApplicationCompositeElementDataPrototype):
104
120
  def __init__(self, parent:ARObject, short_name: str):
105
121
  super().__init__(parent, short_name)
106
122
 
107
- self.isOptional = None
123
+ self.isOptional = None # type: Boolean
124
+
125
+ def getIsOptional(self):
126
+ return self.isOptional
127
+
128
+ def setIsOptional(self, value):
129
+ if value is not None:
130
+ self.isOptional = value
131
+ return self
132
+
108
133
 
109
134
  class ParameterDataPrototype(AutosarDataPrototype):
110
135
  def __init__(self, parent: ARObject, short_name: str):
@@ -3,7 +3,7 @@ from .....M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeRequest
3
3
  from .....M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AtpType
4
4
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
5
5
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement
6
- from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, RefType
6
+ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, RefType, String
7
7
  from .....M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationArrayElement, ApplicationRecordElement
8
8
  from .....M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps
9
9
  from abc import ABCMeta
@@ -50,9 +50,17 @@ class ApplicationArrayDataType(ApplicationCompositeDataType):
50
50
  def __init__(self, parent: ARObject, short_name: str):
51
51
  super().__init__(parent, short_name)
52
52
 
53
- self.dynamic_array_size_profile = None # type: ARLiteral
53
+ self.dynamicArraySizeProfile = None # type: String
54
54
  self.element = None # type: ApplicationArrayElement
55
55
 
56
+ def getDynamicArraySizeProfile(self):
57
+ return self.dynamicArraySizeProfile
58
+
59
+ def setDynamicArraySizeProfile(self, value):
60
+ if value is not None:
61
+ self.dynamicArraySizeProfile = value
62
+ return self
63
+
56
64
  def createApplicationArrayElement(self, short_name: str) -> ApplicationArrayElement:
57
65
  if (short_name not in self.elements):
58
66
  array_element = ApplicationArrayElement(self, short_name)
@@ -60,7 +68,6 @@ class ApplicationArrayDataType(ApplicationCompositeDataType):
60
68
  self.element = self.elements[short_name]
61
69
  return self.elements[short_name]
62
70
 
63
-
64
71
  class ApplicationRecordDataType(ApplicationCompositeDataType):
65
72
  def __init__(self, parent: ARObject, short_name: str):
66
73
  super().__init__(parent, short_name)