From 54f83a431ee3b947a549614e9a1e6ebe5d9e8181 Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 12 Apr 2019 20:11:27 -0400 Subject: [PATCH] smarter PWM API - need to pass arbitrary pointer --- firmware/controllers/actuators/alternator_controller.cpp | 2 +- firmware/controllers/actuators/aux_pid.cpp | 2 +- firmware/controllers/actuators/electronic_throttle.cpp | 2 +- firmware/controllers/actuators/idle_thread.cpp | 4 ++-- firmware/controllers/core/fsio_impl.cpp | 2 +- firmware/controllers/scheduling/pwm_generator_logic.cpp | 2 +- firmware/controllers/trigger/trigger_emulator_algo.cpp | 6 +++--- firmware/hw_layer/pwm_generator.h | 2 +- firmware/hw_layer/sensors/cj125.cpp | 2 +- 9 files changed, 12 insertions(+), 12 deletions(-) diff --git a/firmware/controllers/actuators/alternator_controller.cpp b/firmware/controllers/actuators/alternator_controller.cpp index 022fa39a28..61d6d5e0d4 100644 --- a/firmware/controllers/actuators/alternator_controller.cpp +++ b/firmware/controllers/actuators/alternator_controller.cpp @@ -124,7 +124,7 @@ void setAltPFactor(float p) { showAltInfo(); } -static void applyAlternatorPinState(PwmConfig *state, int stateIndex, PwmConfig *arg) /* pwm_gen_callback */ { +static void applyAlternatorPinState(PwmConfig *unused, int stateIndex, PwmConfig *state) /* pwm_gen_callback */ { efiAssertVoid(CUSTOM_ERR_6643, stateIndex < PWM_PHASE_MAX_COUNT, "invalid stateIndex"); efiAssertVoid(CUSTOM_IDLE_WAVE_CNT, state->multiWave.waveCount == 1, "invalid idle waveCount"); OutputPin *output = state->outputPins[0]; diff --git a/firmware/controllers/actuators/aux_pid.cpp b/firmware/controllers/actuators/aux_pid.cpp index 6a23da4460..528f62cd8c 100644 --- a/firmware/controllers/actuators/aux_pid.cpp +++ b/firmware/controllers/actuators/aux_pid.cpp @@ -119,7 +119,7 @@ static void turnAuxPidOn(int index) { &engine->executor, engineConfiguration->auxPidPins[index], &auxPidPin[0], - engineConfiguration->auxPidFrequency[index], 0.1, applyPinState); + engineConfiguration->auxPidFrequency[index], 0.1, (pwm_gen_callback*)applyPinState); } void startAuxPins(void) { diff --git a/firmware/controllers/actuators/electronic_throttle.cpp b/firmware/controllers/actuators/electronic_throttle.cpp index af24aabe55..775d7e51db 100644 --- a/firmware/controllers/actuators/electronic_throttle.cpp +++ b/firmware/controllers/actuators/electronic_throttle.cpp @@ -115,7 +115,7 @@ public: &etbOutput, freq, 0.80, - applyPinState); + (pwm_gen_callback*)applyPinState); outputDirectionOpen.initPin("etb dir open", directionPin1); outputDirectionClose.initPin("etb dir close", directionPin2); } diff --git a/firmware/controllers/actuators/idle_thread.cpp b/firmware/controllers/actuators/idle_thread.cpp index dbf5850b75..03cedfcc76 100644 --- a/firmware/controllers/actuators/idle_thread.cpp +++ b/firmware/controllers/actuators/idle_thread.cpp @@ -449,7 +449,7 @@ void setDefaultIdleParameters(void) { engineConfiguration->idleRpmPid.periodMs = 10; } -static void applyIdleSolenoidPinState(PwmConfig *state, int stateIndex, void *arg) /* pwm_gen_callback */ { +static void applyIdleSolenoidPinState(PwmConfig *unused, int stateIndex, PwmConfig *state) /* pwm_gen_callback */ { efiAssertVoid(CUSTOM_ERR_6645, stateIndex < PWM_PHASE_MAX_COUNT, "invalid stateIndex"); efiAssertVoid(CUSTOM_ERR_6646, state->multiWave.waveCount == 1, "invalid idle waveCount"); OutputPin *output = state->outputPins[0]; @@ -480,7 +480,7 @@ static void initIdleHardware() { &engine->executor, CONFIGB(idle).solenoidPin, &enginePins.idleSolenoidPin, CONFIGB(idle).solenoidFrequency, CONFIGB(manIdlePosition) / 100, - applyIdleSolenoidPinState); + (pwm_gen_callback*)applyIdleSolenoidPinState); idlePositionSensitivityThreshold = 0.0f; } } diff --git a/firmware/controllers/core/fsio_impl.cpp b/firmware/controllers/core/fsio_impl.cpp index fbc924b3d5..9d67253de1 100644 --- a/firmware/controllers/core/fsio_impl.cpp +++ b/firmware/controllers/core/fsio_impl.cpp @@ -665,7 +665,7 @@ void initFsioImpl(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX) { } else { startSimplePwmExt(&fsioPwm[i], "FSIOpwm", &engine->executor, - brainPin, &enginePins.fsioOutputs[i], frequency, 0.5f, applyPinState); + brainPin, &enginePins.fsioOutputs[i], frequency, 0.5f, (pwm_gen_callback*)applyPinState); } } } diff --git a/firmware/controllers/scheduling/pwm_generator_logic.cpp b/firmware/controllers/scheduling/pwm_generator_logic.cpp index bc7dd300ca..babb930b3d 100644 --- a/firmware/controllers/scheduling/pwm_generator_logic.cpp +++ b/firmware/controllers/scheduling/pwm_generator_logic.cpp @@ -332,7 +332,7 @@ void startSimplePwmExt(SimplePwm *state, const char *msg, * * This method takes ~350 ticks. */ -void applyPinState(PwmConfig *state, int stateIndex, void *arg) /* pwm_gen_callback */ { +void applyPinState(PwmConfig *unused, int stateIndex, PwmConfig *state) /* pwm_gen_callback */ { efiAssertVoid(CUSTOM_ERR_6663, stateIndex < PWM_PHASE_MAX_COUNT, "invalid stateIndex"); efiAssertVoid(CUSTOM_ERR_6664, state->multiWave.waveCount <= PWM_PHASE_MAX_WAVE_PER_PWM, "invalid waveCount"); for (int channelIndex = 0; channelIndex < state->multiWave.waveCount; channelIndex++) { diff --git a/firmware/controllers/trigger/trigger_emulator_algo.cpp b/firmware/controllers/trigger/trigger_emulator_algo.cpp index 5e49e4250e..fae174a790 100644 --- a/firmware/controllers/trigger/trigger_emulator_algo.cpp +++ b/firmware/controllers/trigger/trigger_emulator_algo.cpp @@ -133,7 +133,7 @@ static void updateTriggerShapeIfNeeded(PwmConfig *state) { static TriggerEmulatorHelper helper; -static void emulatorApplyPinState(PwmConfig *state, int stateIndex, void *arg) /* pwm_gen_callback */ { +static void emulatorApplyPinState(PwmConfig *unused, int stateIndex, PwmConfig *state) /* pwm_gen_callback */ { if (stopEmulationAtIndex == stateIndex) { isEmulating = false; } @@ -141,7 +141,7 @@ static void emulatorApplyPinState(PwmConfig *state, int stateIndex, void *arg) / return; } #if EFI_PROD_CODE || defined(__DOXYGEN__) - applyPinState(state, stateIndex, arg); + applyPinState(unused, stateIndex, state); #endif /* EFI_PROD_CODE */ if (engineConfiguration->directSelfStimulation) { /** @@ -172,7 +172,7 @@ void initTriggerEmulatorLogic(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUF triggerSignal.weComplexInit("position sensor", &engine->executor, s->getSize(), s->wave.switchTimes, PWM_PHASE_MAX_WAVE_PER_PWM, - pinStates, updateTriggerShapeIfNeeded, emulatorApplyPinState); + pinStates, updateTriggerShapeIfNeeded, (pwm_gen_callback*)emulatorApplyPinState); addConsoleActionI("rpm", setTriggerEmulatorRPM); addConsoleActionI("stop_stimulator_at_index", setEmulatorAtIndex); diff --git a/firmware/hw_layer/pwm_generator.h b/firmware/hw_layer/pwm_generator.h index b9188c61f8..b063a0e195 100644 --- a/firmware/hw_layer/pwm_generator.h +++ b/firmware/hw_layer/pwm_generator.h @@ -21,6 +21,6 @@ void initPwmGenerator(void); * default implementation of pwm_gen_callback which simply toggles the pins * */ -void applyPinState(PwmConfig *state, int stateIndex, void* arg) /* pwm_gen_callback */; +void applyPinState(PwmConfig *unused, int stateIndex, PwmConfig* state) /* pwm_gen_callback */; #endif /* PWM_GENERATOR_H_ */ diff --git a/firmware/hw_layer/sensors/cj125.cpp b/firmware/hw_layer/sensors/cj125.cpp index c0d81d71ac..1a75dbd104 100644 --- a/firmware/hw_layer/sensors/cj125.cpp +++ b/firmware/hw_layer/sensors/cj125.cpp @@ -561,7 +561,7 @@ void initCJ125(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX) { return; } scheduleMsg(logger, "cj125: Starting heater control"); - globalInstance.StartHeaterControl(applyPinState PASS_ENGINE_PARAMETER_SUFFIX); + globalInstance.StartHeaterControl((pwm_gen_callback*)applyPinState PASS_ENGINE_PARAMETER_SUFFIX); cjStart(PASS_ENGINE_PARAMETER_SIGNATURE); #ifdef CJ125_DEBUG