armodel 1.7.3__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.
Files changed (43) hide show
  1. armodel/cli/file_list_cli.py +70 -0
  2. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +2 -1
  3. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +1 -1
  4. armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +6 -7
  5. armodel/models/M2/AUTOSARTemplates/DiagnosticExtract/DiagnosticContribution.py +47 -0
  6. armodel/models/M2/AUTOSARTemplates/DiagnosticExtract/__init__.py +0 -0
  7. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +73 -3
  8. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +37 -1
  9. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +17 -1
  10. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AutosarVariableRef.py +31 -0
  11. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/DataElements.py +4 -3
  12. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/InstanceRefsUsage.py +17 -32
  13. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +4 -0
  14. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +7 -1
  15. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +47 -15
  16. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DiagnosticConnection.py +58 -0
  17. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetCommunication.py +244 -0
  18. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +281 -0
  19. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/NetworkEndpoint.py +328 -0
  20. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/ServiceInstances.py +522 -11
  21. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinCommunication.py +114 -6
  22. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinTopology.py +94 -0
  23. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +151 -6
  24. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +140 -12
  25. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +31 -6
  26. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/Timing.py +7 -12
  27. armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +135 -13
  28. armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +25 -1
  29. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +4 -3
  30. armodel/models/M2/MSR/AsamHdo/BaseTypes.py +0 -1
  31. armodel/models/M2/MSR/DataDictionary/RecordLayout.py +1 -1
  32. armodel/models/__init__.py +6 -0
  33. armodel/parser/abstract_arxml_parser.py +2 -0
  34. armodel/parser/arxml_parser.py +561 -62
  35. armodel/tests/test_armodel/models/test_ar_ref.py +2 -2
  36. armodel/writer/abstract_arxml_writer.py +1 -3
  37. armodel/writer/arxml_writer.py +702 -223
  38. {armodel-1.7.3.dist-info → armodel-1.7.5.dist-info}/METADATA +47 -2
  39. {armodel-1.7.3.dist-info → armodel-1.7.5.dist-info}/RECORD +43 -34
  40. {armodel-1.7.3.dist-info → armodel-1.7.5.dist-info}/entry_points.txt +1 -0
  41. {armodel-1.7.3.dist-info → armodel-1.7.5.dist-info}/LICENSE +0 -0
  42. {armodel-1.7.3.dist-info → armodel-1.7.5.dist-info}/WHEEL +0 -0
  43. {armodel-1.7.3.dist-info → armodel-1.7.5.dist-info}/top_level.txt +0 -0
@@ -1,9 +1,484 @@
1
+ from abc import ABCMeta
1
2
  from typing import List
2
- from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Boolean, PositiveInteger, RefType, TimeValue
3
- from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses import Identifiable
3
+
4
+ from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SocketConnection, SocketConnectionBundle
5
+ from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Boolean, PositiveInteger, RefType, String, TimeValue
6
+ from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
4
7
  from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
5
8
 
