py-eb-model 1.0.0__py3-none-any.whl → 1.1.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. eb_model/__init__.py +2 -1
  2. eb_model/cli/os_xdm_2_xls_cli.py +21 -12
  3. eb_model/cli/pref_system_importer_cli.py +94 -0
  4. py_eb_model/cli/os_xdm_2_xls_cli.py → eb_model/cli/rte_xdm_2_xls_cli.py +18 -9
  5. eb_model/models/__init__.py +2 -0
  6. eb_model/models/abstract.py +86 -13
  7. eb_model/models/eb_doc.py +55 -27
  8. eb_model/models/eclipse_project.py +8 -0
  9. eb_model/models/importer_xdm.py +115 -0
  10. eb_model/models/os_xdm.py +898 -99
  11. eb_model/models/rte_xdm.py +604 -0
  12. eb_model/parser/__init__.py +3 -0
  13. eb_model/parser/eb_parser.py +92 -39
  14. eb_model/parser/eb_parser_factory.py +29 -0
  15. eb_model/parser/os_xdm_parser.py +171 -28
  16. eb_model/parser/pref_xdm_parser.py +36 -0
  17. eb_model/parser/rte_xdm_parser.py +95 -0
  18. eb_model/reporter/excel_reporter/abstract.py +11 -11
  19. eb_model/reporter/excel_reporter/os_xdm.py +109 -12
  20. eb_model/reporter/excel_reporter/rte_xdm.py +87 -0
  21. eb_model/tests/models/test_eb_model.py +19 -1
  22. eb_model/tests/models/test_importer_xdm.py +61 -0
  23. eb_model/writer/__init__.py +2 -0
  24. eb_model/writer/project_writer.py +71 -0
  25. eb_model/writer/text_writer.py +28 -0
  26. py_eb_model-1.1.4.dist-info/METADATA +200 -0
  27. py_eb_model-1.1.4.dist-info/RECORD +38 -0
  28. py_eb_model-1.1.4.dist-info/entry_points.txt +5 -0
  29. py_eb_model/__init__.py +0 -3
  30. py_eb_model/cli/__init__.py +0 -0
  31. py_eb_model/models/__init__.py +0 -3
  32. py_eb_model/models/abstract.py +0 -66
  33. py_eb_model/models/eb_doc.py +0 -52
  34. py_eb_model/models/os_xdm.py +0 -220
  35. py_eb_model/parser/__init__.py +0 -1
  36. py_eb_model/parser/eb_parser.py +0 -147
  37. py_eb_model/parser/os_xdm_parser.py +0 -43
  38. py_eb_model/reporter/__init__.py +0 -1
  39. py_eb_model/reporter/excel_reporter/__init__.py +0 -0
  40. py_eb_model/reporter/excel_reporter/abstract.py +0 -43
  41. py_eb_model/reporter/excel_reporter/os_xdm.py +0 -44
  42. py_eb_model/reporter/markdown.py +0 -40
  43. py_eb_model-1.0.0.dist-info/METADATA +0 -16
  44. py_eb_model-1.0.0.dist-info/RECORD +0 -40
  45. py_eb_model-1.0.0.dist-info/entry_points.txt +0 -3
  46. {py_eb_model-1.0.0.dist-info → py_eb_model-1.1.4.dist-info}/LICENSE +0 -0
  47. {py_eb_model-1.0.0.dist-info → py_eb_model-1.1.4.dist-info}/WHEEL +0 -0
  48. {py_eb_model-1.0.0.dist-info → py_eb_model-1.1.4.dist-info}/top_level.txt +0 -0
eb_model/models/os_xdm.py CHANGED
@@ -1,220 +1,1019 @@
1
- from typing import List
1
+ from typing import Dict, List # noqa F401
2
+ import logging
3
+ from ..models.abstract import EcucContainer, EcucObject, EcucRefType, Module
2
4
 
3
- from ..models.abstract import EcucObject
4
5
 
5
- class OsApplication:
6
- def __init__(self) -> None:
7
- pass
6
+ class OsAlarmAction(EcucContainer):
7
+ def __init__(self, parent, name) -> None:
8
+ super().__init__(parent, name)
8
9
 
9
- class OsCounter:
10
- def __init__(self) -> None:
11
- pass
12
10
 
