diff --git a/firmware/controllers/algo/lcd_menu_tree.cpp b/firmware/controllers/algo/lcd_menu_tree.cpp index 02cfedafc2..332f346d43 100644 --- a/firmware/controllers/algo/lcd_menu_tree.cpp +++ b/firmware/controllers/algo/lcd_menu_tree.cpp @@ -47,16 +47,19 @@ void MenuTree::nextItem(void) { topVisible = topVisible->next; } -MenuItem::MenuItem(MenuItem * parent, const char *text, VoidCallback callback) : MenuItem(parent, LL_STRING, text, callback) { +MenuItem::MenuItem(MenuItem * parent, const char *text, VoidCallback callback) { + baseConstructor(parent, LL_STRING, text, callback); } -MenuItem::MenuItem(MenuItem * parent, const char *text) : MenuItem(parent, LL_STRING, text, NULL) { +MenuItem::MenuItem(MenuItem * parent, const char *text) { + baseConstructor(parent, LL_STRING, text, NULL); } -MenuItem::MenuItem(MenuItem * parent, lcd_line_e lcdLine) : MenuItem(parent, lcdLine, NULL, NULL) { +MenuItem::MenuItem(MenuItem * parent, lcd_line_e lcdLine) { + baseConstructor(parent, lcdLine, NULL, NULL); } -MenuItem::MenuItem(MenuItem * parent, lcd_line_e lcdLine, const char *text, VoidCallback callback) { +void MenuItem::baseConstructor(MenuItem * parent, lcd_line_e lcdLine, const char *text, VoidCallback callback) { this->parent = parent; this->lcdLine = lcdLine; this->text = text; diff --git a/firmware/controllers/algo/lcd_menu_tree.h b/firmware/controllers/algo/lcd_menu_tree.h index 4b782dd07a..1fad800999 100644 --- a/firmware/controllers/algo/lcd_menu_tree.h +++ b/firmware/controllers/algo/lcd_menu_tree.h @@ -42,7 +42,7 @@ typedef void (*VoidCallback)(void); class MenuItem { public: - MenuItem(MenuItem * parent, lcd_line_e lcdLine, const char *text, VoidCallback callback); + void baseConstructor(MenuItem * parent, lcd_line_e lcdLine, const char *text, VoidCallback callback); MenuItem(MenuItem * parent, const char *text, VoidCallback callback); MenuItem(MenuItem * parent, const char *text); MenuItem(MenuItem * parent, lcd_line_e lcdLine); diff --git a/firmware/controllers/core/EfiWave.cpp b/firmware/controllers/core/EfiWave.cpp index c8eced492b..412d588f81 100644 --- a/firmware/controllers/core/EfiWave.cpp +++ b/firmware/controllers/core/EfiWave.cpp @@ -21,13 +21,18 @@ void single_wave_s::init(pin_state_t *pinStates) { this->pinStates = pinStates; } -multi_wave_s::multi_wave_s() { +void multi_wave_s::baseConstructor() { waves = NULL; switchTimes = NULL; reset(); } -multi_wave_s::multi_wave_s(float *switchTimes, single_wave_s *waves) : multi_wave_s() { +multi_wave_s::multi_wave_s() { + baseConstructor(); +} + +multi_wave_s::multi_wave_s(float *switchTimes, single_wave_s *waves) { + baseConstructor(); init(switchTimes, waves); } diff --git a/firmware/controllers/core/EfiWave.h b/firmware/controllers/core/EfiWave.h index 82464c7be1..6b41592e38 100644 --- a/firmware/controllers/core/EfiWave.h +++ b/firmware/controllers/core/EfiWave.h @@ -39,6 +39,7 @@ class TriggerShape; class multi_wave_s { public: + void baseConstructor(); multi_wave_s(); multi_wave_s(float *st, single_wave_s *waves); void init(float *st, single_wave_s *waves); diff --git a/firmware/controllers/system/pwm_generator_logic.cpp b/firmware/controllers/system/pwm_generator_logic.cpp index 5da1e9644f..b45e67bd05 100644 --- a/firmware/controllers/system/pwm_generator_logic.cpp +++ b/firmware/controllers/system/pwm_generator_logic.cpp @@ -22,8 +22,7 @@ SimplePwm::SimplePwm() { sr[0] = waveInstance; init(_switchTimes, sr); } - -PwmConfig::PwmConfig() { +void PwmConfig::baseConstructor() { memset(&scheduling, 0, sizeof(scheduling)); memset(&safe, 0, sizeof(safe)); scheduling.name = "PwmConfig"; @@ -34,7 +33,12 @@ PwmConfig::PwmConfig() { stateChangeCallback = NULL; } -PwmConfig::PwmConfig(float *st, single_wave_s *waves) : PwmConfig() { +PwmConfig::PwmConfig() { + baseConstructor(); +} + +PwmConfig::PwmConfig(float *st, single_wave_s *waves) { + baseConstructor(); multiWave.init(st, waves); } diff --git a/firmware/controllers/system/pwm_generator_logic.h b/firmware/controllers/system/pwm_generator_logic.h index dd1c4c870e..1ee6d927de 100644 --- a/firmware/controllers/system/pwm_generator_logic.h +++ b/firmware/controllers/system/pwm_generator_logic.h @@ -43,6 +43,7 @@ class PwmConfig { public: PwmConfig(); PwmConfig(float *switchTimes, single_wave_s *waves); + void baseConstructor(); void init(float *switchTimes, single_wave_s *waves); void weComplexInit(const char *msg, diff --git a/firmware/hw_layer/adc_inputs.cpp b/firmware/hw_layer/adc_inputs.cpp index 3486c7c7ec..4262c03dc7 100644 --- a/firmware/hw_layer/adc_inputs.cpp +++ b/firmware/hw_layer/adc_inputs.cpp @@ -28,6 +28,7 @@ AdcDevice::AdcDevice(ADCConversionGroup* hwConfig) { hwConfig->sqr1 = 0; hwConfig->sqr2 = 0; hwConfig->sqr3 = 0; + memset(hardwareIndexByIndernalAdcIndex, 0, sizeof(hardwareIndexByIndernalAdcIndex)); memset(internalAdcIndexByHardwareIndex, 0xFFFFFFFF, sizeof(internalAdcIndexByHardwareIndex)); } diff --git a/firmware/util/datalogging.cpp b/firmware/util/datalogging.cpp index 63311ecded..274cf69a93 100644 --- a/firmware/util/datalogging.cpp +++ b/firmware/util/datalogging.cpp @@ -386,7 +386,7 @@ void initIntermediateLoggingBuffer(void) { #endif /* ! EFI_UNIT_TEST */ -Logging::Logging() { +void Logging::baseConstructor() { name = NULL; buffer = NULL; linePointer = NULL; @@ -394,7 +394,12 @@ Logging::Logging() { isInitialized = false; } -Logging::Logging(char const *name, char *buffer, int bufferSize) : Logging() { +Logging::Logging() { + baseConstructor(); +} + +Logging::Logging(char const *name, char *buffer, int bufferSize) { + baseConstructor(); #if ! EFI_UNIT_TEST initLoggingExt(this, "settings control", buffer, bufferSize); #endif /* ! EFI_UNIT_TEST */ diff --git a/firmware/util/datalogging.h b/firmware/util/datalogging.h index ab6716a823..7cb83dac58 100644 --- a/firmware/util/datalogging.h +++ b/firmware/util/datalogging.h @@ -18,6 +18,7 @@ // size of buffers? class Logging { public: + void baseConstructor(); Logging(); Logging(const char *name, char *buffer, int bufferSize); const char *name; diff --git a/firmware/util/listener_array.cpp b/firmware/util/listener_array.cpp index 6011c6dd1a..7867270a93 100644 --- a/firmware/util/listener_array.cpp +++ b/firmware/util/listener_array.cpp @@ -11,6 +11,7 @@ IntListenerArray::IntListenerArray() { currentListenersCount = 0; memset(&args, 0, sizeof(args)); + memset(&callbacks, 0, sizeof(callbacks)); } void IntListenerArray::registerCallback(VoidInt handler, void *arg) {