powertrain-build 1.13.1__py3-none-any.whl → 1.13.3.dev3__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 (132) hide show
  1. powertrain_build/__init__.py +40 -40
  2. powertrain_build/__main__.py +6 -6
  3. powertrain_build/a2l.py +582 -582
  4. powertrain_build/a2l_merge.py +650 -650
  5. powertrain_build/a2l_templates.py +717 -717
  6. powertrain_build/build.py +985 -985
  7. powertrain_build/build_defs.py +309 -309
  8. powertrain_build/build_proj_config.py +690 -690
  9. powertrain_build/check_interface.py +575 -575
  10. powertrain_build/cli.py +141 -141
  11. powertrain_build/config.py +542 -542
  12. powertrain_build/core.py +395 -395
  13. powertrain_build/core_dummy.py +343 -343
  14. powertrain_build/create_conversion_table.py +73 -73
  15. powertrain_build/dids.py +916 -916
  16. powertrain_build/dummy.py +157 -157
  17. powertrain_build/dummy_spm.py +252 -252
  18. powertrain_build/environmentcheck.py +52 -52
  19. powertrain_build/ext_dbg.py +255 -255
  20. powertrain_build/ext_var.py +327 -327
  21. powertrain_build/feature_configs.py +301 -301
  22. powertrain_build/gen_allsysteminfo.py +227 -227
  23. powertrain_build/gen_label_split.py +449 -449
  24. powertrain_build/handcode_replacer.py +124 -124
  25. powertrain_build/html_report.py +133 -133
  26. powertrain_build/interface/__init__.py +4 -4
  27. powertrain_build/interface/application.py +511 -511
  28. powertrain_build/interface/base.py +500 -500
  29. powertrain_build/interface/csp_api.py +490 -490
  30. powertrain_build/interface/device_proxy.py +677 -677
  31. powertrain_build/interface/ems.py +67 -67
  32. powertrain_build/interface/export_global_vars.py +121 -121
  33. powertrain_build/interface/generate_adapters.py +132 -132
  34. powertrain_build/interface/generate_hi_interface.py +87 -87
  35. powertrain_build/interface/generate_service.py +69 -69
  36. powertrain_build/interface/generate_wrappers.py +147 -147
  37. powertrain_build/interface/generation_utils.py +142 -142
  38. powertrain_build/interface/hal.py +194 -194
  39. powertrain_build/interface/model_yaml_verification.py +348 -348
  40. powertrain_build/interface/service.py +296 -296
  41. powertrain_build/interface/simulink.py +249 -249
  42. powertrain_build/interface/update_call_sources.py +180 -180
  43. powertrain_build/interface/update_model_yaml.py +186 -186
  44. powertrain_build/interface/zone_controller.py +362 -362
  45. powertrain_build/lib/__init__.py +4 -4
  46. powertrain_build/lib/helper_functions.py +127 -127
  47. powertrain_build/lib/logger.py +55 -55
  48. powertrain_build/matlab_scripts/CodeGen/BuildAutomationPyBuild.m +78 -78
  49. powertrain_build/matlab_scripts/CodeGen/Generate_A2L.m +154 -154
  50. powertrain_build/matlab_scripts/CodeGen/generateTLUnit.m +239 -239
  51. powertrain_build/matlab_scripts/CodeGen/getAsilClassification.m +28 -28
  52. powertrain_build/matlab_scripts/CodeGen/modelConfiguredForTL.m +28 -28
  53. powertrain_build/matlab_scripts/CodeGen/moveDefOutports.m +88 -88
  54. powertrain_build/matlab_scripts/CodeGen/parseCalMeasData.m +410 -410
  55. powertrain_build/matlab_scripts/CodeGen/parseCoreIdentifiers.m +139 -139
  56. powertrain_build/matlab_scripts/CodeGen/parseDIDs.m +141 -141
  57. powertrain_build/matlab_scripts/CodeGen/parseInPorts.m +106 -106
  58. powertrain_build/matlab_scripts/CodeGen/parseIncludeConfigs.m +25 -25
  59. powertrain_build/matlab_scripts/CodeGen/parseModelInfo.m +38 -38
  60. powertrain_build/matlab_scripts/CodeGen/parseNVM.m +81 -81
  61. powertrain_build/matlab_scripts/CodeGen/parseOutPorts.m +120 -120
  62. powertrain_build/matlab_scripts/CodeGen/parsePreProcBlks.m +23 -23
  63. powertrain_build/matlab_scripts/CodeGen/struct2JSON.m +128 -128
  64. powertrain_build/matlab_scripts/CodeGen/updateCodeSwConfig.m +31 -31
  65. powertrain_build/matlab_scripts/Init_PyBuild.m +91 -91
  66. powertrain_build/matlab_scripts/__init__.py +2 -2
  67. powertrain_build/matlab_scripts/helperFunctions/Get_Full_Name.m +46 -46
  68. powertrain_build/matlab_scripts/helperFunctions/Get_SrcLines.m +12 -12
  69. powertrain_build/matlab_scripts/helperFunctions/Init_Models.m +78 -78
  70. powertrain_build/matlab_scripts/helperFunctions/Init_Projects.m +67 -67
  71. powertrain_build/matlab_scripts/helperFunctions/Read_Units.m +34 -34
  72. powertrain_build/matlab_scripts/helperFunctions/SetProjectTimeSamples.m +26 -26
  73. powertrain_build/matlab_scripts/helperFunctions/Strip_Suffix.m +16 -16
  74. powertrain_build/matlab_scripts/helperFunctions/followLink.m +118 -118
  75. powertrain_build/matlab_scripts/helperFunctions/getCodeSwitches.m +50 -50
  76. powertrain_build/matlab_scripts/helperFunctions/getConsumerBlocks.m +30 -30
  77. powertrain_build/matlab_scripts/helperFunctions/getDefBlock.m +39 -39
  78. powertrain_build/matlab_scripts/helperFunctions/getDefOutport.m +58 -58
  79. powertrain_build/matlab_scripts/helperFunctions/getDstBlocks.m +19 -19
  80. powertrain_build/matlab_scripts/helperFunctions/getDstLines.m +13 -13
  81. powertrain_build/matlab_scripts/helperFunctions/getInterfaceSignals.m +37 -37
  82. powertrain_build/matlab_scripts/helperFunctions/getName.m +37 -37
  83. powertrain_build/matlab_scripts/helperFunctions/getPath.m +6 -6
  84. powertrain_build/matlab_scripts/helperFunctions/getProperValue.m +21 -21
  85. powertrain_build/matlab_scripts/helperFunctions/getSrcBlocks.m +19 -19
  86. powertrain_build/matlab_scripts/helperFunctions/getSrcLines.m +13 -13
  87. powertrain_build/matlab_scripts/helperFunctions/loadLibraries.m +10 -10
  88. powertrain_build/matlab_scripts/helperFunctions/loadjson.m +6 -6
  89. powertrain_build/matlab_scripts/helperFunctions/modifyEnumStructField.m +21 -21
  90. powertrain_build/matlab_scripts/helperFunctions/removeConfigDuplicates.m +31 -31
  91. powertrain_build/matlab_scripts/helperFunctions/sortSystemByClass.m +26 -26
  92. powertrain_build/matlab_scripts/helperFunctions/tl_getfast.m +89 -89
  93. powertrain_build/matlab_scripts/helperFunctions/topLevelSystem.m +20 -20
  94. powertrain_build/matlab_scripts/helperFunctions/updateModels.m +131 -131
  95. powertrain_build/memory_section.py +224 -224
  96. powertrain_build/nvm_def.py +729 -729
  97. powertrain_build/problem_logger.py +86 -86
  98. powertrain_build/pt_matlab.py +430 -430
  99. powertrain_build/pt_win32.py +144 -144
  100. powertrain_build/replace_compu_tab_ref.py +105 -105
  101. powertrain_build/rte_dummy.py +254 -254
  102. powertrain_build/sched_funcs.py +209 -207
  103. powertrain_build/signal.py +7 -7
  104. powertrain_build/signal_if_html_rep.py +221 -221
  105. powertrain_build/signal_if_html_rep_all.py +302 -302
  106. powertrain_build/signal_incons_html_rep.py +180 -180
  107. powertrain_build/signal_incons_html_rep_all.py +366 -366
  108. powertrain_build/signal_incons_html_rep_base.py +168 -168
  109. powertrain_build/signal_inconsistency_check.py +641 -641
  110. powertrain_build/signal_interfaces.py +864 -864
  111. powertrain_build/templates/Index_SigCheck_All.html +22 -22
  112. powertrain_build/templates/Index_SigIf_All.html +19 -19
  113. powertrain_build/types.py +218 -218
  114. powertrain_build/unit_configs.py +419 -419
  115. powertrain_build/user_defined_types.py +660 -660
  116. powertrain_build/versioncheck.py +66 -66
  117. powertrain_build/wrapper.py +512 -512
  118. powertrain_build/xlrd_csv.py +87 -87
  119. powertrain_build/zone_controller/__init__.py +4 -4
  120. powertrain_build/zone_controller/calibration.py +176 -176
  121. powertrain_build/zone_controller/composition_yaml.py +880 -878
  122. {powertrain_build-1.13.1.dist-info → powertrain_build-1.13.3.dev3.dist-info}/METADATA +100 -100
  123. powertrain_build-1.13.3.dev3.dist-info/RECORD +130 -0
  124. {powertrain_build-1.13.1.dist-info → powertrain_build-1.13.3.dev3.dist-info}/WHEEL +1 -1
  125. {powertrain_build-1.13.1.dist-info → powertrain_build-1.13.3.dev3.dist-info}/licenses/LICENSE +202 -202
  126. powertrain_build-1.13.3.dev3.dist-info/pbr.json +1 -0
  127. powertrain_build-1.13.1.dist-info/RECORD +0 -130
  128. powertrain_build-1.13.1.dist-info/pbr.json +0 -1
  129. {powertrain_build-1.13.1.dist-info → powertrain_build-1.13.3.dev3.dist-info}/entry_points.txt +0 -0
  130. {powertrain_build-1.13.1.dist-info → powertrain_build-1.13.3.dev3.dist-info}/licenses/AUTHORS +0 -0
  131. {powertrain_build-1.13.1.dist-info → powertrain_build-1.13.3.dev3.dist-info}/licenses/NOTICE +0 -0
  132. {powertrain_build-1.13.1.dist-info → powertrain_build-1.13.3.dev3.dist-info}/top_level.txt +0 -0