13
- class OsResource:
11
+ class OsAlarmAutostart(EcucContainer):
12
+ def __init__(self, parent, name) -> None:
13
+ super().__init__(parent, name)
14
+
15
+ self.osAlarmAlarmTime = None
16
+ self.osAlarmAutostartType = None
17
+ self.osAlarmCycleTime = None
18
+ self.osAlarmAppModeRefs = []
19
+
20
+ def getOsAlarmAlarmTime(self):
21
+ return self.osAlarmAlarmTime
22
+
23
+ def setOsAlarmAlarmTime(self, value):
24
+ self.osAlarmAlarmTime = value
25
+
26
+ def getOsAlarmAutostartType(self):
27
+ return self.osAlarmAutostartType
28
+
29
+ def setOsAlarmAutostartType(self, value):
30
+ self.osAlarmAutostartType = value
31
+
32
+ def getOsAlarmCycleTime(self):
33
+ return self.osAlarmCycleTime
34
+
35
+ def setOsAlarmCycleTime(self, value):
36
+ self.osAlarmCycleTime = value
37
+
38
+ def getOsAlarmAppModeRefs(self) -> List[EcucRefType]:
39
+ return self.osAlarmAppModeRefs
40
+
41
+ def addOsAlarmAppModeRef(self, ref: EcucRefType):
42
+ self.osAlarmAppModeRefs.append(ref)
43
+
44
+
45
+ class OsAlarmActivateTask(OsAlarmAction):
46
+ def __init__(self, parent, name) -> None:
47
+ super().__init__(parent, name)
48
+
49
+ self.osAlarmActivateTaskRef = None
50
+
51
+ def getOsAlarmActivateTaskRef(self) -> EcucRefType:
52
+ return self.osAlarmActivateTaskRef
53
+
54
+ def setOsAlarmActivateTaskRef(self, value: EcucRefType):
55
+ self.osAlarmActivateTaskRef = value
56
+
57
+
58
+ class OsAlarmCallback(OsAlarmAction):
59
+ def __init__(self, parent, name) -> None:
60
+ super().__init__(parent, name)
61
+
62
+ self.osAlarmCallbackName = None
63
+ self.osMemoryMappingCodeLocationRef = None
64
+
65
+ def getOsAlarmCallbackName(self):
66
+ return self.osAlarmCallbackName
67
+
68
+ def setOsAlarmCallbackName(self, value):
69
+ self.osAlarmCallbackName = value
70
+
71
+ def getOsMemoryMappingCodeLocationRef(self):
72
+ return self.osMemoryMappingCodeLocationRef
73
+
74
+ def setOsMemoryMappingCodeLocationRef(self, value):
75
+ self.osMemoryMappingCodeLocationRef = value
76
+
77
+
78
+ class OsAlarmIncrementCounter(OsAlarmAction):
79
+ def __init__(self, parent, name) -> None:
80
+ super().__init__(parent, name)
81
+
82
+ self.osAlarmIncrementCounterRef = None
83
+
84
+ def getOsAlarmIncrementCounterRef(self):
85
+ return self.osAlarmIncrementCounterRef
86
+
87
+ def setOsAlarmIncrementCounterRef(self, value):
88
+ self.osAlarmIncrementCounterRef = value
89
+
90
+
91
+ class OsAlarmSetEvent(OsAlarmAction):
92
+ def __init__(self, parent, name) -> None:
93
+ super().__init__(parent, name)
94
+
95
+ self.osAlarmSetEventRef = None
96
+ self.osAlarmSetEventTaskRef = None
97
+
98
+ def getOsAlarmSetEventRef(self) -> EcucRefType:
99
+ return self.osAlarmSetEventRef
100
+
101
+ def setOsAlarmSetEventRef(self, value: EcucRefType):
102
+ self.osAlarmSetEventRef = value
103
+ return self
104
+
105
+ def getOsAlarmSetEventTaskRef(self) -> EcucRefType:
106
+ return self.osAlarmSetEventTaskRef
107
+
108
+ def setOsAlarmSetEventTaskRef(self, value: EcucRefType):
109
+ self.osAlarmSetEventTaskRef = value
110
+ return self
111
+
112
+
113
+ class OsAlarm(EcucContainer):
114
+ def __init__(self, parent, name) -> None:
115
+ super().__init__(parent, name)
116
+
117
+ self.osAlarmAccessingApplicationRefs = [] # type: List[EcucRefType]
118
+ self.osAlarmCounterRef = None
119
+ self.osAlarmAction = None # type: OsAlarmAction
120
+ self.osAlarmAutostart = None
121
+
122
+ def getOsAlarmAccessingApplicationRefList(self) -> List[EcucRefType]:
123
+ return self.osAlarmAccessingApplicationRefs
124
+
125
+ def addOsAlarmAccessingApplicationRef(self, ref: EcucRefType):
126
+ self.osAlarmAccessingApplicationRefs.append(ref)
127
+ return self
128
+
129
+ def getOsAlarmCounterRef(self) -> EcucRefType:
130
+ return self.osAlarmCounterRef
131
+
132
+ def setOsAlarmCounterRef(self, value: EcucRefType):
133
+ self.osAlarmCounterRef = value
134
+ return self
135
+
136
+ def getOsAlarmAction(self) -> OsAlarmAction:
137
+ return self.osAlarmAction
138
+
139
+ def setOsAlarmAction(self, value: OsAlarmAction):
140
+ self.osAlarmAction = value
141
+ return self
142
+
143
+ def getOsAlarmAutostart(self) -> OsAlarmAutostart:
144
+ return self.osAlarmAutostart
145
+
146
+ def setOsAlarmAutostart(self, value: OsAlarmAutostart):
147
+ self.osAlarmAutostart = value
148
+ return self
149
+
150
+ def __str__(self) -> str:
151
+ result = []
152
+ result.append("Name : %s" % self.getName())
153
+ result.append("Full Name : %s" % self.getFullName())
154
+ result.append("OsAlarmCounterRef : %s" %
155
+ self.getOsAlarmCounterRef())
156
+ result.append("OsAlarmAccessingApplication :")
157
+ for ref in self.getOsAlarmAccessingApplicationRefList():
158
+ result.append(" - %s" % ref)
159
+
160
+ return "\n".join(result)
161
+
162
+
163
+ class OsApplicationHooks(EcucContainer):
164
+ def __init__(self, parent, name):
165
+ super().__init__(parent, name)
166
+
167
+ self.OsAppErrorHook = False # type: bool
168
+ self.OsAppShutdownHook = False # type: bool
169
+ self.OsAppStartupHook = False # type: bool
170
+ self.OsMemoryMappingCodeLocationRef = None # type: EcucRefType
171
+
172
+ def getOsAppErrorHook(self):
173
+ return self.OsAppErrorHook
174
+
175
+ def setOsAppErrorHook(self, value):
176
+ self.OsAppErrorHook = value
177
+ return self
178
+
179
+ def getOsAppShutdownHook(self):
180
+ return self.OsAppShutdownHook
181
+
182
+ def setOsAppShutdownHook(self, value):
183
+ self.OsAppShutdownHook = value
184
+ return self
185
+
186
+ def getOsAppStartupHook(self):
187
+ return self.OsAppStartupHook
188
+
189
+ def setOsAppStartupHook(self, value):
190
+ self.OsAppStartupHook = value
191
+ return self
192
+
193
+ def getOsMemoryMappingCodeLocationRef(self):
194
+ return self.OsMemoryMappingCodeLocationRef
195
+
196
+ def setOsMemoryMappingCodeLocationRef(self, value):
197
+ self.OsMemoryMappingCodeLocationRef = value
198
+ return self
199
+
200
+
201
+ class OsApplicationTrustedFunction(EcucContainer):
202
+ def __init__(self, parent, name):
203
+ super().__init__(parent, name)
204
+
205
+ self.OsTrustedFunctionName = None # type: str
206
+ self.OsMemoryMappingCodeLocationRef = None # type: EcucRefType
207
+
208
+ def getOsTrustedFunctionName(self):
209
+ return self.OsTrustedFunctionName
210
+
211
+ def setOsTrustedFunctionName(self, value):
212
+ self.OsTrustedFunctionName = value
213
+ return self
214
+
215
+ def getOsMemoryMappingCodeLocationRef(self):
216
+ return self.OsMemoryMappingCodeLocationRef
217
+
218
+ def setOsMemoryMappingCodeLocationRef(self, value):
219
+ self.OsMemoryMappingCodeLocationRef = value
220
+ return self
221
+
222
+
223
+ class OsAppMode(EcucContainer):
224
+ def __init__(self, parent, name):
225
+ super().__init__(parent, name)
226
+
227
+
228
+ class OsApplication(EcucContainer):
229
+ def __init__(self, parent, name) -> None:
230
+ super().__init__(parent, name)
231
+
232
+ self.OsTrusted = False # type: bool
233
+ self.OsTrustedApplicationDelayTimingViolationCall = False # type: bool
234
+ self.OsTrustedApplicationWithProtection = False # type: bool
235
+ self.OsAppAlarmRefs = [] # type: List[EcucRefType]
236
+ self.OsAppCounterRefs = [] # type: List[EcucRefType]
237
+ self.OsAppEcucPartitionRefs = [] # type: List[EcucRefType]
238
+ self.OsAppIsrRefs = [] # type: List[EcucRefType]
239
+ self.OsApplicationCoreRefs = [] # type: List[EcucRefType]
240
+ self.OsAppScheduleTableRefs = [] # type: List[EcucRefType]
241
+ self.OsAppTaskRefs = [] # type: List[EcucRefType]
242
+ self.OsMemoryMappingCodeLocationRef = None # type: EcucRefType
243
+ self.OsRestartTask = None # type: EcucRefType
244
+
245
+ '''
246
+ EB Tresos
247
+ '''
248
+ self.OsAppResourceRefs = [] # type: List[EcucRefType]
249
+
250
+ def getOsTrusted(self):
251
+ return self.OsTrusted
252
+
253
+ def setOsTrusted(self, value):
254
+ self.OsTrusted = value
255
+ return self
256
+
257
+ def getOsTrustedApplicationDelayTimingViolationCall(self):
258
+ return self.OsTrustedApplicationDelayTimingViolationCall
259
+
260
+ def setOsTrustedApplicationDelayTimingViolationCall(self, value):
261
+ self.OsTrustedApplicationDelayTimingViolationCall = value
262
+ return self
263
+
264
+ def getOsTrustedApplicationWithProtection(self):
265
+ return self.OsTrustedApplicationWithProtection
266
+
267
+ def setOsTrustedApplicationWithProtection(self, value):
268
+ self.OsTrustedApplicationWithProtection = value
269
+ return self
270
+
271
+ def getOsAppAlarmRefs(self):
272
+ return self.OsAppAlarmRefs
273
+
274
+ def addOsAppAlarmRef(self, value):
275
+ self.OsAppAlarmRefs.append(value)
276
+ return self
277
+
278
+ def getOsAppCounterRefs(self):
279
+ return self.OsAppCounterRefs
280
+
281
+ def addOsAppCounterRefs(self, value):
282
+ self.OsAppCounterRefs.append(value)
283
+ return self
284
+
285
+ def getOsAppEcucPartitionRefs(self):
286
+ return self.OsAppEcucPartitionRefs
287
+
288
+ def addOsAppEcucPartitionRef(self, value):
289
+ if value is not None:
290
+ self.OsAppEcucPartitionRefs.append(value)
291
+ return self
292
+
293
+ def getOsAppIsrRefs(self):
294
+ return self.OsAppIsrRefs
295
+
296
+ def addOsAppIsrRef(self, value):
297
+ if value is not None:
298
+ self.OsAppIsrRefs.append(value)
299
+ return self
300
+
301
+ def getOsApplicationCoreRefs(self):
302
+ return self.OsApplicationCoreRefs
303
+
304
+ def addOsApplicationCoreRefs(self, value):
305
+ self.OsApplicationCoreRefs.append(value)
306
+ return self
307
+
308
+ def getOsAppScheduleTableRefs(self):
309
+ return self.OsAppScheduleTableRefs
310
+
311
+ def addOsAppScheduleTableRef(self, value):
312
+ if value is not None:
313
+ self.OsAppScheduleTableRefs.append(value)
314
+ return self
315
+
316
+ def getOsAppTaskRefs(self):
317
+ return self.OsAppTaskRefs
318
+
319
+ def addOsAppTaskRef(self, value):
320
+ if value is not None:
321
+ self.OsAppTaskRefs.append(value)
322
+ return self
323
+
324
+ def getOsMemoryMappingCodeLocationRef(self):
325
+ return self.OsMemoryMappingCodeLocationRef
326
+
327
+ def setOsMemoryMappingCodeLocationRef(self, value):
328
+ self.OsMemoryMappingCodeLocationRef = value
329
+ return self
330
+
331
+ def getOsRestartTask(self):
332
+ return self.OsRestartTask
333
+
334
+ def setOsRestartTask(self, value):
335
+ self.OsRestartTask = value
336
+ return self
337
+
338
+ def getOsAppResourceRefs(self):
339
+ return self.OsAppResourceRefs
340
+
341
+ def addOsAppResourceRef(self, value):
342
+ if value is not None:
343
+ self.OsAppResourceRefs.append(value)
344
+ return self
345
+
346
+
347
+ class OsDriver(EcucContainer):
348
+ def __init__(self, parent, name) -> None:
349
+ super().__init__(parent, name)
350
+
351
+ self.osGptChannelRef = None
352
+
353
+ def getOsGptChannelRef(self) -> EcucRefType:
354
+ '''
355
+ Multiplicity: 0..1
356
+ '''
357
+ return self.osGptChannelRef
358
+
359
+ def setOsGptChannelRef(self, value: EcucRefType):
360
+ '''
361
+ Multiplicity: 0..1
362
+ '''
363
+ self.osGptChannelRef = value
364
+ return self
365
+
366
+
367
+ class OsTimeConstant(EcucContainer):
368
+ def __init__(self, parent, name) -> None:
369
+ super().__init__(parent, name)
370
+
371
+ self.osTimeValue = None
372
+
373
+ def getOsTimeValue(self):
374
+ '''
375
+ Multiplicity: 1
376
+ '''
377
+ return self.osTimeValue
378
+
379
+ def setOsTimeValue(self, value):
380
+ '''
381
+ Multiplicity: 1
382
+ '''
383
+ self.osTimeValue = value
384
+ return self
385
+
386
+
387
+ class OsCounter(EcucContainer):
388
+
389
+ OS_COUNTER_TYPE_HARDWARE = "HARDWARE"
390
+ OS_COUNTER_TYPE_SOFTWARE = "SOFTWARE"
391
+
392
+ def __init__(self, parent, name) -> None:
393
+ super().__init__(parent, name)
394
+
395
+ self.osCounterMaxAllowedValue = None # type: int
396
+ self.osCounterMinCycle = None # type: int
397
+ self.osCounterTicksPerBase = None # type: int
398
+ self.osCounterType = None # type: str
399
+ self.osSecondsPerTick = None # type: float
400
+ self.osCounterAccessingApplications = [] # type: List[EcucRefType]
401
+ self.osDriver = None # Multiplicity: 0..1
402
+ self.osTimeConstants = [] # Multiplicity: 0..*
403
+
404
+ def getOsCounterMaxAllowedValue(self):
405
+ return self.osCounterMaxAllowedValue
406
+
407
+ def setOsCounterMaxAllowedValue(self, value):
408
+ '''
409
+ Multiplicity: 1
410
+ '''
411
+ self.osCounterMaxAllowedValue = value
412
+ return self
413
+
414
+ def getOsCounterMinCycle(self):
415
+ '''
416
+ Multiplicity: 1
417
+ '''
418
+ return self.osCounterMinCycle
419
+
420
+ def setOsCounterMinCycle(self, value):
421
+ '''
422
+ Multiplicity: 1
423
+ '''
424
+ self.osCounterMinCycle = value
425
+ return self
426
+
427
+ def getOsCounterTicksPerBase(self):
428
+ '''
429
+ Multiplicity: 1
430
+ '''
431
+ return self.osCounterTicksPerBase
432
+
433
+ def setOsCounterTicksPerBase(self, value):
434
+ '''
435
+ Multiplicity: 1
436
+ '''
437
+ self.osCounterTicksPerBase = value
438
+ return self
439
+
440
+ def getOsCounterType(self):
441
+ return self.osCounterType
442
+
443
+ def setOsCounterType(self, value):
444
+ '''
445
+ Multiplicity: 1
446
+ '''
447
+ self.osCounterType = value
448
+ return self
449
+
450
+ def getOsSecondsPerTick(self):
451
+ return self.osSecondsPerTick
452
+
453
+ def setOsSecondsPerTick(self, value):
454
+ '''
455
+ Multiplicity: 0..1
456
+ '''
457
+ self.osSecondsPerTick = value
458
+ return self
459
+
460
+ def getOsCounterAccessingApplicationList(self):
461
+ '''
462
+ Multiplicity: 0..*
463
+ '''
464
+ return self.osCounterAccessingApplications
465
+
466
+ def setOsCounterAccessingApplications(self, value):
467
+ self.osCounterAccessingApplications.append(value)
468
+ return self
469
+
470
+ def getOsDriver(self):
471
+ return self.osDriver
472
+
473
+ def setOsDriver(self, value):
474
+ self.osDriver = value
475
+ return self
476
+
477
+ def getOsTimeConstants(self):
478
+ return self.osTimeConstants
479
+
480
+ def setOsTimeConstants(self, value):
481
+ self.osTimeConstants = value
482
+ return self
483
+
484
+
485
+ class OsResource(EcucContainer):
14
486
  def __init__(self) -> None:
