armodel 1.6.4__py3-none-any.whl → 1.7.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. armodel/cli/arxml_format_cli.py +14 -11
  2. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +50 -13
  3. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +1 -1
  4. armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +86 -0
  5. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +3 -4
  6. armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +1 -1
  7. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +95 -13
  8. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +14 -4
  9. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +103 -10
  10. armodel/models/M2/AUTOSARTemplates/GenericStructure/LifeCycles.py +5 -0
  11. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +21 -8
  12. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +24 -0
  13. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +1 -1
  14. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +173 -0
  15. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Multiplatform.py +1 -1
  16. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +6 -6
  17. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +237 -28
  18. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +223 -0
  19. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/Timing.py +177 -0
  20. armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +37 -0
  21. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +88 -16
  22. armodel/models/M2/MSR/AsamHdo/AdminData.py +34 -8
  23. armodel/models/M2/MSR/Documentation/Annotation.py +1 -1
  24. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/ListElements.py +54 -0
  25. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/PaginationAndView.py +9 -0
  26. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/__init__.py +25 -0
  27. armodel/models/M2/MSR/Documentation/TextModel/LanguageDataModel.py +33 -5
  28. armodel/models/M2/MSR/Documentation/TextModel/MultilanguageData.py +15 -2
  29. armodel/models/M2/MSR/Documentation/__init__.py +1 -1
  30. armodel/models/__init__.py +15 -2
  31. armodel/parser/abstract_arxml_parser.py +55 -18
  32. armodel/parser/arxml_parser.py +344 -101
  33. armodel/tests/test_armodel/models/test_ar_ref.py +7 -4
  34. armodel/tests/test_armodel/parser/test_sw_components.py +6 -19
  35. armodel/tests/test_armodel/parser/test_system.py +2 -2
  36. armodel/writer/abstract_arxml_writer.py +17 -8
  37. armodel/writer/arxml_writer.py +291 -78
  38. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/METADATA +23 -1
  39. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/RECORD +43 -35
  40. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/LICENSE +0 -0
  41. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/WHEEL +0 -0
  42. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/entry_points.txt +0 -0
  43. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/top_level.txt +0 -0
@@ -8,17 +8,7 @@ from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
8
8
  from ..parser.arxml_parser import ARXMLParser
9
9
  from ..writer import ARXMLWriter
10
10
 
11
- def main():
12
- version = pkg_resources.require("armodel")[0].version
13
-
14
- ap = argparse.ArgumentParser()
15
- ap.add_argument("-v", "--verbose", required= False, help= "Print debug information", action= "store_true")
16
- ap.add_argument("-w", "--warning", required= False, help= "Skip the error and report it as warning message", action= "store_true")
17
- ap.add_argument("INPUT", help = "The path of AUTOSAR ARXML file")
18
- ap.add_argument("OUTPUT", help = "The path of output ARXML file")
19
-
20
- args = ap.parse_args()
21
-
11
+ def perform_format(args):
22
12
  logger = logging.getLogger()
23
13
 
24
14
  formatter = logging.Formatter('[%(levelname)s] : %(message)s')
@@ -64,5 +54,18 @@ def main():
64
54
  logger.error(e)
65
55
  raise e
66
56
 
57
+ def main():
58
+ version = pkg_resources.require("armodel")[0].version
59
+
60
+ ap = argparse.ArgumentParser()
61
+ ap.add_argument("-v", "--verbose", required= False, help= "Print debug information", action= "store_true")
62
+ ap.add_argument("-w", "--warning", required= False, help= "Skip the error and report it as warning message", action= "store_true")
63
+ ap.add_argument("INPUT", help = "The path of AUTOSAR ARXML file")
64
+ ap.add_argument("OUTPUT", help = "The path of output ARXML file")
65
+
66
+ args = ap.parse_args()
67
+
68
+ perform_format(args)
69
+
67
70
  if __name__ == "__main__":
68
71
  main()
@@ -1,10 +1,28 @@
1
1
  from typing import Dict, List
2
+
3
+ from ...M2.MSR.AsamHdo.SpecialData import Sdg
4
+ from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
5
+ from ...M2.MSR.AsamHdo import AdminData
2
6
  from ...M2.MSR.AsamHdo.BaseTypes import SwBaseType
