powertrain-build 1.1.2.dev6__tar.gz → 1.1.3.dev2__tar.gz

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 (140) hide show
  1. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/ChangeLog +14 -7
  2. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/PKG-INFO +2 -2
  3. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/README.md +1 -1
  4. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/build.py +2 -3
  5. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/build_proj_config.py +19 -0
  6. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/interface/zone_controller.py +0 -1
  7. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/user_defined_types.py +81 -40
  8. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/zone_controller/composition_yaml.py +10 -2
  9. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build.egg-info/PKG-INFO +2 -2
  10. powertrain_build-1.1.3.dev2/powertrain_build.egg-info/pbr.json +1 -0
  11. powertrain_build-1.1.2.dev6/powertrain_build.egg-info/pbr.json +0 -1
  12. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/AUTHORS +0 -0
  13. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/LICENSE +0 -0
  14. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/MANIFEST.in +0 -0
  15. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/NOTICE +0 -0
  16. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/__init__.py +0 -0
  17. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/__main__.py +0 -0
  18. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/a2l.py +0 -0
  19. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/a2l_merge.py +0 -0
  20. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/a2l_templates.py +0 -0
  21. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/build_defs.py +0 -0
  22. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/check_interface.py +0 -0
  23. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/cli.py +0 -0
  24. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/config.py +0 -0
  25. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/core.py +0 -0
  26. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/core_dummy.py +0 -0
  27. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/create_conversion_table.py +0 -0
  28. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/dids.py +0 -0
  29. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/dummy.py +0 -0
  30. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/dummy_spm.py +0 -0
  31. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/environmentcheck.py +0 -0
  32. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/ext_dbg.py +0 -0
  33. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/ext_var.py +0 -0
  34. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/feature_configs.py +0 -0
  35. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/gen_allsysteminfo.py +0 -0
  36. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/gen_label_split.py +0 -0
  37. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/handcode_replacer.py +0 -0
  38. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/html_report.py +0 -0
  39. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/interface/__init__.py +0 -0
  40. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/interface/application.py +0 -0
  41. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/interface/base.py +0 -0
  42. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/interface/csp_api.py +0 -0
  43. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/interface/device_proxy.py +0 -0
  44. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/interface/ems.py +0 -0
  45. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/interface/export_global_vars.py +0 -0
  46. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/interface/generate_adapters.py +0 -0
  47. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/interface/generate_hi_interface.py +0 -0
  48. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/interface/generate_service.py +0 -0
  49. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/interface/generate_wrappers.py +0 -0
  50. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/interface/generation_utils.py +0 -0
  51. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/interface/hal.py +0 -0
  52. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/interface/model_yaml_verification.py +0 -0
  53. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/interface/service.py +0 -0
  54. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/interface/simulink.py +0 -0
  55. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/interface/update_call_sources.py +0 -0
  56. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/interface/update_model_yaml.py +0 -0
  57. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/lib/__init__.py +0 -0
  58. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/lib/helper_functions.py +0 -0
  59. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/lib/logger.py +0 -0
  60. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/CodeGen/BuildAutomationPyBuild.m +0 -0
  61. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/CodeGen/Generate_A2L.m +0 -0
  62. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/CodeGen/generateTLUnit.m +0 -0
  63. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/CodeGen/getAsilClassification.m +0 -0
  64. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/CodeGen/modelConfiguredForTL.m +0 -0
  65. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/CodeGen/moveDefOutports.m +0 -0
  66. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/CodeGen/parseCalMeasData.m +0 -0
  67. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/CodeGen/parseCoreIdentifiers.m +0 -0
  68. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/CodeGen/parseDIDs.m +0 -0
  69. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/CodeGen/parseInPorts.m +0 -0
  70. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/CodeGen/parseIncludeConfigs.m +0 -0
  71. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/CodeGen/parseModelInfo.m +0 -0
  72. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/CodeGen/parseNVM.m +0 -0
  73. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/CodeGen/parseOutPorts.m +0 -0
  74. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/CodeGen/parsePreProcBlks.m +0 -0
  75. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/CodeGen/struct2JSON.m +0 -0
  76. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/CodeGen/updateCodeSwConfig.m +0 -0
  77. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/Init_PyBuild.m +0 -0
  78. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/__init__.py +0 -0
  79. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/Get_Full_Name.m +0 -0
  80. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/Get_SrcLines.m +0 -0
  81. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/Init_Models.m +0 -0
  82. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/Init_Projects.m +0 -0
  83. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/Read_Units.m +0 -0
  84. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/SetProjectTimeSamples.m +0 -0
  85. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/Strip_Suffix.m +0 -0
  86. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/followLink.m +0 -0
  87. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/getCodeSwitches.m +0 -0
  88. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/getConsumerBlocks.m +0 -0
  89. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/getDefBlock.m +0 -0
  90. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/getDefOutport.m +0 -0
  91. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/getDstBlocks.m +0 -0
  92. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/getDstLines.m +0 -0
  93. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/getInterfaceSignals.m +0 -0
  94. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/getName.m +0 -0
  95. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/getPath.m +0 -0
  96. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/getProperValue.m +0 -0
  97. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/getSrcBlocks.m +0 -0
  98. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/getSrcLines.m +0 -0
  99. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/loadLibraries.m +0 -0
  100. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/loadjson.m +0 -0
  101. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/modifyEnumStructField.m +0 -0
  102. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/removeConfigDuplicates.m +0 -0
  103. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/sortSystemByClass.m +0 -0
  104. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/tl_getfast.m +0 -0
  105. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/topLevelSystem.m +0 -0
  106. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/matlab_scripts/helperFunctions/updateModels.m +0 -0
  107. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/memory_section.py +0 -0
  108. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/nvm_def.py +0 -0
  109. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/problem_logger.py +0 -0
  110. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/pt_matlab.py +0 -0
  111. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/pt_win32.py +0 -0
  112. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/replace_compu_tab_ref.py +0 -0
  113. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/sched_funcs.py +0 -0
  114. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/signal.py +0 -0
  115. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/signal_if_html_rep.py +0 -0
  116. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/signal_if_html_rep_all.py +0 -0
  117. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/signal_incons_html_rep.py +0 -0
  118. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/signal_incons_html_rep_all.py +0 -0
  119. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/signal_incons_html_rep_base.py +0 -0
  120. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/signal_inconsistency_check.py +0 -0
  121. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/signal_interfaces.py +0 -0
  122. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/templates/Index_SigCheck_All.html +0 -0
  123. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/templates/Index_SigIf_All.html +0 -0
  124. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/types.py +0 -0
  125. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/unit_configs.py +0 -0
  126. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/versioncheck.py +0 -0
  127. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/wrapper.py +0 -0
  128. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/xlrd_csv.py +0 -0
  129. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/zone_controller/__init__.py +0 -0
  130. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build/zone_controller/calibration.py +0 -0
  131. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build.egg-info/SOURCES.txt +0 -0
  132. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build.egg-info/dependency_links.txt +0 -0
  133. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build.egg-info/entry_points.txt +0 -0
  134. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build.egg-info/not-zip-safe +0 -0
  135. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build.egg-info/requires.txt +0 -0
  136. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/powertrain_build.egg-info/top_level.txt +0 -0
  137. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/requirements.txt +0 -0
  138. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/setup.cfg +0 -0
  139. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/setup.py +0 -0
  140. {powertrain_build-1.1.2.dev6 → powertrain_build-1.1.3.dev2}/test-requirements.txt +0 -0