15
487
  pass
16
488
 
17
- class OsIsrResourceLock:
489
+
490
+ class OsIsrResourceLock(EcucContainer):
18
491
  def __init__(self) -> None:
19
- self.OsIsrResourceLockBudget = None
20
- self.OsIsrResourceLockResourceRef = None
492
+ self.osIsrResourceLockBudget = None
493
+ self.osIsrResourceLockResourceRef = None
21
494
 
22
495
 
23
- class OsIsrTimingProtection:
496
+ class OsIsrTimingProtection(EcucObject):
24
497
  def __init__(self) -> None:
25
- self.OsIsrAllInterruptLockBudget = None
26
- self.OsIsrExecutionBudget = None
27
- self.OsIsrOsInterruptLockBudget = None
28
- self.OsIsrTimeFrame = None
29
- self.OsIsrResourceLock = OsIsrResourceLock()
498
+ self.osIsrAllInterruptLockBudget = None
499
+ self.osIsrExecutionBudget = None
500
+ self.osIsrOsInterruptLockBudget = None
501
+ self.osIsrTimeFrame = None
502
+ self.osIsrResourceLock = OsIsrResourceLock()
503
+
30
504
 
31
505
  class OsIsr(EcucObject):
32
506
  '''
33
507
  The OsIsr container represents an ISO 17356 interrupt service routine.
34
508
  '''
