py-eb-model 1.1.4__py3-none-any.whl → 1.1.6__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.
eb_model/models/os_xdm.py CHANGED
@@ -1,14 +1,14 @@
1
1
  from typing import Dict, List # noqa F401
2
2
  import logging
3
- from ..models.abstract import EcucContainer, EcucObject, EcucRefType, Module
3
+ from ..models.abstract import EcucEnumerationParamDef, EcucParamConfContainerDef, EcucObject, EcucRefType, Module
4
4
 
5
5
 
6
- class OsAlarmAction(EcucContainer):
6
+ class OsAlarmAction(EcucParamConfContainerDef):
7
7
  def __init__(self, parent, name) -> None:
8
8
  super().__init__(parent, name)
9
9
 
10
10
 
11
- class OsAlarmAutostart(EcucContainer):
11
+ class OsAlarmAutostart(EcucParamConfContainerDef):
12
12
  def __init__(self, parent, name) -> None:
13
13
  super().__init__(parent, name)
14
14
 
@@ -110,7 +110,7 @@ class OsAlarmSetEvent(OsAlarmAction):
110
110
  return self
111
111
 
112
112
 
113
- class OsAlarm(EcucContainer):
113
+ class OsAlarm(EcucParamConfContainerDef):
114
114
  def __init__(self, parent, name) -> None:
115
115
  super().__init__(parent, name)
116
116
 
@@ -160,7 +160,7 @@ class OsAlarm(EcucContainer):
160
160
  return "\n".join(result)
161
161
 
162
162
 
163
- class OsApplicationHooks(EcucContainer):
163
+ class OsApplicationHooks(EcucParamConfContainerDef):
164
164
  def __init__(self, parent, name):
165
165
  super().__init__(parent, name)
166
166
 
@@ -198,7 +198,7 @@ class OsApplicationHooks(EcucContainer):
198
198
  return self
199
199
 
200
200
 
201
- class OsApplicationTrustedFunction(EcucContainer):
201
+ class OsApplicationTrustedFunction(EcucParamConfContainerDef):
202
202
  def __init__(self, parent, name):
203
203
  super().__init__(parent, name)
204
204
 
@@ -220,12 +220,12 @@ class OsApplicationTrustedFunction(EcucContainer):
220
220
  return self
221
221
 
222
222
 
223
- class OsAppMode(EcucContainer):
223
+ class OsAppMode(EcucParamConfContainerDef):
224
224
  def __init__(self, parent, name):
225
225
  super().__init__(parent, name)
226
226
 
227
227
 
228
- class OsApplication(EcucContainer):
228
+ class OsApplication(EcucParamConfContainerDef):
229
229
  def __init__(self, parent, name) -> None:
230
230
  super().__init__(parent, name)
231
231
 
@@ -344,7 +344,7 @@ class OsApplication(EcucContainer):
344
344
  return self
345
345
 
346
346
 
347
- class OsDriver(EcucContainer):
347
+ class OsDriver(EcucParamConfContainerDef):
348
348
  def __init__(self, parent, name) -> None:
349
349
  super().__init__(parent, name)
350
350
 
@@ -364,7 +364,7 @@ class OsDriver(EcucContainer):
364
364
  return self
365
365
 
366
366
 
367
- class OsTimeConstant(EcucContainer):
367
+ class OsTimeConstant(EcucParamConfContainerDef):
368
368
  def __init__(self, parent, name) -> None:
369
369
  super().__init__(parent, name)
370
370
 
@@ -384,7 +384,7 @@ class OsTimeConstant(EcucContainer):
384
384
  return self
385
385
 
386
386
 
387
- class OsCounter(EcucContainer):
387
+ class OsCounter(EcucParamConfContainerDef):
388
388
 
389
389
  OS_COUNTER_TYPE_HARDWARE = "HARDWARE"
390
390
  OS_COUNTER_TYPE_SOFTWARE = "SOFTWARE"
@@ -482,12 +482,40 @@ class OsCounter(EcucContainer):
482
482
  return self
483
483
 
484
484
 
