diff --git a/powertrain_build/zone_controller/composition_yaml.py b/powertrain_build/zone_controller/composition_yaml.py index edd8afe..f5769d3 100644 --- a/powertrain_build/zone_controller/composition_yaml.py +++ b/powertrain_build/zone_controller/composition_yaml.py @@ -514,6 +514,8 @@ class CompositionYaml(ProblemLogger): if self.build_cfg.get_composition_config("includeStatic"): swcs[software_component_name]["static"] = self.meas_class_info["autosar"]["class_info"] 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 diff --git a/test_data/zone_controller/test_composition_yaml/composition_yaml.py b/test_data/zone_controller/test_composition_yaml/composition_yaml.py index 6ca0fdd..b26b5a7 100644 --- a/test_data/zone_controller/test_composition_yaml/composition_yaml.py +++ b/test_data/zone_controller/test_composition_yaml/composition_yaml.py @@ -27,6 +27,20 @@ expected_result = { "nv-needs": {}, "static": composition_yaml_setup.base_static, "shared": composition_yaml_setup.base_shared, + "io": { + "DUMMY1": { + "DUMMY1": { + "dataElement": "DUMMY1", + "runnable": ["DummyRunnable"] + }, + "PPortPrototype_IoHwAb_GetDUMMY1": { + "operation": "Op_IoHwAb_GetDUMMY1", + "runnable": ["DummyRunnable"], + "timeout": 0, + "calltype": "sync" + } + } + }, "ports": { "GlobSignNme": {"direction": "IN", "interface": "PIGlobSignNme"} }, @@ -60,6 +74,20 @@ expected_extra_runnable_keys_result = { "nv-needs": {}, "static": composition_yaml_setup.base_static, "shared": composition_yaml_setup.base_shared, + "io": { + "DUMMY1": { + "DUMMY1": { + "dataElement": "DUMMY1", + "runnable": ["DummyRunnable"] + }, + "PPortPrototype_IoHwAb_GetDUMMY1": { + "operation": "Op_IoHwAb_GetDUMMY1", + "runnable": ["DummyRunnable"], + "timeout": 0, + "calltype": "sync" + } + } + }, "ports": { "GlobSignNme": {"direction": "IN", "interface": "PIGlobSignNme"} } @@ -92,6 +120,20 @@ expected_custom_names_result = { "nv-needs": {}, "static": composition_yaml_setup.base_static, "shared": composition_yaml_setup.base_shared, + "io": { + "DUMMY1": { + "DUMMY1": { + "dataElement": "DUMMY1", + "runnable": ["DummyRunnable"] + }, + "PPortPrototype_IoHwAb_GetDUMMY1": { + "operation": "Op_IoHwAb_GetDUMMY1", + "runnable": ["DummyRunnable"], + "timeout": 0, + "calltype": "sync" + } + } + }, "ports": { "GlobSignNme": {"direction": "IN", "interface": "PIGlobSignNme"} }, @@ -133,6 +175,20 @@ expected_cal_result = { "nv-needs": {}, "static": composition_yaml_setup.base_static, "shared": composition_yaml_setup.cal_shared, + "io": { + "DUMMY1": { + "DUMMY1": { + "dataElement": "DUMMY1", + "runnable": ["DummyRunnable"] + }, + "PPortPrototype_IoHwAb_GetDUMMY1": { + "operation": "Op_IoHwAb_GetDUMMY1", + "runnable": ["DummyRunnable"], + "timeout": 0, + "calltype": "sync" + } + } + }, "ports": { "GlobSignNme": {"direction": "IN", "interface": "PIGlobSignNme"} }, diff --git a/test_data/zone_controller/test_composition_yaml/composition_yaml_setup.py b/test_data/zone_controller/test_composition_yaml/composition_yaml_setup.py index 364daa2..d95856f 100644 --- a/test_data/zone_controller/test_composition_yaml/composition_yaml_setup.py +++ b/test_data/zone_controller/test_composition_yaml/composition_yaml_setup.py @@ -406,6 +406,20 @@ get_per_cfg_unit_cfg_return_value = { } zc_spec = { + "io": { + "DUMMY1": { + "DUMMY1": { + "dataElement": "DUMMY1", + "runnable": ["DummyRunnable"] + }, + "PPortPrototype_IoHwAb_GetDUMMY1": { + "operation": "Op_IoHwAb_GetDUMMY1", + "runnable": ["DummyRunnable"], + "timeout": 0, + "calltype": "sync" + } + } + }, "ports": { "GlobSignNme": {"direction": "IN", "interface": "PIGlobSignNme"} }, diff --git a/test_data/zone_controller/test_composition_yaml/composition_yaml_with_a2l_axis_data.py b/test_data/zone_controller/test_composition_yaml/composition_yaml_with_a2l_axis_data.py index 07c10c6..d7d4cc6 100644 --- a/test_data/zone_controller/test_composition_yaml/composition_yaml_with_a2l_axis_data.py +++ b/test_data/zone_controller/test_composition_yaml/composition_yaml_with_a2l_axis_data.py @@ -217,6 +217,20 @@ expected_result = { ] } }, + "io": { + "DUMMY1": { + "DUMMY1": { + "dataElement": "DUMMY1", + "runnable": ["DummyRunnable"] + }, + "PPortPrototype_IoHwAb_GetDUMMY1": { + "operation": "Op_IoHwAb_GetDUMMY1", + "runnable": ["DummyRunnable"], + "timeout": 0, + "calltype": "sync" + } + } + }, "ports": { "GlobSignNme": {"direction": "IN", "interface": "PIGlobSignNme"} }, diff --git a/test_data/zone_controller/test_composition_yaml/composition_yaml_with_calls_all_fields.py b/test_data/zone_controller/test_composition_yaml/composition_yaml_with_calls_all_fields.py index cf2c0ff..1d64702 100644 --- a/test_data/zone_controller/test_composition_yaml/composition_yaml_with_calls_all_fields.py +++ b/test_data/zone_controller/test_composition_yaml/composition_yaml_with_calls_all_fields.py @@ -33,6 +33,20 @@ expected_result = { "nv-needs": {}, "static": composition_yaml_setup.base_static, "shared": composition_yaml_setup.base_shared, + "io": { + "DUMMY1": { + "DUMMY1": { + "dataElement": "DUMMY1", + "runnable": ["DummyRunnable"] + }, + "PPortPrototype_IoHwAb_GetDUMMY1": { + "operation": "Op_IoHwAb_GetDUMMY1", + "runnable": ["DummyRunnable"], + "timeout": 0, + "calltype": "sync" + } + } + }, "ports": { "GlobSignNme": {"direction": "IN", "interface": "PIGlobSignNme"}, "CallOne": {"direction": "IN", "interface": "InterfaceOne"} diff --git a/test_data/zone_controller/test_composition_yaml/composition_yaml_with_calls_no_optional_fields.py b/test_data/zone_controller/test_composition_yaml/composition_yaml_with_calls_no_optional_fields.py index 28b2478..ee09cb6 100644 --- a/test_data/zone_controller/test_composition_yaml/composition_yaml_with_calls_no_optional_fields.py +++ b/test_data/zone_controller/test_composition_yaml/composition_yaml_with_calls_no_optional_fields.py @@ -32,6 +32,20 @@ expected_result = { "nv-needs": {}, "static": composition_yaml_setup.base_static, "shared": composition_yaml_setup.base_shared, + "io": { + "DUMMY1": { + "DUMMY1": { + "dataElement": "DUMMY1", + "runnable": ["DummyRunnable"] + }, + "PPortPrototype_IoHwAb_GetDUMMY1": { + "operation": "Op_IoHwAb_GetDUMMY1", + "runnable": ["DummyRunnable"], + "timeout": 0, + "calltype": "sync" + } + } + }, "ports": { "GlobSignNme": {"direction": "IN", "interface": "PIGlobSignNme"}, "CallOne": {"direction": "IN", "interface": "CallOne"} diff --git a/test_data/zone_controller/test_composition_yaml/composition_yaml_with_dids.py b/test_data/zone_controller/test_composition_yaml/composition_yaml_with_dids.py index d18c6a4..938e028 100644 --- a/test_data/zone_controller/test_composition_yaml/composition_yaml_with_dids.py +++ b/test_data/zone_controller/test_composition_yaml/composition_yaml_with_dids.py @@ -89,6 +89,20 @@ expected_result = { "nv-needs": {}, "static": composition_yaml_setup.base_static, "shared": composition_yaml_setup.base_shared, + "io": { + "DUMMY1": { + "DUMMY1": { + "dataElement": "DUMMY1", + "runnable": ["DummyRunnable"] + }, + "PPortPrototype_IoHwAb_GetDUMMY1": { + "operation": "Op_IoHwAb_GetDUMMY1", + "runnable": ["DummyRunnable"], + "timeout": 0, + "calltype": "sync" + } + } + }, "ports": { "GlobSignNme": {"direction": "IN", "interface": "PIGlobSignNme"}, } diff --git a/test_data/zone_controller/test_composition_yaml/composition_yaml_with_dtcs.py b/test_data/zone_controller/test_composition_yaml/composition_yaml_with_dtcs.py index bc77398..e706cb5 100644 --- a/test_data/zone_controller/test_composition_yaml/composition_yaml_with_dtcs.py +++ b/test_data/zone_controller/test_composition_yaml/composition_yaml_with_dtcs.py @@ -71,6 +71,20 @@ expected_result = { "nv-needs": {}, "static": composition_yaml_setup.base_static, "shared": composition_yaml_setup.base_shared, + "io": { + "DUMMY1": { + "DUMMY1": { + "dataElement": "DUMMY1", + "runnable": ["DummyRunnable"] + }, + "PPortPrototype_IoHwAb_GetDUMMY1": { + "operation": "Op_IoHwAb_GetDUMMY1", + "runnable": ["DummyRunnable"], + "timeout": 0, + "calltype": "sync" + } + } + }, "ports": { "GlobSignNme": {"direction": "IN", "interface": "PIGlobSignNme"}, } diff --git a/test_data/zone_controller/test_composition_yaml/composition_yaml_with_nvm.py b/test_data/zone_controller/test_composition_yaml/composition_yaml_with_nvm.py index 2f9b193..24dc29e 100644 --- a/test_data/zone_controller/test_composition_yaml/composition_yaml_with_nvm.py +++ b/test_data/zone_controller/test_composition_yaml/composition_yaml_with_nvm.py @@ -146,6 +146,20 @@ expected_result = { **additional_static, }, "shared": composition_yaml_setup.base_shared, + "io": { + "DUMMY1": { + "DUMMY1": { + "dataElement": "DUMMY1", + "runnable": ["DummyRunnable"] + }, + "PPortPrototype_IoHwAb_GetDUMMY1": { + "operation": "Op_IoHwAb_GetDUMMY1", + "runnable": ["DummyRunnable"], + "timeout": 0, + "calltype": "sync" + } + } + }, "ports": { "GlobSignNme": {"direction": "IN", "interface": "PIGlobSignNme"} },