armodel 1.7.4__py3-none-any.whl → 1.7.5__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/file_list_cli.py +70 -0
- armodel/models/M2/AUTOSARTemplates/DiagnosticExtract/DiagnosticContribution.py +47 -0
- armodel/models/M2/AUTOSARTemplates/DiagnosticExtract/__init__.py +0 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +67 -3
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +9 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DiagnosticConnection.py +58 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetCommunication.py +16 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +114 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/NetworkEndpoint.py +104 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/ServiceInstances.py +429 -7
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinCommunication.py +114 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinTopology.py +94 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +151 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +98 -13
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +13 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +135 -13
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +25 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +4 -3
- armodel/models/M2/MSR/DataDictionary/RecordLayout.py +1 -1
- armodel/models/__init__.py +3 -0
- armodel/parser/abstract_arxml_parser.py +2 -0
- armodel/parser/arxml_parser.py +353 -30
- armodel/writer/arxml_writer.py +471 -145
- {armodel-1.7.4.dist-info → armodel-1.7.5.dist-info}/METADATA +31 -1
- {armodel-1.7.4.dist-info → armodel-1.7.5.dist-info}/RECORD +29 -24
- {armodel-1.7.4.dist-info → armodel-1.7.5.dist-info}/entry_points.txt +1 -0
- {armodel-1.7.4.dist-info → armodel-1.7.5.dist-info}/LICENSE +0 -0
- {armodel-1.7.4.dist-info → armodel-1.7.5.dist-info}/WHEEL +0 -0
- {armodel-1.7.4.dist-info → armodel-1.7.5.dist-info}/top_level.txt +0 -0
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
from abc import ABCMeta
|
|
2
2
|
from typing import List
|
|
3
|
-
|
|
4
|
-
from armodel.models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import TransmissionModeDeclaration
|
|
5
|
-
|
|
6
3
|
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Identifiable, Describable
|
|
7
4
|
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
8
|
-
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical, ARPositiveInteger, RefType, ARBoolean, TimeValue
|
|
9
|
-
|
|
5
|
+
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical, ARPositiveInteger, Boolean, Integer, RefType, ARBoolean, String, TimeValue, UnlimitedInteger
|
|
6
|
+
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import TransmissionModeDeclaration
|
|
10
7
|
class FibexElement(Identifiable, metaclass = ABCMeta):
|
|
11
8
|
def __init__(self, parent: ARObject, short_name: str):
|
|
12
9
|
if type(self) == FibexElement:
|
|
@@ -500,7 +497,7 @@ class PduTriggering(Identifiable):
|
|
|
500
497
|
return self
|
|
501
498
|
|
|
502
499
|
def getISignalTriggeringRefs(self):
|
|
503
|
-
return self.iSignalTriggeringRefs
|
|
500
|
+
return sorted(self.iSignalTriggeringRefs, key = lambda i: i.getShortValue())
|
|
504
501
|
|
|
505
502
|
def addISignalTriggeringRef(self, value):
|
|
506
503
|
self.iSignalTriggeringRefs.append(value)
|
|
@@ -623,3 +620,151 @@ class ISignalTriggering(Identifiable):
|
|
|
623
620
|
def addISignalPortRef(self, value):
|
|
624
621
|
self.iSignalPortRefs.append(value)
|
|
625
622
|
return self
|
|
623
|
+
|
|
624
|
+
class MultiplexedIPdu(IPdu):
|
|
625
|
+
def __init__(self, parent, short_name):
|
|
626
|
+
super().__init__(parent, short_name)
|
|
627
|
+
|
|
628
|
+
self.dynamicPart = None # type: DynamicPart
|
|
629
|
+
self.selectorFieldByteOrder = None # type: ByteOrderEnum
|
|
630
|
+
self.selectorFieldLength = None # type: Integer
|
|
631
|
+
self.selectorFieldStartPosition = None # type: Integer
|
|
632
|
+
self.staticPart = None # type: StaticPart
|
|
633
|
+
self.triggerMode = None # type: TriggerMode
|
|
634
|
+
self.unusedBitPattern = None # type: Integer
|
|
635
|
+
|
|
636
|
+
def getDynamicPart(self):
|
|
637
|
+
return self.dynamicPart
|
|
638
|
+
|
|
639
|
+
def setDynamicPart(self, value):
|
|
640
|
+
if value is not None:
|
|
641
|
+
self.dynamicPart = value
|
|
642
|
+
return self
|
|
643
|
+
|
|
644
|
+
def getSelectorFieldByteOrder(self):
|
|
645
|
+
return self.selectorFieldByteOrder
|
|
646
|
+
|
|
647
|
+
def setSelectorFieldByteOrder(self, value):
|
|
648
|
+
if value is not None:
|
|
649
|
+
self.selectorFieldByteOrder = value
|
|
650
|
+
return self
|
|
651
|
+
|
|
652
|
+
def getSelectorFieldLength(self):
|
|
653
|
+
return self.selectorFieldLength
|
|
654
|
+
|
|
655
|
+
def setSelectorFieldLength(self, value):
|
|
656
|
+
if value is not None:
|
|
657
|
+
self.selectorFieldLength = value
|
|
658
|
+
return self
|
|
659
|
+
|
|
660
|
+
def getSelectorFieldStartPosition(self):
|
|
661
|
+
return self.selectorFieldStartPosition
|
|
662
|
+
|
|
663
|
+
def setSelectorFieldStartPosition(self, value):
|
|
664
|
+
if value is not None:
|
|
665
|
+
self.selectorFieldStartPosition = value
|
|
666
|
+
return self
|
|
667
|
+
|
|
668
|
+
def getStaticPart(self):
|
|
669
|
+
return self.staticPart
|
|
670
|
+
|
|
671
|
+
def setStaticPart(self, value):
|
|
672
|
+
if value is not None:
|
|
673
|
+
self.staticPart = value
|
|
674
|
+
return self
|
|
675
|
+
|
|
676
|
+
def getTriggerMode(self):
|
|
677
|
+
return self.triggerMode
|
|
678
|
+
|
|
679
|
+
def setTriggerMode(self, value):
|
|
680
|
+
if value is not None:
|
|
681
|
+
self.triggerMode = value
|
|
682
|
+
return self
|
|
683
|
+
|
|
684
|
+
def getUnusedBitPattern(self):
|
|
685
|
+
return self.unusedBitPattern
|
|
686
|
+
|
|
687
|
+
def setUnusedBitPattern(self, value):
|
|
688
|
+
if value is not None:
|
|
689
|
+
self.unusedBitPattern = value
|
|
690
|
+
return self
|
|
691
|
+
|
|
692
|
+
class UserDefinedIPdu(IPdu):
|
|
693
|
+
def __init__(self, parent, short_name):
|
|
694
|
+
super().__init__(parent, short_name)
|
|
695
|
+
|
|
696
|
+
self.cddType = None # type: String
|
|
697
|
+
|
|
698
|
+
def getCddType(self):
|
|
699
|
+
return self.cddType
|
|
700
|
+
|
|
701
|
+
def setCddType(self, value):
|
|
702
|
+
if value is not None:
|
|
703
|
+
self.cddType = value
|
|
704
|
+
return self
|
|
705
|
+
|
|
706
|
+
class GeneralPurposeIPdu(IPdu):
|
|
707
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
708
|
+
super().__init__(parent, short_name)
|
|
709
|
+
|
|
710
|
+
class UserDefinedPdu(Pdu):
|
|
711
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
712
|
+
super().__init__(parent, short_name)
|
|
713
|
+
|
|
714
|
+
self.cddType = None # type: String
|
|
715
|
+
|
|
716
|
+
def getCddType(self):
|
|
717
|
+
return self.cddType
|
|
718
|
+
|
|
719
|
+
def setCddType(self, value):
|
|
720
|
+
if value is not None:
|
|
721
|
+
self.cddType = value
|
|
722
|
+
return self
|
|
723
|
+
|
|
724
|
+
class GeneralPurposePdu(Pdu):
|
|
725
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
726
|
+
super().__init__(parent, short_name)
|
|
727
|
+
|
|
728
|
+
self.hasDynamicLength = None # type: Boolean
|
|
729
|
+
self.length = None # type: UnlimitedInteger
|
|
730
|
+
|
|
731
|
+
def getHasDynamicLength(self):
|
|
732
|
+
return self.hasDynamicLength
|
|
733
|
+
|
|
734
|
+
def setHasDynamicLength(self, value):
|
|
735
|
+
if value is not None:
|
|
736
|
+
self.hasDynamicLength = value
|
|
737
|
+
return self
|
|
738
|
+
|
|
739
|
+
def getLength(self):
|
|
740
|
+
return self.length
|
|
741
|
+
|
|
742
|
+
def setLength(self, value):
|
|
743
|
+
if value is not None:
|
|
744
|
+
self.length = value
|
|
745
|
+
return self
|
|
746
|
+
|
|
747
|
+
class SecureCommunicationPropsSet(Identifiable):
|
|
748
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
749
|
+
super().__init__(parent, short_name)
|
|
750
|
+
|
|
751
|
+
# type: List[SecureCommunicationAuthenticationProps]
|
|
752
|
+
self.authenticationProps = []
|
|
753
|
+
# type: List[SecureCommunicationFreshnessProps]
|
|
754
|
+
self.freshnessProps = []
|
|
755
|
+
|
|
756
|
+
def getAuthenticationProps(self):
|
|
757
|
+
return self.authenticationProps
|
|
758
|
+
|
|
759
|
+
def addAuthenticationProp(self, value):
|
|
760
|
+
if value is not None:
|
|
761
|
+
self.authenticationProps.append(value)
|
|
762
|
+
return self
|
|
763
|
+
|
|
764
|
+
def getFreshnessProps(self):
|
|
765
|
+
return self.freshnessProps
|
|
766
|
+
|
|
767
|
+
def addFreshnessProp(self, value):
|
|
768
|
+
if value is not None:
|
|
769
|
+
self.freshnessProps.append(value)
|
|
770
|
+
return self
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
from abc import ABCMeta
|
|
2
2
|
from enum import Enum
|
|
3
3
|
from typing import List
|
|
4
|
-
|
|
5
|
-
|
|
6
4
|
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
7
|
-
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, Boolean, PositiveInteger, RefType, ARLiteral, TimeValue
|
|
5
|
+
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, Boolean, PositiveInteger, PositiveUnlimitedInteger, RefType, ARLiteral, TimeValue
|
|
8
6
|
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
|
|
9
|
-
from ......M2.AUTOSARTemplates.SWComponentTemplate.Communication import HandleInvalidEnum
|
|
10
7
|
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrameTriggering
|
|
11
|
-
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering
|
|
8
|
+
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering, LinScheduleTable
|
|
12
9
|
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import FibexElement, FrameTriggering, ISignalTriggering, PduTriggering
|
|
13
10
|
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import NetworkEndpoint
|
|
14
11
|
|
|
@@ -84,6 +81,41 @@ class LinPhysicalChannel(PhysicalChannel):
|
|
|
84
81
|
def __init__(self, parent: ARObject, short_name: str):
|
|
85
82
|
super().__init__(parent, short_name)
|
|
86
83
|
|
|
84
|
+
self.busIdleTimeoutPeriod = None # type: TimeValue
|
|
85
|
+
# type: List[LinScheduleTable]
|
|
86
|
+
self.scheduleTables = []
|
|
87
|
+
|
|
88
|
+
def getBusIdleTimeoutPeriod(self):
|
|
89
|
+
return self.busIdleTimeoutPeriod
|
|
90
|
+
|
|
91
|
+
def setBusIdleTimeoutPeriod(self, value):
|
|
92
|
+
if value is not None:
|
|
93
|
+
self.busIdleTimeoutPeriod = value
|
|
94
|
+
return self
|
|
95
|
+
|
|
96
|
+
def getScheduleTables(self):
|
|
97
|
+
return self.scheduleTables
|
|
98
|
+
|
|
99
|
+
def createLinScheduleTable(self, short_name:str) -> LinScheduleTable:
|
|
100
|
+
if (short_name not in self.elements):
|
|
101
|
+
end_point = LinScheduleTable(self, short_name)
|
|
102
|
+
self.addElement(end_point)
|
|
103
|
+
self.scheduleTables.append(end_point)
|
|
104
|
+
return self.getElement(short_name)
|
|
105
|
+
|
|
106
|
+
class VlanConfig(Identifiable):
|
|
107
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
108
|
+
super().__init__(parent, short_name)
|
|
109
|
+
|
|
110
|
+
self.vlanIdentifier = None # type: PositiveInteger
|
|
111
|
+
|
|
112
|
+
def getVlanIdentifier(self):
|
|
113
|
+
return self.vlanIdentifier
|
|
114
|
+
|
|
115
|
+
def setVlanIdentifier(self, value):
|
|
116
|
+
if value is not None:
|
|
117
|
+
self.vlanIdentifier = value
|
|
118
|
+
return self
|
|
87
119
|
class EthernetPhysicalChannel(PhysicalChannel):
|
|
88
120
|
def __init__(self, parent: ARObject, short_name: str):
|
|
89
121
|
super().__init__(parent, short_name)
|
|
@@ -112,9 +144,12 @@ class EthernetPhysicalChannel(PhysicalChannel):
|
|
|
112
144
|
def getVlan(self):
|
|
113
145
|
return self.vlan
|
|
114
146
|
|
|
115
|
-
def
|
|
116
|
-
self.
|
|
117
|
-
|
|
147
|
+
def createVlanConfig(self, short_name: str) -> VlanConfig:
|
|
148
|
+
if (short_name not in self.elements):
|
|
149
|
+
config = VlanConfig(self, short_name)
|
|
150
|
+
self.vlan = config
|
|
151
|
+
self.addElement(config)
|
|
152
|
+
return self.getElement(short_name)
|
|
118
153
|
|
|
119
154
|
class CommunicationCluster(FibexElement, metaclass = ABCMeta):
|
|
120
155
|
def __init__(self, parent: ARObject, short_name: str):
|
|
@@ -176,8 +211,58 @@ class CommunicationCluster(FibexElement, metaclass = ABCMeta):
|
|
|
176
211
|
|
|
177
212
|
def setProtocolVersion(self, value):
|
|
178
213
|
self.protocolVersion = value
|
|
179
|
-
return self
|
|
214
|
+
return self
|
|
180
215
|
|
|
216
|
+
class CanClusterBusOffRecovery(ARObject):
|
|
217
|
+
def __init__(self):
|
|
218
|
+
super().__init__()
|
|
219
|
+
|
|
220
|
+
self.borCounterL1ToL2 = None # type: PositiveInteger
|
|
221
|
+
self.borTimeL1 = None # type: TimeValue
|
|
222
|
+
self.borTimeL2 = None # type: TimeValue
|
|
223
|
+
self.borTimeTxEnsured = None # type: TimeValue
|
|
224
|
+
self.mainFunctionPeriod = None # type: TimeValue
|
|
225
|
+
|
|
226
|
+
def getBorCounterL1ToL2(self):
|
|
227
|
+
return self.borCounterL1ToL2
|
|
228
|
+
|
|
229
|
+
def setBorCounterL1ToL2(self, value):
|
|
230
|
+
if value is not None:
|
|
231
|
+
self.borCounterL1ToL2 = value
|
|
232
|
+
return self
|
|
233
|
+
|
|
234
|
+
def getBorTimeL1(self):
|
|
235
|
+
return self.borTimeL1
|
|
236
|
+
|
|
237
|
+
def setBorTimeL1(self, value):
|
|
238
|
+
if value is not None:
|
|
239
|
+
self.borTimeL1 = value
|
|
240
|
+
return self
|
|
241
|
+
|
|
242
|
+
def getBorTimeL2(self):
|
|
243
|
+
return self.borTimeL2
|
|
244
|
+
|
|
245
|
+
def setBorTimeL2(self, value):
|
|
246
|
+
if value is not None:
|
|
247
|
+
self.borTimeL2 = value
|
|
248
|
+
return self
|
|
249
|
+
|
|
250
|
+
def getBorTimeTxEnsured(self):
|
|
251
|
+
return self.borTimeTxEnsured
|
|
252
|
+
|
|
253
|
+
def setBorTimeTxEnsured(self, value):
|
|
254
|
+
if value is not None:
|
|
255
|
+
self.borTimeTxEnsured = value
|
|
256
|
+
return self
|
|
257
|
+
|
|
258
|
+
def getMainFunctionPeriod(self):
|
|
259
|
+
return self.mainFunctionPeriod
|
|
260
|
+
|
|
261
|
+
def setMainFunctionPeriod(self, value):
|
|
262
|
+
if value is not None:
|
|
263
|
+
self.mainFunctionPeriod = value
|
|
264
|
+
return self
|
|
265
|
+
|
|
181
266
|
class AbstractCanCluster(CommunicationCluster, metaclass = ABCMeta):
|
|
182
267
|
def __init__(self, parent: ARObject, short_name: str):
|
|
183
268
|
if type(self) == AbstractCanCluster:
|
|
@@ -185,10 +270,10 @@ class AbstractCanCluster(CommunicationCluster, metaclass = ABCMeta):
|
|
|
185
270
|
|
|
186
271
|
super().__init__(parent, short_name)
|
|
187
272
|
|
|
188
|
-
self.busOffRecovery = None
|
|
189
|
-
self.canFdBaudrate = None
|
|
190
|
-
self.canXlBaudrate = None
|
|
191
|
-
self.speed = None
|
|
273
|
+
self.busOffRecovery = None # type: CanClusterBusOffRecovery
|
|
274
|
+
self.canFdBaudrate = None # type: PositiveUnlimitedInteger
|
|
275
|
+
self.canXlBaudrate = None # type: PositiveUnlimitedInteger
|
|
276
|
+
self.speed = None # type: PositiveUnlimitedInteger
|
|
192
277
|
|
|
193
278
|
def getBusOffRecovery(self):
|
|
194
279
|
return self.busOffRecovery
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Boolean, RefType, TimeValue
|
|
2
1
|
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCommunicationConnector, EthernetCommunicationController
|
|
3
2
|
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrameTriggering
|
|
4
3
|
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
|
|
5
4
|
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import FibexElement
|
|
6
5
|
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import CommunicationConnector, CommunicationController
|
|
6
|
+
from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinTopology import LinCommunicationConnector, LinMaster
|
|
7
7
|
from typing import List
|
|
8
8
|
|
|
9
9
|
class EcuInstance(FibexElement):
|
|
@@ -114,6 +114,12 @@ class EcuInstance(FibexElement):
|
|
|
114
114
|
controller = EthernetCommunicationController(self, short_name)
|
|
115
115
|
self.addElement(controller)
|
|
116
116
|
return self.getElement(short_name)
|
|
117
|
+
|
|
118
|
+
def createLinMaster(self, short_name: str) -> LinMaster:
|
|
119
|
+
if (short_name not in self.elements):
|
|
120
|
+
controller = LinMaster(self, short_name)
|
|
121
|
+
self.addElement(controller)
|
|
122
|
+
return self.getElement(short_name)
|
|
117
123
|
|
|
118
124
|
def getConnectors(self):
|
|
119
125
|
return list(sorted(filter(lambda a: isinstance(a, CommunicationConnector), self.elements.values()), key= lambda o:o.short_name))
|
|
@@ -129,6 +135,12 @@ class EcuInstance(FibexElement):
|
|
|
129
135
|
connector = EthernetCommunicationConnector(self, short_name)
|
|
130
136
|
self.addElement(connector)
|
|
131
137
|
return self.getElement(short_name)
|
|
138
|
+
|
|
139
|
+
def createLinCommunicationConnector(self, short_name: str) -> LinCommunicationConnector:
|
|
140
|
+
if (short_name not in self.elements):
|
|
141
|
+
connector = LinCommunicationConnector(self, short_name)
|
|
142
|
+
self.addElement(connector)
|
|
143
|
+
return self.getElement(short_name)
|
|
132
144
|
|
|
133
145
|
def getDltConfig(self):
|
|
134
146
|
return self.dltConfig
|
|
@@ -3,7 +3,7 @@ from typing import List
|
|
|
3
3
|
from ....M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import RxIdentifierRange
|
|
4
4
|
from ....M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import FibexElement
|
|
5
5
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
6
|
-
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical, RefType, ARBoolean
|
|
6
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical, Integer, PositiveInteger, RefType, ARBoolean, TimeValue
|
|
7
7
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
|
|
8
8
|
|
|
9
9
|
class NmClusterCoupling(ARObject, metaclass = ABCMeta):
|
|
@@ -210,7 +210,7 @@ class NmCluster(Identifiable, metaclass=ABCMeta):
|
|
|
210
210
|
self.communicationClusterRef = None
|
|
211
211
|
self.nmChannelId = None
|
|
212
212
|
self.nmChannelSleepMaster = None
|
|
213
|
-
self.
|
|
213
|
+
self.nmNodes = [] # type: List[NmNode]
|
|
214
214
|
self.nmNodeDetectionEnabled = None
|
|
215
215
|
self.nmNodeIdEnabled = None
|
|
216
216
|
self.nmPncParticipation = None
|
|
@@ -240,14 +240,24 @@ class NmCluster(Identifiable, metaclass=ABCMeta):
|
|
|
240
240
|
|
|
241
241
|
def createCanNmNode(self, short_name: str) -> CanNmNode:
|
|
242
242
|
if (short_name not in self.elements):
|
|
243
|
-
|
|
244
|
-
self.
|
|
245
|
-
self.
|
|
246
|
-
return self.
|
|
243
|
+
node = CanNmNode(self, short_name)
|
|
244
|
+
self.addElement(node)
|
|
245
|
+
self.nmNodes.append(node)
|
|
246
|
+
return self.getElement(short_name)
|
|
247
|
+
|
|
248
|
+
def readUdpNmNode(self, short_name: str) -> UdpNmNode:
|
|
249
|
+
if (short_name not in self.elements):
|
|
250
|
+
node = UdpNmNode(self, short_name)
|
|
251
|
+
self.addElement(node)
|
|
252
|
+
self.nmNodes.append(node)
|
|
253
|
+
return self.getElement(short_name)
|
|
247
254
|
|
|
248
255
|
def getCanNmNodes(self) -> List[CanNmNode]:
|
|
249
256
|
return list(sorted(filter(lambda a: isinstance(a, CanNmNode), self.elements.values()), key= lambda o:o.short_name))
|
|
250
257
|
|
|
258
|
+
def getUdpNmNodes(self) -> List[UdpNmNode]:
|
|
259
|
+
return list(sorted(filter(lambda a: isinstance(a, UdpNmNode), self.elements.values()), key= lambda o:o.short_name))
|
|
260
|
+
|
|
251
261
|
def getNmNodes(self) -> List[NmNode]:
|
|
252
262
|
return list(sorted(filter(lambda a: isinstance(a, NmNode), self.elements.values()), key= lambda o:o.short_name))
|
|
253
263
|
|
|
@@ -514,10 +524,7 @@ class NmEcu(Identifiable):
|
|
|
514
524
|
|
|
515
525
|
def setNmUserDataEnabled(self, value):
|
|
516
526
|
self.nmUserDataEnabled = value
|
|
517
|
-
return self
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
527
|
+
return self
|
|
521
528
|
|
|
522
529
|
class NmConfig(FibexElement):
|
|
523
530
|
def __init__(self, parent: ARObject, short_name: str):
|
|
@@ -529,12 +536,21 @@ class NmConfig(FibexElement):
|
|
|
529
536
|
def createCanNmCluster(self, short_name: str) -> CanNmCluster:
|
|
530
537
|
if (short_name not in self.elements):
|
|
531
538
|
cluster = CanNmCluster(self, short_name)
|
|
532
|
-
self.
|
|
533
|
-
return self.
|
|
539
|
+
self.addElement(cluster)
|
|
540
|
+
return self.getElement(short_name)
|
|
534
541
|
|
|
542
|
+
def createUdpNmCluster(self, short_name: str) -> UdpNmCluster:
|
|
543
|
+
if (short_name not in self.elements):
|
|
544
|
+
cluster = UdpNmCluster(self, short_name)
|
|
545
|
+
self.addElement(cluster)
|
|
546
|
+
return self.getElement(short_name)
|
|
547
|
+
|
|
535
548
|
def getCanNmClusters(self) -> List[CanNmCluster]:
|
|
536
549
|
return list(sorted(filter(lambda a: isinstance(a, CanNmCluster), self.elements.values()), key= lambda o:o.short_name))
|
|
537
550
|
|
|
551
|
+
def getUdpNmClusters(self) -> List[UdpNmCluster]:
|
|
552
|
+
return list(sorted(filter(lambda a: isinstance(a, UdpNmCluster), self.elements.values()), key= lambda o:o.short_name))
|
|
553
|
+
|
|
538
554
|
def getNmClusters(self) -> List[NmCluster]:
|
|
539
555
|
return list(sorted(filter(lambda a: isinstance(a, NmCluster), self.elements.values()), key= lambda o:o.short_name))
|
|
540
556
|
|
|
@@ -550,4 +566,110 @@ class NmConfig(FibexElement):
|
|
|
550
566
|
|
|
551
567
|
def addNmIfEcus(self, value):
|
|
552
568
|
self.nmIfEcus.append(value)
|
|
553
|
-
return self
|
|
569
|
+
return self
|
|
570
|
+
|
|
571
|
+
class UdpNmCluster(NmCluster):
|
|
572
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
573
|
+
super().__init__(parent, short_name)
|
|
574
|
+
|
|
575
|
+
self.nmCbvPosition = None # type: Integer
|
|
576
|
+
self.nmImmediateNmCycleTime = None # type: TimeValue
|
|
577
|
+
self.nmImmediateNmTransmissions = None # type: PositiveInteger
|
|
578
|
+
self.nmMessageTimeoutTime = None # type: TimeValue
|
|
579
|
+
self.nmMsgCycleTime = None # type: TimeValue
|
|
580
|
+
self.nmNetworkTimeout = None # type: TimeValue
|
|
581
|
+
self.nmNidPosition = None # type: Integer
|
|
582
|
+
self.nmRemoteSleepIndicationTime = None # type: TimeValue
|
|
583
|
+
self.nmRepeatMessageTime = None # type: TimeValue
|
|
584
|
+
self.nmWaitBusSleepTime = None # type: TimeValue
|
|
585
|
+
self.vlanRef = None # type: RefType
|
|
586
|
+
|
|
587
|
+
def getNmCbvPosition(self):
|
|
588
|
+
return self.nmCbvPosition
|
|
589
|
+
|
|
590
|
+
def setNmCbvPosition(self, value):
|
|
591
|
+
if value is not None:
|
|
592
|
+
self.nmCbvPosition = value
|
|
593
|
+
return self
|
|
594
|
+
|
|
595
|
+
def getNmImmediateNmCycleTime(self):
|
|
596
|
+
return self.nmImmediateNmCycleTime
|
|
597
|
+
|
|
598
|
+
def setNmImmediateNmCycleTime(self, value):
|
|
599
|
+
if value is not None:
|
|
600
|
+
self.nmImmediateNmCycleTime = value
|
|
601
|
+
return self
|
|
602
|
+
|
|
603
|
+
def getNmImmediateNmTransmissions(self):
|
|
604
|
+
return self.nmImmediateNmTransmissions
|
|
605
|
+
|
|
606
|
+
def setNmImmediateNmTransmissions(self, value):
|
|
607
|
+
if value is not None:
|
|
608
|
+
self.nmImmediateNmTransmissions = value
|
|
609
|
+
return self
|
|
610
|
+
|
|
611
|
+
def getNmMessageTimeoutTime(self):
|
|
612
|
+
return self.nmMessageTimeoutTime
|
|
613
|
+
|
|
614
|
+
def setNmMessageTimeoutTime(self, value):
|
|
615
|
+
if value is not None:
|
|
616
|
+
self.nmMessageTimeoutTime = value
|
|
617
|
+
return self
|
|
618
|
+
|
|
619
|
+
def getNmMsgCycleTime(self):
|
|
620
|
+
return self.nmMsgCycleTime
|
|
621
|
+
|
|
622
|
+
def setNmMsgCycleTime(self, value):
|
|
623
|
+
if value is not None:
|
|
624
|
+
self.nmMsgCycleTime = value
|
|
625
|
+
return self
|
|
626
|
+
|
|
627
|
+
def getNmNetworkTimeout(self):
|
|
628
|
+
return self.nmNetworkTimeout
|
|
629
|
+
|
|
630
|
+
def setNmNetworkTimeout(self, value):
|
|
631
|
+
if value is not None:
|
|
632
|
+
self.nmNetworkTimeout = value
|
|
633
|
+
return self
|
|
634
|
+
|
|
635
|
+
def getNmNidPosition(self):
|
|
636
|
+
return self.nmNidPosition
|
|
637
|
+
|
|
638
|
+
def setNmNidPosition(self, value):
|
|
639
|
+
if value is not None:
|
|
640
|
+
self.nmNidPosition = value
|
|
641
|
+
return self
|
|
642
|
+
|
|
643
|
+
def getNmRemoteSleepIndicationTime(self):
|
|
644
|
+
return self.nmRemoteSleepIndicationTime
|
|
645
|
+
|
|
646
|
+
def setNmRemoteSleepIndicationTime(self, value):
|
|
647
|
+
if value is not None:
|
|
648
|
+
self.nmRemoteSleepIndicationTime = value
|
|
649
|
+
return self
|
|
650
|
+
|
|
651
|
+
def getNmRepeatMessageTime(self):
|
|
652
|
+
return self.nmRepeatMessageTime
|
|
653
|
+
|
|
654
|
+
def setNmRepeatMessageTime(self, value):
|
|
655
|
+
if value is not None:
|
|
656
|
+
self.nmRepeatMessageTime = value
|
|
657
|
+
return self
|
|
658
|
+
|
|
659
|
+
def getNmWaitBusSleepTime(self):
|
|
660
|
+
return self.nmWaitBusSleepTime
|
|
661
|
+
|
|
662
|
+
def setNmWaitBusSleepTime(self, value):
|
|
663
|
+
if value is not None:
|
|
664
|
+
self.nmWaitBusSleepTime = value
|
|
665
|
+
return self
|
|
666
|
+
|
|
667
|
+
def getVlanRef(self):
|
|
668
|
+
return self.vlanRef
|
|
669
|
+
|
|
670
|
+
def setVlanRef(self, value):
|
|
671
|
+
if value is not None:
|
|
672
|
+
self.vlanRef = value
|
|
673
|
+
return self
|
|
674
|
+
|
|
675
|
+
|
|
@@ -1,6 +1,30 @@
|
|
|
1
|
+
from typing import List
|
|
1
2
|
from ....M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import FibexElement
|
|
2
3
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
3
4
|
|
|
4
5
|
class CanTpConfig(FibexElement):
|
|
5
6
|
def __init__(self, parent: ARObject, short_name: str):
|
|
6
|
-
super().__init__(parent, short_name)
|
|
7
|
+
super().__init__(parent, short_name)
|
|
8
|
+
|
|
9
|
+
class DoIpTpConfig(FibexElement):
|
|
10
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
11
|
+
super().__init__(parent, short_name)
|
|
12
|
+
|
|
13
|
+
self.doIpLogicAddresses = [] # type: List[DoIpLogicAddress]
|
|
14
|
+
self.tpConnections = [] # typeL List[DoIpTpConnection]
|
|
15
|
+
|
|
16
|
+
def getDoIpLogicAddresses(self):
|
|
17
|
+
return self.doIpLogicAddresses
|
|
18
|
+
|
|
19
|
+
def addDoIpLogicAddress(self, value):
|
|
20
|
+
if value is not None:
|
|
21
|
+
self.doIpLogicAddresses.append(value)
|
|
22
|
+
return self
|
|
23
|
+
|
|
24
|
+
def getTpConnections(self):
|
|
25
|
+
return self.tpConnections
|
|
26
|
+
|
|
27
|
+
def addTpConnection(self, value):
|
|
28
|
+
if value is not None:
|
|
29
|
+
self.tpConnections.append(value)
|
|
30
|
+
return self
|
|
@@ -277,7 +277,7 @@ class System(ARElement):
|
|
|
277
277
|
self.clientIdDefinitionSetRefs = [] # type: List[RefType]
|
|
278
278
|
self.containerIPduHeaderByteOrder = None
|
|
279
279
|
self.ecuExtractVersion = None
|
|
280
|
-
self.fibexElements = []
|
|
280
|
+
self.fibexElements = [] # type: List[RefType]
|
|
281
281
|
self.interpolationRoutineMappingSetRefs = [] # type: List[RefType]
|
|
282
282
|
self.j1939SharedAddressClusters = []
|
|
283
283
|
self.mappings = [] # type: List[SystemMapping]
|
|
@@ -310,10 +310,11 @@ class System(ARElement):
|
|
|
310
310
|
return self
|
|
311
311
|
|
|
312
312
|
def getFibexElementRefs(self):
|
|
313
|
-
return self.fibexElements
|
|
313
|
+
return sorted(self.fibexElements, key= lambda i: i.getShortValue())
|
|
314
314
|
|
|
315
315
|
def addFibexElementRef(self, value):
|
|
316
|
-
|
|
316
|
+
if value is not None:
|
|
317
|
+
self.fibexElements.append(value)
|
|
317
318
|
return self
|
|
318
319
|
|
|
319
320
|
def getInterpolationRoutineMappingSetRefs(self):
|
|
@@ -114,7 +114,7 @@ class SwRecordLayoutGroup(ARObject):
|
|
|
114
114
|
self.shortLabel = None # type: ARLiteral
|
|
115
115
|
self.swGenericAxisParamTypeRef = None # type: RefType
|
|
116
116
|
self.swRecordLayoutComponent = None # type: ARLiteral
|
|
117
|
-
self.swRecordLayoutGroupAxis = None # type:
|
|
117
|
+
self.swRecordLayoutGroupAxis = None # type: AxisIndexType
|
|
118
118
|
self.swRecordLayoutGroupContentType = None # type: SwRecordLayoutGroupContent
|
|
119
119
|
self.swRecordLayoutGroupFrom = None # type: ARLiteral
|
|
120
120
|
self.swRecordLayoutGroupIndex = None # type: ARLiteral
|
armodel/models/__init__.py
CHANGED
|
@@ -34,6 +34,7 @@ from .M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.MemorySectionUsage
|
|
|
34
34
|
from .M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import *
|
|
35
35
|
from .M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import *
|
|
36
36
|
from .M2.AUTOSARTemplates.CommonStructure.TriggerDeclaration import *
|
|
37
|
+
from .M2.AUTOSARTemplates.DiagnosticExtract.DiagnosticContribution import *
|
|
37
38
|
from .M2.AUTOSARTemplates.SWComponentTemplate import *
|
|
38
39
|
from .M2.AUTOSARTemplates.SWComponentTemplate.Communication import *
|
|
39
40
|
from .M2.AUTOSARTemplates.SWComponentTemplate.Components import *
|
|
@@ -52,6 +53,7 @@ from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall imp
|
|
|
52
53
|
from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import *
|
|
53
54
|
from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.Trigger import *
|
|
54
55
|
from .M2.AUTOSARTemplates.SystemTemplate.DataMapping import *
|
|
56
|
+
from .M2.AUTOSARTemplates.SystemTemplate.DiagnosticConnection import *
|
|
55
57
|
from .M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import *
|
|
56
58
|
from .M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import *
|
|
57
59
|
from .M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import *
|
|
@@ -59,6 +61,7 @@ from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import *
|
|
|
59
61
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import *
|
|
60
62
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import *
|
|
61
63
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import *
|
|
64
|
+
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinTopology import *
|
|
62
65
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import *
|
|
63
66
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import *
|
|
64
67
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import *
|
|
@@ -154,12 +154,14 @@ class AbstractARXMLParser:
|
|
|
154
154
|
time_value.setValue(child_element.text)
|
|
155
155
|
return time_value
|
|
156
156
|
|
|
157
|
+
'''
|
|
157
158
|
def getChildElementBooleanValue(self, short_name: str, element: ET.Element, key: str) -> Boolean:
|
|
158
159
|
literal = self.getChildElementLiteral(short_name, element, key)
|
|
159
160
|
bool_value = Boolean()
|
|
160
161
|
bool_value.timestamp = literal.timestamp
|
|
161
162
|
bool_value.value = self._convertStringToBooleanValue(literal._value)
|
|
162
163
|
return bool_value
|
|
164
|
+
'''
|
|
163
165
|
|
|
164
166
|
def getChildElementOptionalBooleanValue(self, element: ET.Element, key: str) -> Boolean:
|
|
165
167
|
literal = self.getChildElementOptionalLiteral(element, key)
|