485
- class OsResource(EcucContainer):
486
- def __init__(self) -> None:
487
- pass
485
+ class OsResource(EcucParamConfContainerDef):
486
+ def __init__(self, parent, name):
487
+ super().__init__(parent, name)
488
+
489
+ self.osResourceProperty = None # type: EcucEnumerationParamDef
490
+ self.osResourceAccessingApplicationRefs = [] # type: List[EcucRefType]
491
+ self.osResourceLinkedResourceRefs = [] # type: List[EcucRefType]
492
+
493
+ def getOsResourceProperty(self):
494
+ return self.osResourceProperty
495
+
496
+ def setOsResourceProperty(self, value):
497
+ if value is not None:
498
+ self.osResourceProperty = value
499
+ return self
500
+
501
+ def getOsResourceAccessingApplicationRefs(self):
502
+ return self.osResourceAccessingApplicationRefs
503
+
504
+ def addOsResourceAccessingApplicationRefs(self, value):
505
+ if value is not None:
506
+ self.osResourceAccessingApplicationRefs.append(value)
507
+ return self
508
+
509
+ def getOsResourceLinkedResourceRefs(self):
510
+ return self.osResourceLinkedResourceRefs
488
511
 
512
+ def setOsResourceLinkedResourceRefs(self, value):
513
+ if value is not None:
514
+ self.osResourceLinkedResourceRefs = value
515
+ return self
489
516
 
490
- class OsIsrResourceLock(EcucContainer):
517
+
518
+ class OsIsrResourceLock(EcucParamConfContainerDef):
491
519
  def __init__(self) -> None:
492
520
  self.osIsrResourceLockBudget = None
493
521
  self.osIsrResourceLockResourceRef = None
@@ -724,7 +752,7 @@ class OsTask(EcucObject):
724
752
  return self.osTaskAutostart is not None
725
753
 
726
754
 
727
- class OsScheduleTableAutostart(EcucContainer):
755
+ class OsScheduleTableAutostart(EcucParamConfContainerDef):
728
756
  def __init__(self, parent, name) -> None:
729
757
  super().__init__(parent, name)
730
758
 
@@ -754,7 +782,7 @@ class OsScheduleTableAutostart(EcucContainer):
754
782
  return self
755
783
 
756
784
 
757
- class OsScheduleTblAdjustableExpPoint(EcucContainer):
785
+ class OsScheduleTblAdjustableExpPoint(EcucParamConfContainerDef):
758
786
  def __init__(self, parent, name) -> None:
759
787
  super().__init__(parent, name)
760
788
 
@@ -776,7 +804,7 @@ class OsScheduleTblAdjustableExpPoint(EcucContainer):
776
804
  return self
777
805
 
778
806
 
779
- class OsScheduleTableTaskActivation(EcucContainer):
807
+ class OsScheduleTableTaskActivation(EcucParamConfContainerDef):
780
808
  def __init__(self, parent, name) -> None:
781
809
  super().__init__(parent, name)
782
810
 
@@ -790,7 +818,7 @@ class OsScheduleTableTaskActivation(EcucContainer):
790
818
  return self
791
819
 
792
820
 
793
- class OsScheduleTableEventSetting(EcucContainer):
821
+ class OsScheduleTableEventSetting(EcucParamConfContainerDef):
794
822
  def __init__(self, parent, name) -> None:
795
823
  super().__init__(parent, name)
796
824
 
@@ -814,7 +842,7 @@ class OsScheduleTableEventSetting(EcucContainer):
814
842
  return self
815
843
 
816
844
 
817
- class OsScheduleTableExpiryPoint(EcucContainer):
845
+ class OsScheduleTableExpiryPoint(EcucParamConfContainerDef):
818
846
  def __init__(self, parent, name) -> None:
819
847
  super().__init__(parent, name)
820
848
 
@@ -854,7 +882,7 @@ class OsScheduleTableExpiryPoint(EcucContainer):
854
882
  return self
855
883
 
856
884
 
857
- class OsScheduleTable(EcucContainer):
885
+ class OsScheduleTable(EcucParamConfContainerDef):
858
886
 
859
887
  OS_TIME_UNIT_NANOSECONDS = "NANOSECONDS"
860
888
  OS_TIME_UNIT_TICKS = "TICKS"
@@ -944,6 +972,7 @@ class Os(Module):
944
972
  self.osScheduleTables = [] # type: List[OsScheduleTable]