@@ -1,343 +1,343 @@
1
- # Copyright 2024 Volvo Car Corporation
2
- # Licensed under Apache 2.0.
3
-
4
- # -*- coding: utf-8 -*-
5
- """Module containing classes for generating core API dummy code for Bosch and Denso suppliers.
6
-
7
- These files are needed for building test SW before the supplier has
8
- updated the core with all the needed core id definitions.
9
- """
10
-
11
- import os
12
-
13
- from powertrain_build import build_defs
14
- from powertrain_build.problem_logger import ProblemLogger
15
- from powertrain_build.types import get_ec_type
16
- from powertrain_build.unit_configs import CodeGenerators
17
-
18
-
19
- class CoreDummy(ProblemLogger):
20
- """A class for core API dummy file generation."""
21
-
22
- def __init__(self, core_cfg, unit_cfg):
23
- """Initialize with core API configuration.
24
-
25
- Args:
26
- core_cfg (Core): Configuration object
27
- """
28
- super().__init__()
29
- self._core_cfg = core_cfg
30
- self._unit_cfg = unit_cfg
31
- self._uint16_type = self._get_uint_16_type()
32
- self.fh_c = None
33
- self.fh_h = None
34
-
35
- def _get_uint_16_type(self):
36
- if CodeGenerators.target_link in self._unit_cfg.code_generators:
37
- return 'UInt16'
38
- return get_ec_type('UInt16')
39
-
40
- def _gen_rb_header(self, file_name):
41
- """Generate the RB start of the c and h files for the dummy core definition files.
42
-
43
- Args:
44
- file_name : The RB header file
45
- """
46
- self.fh_c.write('/* Autogenerated core id dummy file */\n\n')
47
- self.fh_c.write(f'#include "{file_name}"\n\n')
48
- self.fh_c.write(f'#include "{build_defs.CVC_CODE_START}"\n\n')
49
- self.fh_c.write('#ifndef VcEvDummy_ID\n')
50
- self.fh_c.write(' #define VcEvDummy_ID 1\n')
51
- self.fh_c.write('#endif /* VcEvDummy_ID */\n')
52
- self.fh_c.write('#ifndef VcEvDummy_DEBMODE\n')
53
- self.fh_c.write(' #define VcEvDummy_DEBMODE 0\n')
54
- self.fh_c.write('#endif /* VcEvDummy_DEBMODE */\n')
55
- self.fh_c.write('#ifndef VcFiDummy_ID\n')
56
- self.fh_c.write(' #define VcFiDummy_ID 1\n')
57
- self.fh_c.write('#endif /* VcFiDummy_ID */\n')
58
- self.fh_c.write('#ifndef Vc06Dummy_ID\n')
59
- self.fh_c.write(' #define Vc06Dummy_ID 1\n')
60
- self.fh_c.write('#endif /* Vc06Dummy_ID */\n')
61
- self.fh_c.write('#ifndef Vc09Dummy_ID\n')
62
- self.fh_c.write(' #define Vc09Dummy_ID 1\n')
63
- self.fh_c.write('#endif /* Vc09Dummy_ID */\n')
64
- self.fh_c.write('#ifndef VcRvDummy_ID\n')
65
- self.fh_c.write(' #define VcRvDummy_ID 1\n')
66
- self.fh_c.write('#endif /* VcRvDummy_ID */\n\n')
67
-
68
- def_name = file_name.replace('.', '_').upper()
69
- self.fh_h.write('/* Autogenerated core id dummy file */\n\n')
70
- self.fh_h.write(f'#ifndef {def_name}\n')
71
- self.fh_h.write(f'#define {def_name}\n')
72
- self.fh_h.write('#include "vcc_rb_core.h"\n')
73
- self.fh_h.write(self._unit_cfg.base_types_headers)
74
-
75
- def _gen_rb_event_dummies(self):
76
- """Generate RB dummy event declarations."""
77
- for id_, comment in self._core_cfg.get('EventIDs', {}).items():
78
- self.fh_h.write(f'#ifndef {id_}\n')
79
- self.fh_h.write(f' /* {comment} */\n')
80
- self.fh_h.write(f' extern const DSM_DFCType DFC_{id_} ;\n')
81
- self.fh_h.write(f' #define {id_} (((DFC_{id_}.debmode) << 12u) | '
82
- f'(DFC_{id_}.id))\n')
83
- self.fh_h.write(f' #define {id_}_Dummy\n')
84
- self.fh_h.write('#endif\n\n')
85
-
86
- self.fh_c.write(f'#ifdef {id_}_Dummy\n')
87
- self.fh_c.write(f' /* {comment} */\n')
88
- self.fh_c.write(f' const DSM_DFCType DFC_{id_} = '
89
- '{VcEvDummy_ID, VcEvDummy_DEBMODE};\n')
90
- self.fh_c.write(f' #warning "CoreID: {id_} is not defined in '
91
- 'the supplier SW"\n')
92
- self.fh_c.write('#endif\n\n')
93
-
94
- def _gen_rb_fid_dummies(self):
95
- """Generate RB dummy function id declarations."""
96
- for id_, comment in self._core_cfg.get('FunctionIDs', {}).items():
97
- self.fh_h.write(f'#ifndef {id_}\n')
98
- self.fh_h.write(f' /* {comment} */\n')
99
- self.fh_h.write(f' extern const DSM_FIdType FId_{id_} ;\n')
100
- self.fh_h.write(f' #define {id_} (FId_{id_}.id)\n')
101
- self.fh_h.write(f' #define {id_}_Dummy\n')
102
- self.fh_h.write('#endif\n\n')
103
-
104
- self.fh_c.write(f'#ifdef {id_}_Dummy\n')
105
- self.fh_c.write(f' /* {comment} */\n')
106
- self.fh_c.write(f' const DSM_FIdType FId_{id_} = {{VcFiDummy_ID}};\n')
107
- self.fh_c.write(f' #warning "CoreID: {id_} is not defined in the supplier SW"\n')
108
- self.fh_c.write('#endif\n\n')
109
-
110
- def _gen_rb_iumpr_dummies(self):
111
- """Generate RB dummy IUMPR declarations."""
112
- for id_, comment in self._core_cfg.get('IUMPR', {}).items():
113
- self.fh_h.write(f'#ifndef {id_}\n')
114
- self.fh_h.write(f' /* {comment} */\n')
115
- self.fh_h.write(f' extern const DSM_FIdType FId_{id_} ;\n')
116
- self.fh_h.write(f' #define {id_} (FId_{id_}.id)\n')
117
- self.fh_h.write(f' #define {id_}_Dummy\n')
118
- self.fh_h.write('#endif\n\n')
119
-
120
- self.fh_c.write(f'#ifdef {id_}_Dummy\n')
121
- self.fh_c.write(f' /* {comment} */\n')
122
- self.fh_c.write(f' const DSM_FIdType FId_{id_} = {{Vc09Dummy_ID}};\n')
123
- self.fh_c.write(f' #warning "CoreID: {id_} is not defined in the supplier SW"\n')
124
- self.fh_c.write('#endif\n\n')
125
-
126
- def _gen_rb_mode06_dummies(self):
127
- """Generate RB dummy mode$06 declarations."""
128
- for id_, comment in self._core_cfg.get('Mode$06', {}).items():
129
- self.fh_h.write(f'#ifndef {id_}\n')
130
- self.fh_h.write(f' /* {comment[0]}, UAS {comment[1]} */\n')
131
- self.fh_h.write(f' extern const DSM_DTRType DTR_{id_};\n')
132
- self.fh_h.write(f' #define {id_} (DTR_{id_}.id)\n')
133
- self.fh_h.write(f' #define {id_}_Dummy\n')
134
- self.fh_h.write('#endif\n\n')
135
-
136
- self.fh_c.write(f'#ifdef {id_}_Dummy\n')
137
- self.fh_c.write(f' /* {comment[0]}, UAS {comment[1]} */\n')
138
- self.fh_c.write(f' const DSM_DTRType DTR_{id_} = {{Vc06Dummy_ID}};\n')
139
- self.fh_c.write(f'#warning "CoreID: {id_} is not defined in the supplier SW"\n')
140
- self.fh_c.write('#endif\n\n')
141
-
142
- def _gen_rb_rnk_dummies(self):
143
- """Generate RB dummy ranking declarations."""
144
- for id_, comment in self._core_cfg.get('Ranking', {}).items():
145
- self.fh_h.write(f'#ifndef {id_}\n')
146
- self.fh_h.write(f' /* {comment} */\n')
147
- self.fh_h.write(f' extern const {self._uint16_type} DSMAppl_RnkValStorg_RnkId_{id_};\n')
148
- self.fh_h.write(f' #define {id_} DSMAppl_RnkValStorg_RnkId_{id_}\n')
149
- self.fh_h.write(f' #define {id_}_Dummy\n')
150
- self.fh_h.write('#endif\n\n')
151
-
152
- self.fh_c.write(f'#ifdef {id_}_Dummy\n')
153
- self.fh_c.write(f' /* {comment} */\n')
154
- self.fh_c.write(f' const {self._uint16_type} DSMAppl_RnkValStorg_RnkId_{id_} = '
155
- 'VcRvDummy_ID;\n')
156
- self.fh_c.write(f' #warning "CoreID: {id_} is not defined in the supplier SW"\n')
157
- self.fh_c.write('#endif\n\n')
158
-
159
- def _gen_rb_end(self, file_name):
160
- """Generate RB footer of c and h files for dummy core definition files."""
161
- def_name = file_name.replace('.', '_').upper()
162
-
163
- self.fh_h.write(f'#endif /* {def_name} */\n')
164
- self.fh_h.write('/*-------------------------------------'
165
- '---------------------------------------*\\\n')
166
- self.fh_h.write(' END OF FILE\n')
167
- self.fh_h.write('\\*-------------------------------------'
168
- '---------------------------------------*/\n')
169
-
170
- self.fh_c.write(f'#include "{build_defs.CVC_CODE_END}"\n')
171
- self.fh_c.write('/*--------------------------------------'
172
- '--------------------------------------*\\\n')
173
- self.fh_c.write(' END OF FILE\n')
174
- self.fh_c.write('\\*--------------------------------------'
175
- '--------------------------------------*/\n')
176
-
177
- def generate_rb_core_dummy_files(self, file_name):
178
- """Generate core API dummy files for Bosch projects."""
179
- cname = file_name + '.c'
180
- hname = file_name + '.h'
181
- with open(cname, 'w', encoding="utf-8") as self.fh_c:
182
- with open(hname, 'w', encoding="utf-8") as self.fh_h:
183
- _, f_name = os.path.split(hname)
184
- self._gen_rb_header(f_name)
185
- self._gen_rb_event_dummies()
186
- self._gen_rb_fid_dummies()
187
- self._gen_rb_iumpr_dummies()
188
- self._gen_rb_mode06_dummies()
189
- self._gen_rb_rnk_dummies()
190
- self._gen_rb_end(f_name)
191
-
192
- def _gen_dg2_header(self, file_name):
193
- """Generate Denso Gen2/3 header of c and h files for dummy core definition files."""
194
- self.fh_c.write('/* Autogenerated core id dummy file */\n\n')
195
- self.fh_c.write(f'#include "{file_name}"\n')
196
- self.fh_c.write(self._unit_cfg.base_types_headers)
197
- self.fh_c.write(f'#include "{build_defs.CVC_CODE_START}"\n\n')
198
- self.fh_c.write('#define Vc06Undef 1\n')
199
- self.fh_c.write('#define Vc09Undef 1\n')
200
- self.fh_c.write('#define VcRvUndef 1\n\n')
201
- self.fh_h.write('/* Autogenerated core id dummy file */\n\n')
202
- def_name = file_name.replace('.', '_').upper()
203
- self.fh_h.write(f'#ifndef {def_name}\n')
204
- self.fh_h.write(f'#define {def_name}\n')
205
- self.fh_h.write('\n#include "VcCoreSupplierAbstraction.h"\n\n')
206
- self.fh_h.write('/* Check if denso make env. has defined the AUTOSAR declarations\n')
207
- self.fh_h.write(' if not, do dummy declaration to be able to build a dummy I/F in\n')
208
- self.fh_h.write(' an old make environment */\n')
209
- self.fh_h.write('#ifndef FUNC\n')
210
- self.fh_h.write(' #define FUNC(rettype, memclass) rettype /* from Compiler.h */\n')
211
- self.fh_h.write(' #define P2VAR(ptrtype, memclass, ptrclass) ptrtype * '
212
- '/* from Compiler.h */\n')
213
- self.fh_h.write(' typedef unsigned char Std_ReturnType; /* from Std_Types.h */\n')
214
- self.fh_h.write(' typedef unsigned char Dem_EventStatusType;\n')
215
- self.fh_h.write(' typedef unsigned char boolean;\n')
216
- self.fh_h.write(' #define AUTOMATIC\n')
217
- self.fh_h.write(' #define RTE_APPL_DATA\n')
218
- self.fh_h.write(' #define RTE_CODE /* from Compiler_cfg.h */\n')
219
- self.fh_h.write(f'#endif /* {def_name} */\n\n')
220
- self.fh_h.write(f'#include "{build_defs.CVC_CODE_START}"\n')
221
-
222
- def _gen_dg2_event_dummies(self):
223
- """Generate the Denso Gen2+ dummy event declarations."""
224
- for id_, comment in self._core_cfg.get('EventIDs', {}).items():
225
- # Compare with core0/app/OBDFW/bdcore/Rte_Diag.h
226
- self.fh_h.write(f'#ifndef Rte_Call_Event_{id_}_SetEventStatus\n')
227
- self.fh_h.write(f' /* {comment} */\n')
228
- self.fh_h.write(' extern FUNC(Std_ReturnType, RTE_CODE) '
229
- f'Rte_Call_Diag_Event_{id_}_SetEventStatus '
230
- '(Dem_EventStatusType EventStatus);\n')
231
- self.fh_h.write('#endif\n\n')
232
-
233
- self.fh_c.write(f'#ifndef Rte_Call_Event_{id_}_SetEventStatus\n')
234
- self.fh_c.write(f' /* {comment} */\n')
235
- self.fh_c.write(' FUNC(Std_ReturnType, RTE_CODE) '
236
- f'Rte_Call_Diag_Event_{id_}_SetEventStatus '
237
- '(Dem_EventStatusType EventStatus) { return 0;}\n')
238
- self.fh_c.write('#endif\n\n')
239
- # Generate Dem_SetEventDisabled dummmies
240
- self.fh_h.write(f'#ifndef Rte_Call_Event_{id_}_SetEventDisabled\n')
241
- self.fh_h.write(f' /* {comment} */\n')
242
- self.fh_h.write(' extern FUNC(Std_ReturnType, RTE_CODE) '
243
- f'Rte_Call_Diag_Event_{id_}_SetEventDisabled (void);\n')
244
- self.fh_h.write('#endif\n\n')
245
-
246
- self.fh_c.write(f'#ifndef Rte_Call_Event_{id_}_SetEventDisabled\n')
247
- self.fh_c.write(f' /* {comment} */\n')
248
- self.fh_c.write(' FUNC(Std_ReturnType, RTE_CODE) '
249
- f'Rte_Call_Diag_Event_{id_}_SetEventDisabled '
250
- '(void) { return 0;}\n')
251
- self.fh_c.write('#endif\n\n')
252
-
253
- def _gen_dg2_fid_dummies(self):
254
- """Generate the Denso Gen2+ dummy function id declarations."""
255
- for id_, comment in self._core_cfg.get('FunctionIDs', {}).items():
256
- self.fh_h.write(f'#ifndef Rte_Call_FI_{id_}_GetFunctionPermission\n')
257
- self.fh_h.write(f' /* {comment} */\n')
258
- self.fh_h.write(' extern FUNC(Std_ReturnType, RTE_CODE) '
259
- f'Rte_Call_Diag_FI_{id_}_GetFunctionPermission '
260
- '(P2VAR(boolean, AUTOMATIC, RTE_APPL_DATA) Permission);\n')
261
- self.fh_h.write('#endif\n\n')
262
-
263
- self.fh_c.write(f'#ifndef Rte_Call_FI_{id_}_GetFunctionPermission\n')
264
- self.fh_c.write(f' /* {comment} */\n')
265
- self.fh_c.write(' FUNC(Std_ReturnType, RTE_CODE) '
266
- f'Rte_Call_Diag_FI_{id_}_GetFunctionPermission '
267
- '(P2VAR(boolean, AUTOMATIC, RTE_APPL_DATA) Permission) '
268
- '{ *Permission = 1; return 0;}\n')
269
- self.fh_c.write('#endif\n\n')
270
-
271
- def _gen_dg2_iumpr_dummies(self):
272
- """Generate the Denso Gen2+ dummy IUMPR declarations."""
273
- for id_, comment in self._core_cfg.get('IUMPR', {}).items():
274
- self.fh_h.write(f'#ifndef IUMID_{id_}\n')
275
- self.fh_h.write(f' /* {comment} */\n')
276
- self.fh_h.write(f' #define IUMID_{id_} cIUMID_{id_}\n')
277
- self.fh_h.write(f' #define {id_}_DUMMY\n')
278
- self.fh_h.write(f' extern const {self._uint16_type} cIUMID_{id_};\n')
279
- self.fh_h.write('#endif\n\n')
280
- self.fh_c.write(f'#ifdef {id_}_DUMMY\n')
281
- self.fh_c.write(f' /* {comment} */\n')
282
- self.fh_c.write(f' const {self._uint16_type} cIUMID_{id_} = Vc09Undef;\n')
283
- self.fh_c.write('#endif\n\n')
284
-
285
- def _gen_dg2_mode06_dummies(self):
286
- """Generate the Denso Gen2+ dummy mode$06 declarations."""
287
- for id_, comment in self._core_cfg.get('Mode$06', {}).items():
288
- self.fh_h.write(f'#ifndef TR_{id_}\n')
289
- self.fh_h.write(f' /* {comment[0]}, UAS {comment[1]} */\n')
290
- self.fh_h.write(f' #define TR_{id_} cTR_{id_}\n')
291
- self.fh_h.write(f' #define {id_}_DUMMY\n')
292
- self.fh_h.write(f' extern const {self._uint16_type} cTR_{id_};\n')
293
- self.fh_h.write('#endif\n\n')
294
- self.fh_c.write(f'#ifdef {id_}_DUMMY\n')
295
- self.fh_c.write(f' /* {comment[0]}, UAS {comment[1]} */\n')
296
- self.fh_c.write(f' const {self._uint16_type} cTR_{id_} = Vc06Undef;\n')
297
- self.fh_c.write('#endif\n\n')
298
-
299
- def _gen_dg2_rnk_dummies(self):
300
- """Generate the Denso Gen2+ dummy ranking declarations."""
301
- for id_, comment in self._core_cfg.get('Ranking', {}).items():
302
- self.fh_h.write(f'#ifndef RVID_{id_}\n')
303
- self.fh_h.write(f' /* {comment} */\n')
304
- self.fh_h.write(f' #define RVID_{id_} cRVID_{id_}\n')
305
- self.fh_h.write(f' #define {id_}_DUMMY\n')
306
- self.fh_h.write(f' extern const {self._uint16_type} cRVID_{id_};\n')
307
- self.fh_h.write('#endif\n\n')
308
- self.fh_c.write(f'#ifdef {id_}_DUMMY\n')
309
- self.fh_c.write(f' /* {comment} */\n')
310
- self.fh_c.write(f' const {self._uint16_type} cRVID_{id_} = VcRvUndef;\n')
311
- self.fh_c.write('#endif\n\n')
312
-
313
- def _gen_dg2_end(self, file_name):
314
- """Generate Denso Gen2+ footer of c and h files for dummy core definition files."""
315
- def_name = file_name.replace('.', '_').upper()
316
- self.fh_h.write(f'#include "{build_defs.CVC_CODE_END}"\n')
317
- self.fh_h.write(f'#endif /* {def_name} */\n')
318
- self.fh_h.write('/*------------------------------------------'
319
- '----------------------------------*\\\n')
320
- self.fh_h.write(' END OF FILE\n')
321
- self.fh_h.write('\\*-----------------------------------------'
322
- '-----------------------------------*/\n')
323
- self.fh_c.write(f'#include "{build_defs.CVC_CODE_END}"\n')
324
- self.fh_c.write('/*------------------------------------------'
325
- '----------------------------------*\\\n')
326
- self.fh_c.write(' END OF FILE\n')
327
- self.fh_c.write('\\*-----------------------------------------'
328
- '-----------------------------------*/\n')
329
-
330
- def generate_dg2_core_dummy_files(self, file_name):
331
- """Generate the core API dummy files for Denso gen2+ projects."""
332
- cname = file_name + '.c'
333
- hname = file_name + '.h'
334
- with open(cname, 'w', encoding="utf-8") as self.fh_c:
335
- with open(hname, 'w', encoding="utf-8") as self.fh_h:
336
- _, f_name = os.path.split(hname)
337
- self._gen_dg2_header(f_name)
338
- self._gen_dg2_event_dummies()
339
- self._gen_dg2_fid_dummies()
340
- self._gen_dg2_iumpr_dummies()
341
- self._gen_dg2_mode06_dummies()
342
- self._gen_dg2_rnk_dummies()
343
- self._gen_dg2_end(f_name)
1
+ # Copyright 2024 Volvo Car Corporation
2
+ # Licensed under Apache 2.0.
3
+
4
+ # -*- coding: utf-8 -*-
5
+ """Module containing classes for generating core API dummy code for Bosch and Denso suppliers.
6
+
7
+ These files are needed for building test SW before the supplier has
8
+ updated the core with all the needed core id definitions.
9
+ """
10
+
11
+ import os
12
+
13
+ from powertrain_build import build_defs
14
+ from powertrain_build.problem_logger import ProblemLogger
15
+ from powertrain_build.types import get_ec_type
16
+ from powertrain_build.unit_configs import CodeGenerators
17
+
18
+
19
+ class CoreDummy(ProblemLogger):
20
+ """A class for core API dummy file generation."""
21
+
22
+ def __init__(self, core_cfg, unit_cfg):
23
+ """Initialize with core API configuration.
24
+
25
+ Args:
26
+ core_cfg (Core): Configuration object
27
+ """
28
+ super().__init__()
29
+ self._core_cfg = core_cfg
30
+ self._unit_cfg = unit_cfg
31
+ self._uint16_type = self._get_uint_16_type()
32
+ self.fh_c = None
33
+ self.fh_h = None
34
+
35
+ def _get_uint_16_type(self):
36
+ if CodeGenerators.target_link in self._unit_cfg.code_generators:
37
+ return 'UInt16'
38
+ return get_ec_type('UInt16')
39
+
40
+ def _gen_rb_header(self, file_name):
41
+ """Generate the RB start of the c and h files for the dummy core definition files.
42
+
43
+ Args:
44
+ file_name : The RB header file
45
+ """
46
+ self.fh_c.write('/* Autogenerated core id dummy file */\n\n')
47
+ self.fh_c.write(f'#include "{file_name}"\n\n')
48
+ self.fh_c.write(f'#include "{build_defs.CVC_CODE_START}"\n\n')
49
+ self.fh_c.write('#ifndef VcEvDummy_ID\n')
50
+ self.fh_c.write(' #define VcEvDummy_ID 1\n')
51
+ self.fh_c.write('#endif /* VcEvDummy_ID */\n')
52
+ self.fh_c.write('#ifndef VcEvDummy_DEBMODE\n')
53
+ self.fh_c.write(' #define VcEvDummy_DEBMODE 0\n')
54
+ self.fh_c.write('#endif /* VcEvDummy_DEBMODE */\n')
55
+ self.fh_c.write('#ifndef VcFiDummy_ID\n')
56
+ self.fh_c.write(' #define VcFiDummy_ID 1\n')
57
+ self.fh_c.write('#endif /* VcFiDummy_ID */\n')
58
+ self.fh_c.write('#ifndef Vc06Dummy_ID\n')
59
+ self.fh_c.write(' #define Vc06Dummy_ID 1\n')
60
+ self.fh_c.write('#endif /* Vc06Dummy_ID */\n')
61
+ self.fh_c.write('#ifndef Vc09Dummy_ID\n')
62
+ self.fh_c.write(' #define Vc09Dummy_ID 1\n')
63
+ self.fh_c.write('#endif /* Vc09Dummy_ID */\n')
64
+ self.fh_c.write('#ifndef VcRvDummy_ID\n')
65
+ self.fh_c.write(' #define VcRvDummy_ID 1\n')
66
+ self.fh_c.write('#endif /* VcRvDummy_ID */\n\n')
67
+
68
+ def_name = file_name.replace('.', '_').upper()
69
+ self.fh_h.write('/* Autogenerated core id dummy file */\n\n')
70
+ self.fh_h.write(f'#ifndef {def_name}\n')
71
+ self.fh_h.write(f'#define {def_name}\n')
72
+ self.fh_h.write('#include "vcc_rb_core.h"\n')
73
+ self.fh_h.write(self._unit_cfg.base_types_headers)
74
+
75
+ def _gen_rb_event_dummies(self):
76
+ """Generate RB dummy event declarations."""
77
+ for id_, comment in self._core_cfg.get('EventIDs', {}).items():
78
+ self.fh_h.write(f'#ifndef {id_}\n')
79
+ self.fh_h.write(f' /* {comment} */\n')
80
+ self.fh_h.write(f' extern const DSM_DFCType DFC_{id_} ;\n')
81
+ self.fh_h.write(f' #define {id_} (((DFC_{id_}.debmode) << 12u) | '
82
+ f'(DFC_{id_}.id))\n')
83
+ self.fh_h.write(f' #define {id_}_Dummy\n')
84
+ self.fh_h.write('#endif\n\n')
85
+
86
+ self.fh_c.write(f'#ifdef {id_}_Dummy\n')
87
+ self.fh_c.write(f' /* {comment} */\n')
88
+ self.fh_c.write(f' const DSM_DFCType DFC_{id_} = '
89
+ '{VcEvDummy_ID, VcEvDummy_DEBMODE};\n')
90
+ self.fh_c.write(f' #warning "CoreID: {id_} is not defined in '
91
+ 'the supplier SW"\n')
92
+ self.fh_c.write('#endif\n\n')
93
+
94
+ def _gen_rb_fid_dummies(self):
95
+ """Generate RB dummy function id declarations."""
96
+ for id_, comment in self._core_cfg.get('FunctionIDs', {}).items():
97
+ self.fh_h.write(f'#ifndef {id_}\n')
98
+ self.fh_h.write(f' /* {comment} */\n')
99
+ self.fh_h.write(f' extern const DSM_FIdType FId_{id_} ;\n')
100
+ self.fh_h.write(f' #define {id_} (FId_{id_}.id)\n')
101
+ self.fh_h.write(f' #define {id_}_Dummy\n')
102
+ self.fh_h.write('#endif\n\n')
103
+
104
+ self.fh_c.write(f'#ifdef {id_}_Dummy\n')
105
+ self.fh_c.write(f' /* {comment} */\n')
106
+ self.fh_c.write(f' const DSM_FIdType FId_{id_} = {{VcFiDummy_ID}};\n')
107
+ self.fh_c.write(f' #warning "CoreID: {id_} is not defined in the supplier SW"\n')
108
+ self.fh_c.write('#endif\n\n')
109
+
110
+ def _gen_rb_iumpr_dummies(self):
111
+ """Generate RB dummy IUMPR declarations."""
112
+ for id_, comment in self._core_cfg.get('IUMPR', {}).items():
113
+ self.fh_h.write(f'#ifndef {id_}\n')
114
+ self.fh_h.write(f' /* {comment} */\n')
115
+ self.fh_h.write(f' extern const DSM_FIdType FId_{id_} ;\n')
116
+ self.fh_h.write(f' #define {id_} (FId_{id_}.id)\n')
117
+ self.fh_h.write(f' #define {id_}_Dummy\n')
118
+ self.fh_h.write('#endif\n\n')
119
+
120
+ self.fh_c.write(f'#ifdef {id_}_Dummy\n')
121
+ self.fh_c.write(f' /* {comment} */\n')
122
+ self.fh_c.write(f' const DSM_FIdType FId_{id_} = {{Vc09Dummy_ID}};\n')
123
+ self.fh_c.write(f' #warning "CoreID: {id_} is not defined in the supplier SW"\n')
124
+ self.fh_c.write('#endif\n\n')
125
+
126
+ def _gen_rb_mode06_dummies(self):
127
+ """Generate RB dummy mode$06 declarations."""
128
+ for id_, comment in self._core_cfg.get('Mode$06', {}).items():
129
+ self.fh_h.write(f'#ifndef {id_}\n')
130
+ self.fh_h.write(f' /* {comment[0]}, UAS {comment[1]} */\n')
131
+ self.fh_h.write(f' extern const DSM_DTRType DTR_{id_};\n')
132
+ self.fh_h.write(f' #define {id_} (DTR_{id_}.id)\n')
133
+ self.fh_h.write(f' #define {id_}_Dummy\n')
134
+ self.fh_h.write('#endif\n\n')
135
+
136
+ self.fh_c.write(f'#ifdef {id_}_Dummy\n')
137
+ self.fh_c.write(f' /* {comment[0]}, UAS {comment[1]} */\n')
138
+ self.fh_c.write(f' const DSM_DTRType DTR_{id_} = {{Vc06Dummy_ID}};\n')
139
+ self.fh_c.write(f'#warning "CoreID: {id_} is not defined in the supplier SW"\n')
140
+ self.fh_c.write('#endif\n\n')
141
+
142
+ def _gen_rb_rnk_dummies(self):
143
+ """Generate RB dummy ranking declarations."""
144
+ for id_, comment in self._core_cfg.get('Ranking', {}).items():
145
+ self.fh_h.write(f'#ifndef {id_}\n')
146
+ self.fh_h.write(f' /* {comment} */\n')
147
+ self.fh_h.write(f' extern const {self._uint16_type} DSMAppl_RnkValStorg_RnkId_{id_};\n')
148
+ self.fh_h.write(f' #define {id_} DSMAppl_RnkValStorg_RnkId_{id_}\n')
149
+ self.fh_h.write(f' #define {id_}_Dummy\n')
150
+ self.fh_h.write('#endif\n\n')
151
+
152
+ self.fh_c.write(f'#ifdef {id_}_Dummy\n')
153
+ self.fh_c.write(f' /* {comment} */\n')
154
+ self.fh_c.write(f' const {self._uint16_type} DSMAppl_RnkValStorg_RnkId_{id_} = '
155
+ 'VcRvDummy_ID;\n')
156
+ self.fh_c.write(f' #warning "CoreID: {id_} is not defined in the supplier SW"\n')
157
+ self.fh_c.write('#endif\n\n')
158
+
159
+ def _gen_rb_end(self, file_name):
160
+ """Generate RB footer of c and h files for dummy core definition files."""
161
+ def_name = file_name.replace('.', '_').upper()
162
+
163
+ self.fh_h.write(f'#endif /* {def_name} */\n')
164
+ self.fh_h.write('/*-------------------------------------'
165
+ '---------------------------------------*\\\n')
166
+ self.fh_h.write(' END OF FILE\n')
167
+ self.fh_h.write('\\*-------------------------------------'
168
+ '---------------------------------------*/\n')
169
+
170
+ self.fh_c.write(f'#include "{build_defs.CVC_CODE_END}"\n')
171
+ self.fh_c.write('/*--------------------------------------'
172
+ '--------------------------------------*\\\n')
173
+ self.fh_c.write(' END OF FILE\n')
174
+ self.fh_c.write('\\*--------------------------------------'
175
+ '--------------------------------------*/\n')
176
+
177
+ def generate_rb_core_dummy_files(self, file_name):
178
+ """Generate core API dummy files for Bosch projects."""
179
+ cname = file_name + '.c'
180
+ hname = file_name + '.h'
181
+ with open(cname, 'w', encoding="utf-8") as self.fh_c:
182
+ with open(hname, 'w', encoding="utf-8") as self.fh_h:
183
+ _, f_name = os.path.split(hname)
184
+ self._gen_rb_header(f_name)
185
+ self._gen_rb_event_dummies()
186
+ self._gen_rb_fid_dummies()
187
+ self._gen_rb_iumpr_dummies()
188
+ self._gen_rb_mode06_dummies()
189
+ self._gen_rb_rnk_dummies()
190
+ self._gen_rb_end(f_name)
191
+
192
+ def _gen_dg2_header(self, file_name):
193
+ """Generate Denso Gen2/3 header of c and h files for dummy core definition files."""
194
+ self.fh_c.write('/* Autogenerated core id dummy file */\n\n')
195
+ self.fh_c.write(f'#include "{file_name}"\n')
196
+ self.fh_c.write(self._unit_cfg.base_types_headers)
197
+ self.fh_c.write(f'#include "{build_defs.CVC_CODE_START}"\n\n')
198
+ self.fh_c.write('#define Vc06Undef 1\n')
199
+ self.fh_c.write('#define Vc09Undef 1\n')
200
+ self.fh_c.write('#define VcRvUndef 1\n\n')
201
+ self.fh_h.write('/* Autogenerated core id dummy file */\n\n')
202
+ def_name = file_name.replace('.', '_').upper()
203
+ self.fh_h.write(f'#ifndef {def_name}\n')
204
+ self.fh_h.write(f'#define {def_name}\n')
205
+ self.fh_h.write('\n#include "VcCoreSupplierAbstraction.h"\n\n')
206
+ self.fh_h.write('/* Check if denso make env. has defined the AUTOSAR declarations\n')
207
+ self.fh_h.write(' if not, do dummy declaration to be able to build a dummy I/F in\n')
208
+ self.fh_h.write(' an old make environment */\n')
209
+ self.fh_h.write('#ifndef FUNC\n')
210
+ self.fh_h.write(' #define FUNC(rettype, memclass) rettype /* from Compiler.h */\n')
211
+ self.fh_h.write(' #define P2VAR(ptrtype, memclass, ptrclass) ptrtype * '
212
+ '/* from Compiler.h */\n')
213
+ self.fh_h.write(' typedef unsigned char Std_ReturnType; /* from Std_Types.h */\n')
214
+ self.fh_h.write(' typedef unsigned char Dem_EventStatusType;\n')
215
+ self.fh_h.write(' typedef unsigned char boolean;\n')
216
+ self.fh_h.write(' #define AUTOMATIC\n')
217
+ self.fh_h.write(' #define RTE_APPL_DATA\n')
218
+ self.fh_h.write(' #define RTE_CODE /* from Compiler_cfg.h */\n')
219
+ self.fh_h.write(f'#endif /* {def_name} */\n\n')
220
+ self.fh_h.write(f'#include "{build_defs.CVC_CODE_START}"\n')
221
+
222
+ def _gen_dg2_event_dummies(self):
223
+ """Generate the Denso Gen2+ dummy event declarations."""
224
+ for id_, comment in self._core_cfg.get('EventIDs', {}).items():
225
+ # Compare with core0/app/OBDFW/bdcore/Rte_Diag.h
226
+ self.fh_h.write(f'#ifndef Rte_Call_Event_{id_}_SetEventStatus\n')
227
+ self.fh_h.write(f' /* {comment} */\n')
228
+ self.fh_h.write(' extern FUNC(Std_ReturnType, RTE_CODE) '
229
+ f'Rte_Call_Diag_Event_{id_}_SetEventStatus '
230
+ '(Dem_EventStatusType EventStatus);\n')
231
+ self.fh_h.write('#endif\n\n')
232
+
233
+ self.fh_c.write(f'#ifndef Rte_Call_Event_{id_}_SetEventStatus\n')
234
+ self.fh_c.write(f' /* {comment} */\n')
235
+ self.fh_c.write(' FUNC(Std_ReturnType, RTE_CODE) '
236
+ f'Rte_Call_Diag_Event_{id_}_SetEventStatus '
237
+ '(Dem_EventStatusType EventStatus) { return 0;}\n')
238
+ self.fh_c.write('#endif\n\n')
239
+ # Generate Dem_SetEventDisabled dummmies
240
+ self.fh_h.write(f'#ifndef Rte_Call_Event_{id_}_SetEventDisabled\n')
241
+ self.fh_h.write(f' /* {comment} */\n')
242
+ self.fh_h.write(' extern FUNC(Std_ReturnType, RTE_CODE) '
243
+ f'Rte_Call_Diag_Event_{id_}_SetEventDisabled (void);\n')
244
+ self.fh_h.write('#endif\n\n')
245
+
246
+ self.fh_c.write(f'#ifndef Rte_Call_Event_{id_}_SetEventDisabled\n')
247
+ self.fh_c.write(f' /* {comment} */\n')
248
+ self.fh_c.write(' FUNC(Std_ReturnType, RTE_CODE) '
249
+ f'Rte_Call_Diag_Event_{id_}_SetEventDisabled '
250
+ '(void) { return 0;}\n')
251
+ self.fh_c.write('#endif\n\n')
252
+
253
+ def _gen_dg2_fid_dummies(self):
254
+ """Generate the Denso Gen2+ dummy function id declarations."""
255
+ for id_, comment in self._core_cfg.get('FunctionIDs', {}).items():
256
+ self.fh_h.write(f'#ifndef Rte_Call_FI_{id_}_GetFunctionPermission\n')
257
+ self.fh_h.write(f' /* {comment} */\n')
258
+ self.fh_h.write(' extern FUNC(Std_ReturnType, RTE_CODE) '
259
+ f'Rte_Call_Diag_FI_{id_}_GetFunctionPermission '
260
+ '(P2VAR(boolean, AUTOMATIC, RTE_APPL_DATA) Permission);\n')
261
+ self.fh_h.write('#endif\n\n')
262
+
263
+ self.fh_c.write(f'#ifndef Rte_Call_FI_{id_}_GetFunctionPermission\n')
264
+ self.fh_c.write(f' /* {comment} */\n')
265
+ self.fh_c.write(' FUNC(Std_ReturnType, RTE_CODE) '
266
+ f'Rte_Call_Diag_FI_{id_}_GetFunctionPermission '
267
+ '(P2VAR(boolean, AUTOMATIC, RTE_APPL_DATA) Permission) '
268
+ '{ *Permission = 1; return 0;}\n')
269
+ self.fh_c.write('#endif\n\n')
270
+
271
+ def _gen_dg2_iumpr_dummies(self):
272
+ """Generate the Denso Gen2+ dummy IUMPR declarations."""
273
+ for id_, comment in self._core_cfg.get('IUMPR', {}).items():
274
+ self.fh_h.write(f'#ifndef IUMID_{id_}\n')
275
+ self.fh_h.write(f' /* {comment} */\n')
276
+ self.fh_h.write(f' #define IUMID_{id_} cIUMID_{id_}\n')
277
+ self.fh_h.write(f' #define {id_}_DUMMY\n')
278
+ self.fh_h.write(f' extern const {self._uint16_type} cIUMID_{id_};\n')
279
+ self.fh_h.write('#endif\n\n')
280
+ self.fh_c.write(f'#ifdef {id_}_DUMMY\n')
281
+ self.fh_c.write(f' /* {comment} */\n')
282
+ self.fh_c.write(f' const {self._uint16_type} cIUMID_{id_} = Vc09Undef;\n')
283
+ self.fh_c.write('#endif\n\n')
284
+
285
+ def _gen_dg2_mode06_dummies(self):
286
+ """Generate the Denso Gen2+ dummy mode$06 declarations."""
287
+ for id_, comment in self._core_cfg.get('Mode$06', {}).items():
288
+ self.fh_h.write(f'#ifndef TR_{id_}\n')
289
+ self.fh_h.write(f' /* {comment[0]}, UAS {comment[1]} */\n')
290
+ self.fh_h.write(f' #define TR_{id_} cTR_{id_}\n')
291
+ self.fh_h.write(f' #define {id_}_DUMMY\n')
292
+ self.fh_h.write(f' extern const {self._uint16_type} cTR_{id_};\n')
293
+ self.fh_h.write('#endif\n\n')
294
+ self.fh_c.write(f'#ifdef {id_}_DUMMY\n')
295
+ self.fh_c.write(f' /* {comment[0]}, UAS {comment[1]} */\n')
296
+ self.fh_c.write(f' const {self._uint16_type} cTR_{id_} = Vc06Undef;\n')
297
+ self.fh_c.write('#endif\n\n')
298
+
299
+ def _gen_dg2_rnk_dummies(self):
300
+ """Generate the Denso Gen2+ dummy ranking declarations."""
301
+ for id_, comment in self._core_cfg.get('Ranking', {}).items():
302
+ self.fh_h.write(f'#ifndef RVID_{id_}\n')
303
+ self.fh_h.write(f' /* {comment} */\n')
304
+ self.fh_h.write(f' #define RVID_{id_} cRVID_{id_}\n')
305
+ self.fh_h.write(f' #define {id_}_DUMMY\n')
306
+ self.fh_h.write(f' extern const {self._uint16_type} cRVID_{id_};\n')
307
+ self.fh_h.write('#endif\n\n')
308
+ self.fh_c.write(f'#ifdef {id_}_DUMMY\n')
309
+ self.fh_c.write(f' /* {comment} */\n')
310
+ self.fh_c.write(f' const {self._uint16_type} cRVID_{id_} = VcRvUndef;\n')
311
+ self.fh_c.write('#endif\n\n')
312
+
313
+ def _gen_dg2_end(self, file_name):
314
+ """Generate Denso Gen2+ footer of c and h files for dummy core definition files."""
315
+ def_name = file_name.replace('.', '_').upper()
316
+ self.fh_h.write(f'#include "{build_defs.CVC_CODE_END}"\n')
317
+ self.fh_h.write(f'#endif /* {def_name} */\n')
318
+ self.fh_h.write('/*------------------------------------------'
319
+ '----------------------------------*\\\n')
320
+ self.fh_h.write(' END OF FILE\n')
321
+ self.fh_h.write('\\*-----------------------------------------'
322
+ '-----------------------------------*/\n')
323
+ self.fh_c.write(f'#include "{build_defs.CVC_CODE_END}"\n')
324
+ self.fh_c.write('/*------------------------------------------'
325
+ '----------------------------------*\\\n')
326
+ self.fh_c.write(' END OF FILE\n')
327
+ self.fh_c.write('\\*-----------------------------------------'
328
+ '-----------------------------------*/\n')
329
+
330
+ def generate_dg2_core_dummy_files(self, file_name):
331
+ """Generate the core API dummy files for Denso gen2+ projects."""
332
+ cname = file_name + '.c'
333
+ hname = file_name + '.h'
334
+ with open(cname, 'w', encoding="utf-8") as self.fh_c:
335
+ with open(hname, 'w', encoding="utf-8") as self.fh_h:
336
+ _, f_name = os.path.split(hname)
337
+ self._gen_dg2_header(f_name)
338
+ self._gen_dg2_event_dummies()
339
+ self._gen_dg2_fid_dummies()
340
+ self._gen_dg2_iumpr_dummies()
341
+ self._gen_dg2_mode06_dummies()
342
+ self._gen_dg2_rnk_dummies()
343
+ self._gen_dg2_end(f_name)