auto-sync

This commit is contained in:
rusEfi 2015-04-12 23:07:33 -05:00
parent cea85f54a7
commit b05894a337
1 changed files with 20 additions and 6 deletions

View File

@ -23,32 +23,46 @@ TriggerEmulatorHelper::TriggerEmulatorHelper() {
thirdWheelState = false;
}
static bool_t isUp[6] = { false, true, false, true, false, true };
EXTERN_ENGINE
;
static void fireShaftSignal(trigger_event_e signal) {
if (!engineConfiguration->useOnlyFrontForTrigger || isUp[(int) signal])
hwHandleShaftSignal(signal);
}
void TriggerEmulatorHelper::handleEmulatorCallback(PwmConfig *state, int stateIndex) {
int prevIndex = (stateIndex + state->phaseCount - 1) % state->phaseCount;
bool_t primaryWheelState = state->multiWave.waves[0].pinStates[prevIndex];
int newPrimaryWheelState = state->multiWave.waves[0].pinStates[stateIndex];
bool_t secondaryWheelState = state->multiWave.waves[1].pinStates[prevIndex];
int newSecondaryWheelState = state->multiWave.waves[1].pinStates[stateIndex];
bool_t thirdWheelState = state->multiWave.waves[2].pinStates[prevIndex];
int new3rdWheelState = state->multiWave.waves[2].pinStates[stateIndex];
if (primaryWheelState != newPrimaryWheelState) {
primaryWheelState = newPrimaryWheelState;
hwHandleShaftSignal(primaryWheelState ? SHAFT_PRIMARY_UP : SHAFT_PRIMARY_DOWN);
fireShaftSignal(primaryWheelState ? SHAFT_PRIMARY_UP : SHAFT_PRIMARY_DOWN);
}
if (secondaryWheelState != newSecondaryWheelState) {
secondaryWheelState = newSecondaryWheelState;
hwHandleShaftSignal(secondaryWheelState ? SHAFT_SECONDARY_UP : SHAFT_SECONDARY_DOWN);
fireShaftSignal(secondaryWheelState ? SHAFT_SECONDARY_UP : SHAFT_SECONDARY_DOWN);
}
if (thirdWheelState != new3rdWheelState) {
thirdWheelState = new3rdWheelState;
hwHandleShaftSignal(thirdWheelState ? SHAFT_3RD_UP : SHAFT_3RD_DOWN);
fireShaftSignal(thirdWheelState ? SHAFT_3RD_UP : SHAFT_3RD_DOWN);
}
// print("hello %d\r\n", chTimeNow());
}
EXTERN_ENGINE
;
/*
* todo: should we simply re-use instances used by trigger_decoder?
* todo: since we are emulating same shape we are decoding