945
973
  self.osCounters = [] # type: List[OsCounter]
946
974
  self.osApplications = [] # type: List[OsApplication]
975
+ self.osResources = [] # type: List[OsResource]
947
976
 
948
977
  # extended attributes to speed up performance
949
978
  self.osIsrToOsAppMappings = {} # type: Dict[str, OsApplication]
@@ -992,22 +1021,30 @@ class Os(Module):
992
1021
  return self
993
1022
 
994
1023
  def getOsApplicationList(self) -> List[OsApplication]:
995
- return list(sorted(filter(lambda a: isinstance(a, OsApplication), self.elements.values()), key=lambda o: o.name))
1024
+ return list(sorted(filter(lambda a: isinstance(a, OsApplication), self.elements.values()), key=lambda o: o.getName()))
996
1025
 
997
1026
  def addOsApplication(self, value: OsApplication):
998
1027
  self.addElement(value)
999
1028
  self.osApplications.append(value)
1000
1029
 
1001
1030
  for isr_ref in value.getOsAppIsrRefs():
1002
- self.logger.debug("Create OsISR <%s> -> OsApp <%s> Mapping." % (isr_ref.getShortName(), value.getName))
1031
+ self.logger.debug("Create OsISR <%s> -> OsApp <%s> Mapping." % (isr_ref.getShortName(), value.getName()))
1003
1032
  self.osIsrToOsAppMappings[isr_ref.getShortName()] = value
1004
1033
 
1005
1034
  for task_ref in value.getOsAppTaskRefs():
1006
- self.logger.debug("Create OsTask <%s> -> OsApp <%s> Mapping." % (task_ref.getShortName(), value.getName))
1035
+ self.logger.debug("Create OsTask <%s> -> OsApp <%s> Mapping." % (task_ref.getShortName(), value.getName()))
1007
1036
  self.osTaskToOsAppMappings[task_ref.getShortName()] = value
1008
1037
 
1009
1038
  return self
1010
1039
 
1040
+ def getOsResourceList(self) -> List[OsResource]:
1041
+ return list(sorted(filter(lambda a: isinstance(a, OsResource), self.elements.values()), key=lambda o: o.getName()))
1042
+
1043
+ def addOsResource(self, os_task: OsResource):
1044
+ self.addElement(os_task)
1045
+ self.osResources.append(os_task)
1046
+ return self
1047
+
1011
1048
  def getOsIsrOsApplication(self, isr_name: str) -> OsApplication:
1012
1049
  if isr_name in self.osIsrToOsAppMappings:
1013
1050
  return self.osIsrToOsAppMappings[isr_name]
@@ -1,6 +1,8 @@
1
1
  from typing import Dict, List
2
- from ..models.abstract import EcucContainer, EcucRefType, Module
3
- class RteEventToIsrMapping(EcucContainer):
2
+ from ..models.abstract import EcucParamConfContainerDef, EcucRefType, Module
3
+
4
+
5
+ class RteEventToIsrMapping(EcucParamConfContainerDef):
4
6
  def __init__(self, parent, name) -> None:
5
7
  super().__init__(parent, name)
6
8
 
@@ -10,7 +12,8 @@ class RteEventToIsrMapping(EcucContainer):
10
12
  self.RteRipsFillRoutineRef = None
11
13
  self.RteRipsFlushRoutineRef = None
12
14
 
13
- class AbstractEventToTaskMapping(EcucContainer):
15
+
16
+ class AbstractEventToTaskMapping(EcucParamConfContainerDef):
14
17
  def __init__(self, parent, name) -> None:
15
18
  super().__init__(parent, name)
16
19
 
@@ -23,6 +26,7 @@ class AbstractEventToTaskMapping(EcucContainer):
23
26
  self.rtePositionInTask = value
24
27
  return self
25
28
 
29
+
26
30
  class RteEventToTaskMapping(AbstractEventToTaskMapping):
27
31
  def __init__(self, parent, name) -> None:
28
32
  super().__init__(parent, name)
@@ -174,8 +178,9 @@ class RteEventToTaskMapping(AbstractEventToTaskMapping):
174
178
 
175
179
  def setRteVirtuallyMappedToTaskRef(self, value):
176
180
  self.rteVirtuallyMappedToTaskRef = value