35
-
509
+
36
510
  OS_ISR_CATEGORY_1 = "CATEGORY_1" # Interrupt is of category 1
37
511
  OS_ISR_CATEGORY_2 = "CATEGORY_2" # Interrupt is of category 2
38
512
 
39
- def __init__(self) -> None:
40
- self.OsIsrCategory = None
41
- self.OsIsrPeriod = None
42
- self.OsIsrResourceRef = None
43
- self.OsMemoryMappingCodeLocationRef = None
44
- self.OsIsrTimingProtection = OsIsrTimingProtection() # type: OsIsrTimingProtection
513
+ def __init__(self, parent, name) -> None:
514
+ super().__init__(parent, name)
515
+
516
+ self.osIsrCategory = None
517
+ self.osIsrPeriod = None
518
+ self.osIsrResourceRef = None
519
+ self.osMemoryMappingCodeLocationRef = None
520
+ self.osIsrTimingProtection = OsIsrTimingProtection()
45
521
 
46
- self.OsIsrPriority = None
47
- self.OsStacksize = None
522
+ self.osIsrPriority = None
523
+ self.osStacksize = None
524
+ self.osIsrVector = None
48
525
 
49
526
  def getOsIsrCategory(self):
50
- return self.OsIsrCategory
527
+ return self.osIsrCategory
51
528
 