6
- '''
9
+
10
+ class TransportProtocolConfiguration(ARObject, metaclass = ABCMeta):
11
+ def __init__(self):
12
+ if type(self) == TransportProtocolConfiguration:
13
+ raise NotImplementedError("TransportProtocolConfiguration is an abstract class.")
14
+
15
+ super().__init__()
16
+
17
+ class GenericTp(TransportProtocolConfiguration):
18
+ def __init__(self):
19
+ super().__init__()
20
+
21
+ self.tpAddress = None # type: String
22
+ self.tpTechnology = None # type: String
23
+
24
+ def getTpAddress(self):
25
+ return self.tpAddress
26
+
27
+ def setTpAddress(self, value):
28
+ self.tpAddress = value
29
+ return self
30
+
31
+ def getTpTechnology(self):
32
+ return self.tpTechnology
33
+
34
+ def setTpTechnology(self, value):
35
+ self.tpTechnology = value
36
+ return self
37
+
38
+
39
+ class TcpUdpConfig(TransportProtocolConfiguration, metaclass = ABCMeta):
40
+ def __init__(self):
41
+ if type(self) == TcpUdpConfig:
42
+ raise NotImplementedError("TcpUdpConfig is an abstract class.")
43
+
44
+ super().__init__()
45
+
46
+ class TpPort(ARObject):
47
+ def __init__(self):
48
+ super().__init__()
49
+
50
+ self.dynamicallyAssigned = None # type: Boolean
51
+ self.portNumber = None # type: PositiveInteger
52
+
53
+ def getDynamicallyAssigned(self):
54
+ return self.dynamicallyAssigned
55
+
56
+ def setDynamicallyAssigned(self, value):
57
+ self.dynamicallyAssigned = value
58
+ return self
59
+
60
+ def getPortNumber(self):
61
+ return self.portNumber
62
+
63
+ def setPortNumber(self, value):
64
+ self.portNumber = value
65
+ return self
66
+
67
+
68
+ class UdpTp(TcpUdpConfig):
69
+ def __init__(self):
70
+ super().__init__()
71
+
72
+ self.udpTpPort = None # type: TpPort
73
+
74
+ def getUdpTpPort(self):
75
+ return self.udpTpPort
76
+
77
+ def setUdpTpPort(self, value):
78
+ self.udpTpPort = value
79
+ return self
80
+
81
+
82
+ class TcpTp(TcpUdpConfig):
83
+ def __init__(self):
84
+ super().__init__()
85
+
86
+ self.keepAliveInterval = None # type: TimeValue
87
+ self.keepAliveProbesMax = None # type: PositiveInteger
88
+ self.keepAlives = None # type: Boolean
89
+ self.keepAliveTime = None # type: TimeValue
90
+ self.naglesAlgorithm = None # type: Boolean
91
+ self.receiveWindowMin = None # type: PositiveInteger
92
+ self.tcpRetransmissionTimeout = None # type: TimeValue
93
+ self.tcpTpPort = None # type: TpPort
94
+
95
+ def getKeepAliveInterval(self):
96
+ return self.keepAliveInterval
97
+
98
+ def setKeepAliveInterval(self, value):
99
+ self.keepAliveInterval = value
100
+ return self
101
+
102
+ def getKeepAliveProbesMax(self):
103
+ return self.keepAliveProbesMax
104
+
105
+ def setKeepAliveProbesMax(self, value):
106
+ self.keepAliveProbesMax = value
107
+ return self
108
+
109
+ def getKeepAlives(self):
110
+ return self.keepAlives
111
+
112
+ def setKeepAlives(self, value):
113
+ self.keepAlives = value
114
+ return self
115
+
116
+ def getKeepAliveTime(self):
117
+ return self.keepAliveTime
118
+
119
+ def setKeepAliveTime(self, value):
120
+ self.keepAliveTime = value
121
+ return self
122
+
123
+ def getNaglesAlgorithm(self):
124
+ return self.naglesAlgorithm
125
+
126
+ def setNaglesAlgorithm(self, value):
127
+ self.naglesAlgorithm = value
128
+ return self
129
+
130
+ def getReceiveWindowMin(self):
131
+ return self.receiveWindowMin
132
+
133
+ def setReceiveWindowMin(self, value):
134
+ self.receiveWindowMin = value
135
+ return self
136
+
137
+ def getTcpRetransmissionTimeout(self):
138
+ return self.tcpRetransmissionTimeout
139
+
140
+ def setTcpRetransmissionTimeout(self, value):
141
+ self.tcpRetransmissionTimeout = value
142
+ return self
143
+
144
+ def getTcpTpPort(self):
145
+ return self.tcpTpPort
146
+
147
+ def setTcpTpPort(self, value):
148
+ self.tcpTpPort = value
149
+ return self
150
+
151
+ class AbstractServiceInstance(Identifiable, metaclass = ABCMeta):
152
+ def __init__(self, parent: ARObject, short_name: str):
153
+ if type(self) == AbstractServiceInstance:
154
+ raise NotImplementedError("AbstractServiceInstance is an abstract class.")
155
+
156
+ super().__init__(parent, short_name)
157
+
158
+ # type: List[TagWithOptionalValue]
159
+ self.capabilityRecords = []
160
+ self.majorVersion = None # type: PositiveInteger
161
+ # type: PduActivationRoutingGroup
162
+ self.methodActivationRoutingGroup = None
163
+ self.routingGroupRefs = [] # type: List[RefType]
164
+
165
+ def getCapabilityRecords(self):
166
+ return self.capabilityRecords
167
+
168
+ def addCapabilityRecord(self, value):
169
+ if value is not None:
170
+ self.capabilityRecords.append(value)
171
+ return self
172
+
173
+ def getMajorVersion(self):
174
+ return self.majorVersion
175
+
176
+ def setMajorVersion(self, value):
177
+ if value is not None:
178
+ self.majorVersion = value
179
+ return self
180
+
181
+ def getMethodActivationRoutingGroup(self):
182
+ return self.methodActivationRoutingGroup
183
+
184
+ def setMethodActivationRoutingGroup(self, value):
185
+ if value is not None:
186
+ self.methodActivationRoutingGroup = value
187
+ return self
188
+
189
+ def getRoutingGroupRefs(self):
190
+ return self.routingGroupRefs
191
+
192
+ def addRoutingGroupRef(self, value):
193
+ if value is not None:
194
+ self.routingGroupRefs.append(value)
195
+ return self
196
+
197
+ class ConsumedEventGroup(Identifiable):
198
+ def __init__(self, parent, short_name):
199
+ super().__init__(parent, short_name)
200
+
201
+ self.applicationEndpointRef = None # type: RefType
202
+ self.autoRequire = None # type: Boolean
203
+ self.eventGroupIdentifier = None # type: PositiveInteger
204
+ self.eventMulticastAddressRefs = [] # type: List[RefType]
205
+ self.pduActivationRoutingGroups = [] # type: List[PduActivationRoutingGroup]
206
+ self.priority = None # type: PositiveInteger
207
+ self.routingGroupRefs = [] # type: List[RefType]
208
+ self.sdClientConfig = None # type: SdClientConfig
209
+ self.sdClientTimerConfigRef = None # type: RefType
210
+
211
+ def getApplicationEndpointRef(self):
212
+ return self.applicationEndpointRef
213
+
214
+ def setApplicationEndpointRef(self, value):
215
+ if value is not None:
216
+ self.applicationEndpointRef = value
217
+ return self
218
+
219
+ def getAutoRequire(self):
220
+ return self.autoRequire
221
+
222
+ def setAutoRequire(self, value):
223
+ if value is not None:
224
+ self.autoRequire = value
225
+ return self
226
+
227
+ def getEventGroupIdentifier(self):
228
+ return self.eventGroupIdentifier
229
+
230
+ def setEventGroupIdentifier(self, value):
231
+ if value is not None:
232
+ self.eventGroupIdentifier = value
233
+ return self
234
+
235
+ def getEventMulticastAddressRefs(self):
236
+ return self.eventMulticastAddressRefs
237
+
238
+ def addEventMulticastAddressRef(self, value):
239
+ if value is not None:
240
+ self.eventMulticastAddressRefs.append(value)
241
+ return self
242
+
243
+ def getPduActivationRoutingGroups(self):
244
+ return self.pduActivationRoutingGroups
245
+
246
+ def setPduActivationRoutingGroups(self, value):
247
+ if value is not None:
248
+ self.pduActivationRoutingGroups = value
249
+ return self
250
+
251
+ def getPriority(self):
252
+ return self.priority
253
+
254
+ def setPriority(self, value):
255
+ if value is not None:
256
+ self.priority = value
257
+ return self
258
+
259
+ def getRoutingGroupRefs(self):
260
+ return self.routingGroupRefs
261
+
262
+ def addRoutingGroupRef(self, value):
263
+ if value is not None:
264
+ self.routingGroupRefs.append(value)
265
+ return self
266
+
267
+ def getSdClientConfig(self):
268
+ return self.sdClientConfig
269
+
270
+ def setSdClientConfig(self, value):
271
+ if value is not None:
272
+ self.sdClientConfig = value
273
+ return self
274
+
275
+ def getSdClientTimerConfigRef(self):
276
+ return self.sdClientTimerConfigRef
277
+
278
+ def setSdClientTimerConfigRef(self, value):
279
+ if value is not None:
280
+ self.sdClientTimerConfigRef = value
281
+ return self
282
+
283
+
284
+ class ConsumedServiceInstance(AbstractServiceInstance):
285
+ def __init__(self, parent: ARObject, short_name: str):
286
+ super().__init__(parent, short_name)
287
+
288
+ self.allowedServiceProviderRefs = [] # type: List[RefType]
289
+ self.autoRequire = None # type: Boolean
290
+ self.blocklistedVersions = [] # type: List[SomeipServiceVersion]
291
+ self.consumedEventGroups = [] # type: List[ConsumedEventGroup]
292
+ self.eventMulticastSubscriptionAddressRef = None # type: RefType
293
+ self.instanceIdentifier = None # type: AnyServiceInstanceId
294
+ self.localUnicastAddressRefs = [] # type: List[RefType]
295
+ self.minorVersion = None # type: AnyVersionString
296
+ self.providedServiceInstanceRef = None # type: RefType
297
+ self.remoteUnicastAddressRefs = [] # type: List[RefType]
298
+ self.sdClientConfig = None # type: SdClientConfig
299
+ self.sdClientTimerConfigRef = None # type: RefType
300
+ self.serviceIdentifier = None # type: PositiveInteger
301
+ self.versionDrivenFindBehavior = None # type: ServiceVersionAcceptanceKindEnum
302
+
303
+ def getAllowedServiceProviderRefs(self):
304
+ return self.allowedServiceProviderRefs
305
+
306
+ def setAllowedServiceProviderRefs(self, value):
307
+ if value is not None:
308
+ self.allowedServiceProviderRefs = value
309
+ return self
310
+
311
+ def getAutoRequire(self):
312
+ return self.autoRequire
313
+
314
+ def setAutoRequire(self, value):
315
+ if value is not None:
316
+ self.autoRequire = value
317
+ return self
318
+
319
+ def getBlocklistedVersions(self):
320
+ return self.blocklistedVersions
321
+
322
+ def setBlocklistedVersions(self, value):
323
+ if value is not None:
324
+ self.blocklistedVersions = value
325
+ return self
326
+
327
+ def getConsumedEventGroups(self):
328
+ return self.consumedEventGroups
329
+
330
+ def createConsumedEventGroup(self, short_name: str) -> ConsumedEventGroup:
331
+ if short_name not in self.elements:
332
+ group = ConsumedEventGroup(self, short_name)
333
+ self.addElement(group)
334
+ self.consumedEventGroups.append(group)
335
+ return self.getElement(short_name)
336
+
337
+ def getEventMulticastSubscriptionAddressRef(self):
338
+ return self.eventMulticastSubscriptionAddressRef
339
+
340
+ def setEventMulticastSubscriptionAddressRef(self, value):
341
+ if value is not None:
342
+ self.eventMulticastSubscriptionAddressRef = value
343
+ return self
344
+
345
+ def getInstanceIdentifier(self):
346
+ return self.instanceIdentifier
347
+
348
+ def setInstanceIdentifier(self, value):
349
+ if value is not None:
350
+ self.instanceIdentifier = value
351
+ return self
352
+
353
+ def getLocalUnicastAddressRefs(self):
354
+ return self.localUnicastAddressRefs
355
+
356
+ def setLocalUnicastAddressRefs(self, value):
357
+ if value is not None:
358
+ self.localUnicastAddressRefs = value
359
+ return self
360
+
361
+ def getMinorVersion(self):
362
+ return self.minorVersion
363
+
364
+ def setMinorVersion(self, value):
365
+ if value is not None:
366
+ self.minorVersion = value
367
+ return self
368
+
369
+ def getProvidedServiceInstanceRef(self):
370
+ return self.providedServiceInstanceRef
371
+
372
+ def setProvidedServiceInstanceRef(self, value):
373
+ if value is not None:
374
+ self.providedServiceInstanceRef = value
375
+ return self
376
+
377
+ def getRemoteUnicastAddressRefs(self):
378
+ return self.remoteUnicastAddressRefs
379
+
380
+ def setRemoteUnicastAddressRefs(self, value):
381
+ if value is not None:
382
+ self.remoteUnicastAddressRefs = value
383
+ return self
384
+
385
+ def getSdClientConfig(self):
386
+ return self.sdClientConfig
387
+
388
+ def setSdClientConfig(self, value):
389
+ if value is not None:
390
+ self.sdClientConfig = value
391
+ return self
392
+
393
+ def getSdClientTimerConfigRef(self):
394
+ return self.sdClientTimerConfigRef
395
+
396
+ def setSdClientTimerConfigRef(self, value):
397
+ if value is not None:
398
+ self.sdClientTimerConfigRef = value
399
+ return self
400
+
401
+ def getServiceIdentifier(self):
402
+ return self.serviceIdentifier
403
+
404
+ def setServiceIdentifier(self, value):
405
+ if value is not None:
406
+ self.serviceIdentifier = value
407
+ return self
408
+
409
+ def getVersionDrivenFindBehavior(self):
410
+ return self.versionDrivenFindBehavior
411
+
412
+ def setVersionDrivenFindBehavior(self, value):
413
+ if value is not None:
414
+ self.versionDrivenFindBehavior = value
415
+ return self
416
+
417
+
418
+ class ApplicationEndpoint(Identifiable):
419
+ def __init__(self, parent: ARObject, short_name: str):
420
+ super().__init__(parent, short_name)
421
+
422
+ self.consumedServiceInstances = [] # type: List[ConsumedServiceInstance]
423
+ self.maxNumberOfConnections = None # type: PositiveInteger
424
+ self.networkEndpointRef = None # type: RefType
425
+ self.priority = None # type: PositiveInteger
426
+ self.providedServiceInstances = [] # type: List[ProvidedServiceInstance]
427
+ self.tlsCryptoMappingRef = None # type: RefType
428
+ self.tpConfiguration = None # type: TransportProtocolConfiguration
429
+
430
+ def getConsumedServiceInstances(self):
431
+ return self.consumedServiceInstances
432
+
433
+ def createConsumedServiceInstance(self, short_name:str) -> ConsumedServiceInstance:
434
+ if short_name not in self.elements:
435
+ instance = ConsumedServiceInstance(self, short_name)
436
+ self.addElement(instance)
437
+ self.consumedServiceInstances.append(instance)
438
+ return self.getElement(short_name)
439
+
440
+ def getMaxNumberOfConnections(self):
441
+ return self.maxNumberOfConnections
442
+
443
+ def setMaxNumberOfConnections(self, value):
444
+ self.maxNumberOfConnections = value
445
+ return self
446
+
447
+ def getNetworkEndpointRef(self):
448
+ return self.networkEndpointRef
449
+
450
+ def setNetworkEndpointRef(self, value):
451
+ self.networkEndpointRef = value
452
+ return self
453
+
454
+ def getPriority(self):
455
+ return self.priority
456
+
457
+ def setPriority(self, value):
458
+ self.priority = value
459
+ return self
460
+
461
+ def getProvidedServiceInstances(self):
462
+ return self.providedServiceInstances
463
+
464
+ def addProvidedServiceInstance(self, value):
465
+ self.providedServiceInstances.append(value)
466
+ return self
467
+
468
+ def getTlsCryptoMappingRef(self):
469
+ return self.tlsCryptoMappingRef
470
+
471
+ def setTlsCryptoMappingRef(self, value):
472
+ self.tlsCryptoMappingRef = value
473
+ return self
474
+
475
+ def getTpConfiguration(self):
476
+ return self.tpConfiguration
477
+
478
+ def setTpConfiguration(self, value):
479
+ self.tpConfiguration = value
480
+ return self
481
+
7
482
  class SocketAddress(Identifiable):
8
483
  def __init__(self, parent: ARObject, short_name: str):
9
484
  super().__init__(parent, short_name)
@@ -18,7 +493,8 @@ class SocketAddress(Identifiable):
18
493
  self.pathMtuDiscoveryEnabled = None # type: Boolean
19
494
  self.pduCollectionMaxBufferSize = None # type: PositiveInteger
20
495
  self.pduCollectionTimeout = None # type: TimeValue
21
- self.staticSocketConnections = [] # type: List[StaticSocketConnection]
496
+ self.portAddress = None # type: PositiveInteger
497
+ self.staticSocketConnections = [] # type: List[StaticSocketConnection]
22
498
  self.udpChecksumHandling = None # type: UdpChecksumCalculationEnum
23
499
 
24
500
  def getAllowedIPv6ExtHeadersRef(self):
@@ -38,9 +514,10 @@ class SocketAddress(Identifiable):
38
514
  def getApplicationEndpoint(self):
39
515
  return self.applicationEndpoint
40
516
 
41
- def setApplicationEndpoint(self, value):
42
- self.applicationEndpoint = value
43
- return self
517
+ def createApplicationEndpoint(self, short_name:str) -> ApplicationEndpoint:
518
+ end_point = ApplicationEndpoint(self, short_name)
519
+ self.applicationEndpoint = end_point
520
+ return end_point
44
521
 
45
522
  def getConnectorRef(self):
46
523
  return self.connectorRef
@@ -90,6 +567,13 @@ class SocketAddress(Identifiable):
90
567
  def setPduCollectionTimeout(self, value):
91
568
  self.pduCollectionTimeout = value
92
569
  return self
570
+
571
+ def getPortAddress(self):
572
+ return self.portAddress
573
+
574
+ def setPortAddress(self, value):
575
+ self.portAddress = value
576
+ return self
93
577
 
94
578
  def getStaticSocketConnections(self):
95
579
  return self.staticSocketConnections
@@ -104,13 +588,40 @@ class SocketAddress(Identifiable):
104
588
  def setUdpChecksumHandling(self, value):
105
589
  self.udpChecksumHandling = value
106
590
  return self
107
- '''
108
591
 