177
- return self
178
-
181
+ return self
182
+
183
+
179
184
  class RteEventToTaskMappingV3(RteEventToTaskMapping):
180
185
  def __init__(self, parent, name):
181
186
  super().__init__(parent, name)
@@ -189,6 +194,7 @@ class RteEventToTaskMappingV3(RteEventToTaskMapping):
189
194
  self.rteEventRef = value
190
195
  return self
191
196
 
197
+
192
198
  class RteEventToTaskMappingV4(RteEventToTaskMapping):
193
199
  def __init__(self, parent, name):
194
200
  super().__init__(parent, name)
@@ -208,6 +214,7 @@ class RteEventToTaskMappingV4(RteEventToTaskMapping):
208
214
  raise ValueError("Unsupported RteEventRef of RteEventToTaskMapping <%s> " % self.name)
209
215
  return self.rteEventRefs[0]
210
216
 
217
+
211
218
  class RteBswEventToTaskMapping(AbstractEventToTaskMapping):
212
219
  def __init__(self, parent, name) -> None:
213
220
  super().__init__(parent, name)
@@ -329,6 +336,7 @@ class RteBswEventToTaskMapping(AbstractEventToTaskMapping):
329
336
  self.rteRipsFlushRoutineRef = value
330
337
  return self
331
338
 
339
+
332
340
  class RteBswEventToTaskMappingV3(RteBswEventToTaskMapping):
333
341
  def __init__(self, parent, name):
334
342
  super().__init__(parent, name)
@@ -343,6 +351,7 @@ class RteBswEventToTaskMappingV3(RteBswEventToTaskMapping):
343
351
  self.rteBswEventRef = value
344
352
  return self
345
353
 
354
+
346
355
  class RteBswEventToTaskMappingV4(RteBswEventToTaskMapping):
347
356
  def __init__(self, parent, name):
348
357
  super().__init__(parent, name)
@@ -361,10 +370,12 @@ class RteBswEventToTaskMappingV4(RteBswEventToTaskMapping):
361
370
  raise ValueError("Unsupported RteEventRef of RteEventToTaskMapping <%s> " % self.name)
362
371
  return self.rteBswEventRefs[0]
363
372
 
364
- class AbstractRteInstance(EcucContainer):
373
+
374
+ class AbstractRteInstance(EcucParamConfContainerDef):
365
375
  def __init__(self, parent, name) -> None:
366
376
  super().__init__(parent, name)
367
377
 
378
+
368
379
  class RteSwComponentInstance(AbstractRteInstance):
369
380
  def __init__(self, parent, name) -> None:
370
381
  super().__init__(parent, name)
@@ -443,6 +454,7 @@ class RteSwComponentInstance(AbstractRteInstance):
443
454
  self.rteNvRamAllocations.append(value)
444
455
  return self
445
456
 
457
+
446
458
  class RteBswModuleInstance(AbstractRteInstance):
447
459
  def __init__(self, parent, name) -> None:
448
460
  super().__init__(parent, name)
@@ -551,25 +563,43 @@ class RteBswModuleInstance(AbstractRteInstance):
551
563
  def setRteMappedToOsApplicationRef(self, value):
552
564
  self.rteMappedToOsApplicationRef = value
553
565
  return self
554
-
566
+
567
+
555
568
  class Rte(Module):
556
569
  def __init__(self, parent) -> None:
557
570
  super().__init__(parent, "Rte")
558
571
 
572
+ self.rteBswModuleInstances = [] # type: List[RteBswModuleInstance]
573
+ self.rteSwComponentInstances = [] # type: List[RteSwComponentInstance]
574
+
575
+ def getRteBswModuleInstance(self, name: str) -> RteBswModuleInstance:
576
+ result = list(filter(lambda a: a.name == name, self.rteBswModuleInstances))
577
+ if len(result) > 0:
578
+ return result[0]
579
+ return None
580
+
559
581
  def getRteBswModuleInstanceList(self) -> List[RteBswModuleInstance]:
560
- return list(sorted(filter(lambda a: isinstance(a, RteBswModuleInstance), self.elements.values()), key= lambda o:o.name))
582
+ return list(sorted(self.rteBswModuleInstances, key=lambda o: o.name))
561
583
 
