diff --git a/docs/project_config.md b/docs/project_config.md index 198035a..2eedf4f 100644 --- a/docs/project_config.md +++ b/docs/project_config.md @@ -432,6 +432,11 @@ Default is True. Include diagnostics elements or not. Default is True. +It is also possible to set it to "manual", "manual_dids" or "manual_dtcs". +These settings make it so that the files *VcDIDAPI.\** and/or *VcCoreSupplierAbstraction.h* are not generated. +Additionally, all DIDs and/or DTCs, from the yaml interface files, +will be added to the [generated yaml interface file](#generateYamlInterfaceFile). + #### includeNvm Include non-volatile memory elements or not. diff --git a/powertrain_build/core.py b/powertrain_build/core.py index d0e1132..bb03334 100644 --- a/powertrain_build/core.py +++ b/powertrain_build/core.py @@ -388,6 +388,10 @@ class ZCCore(ProblemLogger): def generate_dtc_files(self): """Generate required ZC Core header files. Only use for some projects, which doesn't copy static code.""" + includeDiagnostics = self._prj_cfg.get_composition_config("includeDiagnostics") + if includeDiagnostics in ["manual", "manual_dtcs"]: + self.warning(f'includeDiagnostics is set to {includeDiagnostics}, not generating DTC files.') + return file_contents = { '.h': self.get_header_content() } diff --git a/powertrain_build/dids.py b/powertrain_build/dids.py index f3d7557..e66bdba 100644 --- a/powertrain_build/dids.py +++ b/powertrain_build/dids.py @@ -782,6 +782,10 @@ class ZCDIDs(ProblemLogger): """Generate required DID API files. Only use for some projects, which doesn't copy static code.""" if self.valid_dids is None: + includeDiagnostics = self._build_cfg.get_composition_config("includeDiagnostics") + if includeDiagnostics in ["manual", "manual_dids"]: + self.warning(f'includeDiagnostics is set to {includeDiagnostics}, not generating DID files.') + return self.critical('Valid DIDs not set. Cannot generate DID files.') return diff --git a/powertrain_build/zone_controller/composition_yaml.py b/powertrain_build/zone_controller/composition_yaml.py index bf6e52c..c25cd71 100644 --- a/powertrain_build/zone_controller/composition_yaml.py +++ b/powertrain_build/zone_controller/composition_yaml.py @@ -322,14 +322,29 @@ class CompositionYaml(ProblemLogger): """ diag_dict = {} diagnostics = self.composition_spec.get("diagnostics", {}) - dids = diagnostics.get("dids", {}) - self.zc_dids.valid_dids = dids - events = self._edit_event_dict(diagnostics.get("events", {})) + + if self.build_cfg.get_composition_config("includeDiagnostics") == "manual": + dids = diagnostics.get("dids", {}) + events = self._edit_event_dict(diagnostics.get("events", {})) + elif self.build_cfg.get_composition_config("includeDiagnostics") == "manual_dids": + dids = diagnostics.get("dids", {}) + events_tmp = self._edit_event_dict(diagnostics.get("events", {})) + events = self.zc_core.get_diagnostic_trouble_codes(events_tmp) + elif self.build_cfg.get_composition_config("includeDiagnostics") == "manual_dtcs": + self.zc_dids.valid_dids = diagnostics.get("dids", {}) + dids = self.zc_dids.valid_dids + events = self._edit_event_dict(diagnostics.get("events", {})) + else: + self.zc_dids.valid_dids = diagnostics.get("dids", {}) + dids = self.zc_dids.valid_dids + events_tmp = self._edit_event_dict(diagnostics.get("events", {})) + events = self.zc_core.get_diagnostic_trouble_codes(events_tmp) rids = diagnostics.get("rids", {}) + if dids: - diag_dict["dids"] = self.zc_dids.valid_dids + diag_dict["dids"] = dids if events: - diag_dict["events"] = self.zc_core.get_diagnostic_trouble_codes(events) + diag_dict["events"] = events if rids: diag_dict["rids"] = rids self.warning("Will not generate code for RIDs, add manually.") @@ -552,9 +567,8 @@ class CompositionYaml(ProblemLogger): swcs[software_component_name]["ports"] = self._get_ports_info() if self.composition_spec.get("io") is not None: swcs[software_component_name]["io"] = self.composition_spec["io"] - diagnostic_info = self._get_diagnostic_info() - if self.build_cfg.get_composition_config("includeDiagnostics"): - swcs[software_component_name]["diagnostics"] = diagnostic_info + if self.build_cfg.get_composition_config("includeDiagnostics") is not False: + swcs[software_component_name]["diagnostics"] = self._get_diagnostic_info() nvm_info, nvm_data_types_tmp, static_variables = self._get_nvm_info() if self.build_cfg.get_composition_config("includeNvm"): swcs[software_component_name]["nv-needs"] = nvm_info