from ScEpTIC.config.base_config import ScEpTICBaseConfig class BaseTransformationsConfig(ScEpTICBaseConfig): """ Configuration for default transformations """ _config_domain = { 'simulate_clock_cycles_function_name': {'class': str, 'mode': 'set'}, 'increment_custom_metric_function_name': {'class': str, 'mode': 'set'}, 'enter_mcu_lpm_function_name': {'class': str, 'mode': 'set'}, 'print_dump_function_name': {'class': str, 'mode': 'set'}, 'interrupts_enable_firing_function_name': {'class': str, 'mode': 'set'}, 'interrupts_disable_firing_function_name': {'class': str, 'mode': 'set'}, 'interrupts_enable_function_name': {'class': str, 'mode': 'set'}, 'interrupts_disable_function_name': {'class': str, 'mode': 'set'}, 'timer_start_function_name': {'class': str, 'mode': 'set'}, 'timer_stop_function_name': {'class': str, 'mode': 'set'}, 'timer_set_period_function_name': {'class': str, 'mode': 'set'}, 'printf_function_name': {'class': str, 'mode': 'set'}, 'custom_log_function_name': {'class': str, 'mode': 'set'}, 'custom_log_dump_function_name': {'class': str, 'mode': 'set'}, } def __init__(self, main_config): super().__init__(main_config) self.__ir_prefix = f"{main_config.program.ir_function_prefix}" self.simulate_clock_cycles_function_name = f"{self.__ir_prefix}sceptic_simulate_cycles" self.increment_custom_metric_function_name = f"{self.__ir_prefix}sceptic_increment_custom_metric" self.enter_mcu_lpm_function_name = f"{self.__ir_prefix}sceptic_mcu_lpm" self.print_dump_function_name = f"{self.__ir_prefix}sceptic_print_dump" self.interrupts_enable_firing_function_name = f"{self.__ir_prefix}sceptic_interrupts_enable_firing" self.interrupts_disable_firing_function_name = f"{self.__ir_prefix}sceptic_interrupts_disable_firing" self.interrupts_enable_function_name = f"{self.__ir_prefix}sceptic_interrupts_enable" self.interrupts_disable_function_name = f"{self.__ir_prefix}sceptic_interrupts_disable" self.timer_start_function_name = f"{self.__ir_prefix}sceptic_timer_start" self.timer_stop_function_name = f"{self.__ir_prefix}sceptic_timer_stop" self.timer_set_period_function_name = f"{self.__ir_prefix}sceptic_timer_set_period" self.printf_function_name = f"{self.__ir_prefix}printf" self.custom_log_function_name = f"{self.__ir_prefix}sceptic_custom_log" self.custom_log_dump_function_name = f"{self.__ir_prefix}sceptic_custom_log_dump" for function_name in self._config_domain.keys(): self._register_config_callback(function_name, self._append_ir_callback) def _append_ir_callback(self, config_name, config_value): if not config_value.startswith("sceptic_"): config_value = f"sceptic_{config_value}" setattr(self, config_name, f"{self.__ir_prefix}{config_value}") # Returns the configuration def get_config(main_config): return BaseTransformationsConfig(main_config)