562
584
  def addRteBswModuleInstance(self, value: RteBswModuleInstance):
563
585
  self.elements[value.getName()] = value
586
+ self.rteBswModuleInstances.append(value)
587
+
588
+ def getRteSwComponentInstance(self, name: str) -> RteSwComponentInstance:
589
+ result = list(filter(lambda a: a.name == name, self.rteSwComponentInstances))
590
+ if len(result) > 0:
591
+ return result[0]
592
+ return None
564
593
 
565
594
  def getRteSwComponentInstanceList(self) -> List[RteSwComponentInstance]:
566
- return list(sorted(filter(lambda a: isinstance(a, RteSwComponentInstance), self.elements.values()), key= lambda o:o.name))
595
+ return list(sorted(self.rteSwComponentInstances, key=lambda o: o.name))
567
596
 
568
597
  def addRteSwComponentInstance(self, value: RteSwComponentInstance):
569
598
  self.elements[value.getName()] = value
599
+ self.rteSwComponentInstances.append(value)
570
600
 
571
601
  def getRteModuleInstanceList(self) -> List[AbstractRteInstance]:
572
- return list(sorted(filter(lambda a: isinstance(a, AbstractRteInstance), self.elements.values()), key= lambda o:o.name))
602
+ return list(sorted(filter(lambda a: isinstance(a, AbstractRteInstance), self.elements.values()), key=lambda o: o.name))
573
603
 
574
604
  def _addToRteEventToOsTasks(self, mapping: AbstractEventToTaskMapping, os_tasks: Dict[str, List[AbstractEventToTaskMapping]]):
575
605
  if isinstance(mapping, RteBswEventToTaskMapping):
@@ -601,4 +631,4 @@ class Rte(Module):
601
631
  else:
602
632
  raise NotImplementedError("Invalid Rte Module Instance <%s>" % type(instance))
603
633
 
604
- return os_tasks
634
+ return os_tasks
@@ -1,4 +1,5 @@
1
1
  from .os_xdm_parser import OsXdmParser
2
2
  from .rte_xdm_parser import RteXdmParser
3
+ from .nvm_xdm_parser import NvMXdmParser
3
4
  from .eb_parser import AbstractEbModelParser
4
- from .pref_xdm_parser import PerfXdmParser
5
+ from .pref_xdm_parser import PerfXdmParser
@@ -86,7 +86,9 @@ class AbstractEbModelParser(metaclass = ABCMeta):
86
86
  tag = parent.find(".//d:ref[@name='%s']" % name, self.nsmap)
87
87
  if tag is None:
88
88
  raise KeyError("XPath d:ref[@name='%s'] is invalid" % name)
89
- return EcucRefType(self.read_ref_raw_value(tag.attrib['value']))
89
+ if 'value' in tag.attrib:
90
+ return EcucRefType(self.read_ref_raw_value(tag.attrib['value']))
91
+ return None
90
92
 
91
93
  def read_optional_ref_value(self, parent: ET.Element, name: str) -> EcucRefType:
92
94
  tag = parent.find(".//d:ref[@name='%s']" % name, self.nsmap)