7
+ from ..MSR.Documentation.TextModel.BlockElements import DocumentationBlock
3
8
  from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import CollectableElement, Referrable
4
9
  from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage
5
10
  from ...M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationDataType, DataTypeMap
6
11
  from ...M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
7
12
 
13
+ class FileInfoComment(ARObject):
14
+ def __init__(self):
15
+ super().__init__()
16
+
17
+ self.sdgs = [] # type: List[Sdg]
18
+
19
+ def getSdgs(self):
20
+ return self.sdgs
21
+
22
+ def setSdgs(self, value):
23
+ self.sdgs = value
24
+ return self
25
+
8
26
  class AbstractAUTOSAR(CollectableElement):
9
27
  def __init__(self):
10
28
  super().__init__()
@@ -14,10 +32,32 @@ class AbstractAUTOSAR(CollectableElement):
14
32
  self.schema_location = ""
15
33
  self._appl_impl_type_maps = {}
16
34
  self._impl_appl_type_maps = {}
17
-
18
35
 
19
- self._ar_packages = {} # type: Dict[str, ARPackage]
20
- self.short_name_mappings = {} # type: Dict[str, str]
36
+ self.adminData = None # type: AdminData
37
+ self.arPackages = {} # type: Dict[str, ARPackage]
38
+ self.fileInfoComment = None # type: FileInfoComment
39
+ self.introduction = None # type: DocumentationBlock
40
+
41
+ def getAdminData(self):
42
+ return self.adminData
43
+
44
+ def setAdminData(self, value):
45
+ self.adminData = value
46
+ return self
47
+
48
+ def getFileInfoComment(self):
49
+ return self.fileInfoComment
50
+
51
+ def setFileInfoComment(self, value):
52
+ self.fileInfoComment = value
53
+ return self
54
+
55
+ def getIntroduction(self):
56
+ return self.introduction
57
+
58
+ def setIntroduction(self, value):
59
+ self.introduction = value
60
+ return self
21
61
 
22
62
  def reload(self):
23
63
  pass
@@ -27,23 +67,23 @@ class AbstractAUTOSAR(CollectableElement):
27
67
  return ""
28
68
 
29
69
  def clear(self):
30
- self._ar_packages = {}
70
+ self.arPackages = {}
31
71
  self.elements = {}
32
72
 
33
73
  def getElement(self, short_name: str) -> Referrable:
34
- if (short_name in self._ar_packages):
35
- return self._ar_packages[short_name]
74
+ if (short_name in self.arPackages):
75
+ return self.arPackages[short_name]
36
76
  return CollectableElement.getElement(self, short_name)
37
77
 
38
78
  def getARPackages(self) -> List[ARPackage]:
39
79
  #return list(filter(lambda e: isinstance(e, ARPackage), self.elements.values()))
40
- return list(sorted(self._ar_packages.values(), key= lambda a: a.short_name))
80
+ return list(sorted(self.arPackages.values(), key= lambda a: a.short_name))
41
81
 
42
82
  def createARPackage(self, short_name: str) -> ARPackage:
43
- if (short_name not in self._ar_packages):
83
+ if (short_name not in self.arPackages):
44
84
  ar_package = ARPackage(self, short_name)
45
- self._ar_packages[short_name] = ar_package
46
- return self._ar_packages[short_name]
85
+ self.arPackages[short_name] = ar_package
86
+ return self.arPackages[short_name]
47
87
 
48
88
  def find(self, referred_name: str) -> Referrable:
49
89
  short_name_list = referred_name.split("/")
@@ -57,9 +97,6 @@ class AbstractAUTOSAR(CollectableElement):
57
97
  # raise ValueError("The %s of reference <%s> does not exist." % (short_name, referred_name))
58
98
  return element
59
99
 
60
- def findByShortName(self, short_name: str) -> Referrable:
61
- pass
62
-
63
100
  def getDataType(self, data_type: ImplementationDataType) -> ImplementationDataType:
64
101
  if (isinstance(data_type, ImplementationDataType) or isinstance(data_type, SwBaseType)):
65
102
  if (data_type.category == ImplementationDataType.CATEGORY_TYPE_REFERENCE):