52
529
  def setOsIsrCategory(self, value):
53
- self.OsIsrCategory = value
530
+ if value is not None:
531
+ self.osIsrCategory = value
54
532
  return self
55
533
 
56
534
  def getOsIsrPeriod(self):
57
- return self.OsIsrPeriod
535
+ return self.osIsrPeriod
58
536
 
59
537
  def setOsIsrPeriod(self, value):
60
- self.OsIsrPeriod = value
538
+ if value is not None:
539
+ self.osIsrPeriod = value
61
540
  return self
62
541
 
63
542
  def getOsIsrResourceRef(self):
64
- return self.OsIsrResourceRef
543
+ return self.osIsrResourceRef
65
544
 
66
545
  def setOsIsrResourceRef(self, value):
67
- self.OsIsrResourceRef = value
546
+ if value is not None:
547
+ self.osIsrResourceRef = value
68
548
  return self
69
549
 
70
550
  def getOsMemoryMappingCodeLocationRef(self):
71
- return self.OsMemoryMappingCodeLocationRef
551
+ return self.osMemoryMappingCodeLocationRef
72
552
 
73
553
  def setOsMemoryMappingCodeLocationRef(self, value):
74
- self.OsMemoryMappingCodeLocationRef = value
554
+ if value is not None:
555
+ self.osMemoryMappingCodeLocationRef = value
75
556
  return self
76
557
 
77
558
  def getOsIsrTimingProtection(self):
78
- return self.OsIsrTimingProtection
559
+ return self.osIsrTimingProtection
79
560
 
80
561
  def setOsIsrTimingProtection(self, value):
81
- self.OsIsrTimingProtection = value
562
+ if value is not None:
563
+ self.osIsrTimingProtection = value
82
564
  return self
83
-
565
+
84
566
  def getOsIsrPriority(self):
85
- return self.OsIsrPriority
567
+ return self.osIsrPriority
86
568
 
87
569
  def setOsIsrPriority(self, value):
88
- self.OsIsrPriority = value
570
+ if value is not None:
571
+ self.osIsrPriority = value
89
572
  return self
90
573
 
91
574
  def getOsStacksize(self):
92
- return self.OsStacksize
575
+ return self.osStacksize
93
576
 
94
577
  def setOsStacksize(self, value):
95
- self.OsStacksize = value
578
+ if value is not None:
579
+ self.osStacksize = value
96
580
  return self
581
+
582
+ def getOsIsrVector(self):
583
+ return self.osIsrVector
97
584
 
98
- class OsTaskAutostart:
99
- def __init__(self) -> None:
100
- self.OsTaskAppModeRef = None
585
+ def setOsIsrVector(self, value):
586
+ if value is not None:
587
+ self.osIsrVector = value
588
+ return self
101
589
 
102
- class OsTaskResourceLock:
103
- def __init__(self) -> None:
104
- self.OsTaskResourceLockBudget = None
105
590
 
106
- class OsTaskTimingProtection:
107
- def __init__(self) -> None:
108
- self.OsTaskAllInterruptLockBudget = None
109
- self.OsTaskExecutionBudget = None
110
- self.OsTaskOsInterruptLockBudget = None
111
- self.OsTaskTimeFrame = None
591
+ class OsTaskAutostart(EcucObject):
592
+ def __init__(self, parent, name) -> None:
593
+ super().__init__(parent, name)
594
+
595
+ self.osTaskAppModeRefs = [] # type: List[EcucRefType]
596
+
597
+ def getOsTaskAppModeRefList(self):
598
+ return self.osTaskAppModeRefs
599
+
600
+ def addOsTaskAppModeRef(self, value):
601
+ self.osTaskAppModeRefs.append(value)
602
+ return self
112
603
 
113
- class OsTimeConstant:
604
+
605
+ class OsTaskResourceLock(EcucObject):
606
+ def __init__(self, parent, name) -> None:
607
+ super().__init__(parent, name)
608
+
609
+ self.osTaskResourceLockBudget = None
610
+
611
+
612
+ class OsTaskTimingProtection(EcucObject):
114
613
  def __init__(self) -> None:
115
- self.OsTimeValue
614
+ self.osTaskAllInterruptLockBudget = None
615
+ self.osTaskExecutionBudget = None
616
+ self.osTaskOsInterruptLockBudget = None
617
+ self.osTaskTimeFrame = None
618
+
116
619
 
117
620
  class OsTask(EcucObject):
118
621
 
119
622
  FULL = "FULL" # Task is preemptable.
120
- NON = "NON" # Task is not preemptable.
121
-
122
- def __init__(self) -> None:
123
- self.OsTaskActivation = None # type: int
124
- self.OsTaskPeriod = 0.0 # type: float
125
- self.OsTaskPriority = None # type: int
126
- self.OsTaskSchedule = ""
127
- self.OsStacksize = 0 # type: int
128
- self.OsMemoryMappingCodeLocationRef = None
129
- self.OsTaskAccessingApplication = None
130
- self.OsTaskEventRef = None
131
- self.OsTaskResourceRef = None
623
+ NON = "NON" # Task is not preemptable.
624
+
625
+ def __init__(self, parent, name) -> None:
626
+ super().__init__(parent, name)
627
+
628
+ self.osTaskActivation = None # type: int
629
+ self.osTaskPeriod = 0.0 # type: float
630
+ self.osTaskPriority = None # type: int
631
+ self.osTaskSchedule = ""
632
+ self.OsTaskType = None # type: str
633
+ self.osStacksize = 0 # type: int
634
+ self.osMemoryMappingCodeLocationRef = None # type: EcucRefType
635
+ self.osTaskAccessingApplication = None
636
+ self.osTaskEventRef = None # type: EcucRefType
637
+ self.osTaskResourceRefs = [] # type: List[EcucRefType]
638
+ self.osTaskAutostart = None # type: OsTaskAutostart
132
639
 