@@ -0,0 +1,44 @@
1
+ import xml.etree.ElementTree as ET
2
+
3
+ from ..models.nvm_xdm import NvM, NvMBlockDescriptor
4
+ from ..models.eb_doc import EBModel
5
+ from ..parser.eb_parser import AbstractEbModelParser
6
+
7
+
8
+ class NvMXdmParser(AbstractEbModelParser):
9
+ def __init__(self, ) -> None:
10
+ super().__init__()
11
+
12
+ self.nvm = None
13
+
14
+ def parse(self, element: ET.Element, doc: EBModel):
15
+ if self.get_component_name(element) != "NvM":
16
+ raise ValueError("Invalid <%s> xdm file" % "NvM")
17
+
18
+ nvm = doc.getNvM()
19
+
20
+ self.read_version(element, nvm)
21
+
22
+ self.logger.info("Parse NvM ARVersion:<%s> SwVersion:<%s>" % (nvm.getArVersion().getVersion(), nvm.getSwVersion().getVersion()))
23
+
24
+ self.nvm = nvm
25
+
26
+ self.read_nvm_block_descriptors(element, nvm)
27
+
28
+ def read_nvm_block_descriptors(self, element: ET.Element, nvm: NvM):
29
+ for ctr_tag in self.find_ctr_tag_list(element, "NvMBlockDescriptor"):
30
+ nvm_block = NvMBlockDescriptor(nvm, ctr_tag.attrib["name"])
31
+ nvm_block.setNvMBlockCrcType(self.read_optional_value(ctr_tag, "NvMBlockCrcType")) \
32
+ .setNvMBlockEcucPartitionRef(self.read_ref_value(ctr_tag, "NvMBlockEcucPartitionRef")) \
33
+ .setNvMNvramBlockIdentifier(self.read_value(ctr_tag, "NvMNvramBlockIdentifier")) \
34
+ .setNvMRamBlockDataAddress(self.read_optional_value(ctr_tag, "NvMRamBlockDataAddress")) \
35
+ .setNvMRomBlockDataAddress(self.read_optional_value(ctr_tag, "NvMRomBlockDataAddress")) \
36
+ .setNvMRomBlockNum(self.read_value(ctr_tag, "NvMRomBlockNum")) \
37
+ .setNvMBlockManagementType(self.read_value(ctr_tag, "NvMBlockManagementType")) \
38
+ .setNvMNvBlockLength(self.read_value(ctr_tag, "NvMNvBlockLength")) \
39
+ .setNvMNvBlockNum(self.read_value(ctr_tag, "NvMNvBlockNum")) \
40
+ .setNvMSelectBlockForReadAll(self.read_value(ctr_tag, "NvMSelectBlockForReadAll")) \
41
+ .setNvMSelectBlockForWriteAll(self.read_value(ctr_tag, "NvMSelectBlockForWriteAll"))
42
+
43
+ nvm.addNvMBlockDescriptor(nvm_block)
44
+
@@ -1,6 +1,7 @@
1
1
  import xml.etree.ElementTree as ET
2
2
  from ..models.eb_doc import EBModel
3
- from ..models.os_xdm import Os, OsAlarm, OsAlarmActivateTask, OsAlarmCallback, OsAlarmIncrementCounter, OsAlarmSetEvent, OsCounter, OsScheduleTable
3
+ from ..models.os_xdm import Os, OsAlarm, OsAlarmActivateTask, OsAlarmCallback, OsAlarmIncrementCounter, OsAlarmSetEvent, OsCounter, OsResource
4
+ from ..models.os_xdm import OsScheduleTable
4
5
  from ..models.os_xdm import OsTask, OsIsr, OsApplication, OsScheduleTableEventSetting, OsScheduleTableExpiryPoint, OsScheduleTableTaskActivation
5
6
  from ..models.os_xdm import OsScheduleTblAdjustableExpPoint, OsTaskAutostart
6
7
  from ..parser.eb_parser import AbstractEbModelParser
@@ -20,7 +21,7 @@ class OsXdmParser(AbstractEbModelParser):
20
21
 
21
22
  self.read_version(element, os)
22
23
 
23
- self.logger.info("Parse Rte ARVersion:<%s> SwVersion:<%s>" % (os.getArVersion().getVersion(), os.getSwVersion().getVersion()))
24
+ self.logger.info("Parse Os ARVersion:<%s> SwVersion:<%s>" % (os.getArVersion().getVersion(), os.getSwVersion().getVersion()))
24
25
 
25
26
  self.os = os
26
27
 
@@ -30,6 +31,7 @@ class OsXdmParser(AbstractEbModelParser):
30
31
  self.read_os_schedule_tables(element, os)
31
32
  self.read_os_counters(element, os)
32
33
  self.read_os_applications(element, os)
34
+ self.read_os_resources(element, os)
33
35
 
34
36
  def read_os_task_autostart(self, element: ET.Element, os_task: OsTask):
35
37
  ctr_tag = self.find_ctr_tag(element, "OsTaskAutostart")
@@ -184,3 +186,13 @@ class OsXdmParser(AbstractEbModelParser):
184
186
 
185
187
  self.logger.debug("Read OsApplication <%s>" % os_app.getName())
186
188
  os.addOsApplication(os_app)