@@ -1,5 +1,5 @@
1
1
  from ....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
2
- from ....M2.AUTOSARTemplates.CommonStructure.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet
2
+ from ....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet
3
3
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
4
4
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARBoolean, ARFloat, ARNumerical
5
5
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
@@ -0,0 +1,86 @@
1
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import AREnum, PositiveInteger, UnlimitedInteger
2
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
3
+
4
+
5
+ class DataFilterTypeEnum(AREnum):
6
+
7
+ MASKED_NEW_DIFFERS_MASKED_OLD = "maskedNewDiffersMaskedOld"
8
+ MASKED_NEW_DIFFERS_X = "maskedNewDiffersX"
9
+ MASKED_NEW_EQUALS_X = "maskedNewEqualsX"
10
+ NEVER = "never"
11
+ NEW_IS_OUTSIDE = "newIsOutside"
12
+ NEW_IS_WITHIN = "newIsWithin"
13
+ ONE_EVERY_N = "oneEveryN"
14
+
15
+ def __init__(self):
16
+ super().__init__((
17
+ DataFilterTypeEnum.MASKED_NEW_DIFFERS_MASKED_OLD,
18
+ DataFilterTypeEnum.MASKED_NEW_DIFFERS_X,
19
+ DataFilterTypeEnum.MASKED_NEW_EQUALS_X,
20
+ DataFilterTypeEnum.NEVER,
21
+ DataFilterTypeEnum.NEW_IS_OUTSIDE,
22
+ DataFilterTypeEnum.NEW_IS_WITHIN,
23
+ DataFilterTypeEnum.ONE_EVERY_N
24
+ ))
25
+
26
+
27
+ class DataFilter(ARObject):
28
+ def __init__(self):
29
+ super().__init__()
30
+
31
+ self.dataFilterType = None # type: DataFilterTypeEnum
32
+ self.mask = None # type: UnlimitedInteger
33
+ self.max = None # type: UnlimitedInteger
34
+ self.min = None # type: UnlimitedInteger
35
+ self.offset = None # type: PositiveInteger
36
+ self.period = None # type: PositiveInteger
37
+ self.x = None # type: UnlimitedInteger
38
+
39
+ def getDataFilterType(self):
40
+ return self.dataFilterType
41
+
42
+ def setDataFilterType(self, value):
43
+ self.dataFilterType = value
44
+ return self
45
+
46
+ def getMask(self):
47
+ return self.mask
48
+
49
+ def setMask(self, value):
50
+ self.mask = value
51
+ return self
52
+
53
+ def getMax(self):
54
+ return self.max
55
+
56
+ def setMax(self, value):
57
+ self.max = value
58
+ return self
59
+
60
+ def getMin(self):
61
+ return self.min
62
+
63
+ def setMin(self, value):
64
+ self.min = value
65
+ return self
66
+
67
+ def getOffset(self):
68
+ return self.offset
69
+
70
+ def setOffset(self, value):
71
+ self.offset = value
72
+ return self
73
+
74
+ def getPeriod(self):
75
+ return self.period
76
+
77
+ def setPeriod(self, value):
78
+ self.period = value
79
+ return self
80
+
81
+ def getX(self):
82
+ return self.x
83
+
84
+ def setX(self, value):
85
+ self.x = value
86
+ return self
@@ -7,10 +7,9 @@ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTy
7
7
  from ....M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ParameterDataPrototype
8
8
 
9
9
  class ReentrancyLevelEnum(Enum):
10
- multicoreReentrant = "multicoreReentrant"
11
- nonReentrant = "nonReentrant"
12
- singleCoreReentrant = "singleCoreReentrant"
13
-
10
+ ENUM_MULTICORE_REENTRANT = "multicoreReentrant"
11
+ ENUM_NON_REENTRANT = "nonReentrant"
12
+ ENUM_SINGLE_CORE_REENTRANT = "singleCoreReentrant"
14
13
 
15
14
  class ExclusiveArea(Identifiable):
16
15
  def __init__(self, parent: ARObject, short_name: str):
@@ -1,6 +1,6 @@
1
1
  from abc import ABCMeta
2
2
  from typing import List