@@ -1,11 +1,10 @@
1
1
  CHANGES
2
2
  =======
3
3
 
4
- * Dummy 5
5
- * Dummy 4
6
- * Dummy 2
7
- * Dummy 2
8
- * Dummy 1
4
+ 1.1.3.dev2
5
+ ----------
6
+
7
+ * Enable enums in interface for zone controller
9
8
  * Fixes in interface/zone\_controller.py
10
9
 
11
10
  1.1.1
@@ -47,15 +46,19 @@ CHANGES
47
46
  -----
48
47
 
49
48
  * Missed to update use of get function
49
+ * Measure code coverage in tox tests
50
+ * Add option for supplying custom step function name
50
51
 
51
52
  1.0.3
52
53
  -----
53
54
 
54
- * Measure code coverage in tox tests
55
- * Add option for supplying custom step function name
56
55
  * Aggregate project settings for ARXML specifications in ProjectCfg
57
56
  * CRLF -> LF
58
57
  * Update NOTICE file
58
+
59
+ 1.0.2.dev99
60
+ -----------
61
+
59
62
  * Improve TargetLink documentation
60
63
  * Add option for supplying custom init function name
61
64
  * Add docs about TargetLink
@@ -78,6 +81,10 @@ CHANGES
78
81
 
79
82
  * Make composition\_yaml read diagnostics key instead