189
+
190
+ def read_os_resources(self, element: ET.Element, os: Os):
191
+ for ctr_tag in self.find_ctr_tag_list(element, "OsResource"):
192
+ os_res = OsResource(os, ctr_tag.attrib["name"])
193
+ os_res.setOsResourceProperty(self.read_value(ctr_tag, "OsResourceProperty"))
194
+
195
+ for ref in self.read_ref_value_list(ctr_tag, "OsResourceAccessingApplication"):
196
+ os_res.addOsResourceAccessingApplicationRefs(ref)
197
+
198
+ os.addOsResource(os_res)
@@ -1 +1,2 @@
1
- from .excel_reporter.os_xdm import *
1
+ from .excel_reporter.os_xdm import *
2
+ from .excel_reporter.nvm_xdm import *
@@ -1,8 +1,9 @@
1
1
  import logging
2
2
  from openpyxl import Workbook
3
3
  from openpyxl.cell import Cell
4
- from openpyxl.styles import Alignment
5
4
  from openpyxl.worksheet.worksheet import Worksheet
5
+ from openpyxl.styles import Alignment
6
+
6
7
 
7
8
  class ExcelReporter:
8
9
  def __init__(self) -> None:
@@ -15,12 +16,12 @@ class ExcelReporter:
15
16
  for cell in row:
16
17
  if cell.value:
17
18
  alignment = cell.alignment # type: Alignment
18
- if (alignment.wrapText == True):
19
+ if (alignment.wrapText is True):
19
20
  continue
20
21
  dims[cell.column_letter] = max((dims.get(cell.column_letter, 0), len(str(cell.value))))
21
22
 
22
23
  for col, value in dims.items():
23
- #worksheet.column_dimensions[col].width = (value + 2) + 2
24
+ # worksheet.column_dimensions[col].width = (value + 2) + 2
24
25
  worksheet.column_dimensions[col].width = (value + 2)
25
26
 
26
27
  def write_title_row(self, sheet: Worksheet, title_row):
@@ -28,10 +29,10 @@ class ExcelReporter:
28
29
  cell = sheet.cell(row=1, column=idx + 1)
29
30
  cell.value = title_row[idx]
30
31
 
31
- def write_cell(self, sheet, row, column, value, format = None) -> Cell:
32
- cell = sheet.cell(row = row, column=column) # type: Cell
32
+ def write_cell(self, sheet: Worksheet, row: int, column: int, value, format=None) -> Cell:
33
+ cell = sheet.cell(row=row, column=column) # type: Cell
33
34
  cell.value = value
34
- if (format != None):
35
+ if (format is not None):
35
36
  if ('alignment' in format):
36
37
  cell.alignment = format['alignment']
37
38
  if ('number_format' in format):
@@ -40,4 +41,3 @@ class ExcelReporter:
40
41
 
41
42
  def save(self, name: str):
42
43
  self.wb.save(name)
43
-
@@ -0,0 +1,40 @@
1
+ from ...models.eb_doc import EBModel
2
+ from ...reporter.excel_reporter.abstract import ExcelReporter
3
+
4
+
5
+ class NvMXdmXlsWriter(ExcelReporter):
6
+ def __init__(self) -> None:
7
+ super().__init__()
8
+
9
+ def write_nvm_block_descriptors(self, doc: EBModel):
10
+ sheet = self.wb.create_sheet("NvMBlock", 0)
11
+
12
+ title_row = [
13
+ "BlockId", "Name", "NvMBlockEcucPartitionRef", "NvMRamBlockDataAddress", "NvMRomBlockDataAddress",
14
+ "NvMBlockManagementType", "NvMNvBlockLength", "NvMNvBlockNum", "NvMSelectBlockForReadAll", "NvMSelectBlockForWriteAll"]
15
+ self.write_title_row(sheet, title_row)
16
+
17
+ row = 2
18
+ for nvm_block in doc.getNvM().getNvMBlockDescriptorList():
19
+ self.write_cell(sheet, row, 1, nvm_block.getNvMNvramBlockIdentifier())
20
+ self.write_cell(sheet, row, 2, nvm_block.getName())
21
+ self.write_cell(sheet, row, 3, nvm_block.getNvMBlockEcucPartitionRef())
22
+ self.write_cell(sheet, row, 4, nvm_block.getNvMRamBlockDataAddress())
23
+ self.write_cell(sheet, row, 5, nvm_block.getNvMRomBlockDataAddress())
24
+ self.write_cell(sheet, row, 6, nvm_block.getNvMBlockManagementType())
25
+ self.write_cell(sheet, row, 7, nvm_block.getNvMNvBlockLength())
26
+ self.write_cell(sheet, row, 8, nvm_block.getNvMNvBlockNum())
27
+
28
+
29
+ row += 1
30
+
31
+ self.logger.debug("Write NvM Block <%s>" % nvm_block.getName())
32
+
33
+ self.auto_width(sheet)
34
+
35
+ def write(self, filename, doc: EBModel, options):
36
+ self.logger.info("Writing <%s>" % filename)
37
+
38
+ self.write_nvm_block_descriptors(doc)
39
+
40
+ self.save(filename)
@@ -2,6 +2,7 @@ from ...models.rte_xdm import RteBswEventToTaskMapping, RteBswModuleInstance, Rt
2
2
  from ...models.eb_doc import EBModel