3
- from ...M2.MSR.Documentation.BlockElements import DocumentationBlock
3
+ from ..MSR.Documentation.TextModel.BlockElements import DocumentationBlock
4
4
  from ...M2.MSR.Documentation.Annotation import Annotation
5
5
  from ...M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyInstanceRef
6
6
  from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
@@ -1,4 +1,9 @@
1
1
  from typing import Dict, List
2
+
3
+
4
+
5
+ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Boolean, Identifier, RefType, ReferrableSubtypesEnum
6
+ from .....M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
2
7
  from .....M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming
3
8
  from .....M2.AUTOSARTemplates.SWComponentTemplate.Components import CompositionSwComponentType, ServiceSwComponentType, SwComponentType, ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, EcuAbstractionSwComponentType, SensorActuatorSwComponentType
4
9
  from .....M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import GenericEthernetFrame
@@ -9,20 +14,20 @@ from .....M2.MSR.AsamHdo.ComputationMethod import CompuMethod
9
14
  from .....M2.MSR.DataDictionary.AuxillaryObjects import SwAddrMethod
10
15
  from .....M2.MSR.DataDictionary.RecordLayout import SwRecordLayout
11
16
  from .....M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
17
+ from .....M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
12
18
  from .....M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
13
19
  from .....M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
14
20
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
15
- from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import CollectableElement
16
- from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable, Referrable
21
+ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import CollectableElement, Identifiable, Referrable
22
+ from .....M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfoSet
17
23
  from .....M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType, ApplicationDataType, ApplicationPrimitiveDataType, ApplicationRecordDataType
18
- from .....M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
19
24
  from .....M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroup
20
25
  from .....M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import DataTypeMappingSet
21
26
  from .....M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet
22
27
  from .....M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrame
23
28
  from .....M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway
24
29
  from .....M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import DcmIPdu, ISignal, ISignalGroup, ISignalIPdu, ISignalIPduGroup, NPdu, NmPdu, SecuredIPdu, SystemSignal, SystemSignalGroup
25
- from .....M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import CanCluster, EcuInstance, LinCluster
30
+ from .....M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import CanCluster, LinCluster
26
31
  from .....M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinUnconditionalFrame
27
32
  from .....M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping
28
33
  from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import SwcImplementation
@@ -34,15 +39,78 @@ from .....M2.AUTOSARTemplates.SystemTemplate import System
34
39
  from .....M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import NmConfig
35
40
  from .....M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpConfig
36
41
 
42
+ class ReferenceBase(ARObject):
43
+ def __init__(self):
44
+ super().__init__()
45
+
46
+ self.globalElements = [] # type: List[ReferrableSubtypesEnum]
47
+ self.globalInPackageRefs = [] # type: List[RefType]
48
+ self.isDefault = None # type: Boolean
49
+ self.isGlobal = None # type: Boolean
50
+ self.BaseIsThisPackage = None # type: Boolean
51
+ self.packageRef = None # type: List[RefType]
52
+ self.shortLabel = None # type: Identifier
53
+
54
+ def getGlobalElements(self):
55
+ return self.globalElements
56
+
57
+ def addGlobalElement(self, value):
58
+ self.globalElements.append(value)
59
+ return self
60
+
61
+ def getGlobalInPackageRefs(self):
62
+ return self.globalInPackageRefs
63
+
64
+ def addGlobalInPackageRef(self, value):
65
+ self.globalInPackageRefs.append(value)
66
+ return self
67
+
68
+ def getIsDefault(self):
69
+ return self.isDefault
70
+
71
+ def setIsDefault(self, value):
72
+ self.isDefault = value
73
+ return self
74
+
75
+ def getIsGlobal(self):
76
+ return self.isGlobal
77
+
78
+ def setIsGlobal(self, value):
79
+ self.isGlobal = value
80
+ return self
81
+
82
+ def getBaseIsThisPackage(self):
83
+ return self.BaseIsThisPackage
84
+
85
+ def setBaseIsThisPackage(self, value):
86
+ self.BaseIsThisPackage = value
87
+ return self
88
+
89
+ def getPackageRef(self):
90
+ return self.packageRef
91
+
92
+ def setPackageRef(self, value):
93
+ self.packageRef = value
94
+ return self
95
+
96
+ def getShortLabel(self):
97
+ return self.shortLabel
98
+
99
+ def setShortLabel(self, value):
100
+ self.shortLabel = value
101
+ return self
102
+
103
+
37
104
  class ARPackage(Identifiable, CollectableElement):
