From 6e71b72accd5171cf9e76cff1299f0ed28cd61df Mon Sep 17 00:00:00 2001 From: rusefillc Date: Sun, 11 Sep 2022 02:16:47 -0400 Subject: [PATCH] refactoring - reducing API between FW and Java --- .../algo/auto_generated_commonenum.cpp | 36 ++----------------- .../algo/auto_generated_commonenum.h | 4 +-- firmware/controllers/algo/rusefi_enums.h | 24 ------------- firmware/controllers/core/state_sequence.h | 13 +++++++ .../trigger/decoders/trigger_structure.cpp | 4 +-- .../controllers/trigger/trigger_decoder.cpp | 23 ++++++++++++ .../controllers/trigger/trigger_decoder.h | 5 ++- firmware/hw_layer/adc/adc_inputs.h | 6 ++++ 8 files changed, 50 insertions(+), 65 deletions(-) diff --git a/firmware/controllers/algo/auto_generated_commonenum.cpp b/firmware/controllers/algo/auto_generated_commonenum.cpp index f9e78432ef..a2d9919f8e 100644 --- a/firmware/controllers/algo/auto_generated_commonenum.cpp +++ b/firmware/controllers/algo/auto_generated_commonenum.cpp @@ -139,17 +139,7 @@ case TsCalMode::Tps2SecondaryMin: } return NULL; } -const char *getAdc_channel_mode_e(adc_channel_mode_e value){ -switch(value) { -case ADC_FAST: - return "ADC_FAST"; -case ADC_OFF: - return "ADC_OFF"; -case ADC_SLOW: - return "ADC_SLOW"; - } - return NULL; -} + const char *getAir_pressure_sensor_type_e(air_pressure_sensor_type_e value){ switch(value) { case MT_BOSCH_2_5: @@ -665,28 +655,8 @@ case TL_SEMI_AUTO: } return NULL; } -const char *getTrigger_event_e(trigger_event_e value){ -switch(value) { -case SHAFT_PRIMARY_FALLING: - return "SHAFT_PRIMARY_FALLING"; -case SHAFT_PRIMARY_RISING: - return "SHAFT_PRIMARY_RISING"; -case SHAFT_SECONDARY_FALLING: - return "SHAFT_SECONDARY_FALLING"; -case SHAFT_SECONDARY_RISING: - return "SHAFT_SECONDARY_RISING"; - } - return NULL; -} -const char *getTrigger_value_e(trigger_value_e value){ -switch(value) { -case TV_FALL: - return "TV_FALL"; -case TV_RISE: - return "TV_RISE"; - } - return NULL; -} + + const char *getTrigger_wheel_e(trigger_wheel_e value){ switch(value) { case T_NONE: diff --git a/firmware/controllers/algo/auto_generated_commonenum.h b/firmware/controllers/algo/auto_generated_commonenum.h index b9ec9a6336..0c80075bed 100644 --- a/firmware/controllers/algo/auto_generated_commonenum.h +++ b/firmware/controllers/algo/auto_generated_commonenum.h @@ -23,7 +23,6 @@ const char *getTransmissionControllerMode(TransmissionControllerMode value); #if __cplusplus const char *getTsCalMode(TsCalMode value); #endif //__cplusplus -const char *getAdc_channel_mode_e(adc_channel_mode_e value); const char *getAir_pressure_sensor_type_e(air_pressure_sensor_type_e value); const char *getAntiLagActivationMode_e(antiLagActivationMode_e value); const char *getBoostType_e(boostType_e value); @@ -59,8 +58,7 @@ const char *getStepper_num_micro_steps_e(stepper_num_micro_steps_e value); const char *getTChargeMode_e(tChargeMode_e value); const char *getTiming_mode_e(timing_mode_e value); const char *getTle8888_mode_e(tle8888_mode_e value); -const char *getTrigger_event_e(trigger_event_e value); -const char *getTrigger_value_e(trigger_value_e value); + const char *getTrigger_wheel_e(trigger_wheel_e value); const char *getUart_device_e(uart_device_e value); const char *getVe_override_e(ve_override_e value); diff --git a/firmware/controllers/algo/rusefi_enums.h b/firmware/controllers/algo/rusefi_enums.h index 8a9a164f39..f8e870ced4 100644 --- a/firmware/controllers/algo/rusefi_enums.h +++ b/firmware/controllers/algo/rusefi_enums.h @@ -36,22 +36,6 @@ typedef enum __attribute__ ((__packed__)) PIN_INVALID = 0x80 } brain_pin_diag_e; -// this header is part of firmware public API it gets consumed by code generator -// and values are available to java todo: pull this adc_channel_mode_e enum into a not-public-api header -typedef enum __attribute__ ((__packed__)) { - ADC_OFF = 0, - ADC_SLOW = 1, - ADC_FAST = 2, - -} adc_channel_mode_e; - -// this header is part of firmware public API it gets consumed by code generator -// and values are available to java todo: pull this trigger_value_e enum into a not-public-api header -typedef enum { - TV_FALL = 0, - TV_RISE = 1 -} trigger_value_e; - // see also PWM_PHASE_MAX_WAVE_PER_PWM // todo: better names? typedef enum { @@ -60,14 +44,6 @@ typedef enum { T_NONE = 15 } trigger_wheel_e; -// see also 'HW_EVENT_TYPES' -typedef enum { - SHAFT_PRIMARY_FALLING = 0, - SHAFT_PRIMARY_RISING = 1, - SHAFT_SECONDARY_FALLING = 2, - SHAFT_SECONDARY_RISING = 3, -} trigger_event_e; - typedef enum __attribute__ ((__packed__)) { /** * This mode is useful for troubleshooting and research - events are logged but no effects on phase synchronization diff --git a/firmware/controllers/core/state_sequence.h b/firmware/controllers/core/state_sequence.h index 7f759e39fb..942fc19167 100644 --- a/firmware/controllers/core/state_sequence.h +++ b/firmware/controllers/core/state_sequence.h @@ -11,6 +11,19 @@ #include "rusefi_enums.h" #include "expected.h" +typedef enum { + TV_FALL = 0, + TV_RISE = 1 +} trigger_value_e; + +// see also 'HW_EVENT_TYPES' +typedef enum { + SHAFT_PRIMARY_FALLING = 0, + SHAFT_PRIMARY_RISING = 1, + SHAFT_SECONDARY_FALLING = 2, + SHAFT_SECONDARY_RISING = 3, +} trigger_event_e; + /** * This layer has two primary usages: * 1) 'simple' PWM generation is used to produce actuator square control wave diff --git a/firmware/controllers/trigger/decoders/trigger_structure.cpp b/firmware/controllers/trigger/decoders/trigger_structure.cpp index e918badff5..fe4f5dfce8 100644 --- a/firmware/controllers/trigger/decoders/trigger_structure.cpp +++ b/firmware/controllers/trigger/decoders/trigger_structure.cpp @@ -267,9 +267,9 @@ void TriggerWaveform::addEvent(angle_t angle, trigger_wheel_e const channelIndex } if (wave.phaseCount > 0) { if (angle <= previousAngle) { - warning(CUSTOM_ERR_TRG_ANGLE_ORDER, "invalid angle order %s %d: new=%.2f/%f and prev=%.2f/%f, size=%d", + warning(CUSTOM_ERR_TRG_ANGLE_ORDER, "invalid angle order %s %s: new=%.2f/%f and prev=%.2f/%f, size=%d", getTrigger_wheel_e(channelIndex), - state, + getTrigger_value_e(state), angle, angle * getCycleDuration(), previousAngle, previousAngle * getCycleDuration(), wave.phaseCount); diff --git a/firmware/controllers/trigger/trigger_decoder.cpp b/firmware/controllers/trigger/trigger_decoder.cpp index 6760df8745..b4ce8a8d44 100644 --- a/firmware/controllers/trigger/trigger_decoder.cpp +++ b/firmware/controllers/trigger/trigger_decoder.cpp @@ -428,6 +428,29 @@ void PrimaryTriggerDecoder::onTooManyTeeth(int /*actual*/, int /*expected*/) { currentCycle.eventCount[1]); } +const char *getTrigger_event_e(trigger_event_e value){ +switch(value) { +case SHAFT_PRIMARY_FALLING: + return "SHAFT_PRIMARY_FALLING"; +case SHAFT_PRIMARY_RISING: + return "SHAFT_PRIMARY_RISING"; +case SHAFT_SECONDARY_FALLING: + return "SHAFT_SECONDARY_FALLING"; +case SHAFT_SECONDARY_RISING: + return "SHAFT_SECONDARY_RISING"; + } + return NULL; +} +const char *getTrigger_value_e(trigger_value_e value){ +switch(value) { +case TV_FALL: + return "TV_FALL"; +case TV_RISE: + return "TV_RISE"; + } + return NULL; +} + void VvtTriggerDecoder::onNotEnoughTeeth(int actual, int expected) { warning(CUSTOM_CAM_NOT_ENOUGH_TEETH, "cam %s trigger error: not enough teeth between sync points: actual %d expected %d", name, actual, expected); } diff --git a/firmware/controllers/trigger/trigger_decoder.h b/firmware/controllers/trigger/trigger_decoder.h index 00422750ae..c495f051e9 100644 --- a/firmware/controllers/trigger/trigger_decoder.h +++ b/firmware/controllers/trigger/trigger_decoder.h @@ -14,7 +14,8 @@ #include "trigger_state_primary_generated.h" #include "timer.h" -class TriggerDecoderBase; +const char *getTrigger_event_e(trigger_event_e value); +const char *getTrigger_value_e(trigger_value_e value); struct TriggerStateListener { #if EFI_SHAFT_POSITION_INPUT @@ -253,8 +254,6 @@ public: angle_t getEngineCycle(operation_mode_e operationMode); -class Engine; - void calculateTriggerSynchPoint( TriggerWaveform& shape, TriggerDecoderBase& state); diff --git a/firmware/hw_layer/adc/adc_inputs.h b/firmware/hw_layer/adc/adc_inputs.h index 8339e9cc6f..078492c015 100644 --- a/firmware/hw_layer/adc/adc_inputs.h +++ b/firmware/hw_layer/adc/adc_inputs.h @@ -32,6 +32,12 @@ static inline bool isAdcChannelValid(adc_channel_e hwChannel) { #if HAL_USE_ADC +typedef enum { + ADC_OFF = 0, + ADC_SLOW = 1, + ADC_FAST = 2, +} adc_channel_mode_e; + adc_channel_mode_e getAdcMode(adc_channel_e hwChannel); void initAdcInputs();