80
83
  * Devs asked for missing ZC dids to be erroneous
84
+
85
+ 0.1.1
86
+ -----
87
+
81
88
  * Refactor usage of ecu\_supplier
82
89
  * Make powertrain-build not overlap with pybuild in site-packages
83
90
  * Bug fix - always set zc\_dids in compisition\_yaml
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: powertrain-build
3
- Version: 1.1.2.dev6
3
+ Version: 1.1.3.dev2
4
4
  Summary: A Continuous Integration (CI) build system testing all configurations where a Simulink model is used.
5
5
  Home-page: https://opendev.org/volvocars/powertrain-build
6
6
  Download-URL: https://pypi.org/project/powertrain-build/
@@ -39,7 +39,7 @@ Requires-Dist: scipy==1.14.1; python_version >= "3.11"
39
39
  Requires-Dist: importlib-resources==5.4.0; python_version < "3.9"
40
40
  Requires-Dist: pywin32==305; python_version == "3.6" and sys_platform == "win32"
41
41
 
42
- # train-build
42
+ # powertrain-build
43
43
 
44
44
  A Continuous Integration (CI) build system, testing all configurations where a TargetLink model is used.
45
45
 
@@ -1,4 +1,4 @@
1
- # train-build
1
+ # powertrain-build
2
2
 
3
3
  A Continuous Integration (CI) build system, testing all configurations where a TargetLink model is used.
4
4
 
@@ -903,9 +903,8 @@ def build(
903
903
  project_nvm_defintions = unit_cfg.get_per_cfg_unit_cfg().get("nvm", {})
904
904
  zc_nvm = ZCNVMDef(build_cfg, unit_cfg, project_nvm_defintions)
905
905
  axis_data = merged_a2l.get_characteristic_axis_data()
906
- composition_yaml = CompositionYaml(
907
- build_cfg, signal_if.composition_spec, unit_cfg, zc_core, zc_dids, zc_nvm, axis_data
908
- )
906
+ composition_yaml = CompositionYaml(build_cfg, signal_if.composition_spec, unit_cfg, zc_core,
907
+ zc_dids, zc_nvm, axis_data, udt.get_enumerations())
909
908
  LOG.info("******************************************************")
910
909
  composition_yaml.generate_yaml()
911
910
  LOG.info("******************************************************")
@@ -677,6 +677,25 @@ class BuildProjConfig:
677
677
  )
678
678
  return None
679
679
 
680
+ def include_all_enums(self):
681
+ """Return True if all enums encountered in the enum definition files should be included in the generated code,
682
+ even if they are not used in any models. Requires the ProjectInfo.enumDefDir key to be present in the project config.
683
+
684
+ Returns:
685
+ bool: True if all enumerations should be generated by source code, False otherwise.
686
+ """
687
+ if not self.get_enum_def_dir():
688
+ return False
689
+ return self._prj_cfg['ProjectInfo'].get('includeAllEnums', False)
690
+
691
+ def map_to_rte_enums(self):
692
+ """Return True/False whether external RTE headers should be included in ext vars. Default is false.
693
+
694
+ Returns:
695
+ (bool): True/False whether external RTE headers should be included in ext vars
696
+ """
697
+ return self._prj_cfg['CodeGenerationConfig'].get('mapEnumsToRteCounterpart', False)
698
+
680
699
 
681
700
  if __name__ == '__main__':
682
701
  # Function for testing the module
@@ -189,7 +189,6 @@ class ZCAL(BaseApplication):
189
189
  raise BadYamlFormat(f"in/out signal for element in { element_name } is missing.")
190
190
  if direction != temp_dir:
191
191
  raise BadYamlFormat(f"Signal { element_name } has both in and out elements.")
192
- direction = temp_dir
193
192
  if element.get("updateBit", False):
194
193
  update_elements.add(element_name)
195
194
 
@@ -52,6 +52,7 @@ class UserDefinedTypes(ProblemLogger):
52
52
  self._build_prj_cfg = build_prj_config