38
105
  def __init__(self, parent: ARObject, short_name: str):
39
106
  Identifiable.__init__(self, parent, short_name)
40
107
  CollectableElement.__init__(self)
41
108
 
42
- self._ar_packages = {} # type: Dict[str, ARPackage]
109
+ self.arPackages = {} # type: Dict[str, ARPackage]
110
+ self.referenceBases = [] # type: List[ReferenceBase]
43
111
 
44
112
  def getARPackages(self): # type: (...) -> List[ARPackage]
45
- return list(sorted(self._ar_packages.values(), key= lambda a: a.short_name))
113
+ return list(sorted(self.arPackages.values(), key= lambda a: a.short_name))
46
114
  #return list(filter(lambda e: isinstance(e, ARPackage), self.elements.values()))
47
115
 
48
116
  def createARPackage(self, short_name: str):
@@ -52,14 +120,14 @@ class ARPackage(Identifiable, CollectableElement):
52
120
  self.elements[short_name] = ar_package
53
121
  return self.elements[short_name]
54
122
  '''
55
- if short_name not in self._ar_packages:
123
+ if short_name not in self.arPackages:
56
124
  ar_package = ARPackage(self, short_name)
57
- self._ar_packages[short_name] = ar_package
58
- return self._ar_packages[short_name]
125
+ self.arPackages[short_name] = ar_package
126
+ return self.arPackages[short_name]
59
127
 
60
128
  def getElement(self, short_name: str) -> Referrable:
61
- if (short_name in self._ar_packages):
62
- return self._ar_packages[short_name]
129
+ if (short_name in self.arPackages):
130
+ return self.arPackages[short_name]
63
131
  return CollectableElement.getElement(self, short_name)
64
132
 
65
133
  def createEcuAbstractionSwComponentType(self, short_name: str) -> EcuAbstractionSwComponentType:
@@ -112,8 +180,14 @@ class ARPackage(Identifiable, CollectableElement):
112
180
 
113
181
  def createGenericEthernetFrame(self, short_name: str) -> GenericEthernetFrame:
114
182
  if (short_name not in self.elements):
115
- sr_interface = GenericEthernetFrame(self, short_name)
116
- self.addElement(sr_interface)
183
+ frame = GenericEthernetFrame(self, short_name)
184
+ self.addElement(frame)
185
+ return self.getElement(short_name)
186
+
187
+ def createLifeCycleInfoSet(self, short_name: str) -> LifeCycleInfoSet:
188
+ if (short_name not in self.elements):
189
+ set = LifeCycleInfoSet(self, short_name)
190
+ self.addElement(set)
117
191
  return self.getElement(short_name)
118
192
 
119
193
  def createClientServerInterface(self, short_name: str) -> ClientServerInterface:
@@ -538,3 +612,11 @@ class ARPackage(Identifiable, CollectableElement):
538
612
 
539
613
  def getSystems(self) -> List[System]:
540
614
  return list(sorted(filter(lambda a : isinstance(a, System), self.elements.values()), key = lambda a: a.short_name))
615
+
616
+ def getReferenceBases(self):
617
+ return self.referenceBases
618
+
619
+ def addReferenceBase(self, value):
620
+ self.referenceBases.append(value)
621
+ return self
622
+
@@ -1,3 +1,4 @@
1
+ from ....MSR.Documentation.TextModel.BlockElements import DocumentationBlock
1
2
  from .....M2.MSR.AsamHdo.AdminData import AdminData
2
3
  from .....M2.MSR.Documentation.TextModel.MultilanguageData import MultilanguageLongName
3
4
  from .....M2.MSR.Documentation.Annotation import Annotation
@@ -89,10 +90,11 @@ class Identifiable(MultilanguageReferrable, CollectableElement, metaclass = ABCM
89
90
  MultilanguageReferrable.__init__(self, parent, short_name)
90
91
  CollectableElement.__init__(self)
91
92
 
92
- self.annotations = [] # type: List[Annotation]
93
- self.adminData = None # type: AdminData
94
- self.category = None # type: ARLiteral
95
- self.desc = None # type: MultiLanguageOverviewParagraph
93
+ self.annotations = [] # type: List[Annotation]
94
+ self.adminData = None # type: AdminData
95
+ self.category = None # type: ARLiteral
96
+ self.introduction = None # type: DocumentationBlock
97
+ self.desc = None # type: MultiLanguageOverviewParagraph
96
98
 
97
99
  def getAdminData(self):
98
100
  return self.adminData
@@ -114,6 +116,14 @@ class Identifiable(MultilanguageReferrable, CollectableElement, metaclass = ABCM
114
116
  def setCategory(self, value):
115
117
  self.category = value
116
118
  return self
119
+
120
+ def getIntroduction(self):
121
+ return self.introduction
122
+
123
+ def setIntroduction(self, value):
124
+ self.introduction = value
125
+ return self
126
+
117
127
 
118
128
  def addAnnotation(self, annotation: Annotation):
119
129
  self.annotations.append(annotation)
@@ -1,5 +1,6 @@
1
1
  from abc import ABCMeta
2
2
  import re
3
+ from typing import List
3
4
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
4
5
 
5
6
  class ARType(metaclass = ABCMeta):
@@ -101,6 +102,16 @@ class ARFloat(ARNumerical):
101
102
  else:
102
103
  return str(self._value)
103
104
 
105
+ class Float(ARFloat):
106
+ '''
107
+ An instance of Float is an element from the set of real numbers.
108
+ Tags:
109
+ * xml.xsd.customType=FLOAT
110
+ * xml.xsd.type=double
111
+ '''
112
+ def __init__(self):
113
+ super().__init__()
114
+
104
115
  class TimeValue(ARFloat):
105
116
  '''