133
640
  def getOsTaskActivation(self):
134
- return self.OsTaskActivation
641
+ return self.osTaskActivation
135
642
 
136
643
  def setOsTaskActivation(self, value):
137
- self.OsTaskActivation = value
644
+ self.osTaskActivation = value
138
645
  return self
139
646
 
140
647
  def getOsTaskPeriod(self):
141
- return self.OsTaskPeriod
648
+ return self.osTaskPeriod
142
649
 
143
650
  def setOsTaskPeriod(self, value):
144
- self.OsTaskPeriod = value
651
+ self.osTaskPeriod = value
145
652
  return self
146
653
 
147
654
  def getOsTaskPriority(self):
148
- return self.OsTaskPriority
655
+ return self.osTaskPriority
149
656
 
150
657
  def setOsTaskPriority(self, value):
151
- self.OsTaskPriority = value
658
+ self.osTaskPriority = value
152
659
  return self
153
660
 
154
661
  def getOsTaskSchedule(self):
155
- return self.OsTaskSchedule
662
+ return self.osTaskSchedule
156
663
 
157
664
  def setOsTaskSchedule(self, value):
158
- self.OsTaskSchedule = value
665
+ self.osTaskSchedule = value
159
666
  return self
160
-
161
- def getOsStacksize(self):
162
- return self.OsStacksize
163
667
 
164
- def setOsStacksize(self, value):
165
- self.OsStacksize = value
668
+ def getOsTaskType(self):
669
+ return self.OsTaskType
670
+
671
+ def setOsTaskType(self, value):
672
+ self.OsTaskType = value
673
+ return self
674
+
675
+ def getOsStacksize(self) -> int:
676
+ return self.osStacksize
677
+
678
+ def setOsStacksize(self, value: int):
679
+ self.osStacksize = value
166
680
  return self
167
681
 
168
682
  def getOsMemoryMappingCodeLocationRef(self):
169
- return self.OsMemoryMappingCodeLocationRef
683
+ return self.osMemoryMappingCodeLocationRef
170
684
 
171
685
  def setOsMemoryMappingCodeLocationRef(self, value):
172
- self.OsMemoryMappingCodeLocationRef = value
686
+ self.osMemoryMappingCodeLocationRef = value
173
687
  return self
174
688
 
175
689
  def getOsTaskAccessingApplication(self):
176
- return self.OsTaskAccessingApplication
690
+ return self.osTaskAccessingApplication
177
691
 
178
692
  def setOsTaskAccessingApplication(self, value):
179
- self.OsTaskAccessingApplication = value
693
+ self.osTaskAccessingApplication = value
180
694
  return self
181
695
 
182
696
  def getOsTaskEventRef(self):
183
- return self.OsTaskEventRef
697
+ return self.osTaskEventRef
184
698
 
185
699
  def setOsTaskEventRef(self, value):
186
- self.OsTaskEventRef = value
700
+ self.osTaskEventRef = value
187
701
  return self
188
702
 
189
- def getOsTaskResourceRef(self):
190
- return self.OsTaskResourceRef
703
+ def getOsTaskResourceRefList(self) -> List[EcucRefType]:
704
+ return self.osTaskResourceRefs
191
705
 
192
- def setOsTaskResourceRef(self, value):
193
- self.OsTaskResourceRef = value
706
+ def addOsTaskResourceRef(self, value: EcucRefType):
707
+ self.osTaskResourceRefs.append(value)
194
708
  return self
195
-
709
+
196
710
  def IsPreemptable(self) -> bool:
197
- if self.OsTaskSchedule == OsTask.FULL:
711
+ if self.osTaskSchedule == OsTask.FULL:
198
712
  return True
199
713
  return False
714
+
715
+ def getOsTaskAutostart(self):
716
+ return self.osTaskAutostart
717
+
718
+ def setOsTaskAutostart(self, value):
719
+ if value is not None:
720
+ self.osTaskAutostart = value
721
+ return self
722
+
723
+ def isOsTaskAutostart(self) -> bool:
724
+ return self.osTaskAutostart is not None
725
+
726
+
727
+ class OsScheduleTableAutostart(EcucContainer):
728
+ def __init__(self, parent, name) -> None:
729
+ super().__init__(parent, name)
730
+
731
+ self.osScheduleTableAutostartType = None # Multiplicity: 1
732
+ self.osScheduleTableStartValue = None # Multiplicity: 0..1
733
+ self.osScheduleTableAppModeRef = None # Multiplicity: 1..*
734
+
735
+ def getOsScheduleTableAutostartType(self):
736
+ return self.osScheduleTableAutostartType
737
+
738
+ def setOsScheduleTableAutostartType(self, value):
739
+ self.osScheduleTableAutostartType = value
740
+ return self
741
+
742
+ def getOsScheduleTableStartValue(self):
743
+ return self.osScheduleTableStartValue
744
+
745
+ def setOsScheduleTableStartValue(self, value):
746
+ self.osScheduleTableStartValue = value
747
+ return self
748
+
749
+ def getOsScheduleTableAppModeRef(self):
750
+ return self.osScheduleTableAppModeRef
751
+
752
+ def setOsScheduleTableAppModeRef(self, value):
753
+ self.osScheduleTableAppModeRef = value
754
+ return self
755
+
756
+
757
+ class OsScheduleTblAdjustableExpPoint(EcucContainer):
758
+ def __init__(self, parent, name) -> None:
759
+ super().__init__(parent, name)
760
+
761
+ self.osScheduleTableMaxLengthen = None # Multiplicity: 1
762
+ self.osScheduleTableMaxShorten = None # Multiplicity: 1
763
+
764
+ def getOsScheduleTableMaxLengthen(self) -> int:
765
+ return self.osScheduleTableMaxLengthen
766
+
767
+ def setOsScheduleTableMaxLengthen(self, value: int):
768
+ self.osScheduleTableMaxLengthen = value
769
+ return self
770
+
771
+ def getOsScheduleTableMaxShorten(self) -> int:
772
+ return self.osScheduleTableMaxShorten
773
+
774
+ def setOsScheduleTableMaxShorten(self, value: int):
775
+ self.osScheduleTableMaxShorten = value
776
+ return self
777
+
778
+
779
+ class OsScheduleTableTaskActivation(EcucContainer):
780
+ def __init__(self, parent, name) -> None:
781
+ super().__init__(parent, name)
782
+
783
+ self.osScheduleTableActivateTaskRef = None # Multiplicity: 1
200
784
 
