smarter PWM API - need to pass arbitrary pointer

This commit is contained in:
rusefi 2019-04-12 20:11:27 -04:00
parent 1dffb21e89
commit 22ad223d75
9 changed files with 12 additions and 12 deletions

View File

@ -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];

View File

@ -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) {

View File

@ -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);
}

View File

@ -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;
}
}

View File

@ -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);
}
}
}

View File

@ -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++) {

View File

@ -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);

View File

@ -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_ */

View File

@ -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