py-eb-model 1.0.0__py3-none-any.whl → 1.1.3__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 +893 -98
  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 +173 -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.3.dist-info/METADATA +194 -0
  27. py_eb_model-1.1.3.dist-info/RECORD +38 -0
  28. py_eb_model-1.1.3.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.3.dist-info}/LICENSE +0 -0
  47. {py_eb_model-1.0.0.dist-info → py_eb_model-1.1.3.dist-info}/WHEEL +0 -0
  48. {py_eb_model-1.0.0.dist-info → py_eb_model-1.1.3.dist-info}/top_level.txt +0 -0
eb_model/models/os_xdm.py CHANGED
@@ -1,220 +1,1015 @@
1
- from typing import List
1
+ from typing import Dict, List
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
603
+
604
+
605
+ class OsTaskResourceLock(EcucObject):
606
+ def __init__(self, parent, name) -> None:
607
+ super().__init__(parent, name)
608
+
609
+ self.osTaskResourceLockBudget = None
610
+
112
611
 
113
- class OsTimeConstant:
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: bool
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
667
 
161
- def getOsStacksize(self):
162
- return self.OsStacksize
668
+ def getOsTaskType(self):
669
+ return self.OsTaskType
163
670
 
164
- def setOsStacksize(self, value):
165
- self.OsStacksize = value
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
+ self.osTaskAutostart = value
720
+ return self
721
+
722
+
723
+ class OsScheduleTableAutostart(EcucContainer):
724
+ def __init__(self, parent, name) -> None:
725
+ super().__init__(parent, name)
726
+
727
+ self.osScheduleTableAutostartType = None # Multiplicity: 1
728
+ self.osScheduleTableStartValue = None # Multiplicity: 0..1
729
+ self.osScheduleTableAppModeRef = None # Multiplicity: 1..*
730
+
731
+ def getOsScheduleTableAutostartType(self):
732
+ return self.osScheduleTableAutostartType
733
+
734
+ def setOsScheduleTableAutostartType(self, value):
735
+ self.osScheduleTableAutostartType = value
736
+ return self
737
+
738
+ def getOsScheduleTableStartValue(self):
739
+ return self.osScheduleTableStartValue
740
+
741
+ def setOsScheduleTableStartValue(self, value):
742
+ self.osScheduleTableStartValue = value
743
+ return self
744
+
745
+ def getOsScheduleTableAppModeRef(self):
746
+ return self.osScheduleTableAppModeRef
747
+
748
+ def setOsScheduleTableAppModeRef(self, value):
749
+ self.osScheduleTableAppModeRef = value
750
+ return self
751
+
752
+
753
+ class OsScheduleTblAdjustableExpPoint(EcucContainer):
754
+ def __init__(self, parent, name) -> None:
755
+ super().__init__(parent, name)
756
+
757
+ self.osScheduleTableMaxLengthen = None # Multiplicity: 1
758
+ self.osScheduleTableMaxShorten = None # Multiplicity: 1
759
+
760
+ def getOsScheduleTableMaxLengthen(self) -> int:
761
+ return self.osScheduleTableMaxLengthen
762
+
763
+ def setOsScheduleTableMaxLengthen(self, value: int):
764
+ self.osScheduleTableMaxLengthen = value
765
+ return self
766
+
767
+ def getOsScheduleTableMaxShorten(self) -> int:
768
+ return self.osScheduleTableMaxShorten
769
+
770
+ def setOsScheduleTableMaxShorten(self, value: int):
771
+ self.osScheduleTableMaxShorten = value
772
+ return self
773
+
774
+
775
+ class OsScheduleTableTaskActivation(EcucContainer):
776
+ def __init__(self, parent, name) -> None:
777
+ super().__init__(parent, name)
778
+
779
+ self.osScheduleTableActivateTaskRef = None # Multiplicity: 1
780
+
781
+ def getOsScheduleTableActivateTaskRef(self) -> EcucRefType:
782
+ return self.osScheduleTableActivateTaskRef
200
783
 