109
592
  class SoAdConfig(ARObject):
110
593
  def __init__(self):
111
594
  super().__init__()
112
595
 
113
- self.connection = None # type: SocketConnection
114
- self.connectionBundle = None # type: SocketConnectionBundle
115
- self.socketAddress = None # type: SocketAddress
596
+ self.connections = [] # type: List[SocketConnection]
597
+ self.connectionBundles = [] # type: List[SocketConnectionBundle]
598
+ self.socketAddresses = [] # type: List[SocketAddress]
599
+
600
+ def getConnections(self):
601
+ return self.connections
602
+
603
+ def setConnections(self, value):
604
+ self.connections = value
605
+ return self
606
+
607
+ def getConnectionBundles(self):
608
+ return self.connectionBundles
609
+
610
+ def createSocketConnectionBundle(self, short_name:str) -> SocketConnectionBundle:
611
+ bundle = SocketConnectionBundle(self, short_name)
612
+ self.connectionBundles.append(bundle)
613
+ return bundle
614
+
615
+ def setConnectionBundles(self, value):
616
+ self.connectionBundles = value
617
+ return self
618
+
619
+ def getSocketAddresses(self):
620
+ return self.socketAddresses
621
+
622
+ def createSocketAddress(self, short_name:str) -> SocketAddress:
623
+ address = SocketAddress(self, short_name)
624
+ self.socketAddresses.append(address)
625
+ return address
626
+
116
627
 