3
3
  from .abstract import ExcelReporter
4
4
 
5
+
5
6
  class RteXdmXlsWriter(ExcelReporter):
6
7
  def __init__(self) -> None:
7
8
  super().__init__()
@@ -45,6 +46,7 @@ class RteXdmXlsWriter(ExcelReporter):
45
46
 
46
47
  self.save(filename)
47
48
 
49
+
48
50
  class RteRunnableEntityXlsWriter(ExcelReporter):
49
51
  def __init__(self) -> None:
50
52
  super().__init__()
@@ -57,7 +59,7 @@ class RteRunnableEntityXlsWriter(ExcelReporter):
57
59
 
58
60
  row = 2
59
61
  for os_task, mappings in doc.getRte().getMappedEvents().items():
60
- for mapping in sorted(mappings, key = lambda a:a.getRtePositionInTask()):
62
+ for mapping in sorted(mappings, key=lambda a: a.getRtePositionInTask()):
61
63
  self.write_cell(sheet, row, 1, os_task)
62
64
  if isinstance(mapping, RteBswEventToTaskMapping):
63
65
  self.logger.debug("Write Mapping %s" % mapping.getName())
@@ -68,7 +70,7 @@ class RteRunnableEntityXlsWriter(ExcelReporter):
68
70
  self.write_cell(sheet, row, 7, mapping.getRteBswActivationOffset())
69
71
  elif isinstance(mapping, RteEventToTaskMapping):
70
72
  self.logger.debug("Write Mapping %s" % mapping.getName())
71
- instance = mapping.getRteSwComponentInstance()
73
+ instance = mapping.getRteSwComponentInstance()
72
74
  self.write_cell(sheet, row, 2, mapping.getRteEventRef().getShortName())
73
75
  self.write_cell(sheet, row, 5, instance.getRteSoftwareComponentInstanceRef().getValue())
74
76
  self.write_cell(sheet, row, 6, mapping.getRtePositionInTask())
@@ -84,4 +86,4 @@ class RteRunnableEntityXlsWriter(ExcelReporter):
84
86
  self.logger.info("Writing <%s>" % filename)
85
87
  self.write_mapped_events(doc)
86
88
 
87
- self.save(filename)
89
+ self.save(filename)
@@ -1,12 +1,12 @@
1
1
 
2
2
  from ...models.eb_doc import EBModel
3
- from ...models.abstract import EcucContainer, EcucObject
3
+ from ...models.abstract import EcucParamConfContainerDef, EcucObject
4
4
 
5
5
  class TestEcucContainer:
6
6
 
7
7
  def test_create_container(self):
8
8
  document = EBModel.getInstance()
9
- os_container = EcucContainer(document, "Os")
9
+ os_container = EcucParamConfContainerDef(document, "Os")
10
10
 
11
11
  assert (os_container.getFullName() == "/Os")
12
12
  assert (os_container.getParent() == document)
@@ -18,5 +18,5 @@ class TestEcucContainer:
18
18
  assert (container.getParent() == document)
19
19
  assert (container.getName() == "Os")
20
20
 
21
- assert(isinstance(container, EcucContainer))
21
+ assert(isinstance(container, EcucParamConfContainerDef))
22
22
  assert(isinstance(container, EcucObject))