106
117
  This primitive type is taken for expressing time values. The numerical value is supposed to be interpreted
@@ -137,11 +148,31 @@ class ARLiteral(ARType):
137
148
  def upper(self) -> str:
138
149
  return self.value.upper()
139
150
 
151
+ class AREnum(ARLiteral):
152
+ def __init__(self, enum_values: List[str]):
153
+ super().__init__()
154
+
155
+ self.enumValues = enum_values # List[str]
156
+
157
+ def getEnumValues(self):
158
+ return self.enumValues
159
+
160
+ def setEnumValues(self, values: List[str]):
161
+ self.enumValues = values
162
+ return self
163
+
164
+ def validateEnumValue(self, value: str):
165
+ if value in self.enumValues:
166
+ return True
167
+ return False
140
168
 
141
169
  class String(ARLiteral):
142
-
143
- pass
170
+ def __init__(self):
171
+ super().__init__()
144
172
 
173
+ class ReferrableSubtypesEnum(ARLiteral):
174
+ def __init__(self):
175
+ super().__init__()
145
176
 
146
177
  class ARPositiveInteger(ARNumerical):
147
178
  def __init__(self) -> None:
@@ -177,9 +208,9 @@ class ARBoolean(ARType):
177
208
 
178
209
  def _convertStringToBoolean(self, value: str) -> bool:
179
210
  value = value.lower()
180
- if value == "true":
211
+ if value == "true" or value == "1":
181
212
  return True
182
- elif value == "false":
213
+ elif value == "false" or value == "0":
183
214
  return False
184
215
  else:
185
216
  return self._convertNumberToBoolean(int(value))
@@ -227,7 +258,7 @@ class NameToken(ARLiteral):
227
258
  super().__init__()
228
259
 
229
260
  class PositiveInteger(ARPositiveInteger):
230
- '''
261
+ r'''\n
231
262
  This is a positive integer which can be denoted in decimal, binary, octal and hexadecimal. The value is
232
263
  between 0 and 4294967295.
233
264
 
@@ -235,12 +266,23 @@ class PositiveInteger(ARPositiveInteger):
235
266
  * xml.xsd.customType=POSITIVE-INTEGER
236
267
  * xml.xsd.pattern=0|[\+]?[1-9][0-9]*|0[xX][0-9a-fA-F]+|0[bB][0-1]+|0[0-7]+
237
268
  * xml.xsd.type=string