201
- class Os(EcucObject):
785
+ def getOsScheduleTableActivateTaskRef(self) -> EcucRefType:
786
+ return self.osScheduleTableActivateTaskRef
787
+
788
+ def setOsScheduleTableActivateTaskRef(self, value: EcucRefType):
789
+ self.osScheduleTableActivateTaskRef = value
790
+ return self
791
+
792
+
793
+ class OsScheduleTableEventSetting(EcucContainer):
794
+ def __init__(self, parent, name) -> None:
795
+ super().__init__(parent, name)
796
+
797
+ # Multiplicity: 1 Reference to OsEvent
798
+ self.osScheduleTableSetEventRef = None
799
+ # Multiplicity: 1 Reference to OsTask
800
+ self.osScheduleTableSetEventTaskRef = None
801
+
802
+ def getOsScheduleTableSetEventRef(self):
803
+ return self.osScheduleTableSetEventRef
804
+
805
+ def setOsScheduleTableSetEventRef(self, value):
806
+ self.osScheduleTableSetEventRef = value
807
+ return self
808
+
809
+ def getOsScheduleTableSetEventTaskRef(self):
810
+ return self.osScheduleTableSetEventTaskRef
811
+
812
+ def setOsScheduleTableSetEventTaskRef(self, value):
813
+ self.osScheduleTableSetEventTaskRef = value
814
+ return self
815
+
816
+
817
+ class OsScheduleTableExpiryPoint(EcucContainer):
818
+ def __init__(self, parent, name) -> None:
819
+ super().__init__(parent, name)
820
+
821
+ self.osScheduleTblExpPointOffset = None # Multiplicity: 1
822
+ self.osScheduleTableEventSettings = [] # Multiplicity: 0..*
823
+ self.osScheduleTableTaskActivations = [] # Multiplicity: 0..*
824
+ self.osScheduleTblAdjustableExpPoint = None # Multiplicity: 0..1
825
+
826
+ def getOsScheduleTblExpPointOffset(self):
827
+ return self.osScheduleTblExpPointOffset
828
+
829
+ def setOsScheduleTblExpPointOffset(self, value):
830
+ self.osScheduleTblExpPointOffset = value
831
+ return self
832
+
833
+ def getOsScheduleTableEventSettingList(self) -> List[OsScheduleTableEventSetting]:
834
+ return self.osScheduleTableEventSettings
835
+
836
+ def addOsScheduleTableEventSetting(self, value: OsScheduleTableEventSetting):
837
+ self.addElement(value)
838
+ self.osScheduleTableEventSettings.append(value)
839
+ return self
840
+
841
+ def getOsScheduleTableTaskActivationList(self) -> List[OsScheduleTableTaskActivation]:
842
+ return self.osScheduleTableTaskActivations
843
+
844
+ def addOsScheduleTableTaskActivation(self, value: OsScheduleTableTaskActivation):
845
+ self.addElement(value)
846
+ self.osScheduleTableTaskActivations.append(value)
847
+ return self
848
+
849
+ def getOsScheduleTblAdjustableExpPoint(self) -> OsScheduleTblAdjustableExpPoint:
850
+ return self.osScheduleTblAdjustableExpPoint
851
+
852
+ def setOsScheduleTblAdjustableExpPoint(self, value: OsScheduleTblAdjustableExpPoint):
853
+ self.osScheduleTblAdjustableExpPoint = value
854
+ return self
855
+
856
+
857
+ class OsScheduleTable(EcucContainer):
858
+
859
+ OS_TIME_UNIT_NANOSECONDS = "NANOSECONDS"
860
+ OS_TIME_UNIT_TICKS = "TICKS"
861
+
862
+ def __init__(self, parent, name) -> None:
863
+ super().__init__(parent, name)
864
+
865
+ self.osScheduleTableDuration = None # Multiplicity: 1
866
+ self.osScheduleTableRepeating = None # Multiplicity: 1
867
+ self.osScheduleTableCounterRef = None # Multiplicity: 1
868
+ self.osSchTblAccessingApplications = [] # Multiplicity: 0..*
869
+ self.osTimeUnit = None # Multiplicity: 0..1
870
+
871
+ self.osScheduleTableAutostart = None # Multiplicity: 0..1
872
+ self.osScheduleTableExpiryPoints = [] # Multiplicity: 1..*
873
+ self.osScheduleTableSync = None # Multiplicity: 0..1
874
+
875
+ def getOsScheduleTableDuration(self):
876
+ return self.osScheduleTableDuration
877
+
878
+ def setOsScheduleTableDuration(self, value):
879
+ self.osScheduleTableDuration = value
880
+ return self
881
+
882
+ def getOsScheduleTableRepeating(self):
883
+ return self.osScheduleTableRepeating
884
+
885
+ def setOsScheduleTableRepeating(self, value):
886
+ self.osScheduleTableRepeating = value
887
+ return self
888
+
889
+ def getOsScheduleTableCounterRef(self) -> EcucRefType:
890
+ return self.osScheduleTableCounterRef
891
+
892
+ def setOsScheduleTableCounterRef(self, value: EcucRefType):
893
+ self.osScheduleTableCounterRef = value
894
+ return self
895
+
896
+ def getOsSchTblAccessingApplicationList(self):
897
+ return self.osSchTblAccessingApplications
898
+
899
+ def addOsSchTblAccessingApplication(self, value):
900
+ self.osSchTblAccessingApplications.append(value)
901
+ return self
902
+
903
+ def getOsTimeUnit(self) -> str:
904
+ return self.osTimeUnit
905
+
906
+ def setOsTimeUnit(self, value: str):
907
+ if value is not None:
908
+ if value not in [OsScheduleTable.OS_TIME_UNIT_NANOSECONDS, OsScheduleTable.OS_TIME_UNIT_TICKS]:
909
+ raise ValueError("Invalid OsTimeUnit <%s>" % value)
910
+ self.osTimeUnit = value # set to None if the value is None
911
+ return self
912
+
913
+ def getOsScheduleTableAutostart(self):
914
+ return self.osScheduleTableAutostart
915
+
916
+ def setOsScheduleTableAutostart(self, value):
917
+ self.osScheduleTableAutostart = value
918
+ return self
919
+
920
+ def getOsScheduleTableExpiryPointList(self) -> List[OsScheduleTableExpiryPoint]:
921
+ return self.osScheduleTableExpiryPoints
922
+
923
+ def addOsScheduleTableExpiryPoint(self, value: OsScheduleTableExpiryPoint):
924
+ self.addElement(value
925
+ )
926
+ self.osScheduleTableExpiryPoints.append(value)
927
+ return self
928
+
929
+ def getOsScheduleTableSync(self):
930
+ return self.osScheduleTableSync
931
+
932
+ def setOsScheduleTableSync(self, value):
933
+ self.osScheduleTableSync = value
934
+ return self
935
+
936
+
937
+ class Os(Module):
202
938
  def __init__(self, parent) -> None:
203
939
  super().__init__(parent, "Os")
204
940
 
205
941
  self.osTasks = [] # type: List[OsTask]
206
942
  self.osIsrs = [] # type: List[OsIsr]
943
+ self.osAlarms = [] # type: List[OsAlarm]
944
+ self.osScheduleTables = [] # type: List[OsScheduleTable]
945
+ self.osCounters = [] # type: List[OsCounter]
946
+ self.osApplications = [] # type: List[OsApplication]
947
+
948
+ # extended attributes to speed up performance
949
+ self.osIsrToOsAppMappings = {} # type: Dict[str, OsApplication]
950
+ self.osTaskToOsAppMappings = {} # typeL Dict[str, OsApplication]
951
+
952
+ self.logger = logging.getLogger()
207
953
 
208
954
  def getOsTaskList(self) -> List[OsTask]:
209
- return self.osTasks
210
-
955
+ return list(sorted(filter(lambda a: isinstance(a, OsTask), self.elements.values()), key=lambda o: o.name))
956
+
211
957
  def addOsTask(self, os_task: OsTask):
958
+ self.addElement(os_task)
212
959
  self.osTasks.append(os_task)
213
960
  return self
214
961
 
215
962
  def getOsIsrList(self) -> List[OsIsr]:
216
- return self.osIsrs
217
-
963
+ return list(sorted(filter(lambda a: isinstance(a, OsIsr), self.elements.values()), key=lambda o: o.name))
964
+
218
965
  def addOsIsr(self, os_isr: OsIsr):
966
+ self.addElement(os_isr)
219
967
  self.osIsrs.append(os_isr)
220
- return self
968
+ return self
969
+
970
+ def getOsAlarmList(self) -> List[OsAlarm]:
971
+ return list(sorted(filter(lambda a: isinstance(a, OsAlarm), self.elements.values()), key=lambda o: o.name))
972
+
973
+ def addOsAlarm(self, os_alarm: OsAlarm):
974
+ self.addElement(os_alarm)
975
+ self.osAlarms.append(os_alarm)
976
+ return self
977
+
978
+ def getOsScheduleTableList(self) -> List[OsScheduleTable]:
979
+ return list(sorted(filter(lambda a: isinstance(a, OsScheduleTable), self.elements.values()), key=lambda o: o.name))
980
+
981
+ def addOsScheduleTable(self, os_schedule_table: OsScheduleTable):
982
+ self.addElement(os_schedule_table)
983
+ self.osScheduleTables.append(os_schedule_table)
984
+ return self
985
+
986
+ def getOsCounterList(self) -> List[OsCounter]:
987
+ return list(sorted(filter(lambda a: isinstance(a, OsCounter), self.elements.values()), key=lambda o: o.name))
988
+
989
+ def addOsCounter(self, os_counter: OsCounter):
990
+ self.addElement(os_counter)
991
+ self.osCounters.append(os_counter)
992
+ return self
993
+
994
+ def getOsApplicationList(self) -> List[OsApplication]:
995
+ return list(sorted(filter(lambda a: isinstance(a, OsApplication), self.elements.values()), key=lambda o: o.name))
996
+
997
+ def addOsApplication(self, value: OsApplication):
998
+ self.addElement(value)
999
+ self.osApplications.append(value)
1000
+
1001
+ for isr_ref in value.getOsAppIsrRefs():
1002
+ self.logger.debug("Create OsISR <%s> -> OsApp <%s> Mapping." % (isr_ref.getShortName(), value.getName))
1003
+ self.osIsrToOsAppMappings[isr_ref.getShortName()] = value
1004
+
1005
+ for task_ref in value.getOsAppTaskRefs():
1006
+ self.logger.debug("Create OsTask <%s> -> OsApp <%s> Mapping." % (task_ref.getShortName(), value.getName))
1007
+ self.osTaskToOsAppMappings[task_ref.getShortName()] = value
1008
+
1009
+ return self
1010
+
1011
+ def getOsIsrOsApplication(self, isr_name: str) -> OsApplication:
1012
+ if isr_name in self.osIsrToOsAppMappings:
1013
+ return self.osIsrToOsAppMappings[isr_name]
1014
+ return None
1015
+
1016
+ def getOsTaskOsApplication(self, isr_name: str) -> OsApplication:
1017
+ if isr_name in self.osTaskToOsAppMappings:
1018
+ return self.osTaskToOsAppMappings[isr_name]
1019
+ return None