201
- class Os(EcucObject):
784
+ def setOsScheduleTableActivateTaskRef(self, value: EcucRefType):
785
+ self.osScheduleTableActivateTaskRef = value
786
+ return self
787
+
788
+
789
+ class OsScheduleTableEventSetting(EcucContainer):
790
+ def __init__(self, parent, name) -> None:
791
+ super().__init__(parent, name)
792
+
793
+ # Multiplicity: 1 Reference to OsEvent
794
+ self.osScheduleTableSetEventRef = None
795
+ # Multiplicity: 1 Reference to OsTask
796
+ self.osScheduleTableSetEventTaskRef = None
797
+
798
+ def getOsScheduleTableSetEventRef(self):
799
+ return self.osScheduleTableSetEventRef
800
+
801
+ def setOsScheduleTableSetEventRef(self, value):
802
+ self.osScheduleTableSetEventRef = value
803
+ return self
804
+
805
+ def getOsScheduleTableSetEventTaskRef(self):
806
+ return self.osScheduleTableSetEventTaskRef
807
+
808
+ def setOsScheduleTableSetEventTaskRef(self, value):
809
+ self.osScheduleTableSetEventTaskRef = value
810
+ return self
811
+
812
+
813
+ class OsScheduleTableExpiryPoint(EcucContainer):
814
+ def __init__(self, parent, name) -> None:
815
+ super().__init__(parent, name)
816
+
817
+ self.osScheduleTblExpPointOffset = None # Multiplicity: 1
818
+ self.osScheduleTableEventSettings = [] # Multiplicity: 0..*
819
+ self.osScheduleTableTaskActivations = [] # Multiplicity: 0..*
820
+ self.osScheduleTblAdjustableExpPoint = None # Multiplicity: 0..1
821
+
822
+ def getOsScheduleTblExpPointOffset(self):
823
+ return self.osScheduleTblExpPointOffset
824
+
825
+ def setOsScheduleTblExpPointOffset(self, value):
826
+ self.osScheduleTblExpPointOffset = value
827
+ return self
828
+
829
+ def getOsScheduleTableEventSettingList(self) -> List[OsScheduleTableEventSetting]:
830
+ return self.osScheduleTableEventSettings
831
+
832
+ def addOsScheduleTableEventSetting(self, value: OsScheduleTableEventSetting):
833
+ self.addElement(value)
834
+ self.osScheduleTableEventSettings.append(value)
835
+ return self
836
+
837
+ def getOsScheduleTableTaskActivationList(self) -> List[OsScheduleTableTaskActivation]:
838
+ return self.osScheduleTableTaskActivations
839
+
840
+ def addOsScheduleTableTaskActivation(self, value: OsScheduleTableTaskActivation):
841
+ self.addElement(value)
842
+ self.osScheduleTableTaskActivations.append(value)
843
+ return self
844
+
845
+ def getOsScheduleTblAdjustableExpPoint(self) -> OsScheduleTblAdjustableExpPoint:
846
+ return self.osScheduleTblAdjustableExpPoint
847
+
848
+ def setOsScheduleTblAdjustableExpPoint(self, value: OsScheduleTblAdjustableExpPoint):
849
+ self.osScheduleTblAdjustableExpPoint = value
850
+ return self
851
+
852
+
853
+ class OsScheduleTable(EcucContainer):
854
+
855
+ OS_TIME_UNIT_NANOSECONDS = "NANOSECONDS"
856
+ OS_TIME_UNIT_TICKS = "TICKS"
857
+
858
+ def __init__(self, parent, name) -> None:
859
+ super().__init__(parent, name)
860
+
861
+ self.osScheduleTableDuration = None # Multiplicity: 1
862
+ self.osScheduleTableRepeating = None # Multiplicity: 1
863
+ self.osScheduleTableCounterRef = None # Multiplicity: 1
864
+ self.osSchTblAccessingApplications = [] # Multiplicity: 0..*
865
+ self.osTimeUnit = None # Multiplicity: 0..1
866
+
867
+ self.osScheduleTableAutostart = None # Multiplicity: 0..1
868
+ self.osScheduleTableExpiryPoints = [] # Multiplicity: 1..*
869
+ self.osScheduleTableSync = None # Multiplicity: 0..1
870
+
871
+ def getOsScheduleTableDuration(self):
872
+ return self.osScheduleTableDuration
873
+
874
+ def setOsScheduleTableDuration(self, value):
875
+ self.osScheduleTableDuration = value
876
+ return self
877
+
878
+ def getOsScheduleTableRepeating(self):
879
+ return self.osScheduleTableRepeating
880
+
881
+ def setOsScheduleTableRepeating(self, value):
882
+ self.osScheduleTableRepeating = value
883
+ return self
884
+
885
+ def getOsScheduleTableCounterRef(self) -> EcucRefType:
886
+ return self.osScheduleTableCounterRef
887
+
888
+ def setOsScheduleTableCounterRef(self, value: EcucRefType):
889
+ self.osScheduleTableCounterRef = value
890
+ return self
891
+
892
+ def getOsSchTblAccessingApplicationList(self):
893
+ return self.osSchTblAccessingApplications
894
+
895
+ def addOsSchTblAccessingApplication(self, value):
896
+ self.osSchTblAccessingApplications.append(value)
897
+ return self
898
+
899
+ def getOsTimeUnit(self) -> str:
900
+ return self.osTimeUnit
901
+
902
+ def setOsTimeUnit(self, value: str):
903
+ if value is not None:
904
+ if value not in [OsScheduleTable.OS_TIME_UNIT_NANOSECONDS, OsScheduleTable.OS_TIME_UNIT_TICKS]:
905
+ raise ValueError("Invalid OsTimeUnit <%s>" % value)
906
+ self.osTimeUnit = value # set to None if the value is None
907
+ return self
908
+
909
+ def getOsScheduleTableAutostart(self):
910
+ return self.osScheduleTableAutostart
911
+
912
+ def setOsScheduleTableAutostart(self, value):
913
+ self.osScheduleTableAutostart = value
914
+ return self
915
+
916
+ def getOsScheduleTableExpiryPointList(self) -> List[OsScheduleTableExpiryPoint]:
917
+ return self.osScheduleTableExpiryPoints
918
+
919
+ def addOsScheduleTableExpiryPoint(self, value: OsScheduleTableExpiryPoint):
920
+ self.addElement(value
921
+ )
922
+ self.osScheduleTableExpiryPoints.append(value)
923
+ return self
924
+
925
+ def getOsScheduleTableSync(self):
926
+ return self.osScheduleTableSync
927
+
928
+ def setOsScheduleTableSync(self, value):
929
+ self.osScheduleTableSync = value
930
+ return self
931
+
932
+
933
+ class Os(Module):
202
934
  def __init__(self, parent) -> None:
203
935
  super().__init__(parent, "Os")
204
936
 
205
937
  self.osTasks = [] # type: List[OsTask]
206
938
  self.osIsrs = [] # type: List[OsIsr]
939
+ self.osAlarms = [] # type: List[OsAlarm]
940
+ self.osScheduleTables = [] # type: List[OsScheduleTable]
941
+ self.osCounters = [] # type: List[OsCounter]
942
+ self.osApplications = [] # type: List[OsApplication]
943
+
944
+ # extended attributes to speed up performance
945
+ self.osIsrToOsAppMappings = {} # type: Dict[str, OsApplication]
946
+ self.osTaskToOsAppMappings = {} # typeL Dict[str, OsApplication]
947
+
948
+ self.logger = logging.getLogger()
207
949
 
208
950
  def getOsTaskList(self) -> List[OsTask]:
209
- return self.osTasks
210
-
951
+ return list(sorted(filter(lambda a: isinstance(a, OsTask), self.elements.values()), key=lambda o: o.name))
952
+
211
953
  def addOsTask(self, os_task: OsTask):
954
+ self.addElement(os_task)
212
955
  self.osTasks.append(os_task)
213
956
  return self
214
957
 
215
958
  def getOsIsrList(self) -> List[OsIsr]:
216
- return self.osIsrs
217
-
959
+ return list(sorted(filter(lambda a: isinstance(a, OsIsr), self.elements.values()), key=lambda o: o.name))
960
+
218
961
  def addOsIsr(self, os_isr: OsIsr):
962
+ self.addElement(os_isr)
219
963
  self.osIsrs.append(os_isr)
220
- return self
964
+ return self
965
+
966
+ def getOsAlarmList(self) -> List[OsAlarm]:
967
+ return list(sorted(filter(lambda a: isinstance(a, OsAlarm), self.elements.values()), key=lambda o: o.name))
968
+
969
+ def addOsAlarm(self, os_alarm: OsAlarm):
970
+ self.addElement(os_alarm)
971
+ self.osAlarms.append(os_alarm)
972
+ return self
973
+
974
+ def getOsScheduleTableList(self) -> List[OsScheduleTable]:
975
+ return list(sorted(filter(lambda a: isinstance(a, OsScheduleTable), self.elements.values()), key=lambda o: o.name))
976
+
977
+ def addOsScheduleTable(self, os_schedule_table: OsScheduleTable):
978
+ self.addElement(os_schedule_table)
979
+ self.osScheduleTables.append(os_schedule_table)
980
+ return self
981
+
982
+ def getOsCounterList(self) -> List[OsCounter]:
983
+ return list(sorted(filter(lambda a: isinstance(a, OsCounter), self.elements.values()), key=lambda o: o.name))
984
+
985
+ def addOsCounter(self, os_counter: OsCounter):
986
+ self.addElement(os_counter)
987
+ self.osCounters.append(os_counter)
988
+ return self
989
+
990
+ def getOsApplicationList(self) -> List[OsApplication]:
991
+ return list(sorted(filter(lambda a: isinstance(a, OsApplication), self.elements.values()), key=lambda o: o.name))
992
+
993
+ def addOsApplication(self, value: OsApplication):
994
+ self.addElement(value)
995
+ self.osApplications.append(value)
996
+
997
+ for isr_ref in value.getOsAppIsrRefs():
998
+ self.logger.debug("Create OsISR <%s> -> OsApp <%s> Mapping." % (isr_ref.getShortName(), value.getName))
999
+ self.osIsrToOsAppMappings[isr_ref.getShortName()] = value
1000
+
1001
+ for task_ref in value.getOsAppTaskRefs():
1002
+ self.logger.debug("Create OsTask <%s> -> OsApp <%s> Mapping." % (task_ref.getShortName(), value.getName))
1003
+ self.osTaskToOsAppMappings[task_ref.getShortName()] = value
1004
+
1005
+ return self
1006
+
1007
+ def getOsIsrOsApplication(self, isr_name: str) -> OsApplication:
1008
+ if isr_name in self.osIsrToOsAppMappings:
1009
+ return self.osIsrToOsAppMappings[isr_name]
1010
+ return None
1011
+
1012
+ def getOsTaskOsApplication(self, isr_name: str) -> OsApplication:
1013
+ if isr_name in self.osTaskToOsAppMappings:
1014
+ return self.osTaskToOsAppMappings[isr_name]
1015
+ return None