@@ -1,14 +1,15 @@
1
1
 
2
2
  from abc import ABCMeta
3
+ from typing import List
3
4
 
5
+ from ......M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
6
+ from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
4
7
  from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
5
- from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARNumerical
8
+ from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import AREnum, ARNumerical, Integer, RefType, TimeValue
6
9
  from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral
7
10
  from ......M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import Frame, FrameTriggering
8
11
 
9
- class LinFrame(Frame):
10
- __metaclass__ = ABCMeta
11
-
12
+ class LinFrame(Frame, metaclass = ABCMeta):
12
13
  def __init__(self, parent: ARObject, short_name: str):
13
14
  if type(self) == LinFrame:
14
15
  raise NotImplementedError("LinFrame is an abstract class.")
@@ -30,12 +31,119 @@ class LinFrameTriggering(FrameTriggering):
30
31
  return self.identifier
31
32
 
32
33
  def setIdentifier(self, value):
33
- self.identifier = value
34
+ if value is not None:
35
+ self.identifier = value
34
36
  return self
35
37
 
36
38
  def getLinChecksum(self):
37
39
  return self.linChecksum
38
40
 
39
41
  def setLinChecksum(self, value):
40
- self.linChecksum = value
42
+ if value is not None:
43
+ self.linChecksum = value
44
+ return self
45
+
46
+ class ResumePosition(AREnum):
47
+ CONTINUE_AT_IT_POSITION = "continueAtItPosition"
48
+ START_FROM_BEGINNING = "startFromBeginning"
49
+
50
+ def __init__(self):
51
+ super().__init__((
52
+ ResumePosition.CONTINUE_AT_IT_POSITION,
53
+ ResumePosition.START_FROM_BEGINNING
54
+ ))
55
+
56
+ class ScheduleTableEntry(ARObject, metaclass = ABCMeta):
57
+ def __init__(self):
58
+
59
+ if type(self) == ScheduleTableEntry:
60
+ raise NotImplementedError("ScheduleTableEntry is an abstract class.")
61
+
62
+ super().__init__()
63
+
64
+ self.delay = None # type: TimeValue
65
+ self.introduction = None # type: DocumentationBlock
66
+ self.positionInTable = None # type: Integer
67
+
68
+ def getDelay(self):
69
+ return self.delay
70
+
71
+ def setDelay(self, value):
72
+ if value is not None:
73
+ self.delay = value
74
+ return self
75
+
76
+ def getIntroduction(self):
77
+ return self.introduction
78
+
79
+ def setIntroduction(self, value):
80
+ if value is not None:
81
+ self.introduction = value
82
+ return self
83
+
84
+ def getPositionInTable(self):
85
+ return self.positionInTable
86
+
87
+ def setPositionInTable(self, value):
88
+ if value is not None:
89
+ self.positionInTable = value
90
+ return self
91
+
92
+ class ApplicationEntry(ScheduleTableEntry):
93
+ def __init__(self):
94
+ super().__init__()
95
+
96
+ self.frameTriggeringRef = None # type: RefType
97
+
98
+ def getFrameTriggeringRef(self):
99
+ return self.frameTriggeringRef
100
+
101
+ def setFrameTriggeringRef(self, value):
102
+ if value is not None:
103
+ self.frameTriggeringRef = value
104
+ return self
105
+
106
+ class FreeFormatEntry(ScheduleTableEntry):
107
+ def __init__(self):
108
+ super().__init__()
109
+
110
+ class LinConfigurationEntry(ScheduleTableEntry, metaclass = ABCMeta):
111
+ def __init__(self):
112
+
113
+ if type(self) == LinConfigurationEntry:
114
+ raise NotImplementedError("LinConfigurationEntry is an abstract class.")
115
+
116
+ super().__init__()
117
+
118
+
119
+ class LinScheduleTable(Identifiable):
120
+ def __init__(self, parent, short_name):
121
+ super().__init__(parent, short_name)
122
+
123
+ self.resumePosition = None # type: ResumePosition
124
+ self.runMode = None # type: RunMode
125
+ self.tableEntries = [] # type: List[ScheduleTableEntry]
126
+
127
+ def getResumePosition(self):
128
+ return self.resumePosition
129
+
130
+ def setResumePosition(self, value):
131
+ if value is not None:
132
+ self.resumePosition = value
133
+ return self
134
+
135
+ def getRunMode(self):
136
+ return self.runMode
137
+
138
+ def setRunMode(self, value):
139
+ if value is not None:
140
+ self.runMode = value
141
+ return self
142
+
143
+ def getTableEntries(self):
144
+ return self.tableEntries
145
+
146
+ def addTableEntry(self, value):
147
+ if value is not None:
148
+ self.tableEntries.append(value)
41
149
  return self