53
53
  self._unit_configs = unit_configs
54
54
  self.enums_per_unit = {}
55
+ self.common_enums = self._read_enums_from_definitions()
55
56
  self.structs_per_unit = {}
56
57
  self._parse_all_user_defined_types()
57
58
  self.common_header_files = []
@@ -304,14 +305,19 @@ class UserDefinedTypes(ProblemLogger):
304
305
  enum_members_tmp = re.findall(r'\s*(\w+) = ([-+]?\d+)', enum_content, flags=re.M)
305
306
  enum_members = [(k, int(v)) for k, v in enum_members_tmp]
306
307
  underlying_data_type = self._calculate_underlying_data_type(unit, enum_name, enum_members)
308
+ default = self.get_default_enum_value(unit, enum_name)
307
309
  enum_dict = {
308
310
  'underlying_data_type': underlying_data_type,
309
311
  'members': {},
310
312
  'default_value': self.get_default_enum_value(unit, enum_name)
311
313
  }
314
+
312
315
  for key, value in enum_members:
313
316
  enum_dict['members'][key] = value
314
317
 
318
+ if default is None:
319
+ print(enum_dict)
320
+
315
321
  if enum_name in self.enums_per_unit[unit]:
316
322
  is_consistent_enums = self._compare_enum_definitions(
317
323
  [unit],
@@ -369,47 +375,58 @@ class UserDefinedTypes(ProblemLogger):
369
375
 
370
376
  return underlying_data_type
371
377
 
372
- def _get_default_enum_value_tmp(self, enum_name):
373
- """Get default value of given enumeration name.
374
-
375
- Requires "enumDefDir" in the ProjectCfg.json file.
378
+ def _read_enums_from_definitions(self):
379
+ """ Reads all enums from .m files where they are defined. Requires projectInfo.enumDefDir in
380
+ ProjectCfg.json file.
376
381
  Files defining simulink class enumerations are expected to follow a template.
377
382
 
378
- TODO: Remove this function when there is a default enum value in every config_*.json file.
379
-
380
- Args:
381
- enum_name (str): Name of an enumeration.
382
- Returns:
383
- default_value_str (str): Default value (string) for the given enumeration name.
384
- None if value could not be extracted.
385
383
  """
384
+ common_enums = {}
386
385
  if self._build_prj_cfg.get_enum_def_dir() is None:
387
386
  self.warning(
388
387
  'Cannot extract default enumeration value for %s. Missing "enumDefDir" in ProjectCfg.json.',
389
- enum_name
390
388
  )
391
389
  return None
392
390
 
393
- enum_def_file = Path(self._build_prj_cfg.get_enum_def_dir(), f'{enum_name}.m')
394
- if not enum_def_file.is_file():
395
- self.warning('Cannot extract default enumeration value. File not found: %s', str(enum_def_file))
396
- return None
397
-
398
- with enum_def_file.open(mode='r', encoding='ISO-8859-1') as fh:
399
- enum_def_content = fh.read()
400
- get_default_value = re.search(
401
- r'function ([A-Za-z0-9]+) = getDefaultValue\(\)[\s\n]*'
402
- r'\1 = [A-Za-z0-9]+\.([A-Za-z0-9]+);[\s\n]*'
403
- r'end',
404
- enum_def_content,
405
- flags=re.MULTILINE
406
- )
407
- if get_default_value is None:
408
- self.warning('Cannot extract default enumeration values in: %s', str(enum_def_file))
409
- return None
391
+ enum_files = Path(self._build_prj_cfg.get_enum_def_dir()).rglob('*.m')
392
+ for enum_file in enum_files:
393
+ with enum_file.open(mode='r', encoding='ISO-8859-1') as fh:
394
+ enum_file_content = fh.read()
395
+
396
+ enum_name = enum_file.stem
397
+ members_part = re.search(
398
+ r'\s+enumeration\n'
399
+ r'(\s*\w+\(\d+\)\n)+'
400
+ r'\s+end',
401
+ enum_file_content,
402
+ flags=re.MULTILINE
403
+ )
404
+ if not members_part:
405
+ self.warning('Cannot extract enumeration members from %s', str(enum_file))
406
+ continue
407
+ members = re.findall(r'(\w+)\((\d+)\)', members_part.group(0))
408
+ member_dict = {enum_name + '_' + member[0]: int(member[1]) for member in members}
409
+ get_default_value = re.search(
410
+ r'function ([A-Za-z0-9]+) = getDefaultValue\(\)[\s\n]*'
411
+ r'\1 = [A-Za-z0-9]+\.([A-Za-z0-9]+);[\s\n]*'
412
+ r'end',
413
+ enum_file_content,
414
+ flags=re.MULTILINE
415
+ )
416
+ if get_default_value is None:
417
+ self.warning('Cannot extract default enumeration values in: %s', str(enum_file))
418
+ return None
419
+ _unused, default_value = get_default_value.groups()
420
+ default_member = f'{enum_name.upper()}_{default_value.upper()}'
421
+ enum_members = [(member_name, member_value) for member_name, member_value in member_dict.items()]
422
+ underlying_data_type = self._calculate_underlying_data_type('target_link', enum_name, enum_members)
423
+ common_enums[enum_name] = {
424
+ "underlying_data_type": underlying_data_type,
425
+ "default": default_member,
426
+ "members": member_dict
427
+ }
428
+ return common_enums
410
429
 
411
- _unused, default_value = get_default_value.groups()
412
- return f'{enum_name.upper()}_{default_value.upper()}'
413
430
 
414
431
  def get_default_enum_value(self, unit, enum_name):
415
432
  """Get default value of given enumeration name by searching in the unit configuration.
@@ -446,7 +463,7 @@ class UserDefinedTypes(ProblemLogger):
446
463
  enum_name,
447
464
  unit
448
465
  )