269
+ \n
238
270
  '''
239
271
  def __init__(self):
240
272
  super().__init__()
241
273
 
274
+ class PositiveUnlimitedInteger(ARPositiveInteger):
275
+ r'''
276
+ This is a positive unlimited integer which can be denoted in decimal, binary, octal and hexadecimal.
277
+
278
+ Tags:
279
+ * xml.xsd.customType=POSITIVE-UNLIMITED-INTEGER
280
+ * xml.xsd.pattern=0|[\+]?[1-9][0-9]*|0[xX][0-9a-fA-F]+|0[bB][0-1]+|0[0-7]+
281
+ * xml.xsd.type=string
282
+ '''
283
+
242
284
  class Integer(ARNumerical):
243
- '''
285
+ r'''
244
286
  An instance of Integer is an element in the set of integer numbers ( ..., -2, -1, 0, 1, 2, ...).
245
287
  The value can be expressed in decimal, octal, hexadecimal and binary representation. Negative numbers
246
288
  can only be expressed in decimal notation
@@ -254,6 +296,21 @@ class Integer(ARNumerical):
254
296
  def __init__(self):
255
297
  super().__init__()
256
298
 
299
+ class UnlimitedInteger(Integer):
300
+ r'''
301
+ An instance of UnlimitedInteger is an element in the set of integer numbers ( ..., -2, -1, 0, 1, 2, ...).
302
+ The range is limited by constraint 2534.
303
+ The value can be expressed in decimal, octal, hexadecimal and binary representation. Negative numbers
304
+ can only be expressed in decimal notation.
305
+
306
+ Tags:
307
+ * xml.xsd.customType=UNLIMITED-INTEGER
308
+ * xml.xsd.pattern=0|[\+\-]?[1-9][0-9]*|0[xX][0-9a-fA-F]+|0[bB][0-1]+|0[0-7]+
309
+ * xml.xsd.type=string
310
+ '''
311
+ def __init__(self):
312
+ super().__init__()
313
+
257
314
  class Boolean(ARBoolean):
258
315
  '''
259
316
  A Boolean value denotes a logical condition that is either 'true' or 'false'. It can be one of "0", "1", "true",
@@ -282,18 +339,54 @@ class Identifier(ARLiteral):
282
339
  '''
283
340
  def __init__(self):
284
341
  super().__init__()
342
+
343
+ class RevisionLabelString(ARLiteral):
344
+ '''
345
+ This primitive represents an internal AUTOSAR revision label which identifies an engineering object. It
346
+ represents a pattern which
347
+ * supports three integers representing from left to right MajorVersion, MinorVersion, PatchVersion.
348
+ * may add an application specific suffix separated by one of ".", "_", ";".
349
+ Legal patterns are for example:
350
+ * 4.0.0
351
+ * 4.0.0.1234565
352
+ * 4.0.0_vendor specific;13
353
+ * 4.0.0;12
354
+ '''
355
+
356
+
285
357
  class Limit(ARObject):
286
358
  def __init__(self):
287
359
  super().__init__()
288
360
 
289
- self.intervalType = None # type: str
290
- self.value = None # type: str
361
+ self.intervalType = None # type: str
362
+ self.value = None # type: str
363
+
364
+ def getIntervalType(self):
365
+ return self.intervalType
291
366
 
367
+ def setIntervalType(self, value):
368
+ self.intervalType = value
369
+ return self
370
+
371
+ def getValue(self):
372
+ return self.value
373
+
374
+ def setValue(self, value):
375
+ self.value = value
376
+ return self
292
377
 
293
378
  class RefType(ARObject):
294
379
  def __init__(self):
295
- self.dest = ""
296
- self.value = ""
380
+ self.base = None # type: str
381
+ self.dest = None # type: str
382
+ self.value = None # type: str
383
+
384
+ def getBase(self):
385
+ return self.base
386
+
387
+ def setBase(self, value):
388
+ self.base = value
389
+ return self
297
390
 
298
391
  def getDest(self):
299
392
  return self.dest
@@ -0,0 +1,5 @@
1
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement
2
+
3
+ class LifeCycleInfoSet(ARElement):
4
+ def __init__(self, parent, short_name):
5
+ super().__init__(parent, short_name)