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.
- armodel/cli/arxml_format_cli.py +14 -11
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +50 -13
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +1 -1
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +86 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +3 -4
- armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +1 -1
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +95 -13
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +14 -4
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +103 -10
- armodel/models/M2/AUTOSARTemplates/GenericStructure/LifeCycles.py +5 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +21 -8
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +24 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +1 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +173 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Multiplatform.py +1 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +6 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +237 -28
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +223 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/Timing.py +177 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +37 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +88 -16
- armodel/models/M2/MSR/AsamHdo/AdminData.py +34 -8
- armodel/models/M2/MSR/Documentation/Annotation.py +1 -1
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/ListElements.py +54 -0
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/PaginationAndView.py +9 -0
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/__init__.py +25 -0
- armodel/models/M2/MSR/Documentation/TextModel/LanguageDataModel.py +33 -5
- armodel/models/M2/MSR/Documentation/TextModel/MultilanguageData.py +15 -2
- armodel/models/M2/MSR/Documentation/__init__.py +1 -1
- armodel/models/__init__.py +15 -2
- armodel/parser/abstract_arxml_parser.py +55 -18
- armodel/parser/arxml_parser.py +344 -101
- armodel/tests/test_armodel/models/test_ar_ref.py +7 -4
- armodel/tests/test_armodel/parser/test_sw_components.py +6 -19
- armodel/tests/test_armodel/parser/test_system.py +2 -2
- armodel/writer/abstract_arxml_writer.py +17 -8
- armodel/writer/arxml_writer.py +291 -78
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/METADATA +23 -1
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/RECORD +43 -35
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/LICENSE +0 -0
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/WHEEL +0 -0
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/entry_points.txt +0 -0
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/top_level.txt +0 -0
armodel/cli/arxml_format_cli.py
CHANGED
|
@@ -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
|
|
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.
|
|
20
|
-
self.
|
|
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.
|
|
70
|
+
self.arPackages = {}
|
|
31
71
|
self.elements = {}
|
|
32
72
|
|
|
33
73
|
def getElement(self, short_name: str) -> Referrable:
|
|
34
|
-
if (short_name in self.
|
|
35
|
-
return self.
|
|
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.
|
|
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.
|
|
83
|
+
if (short_name not in self.arPackages):
|
|
44
84
|
ar_package = ARPackage(self, short_name)
|
|
45
|
-
self.
|
|
46
|
-
return self.
|
|
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.
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
|
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.
|
|
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,
|
|
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.
|
|
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.
|
|
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.
|
|
123
|
+
if short_name not in self.arPackages:
|
|
56
124
|
ar_package = ARPackage(self, short_name)
|
|
57
|
-
self.
|
|
58
|
-
return self.
|
|
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.
|
|
62
|
-
return self.
|
|
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
|
-
|
|
116
|
-
self.addElement(
|
|
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 = []
|
|
93
|
-
self.adminData = None
|
|
94
|
-
self.category = None
|
|
95
|
-
self.
|
|
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)
|
armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py
CHANGED
|
@@ -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
|
-
|
|
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
|
|
290
|
-
self.value = None
|
|
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.
|
|
296
|
-
self.
|
|
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
|