449
- return self._get_default_enum_value_tmp(enum_name)
466
+ return self.common_enums.get(enum_name, {}).get('default', None)
450
467
 
451
468
  def get_enumerations(self):
452
469
  """Get all enumeration defined in the project, together with unit usage.
@@ -464,6 +481,12 @@ class UserDefinedTypes(ProblemLogger):
464
481
  else:
465
482
  enumerations[enum_name] = deepcopy(enum_data)
466
483
  enumerations[enum_name]['units'] = [unit]
484
+ if self._build_prj_cfg.include_all_enums():
485
+ for enum_name, enum_data in self.common_enums.items():
486
+ if enum_name not in enumerations:
487
+ self.warning("Enumeration %s is not used in any unit. Generated anyway since 'includeAllEnums' is True", enum_name)
488
+ enumerations[enum_name] = deepcopy(enum_data)
489
+ enumerations[enum_name]['units'] = []
467
490
  return enumerations
468
491
 
469
492
  def get_interface_data_types(self):
@@ -529,18 +552,36 @@ class UserDefinedTypes(ProblemLogger):
529
552
  file_path (Path): Path to file to generate.
530
553
  """
531
554
  enumerations = self.get_enumerations()
555
+ rte_interface_enums = self._build_prj_cfg.map_to_rte_enums()
532
556
  guard = f"{file_path.stem.upper()}_H"
533
557
  with file_path.open('w') as fh:
534
558
  fh.write(self._get_header_file_header(guard))
535
- fh.write('/* VCC Enumerations */\n')
559
+ if rte_interface_enums:
560
+ composition_name = self._build_prj_cfg.get_composition_config("softwareComponentName")
561
+ fh.write(f'#include "Rte_{ composition_name }_Type.h"\n')
562
+ fh.write('/* VCC Enumerations */\n\n')
536
563
  for enum_name, enum_data in enumerations.items():
537
- fh.write('\n')
538
- fh.write(f'typedef enum {enum_name}_tag {{\n')
539
- nr_of_enum_members = len(enum_data['members'])
540
- for idx, enum_member_name in enumerate(enum_data['members']):
541
- ending = ', ' if idx < nr_of_enum_members - 1 else ' '
542
- fh.write(f" {enum_member_name} = {enum_data['members'][enum_member_name]}{ending}\n")
543
- fh.write(f'}} {enum_name};\n')
564
+ members = enum_data['members']
565
+ member_strs = ',\n'.join([f" {member.upper()} = {value}" for member, value in members.items()])
566
+ enum_definition = (
567
+ f'typedef enum {enum_name}_tag {{\n'
568
+ f'{member_strs}'
569
+ '\n'
570
+ f'}} {enum_name};\n'
571
+ )
572
+ if rte_interface_enums:
573
+ enum = self.common_enums[enum_name]
574
+ enum_member_0 = [member for member, value in enum["members"].items() if value == 0][0]
575
+ rte_translation = '\n'.join(f"#define {member.upper()} {member}" for member in enum["members"].keys())
576
+ compile_time_guard = f""
577
+ enum_definition = (
578
+ f'#ifndef {enum_member_0}\n'
579
+ f'{enum_definition}\n'
580
+ f'#else\n'
581
+ f'{rte_translation}\n'
582
+ f'#endif /* {enum_member_0} */\n'
583
+ )
584
+ fh.write(enum_definition + '\n')
544
585
  fh.write(f'#endif /* {guard} */\n')
545
586
 
546
587
  def generate_common_header_files(self):
@@ -15,7 +15,7 @@ from powertrain_build.zone_controller.calibration import ZoneControllerCalibrati
15
15
  class CompositionYaml(ProblemLogger):
16
16
  """Class for handling ZoneController composition yaml generation."""
17
17
 
18
- def __init__(self, build_cfg, composition_spec, unit_cfg, zc_core, zc_dids, zc_nvm, a2l_axis_data):
18
+ def __init__(self, build_cfg, composition_spec, unit_cfg, zc_core, zc_dids, zc_nvm, a2l_axis_data, enums):
19
19
  """Init.
20
20
 
21
21
  Args:
@@ -44,6 +44,7 @@ class CompositionYaml(ProblemLogger):
44
44
  self.zc_core = zc_core
45
45
  self.zc_dids = zc_dids
46
46
  self.zc_nvm = zc_nvm
47
+ self.enums = enums
47
48
  self.a2l_axis_data = a2l_axis_data
48
49
  base_data_types = self.get_base_data_types() # Might not be necessary in the long run
49
50
  self.data_types = {
@@ -188,6 +189,10 @@ class CompositionYaml(ProblemLogger):
188
189
  re.compile(r"^\s*CVC_CAL[A-Z_]*\s+\w+\s+(?P<name>\w+)\[(?P<rows>[\d]+)\]\[(?P<cols>[\d]+)\]\s*=\s*"),
189
190
  self._get_matrix_init_values,
190
191
  ),
192
+ (
193
+ re.compile(r"^\s*CVC_CAL[A-Z_]*\s+\w+\s+(?P<name>\w+)\s*=\s*(?P<enum>[a-zA-Z_$][\w_]*?)*;"),
194
+ lambda regex_match, _: regex_match.group("enum"),
195
+ ),
191
196
  ]
192
197
 
193
198
  init_values = {}
@@ -591,10 +596,13 @@ class CompositionYaml(ProblemLogger):
591
596
  data_types (dict): Dictionary with data types.
592
597
  signal_name (string): Name of signal to process.
593
598
  info (dict): signal data.
594
- Returns:
599
+ Returns::wq
600
+
595
601
  class_info (dict): Updated dictionary with variables.
596
602
  data_types (dict): Updated dictionary with data types.
597
603
  """
604
+ if info["type"] in self.enums:
605
+ return class_info, data_types
598
606
  if "Bool" in info["type"]:
599
607
  upper = 1
600
608
  lower = 0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: powertrain-build
3
- Version: 1.1.2.dev6
3
+ Version: 1.1.3.dev2
4
4
  Summary: A Continuous Integration (CI) build system testing all configurations where a Simulink model is used.
5
5
  Home-page: https://opendev.org/volvocars/powertrain-build
6
6
  Download-URL: https://pypi.org/project/powertrain-build/
@@ -39,7 +39,7 @@ Requires-Dist: scipy==1.14.1; python_version >= "3.11"
39
39
  Requires-Dist: importlib-resources==5.4.0; python_version < "3.9"
40
40
  Requires-Dist: pywin32==305; python_version == "3.6" and sys_platform == "win32"
41
41
 
42
- # train-build
42
+ # powertrain-build
43
43
 
44
44
  A Continuous Integration (CI) build system, testing all configurations where a TargetLink model is used.
45
45
 
@@ -0,0 +1 @@
1
+ {"git_version": "afdb37d", "is_release": true}
@@ -1 +0,0 @@
1
- {"git_version": "e46c51e", "is_release": false}