Refactor Trigger System #635

This commit is contained in:
rusefi 2019-02-03 01:34:20 -05:00
parent 8d43038981
commit 8d3d716d7f
2 changed files with 8 additions and 9 deletions

View File

@ -151,7 +151,7 @@ angle_t TriggerShape::getAngle(int index) const {
void TriggerShape::addEvent3(angle_t angle, trigger_wheel_e const channelIndex, trigger_value_e const stateParam, float filterLeft, float filterRight) { void TriggerShape::addEvent3(angle_t angle, trigger_wheel_e const channelIndex, trigger_value_e const stateParam, float filterLeft, float filterRight) {
if (angle > filterLeft && angle < filterRight) if (angle > filterLeft && angle < filterRight)
addEvent(useOnlyRisingEdgeForTriggerTemp, angle / getEngineCycle(operationMode), channelIndex, stateParam); addEvent(angle / getEngineCycle(operationMode), channelIndex, stateParam);
} }
operation_mode_e TriggerShape::getOperationMode() { operation_mode_e TriggerShape::getOperationMode() {
@ -171,14 +171,10 @@ void TriggerShape::calculateExpectedEventCounts(bool useOnlyRisingEdgeForTrigger
} }
void TriggerShape::addEvent720(angle_t angle, trigger_wheel_e const channelIndex, trigger_value_e const stateParam) { void TriggerShape::addEvent720(angle_t angle, trigger_wheel_e const channelIndex, trigger_value_e const stateParam) {
addEvent(useOnlyRisingEdgeForTriggerTemp, angle / 720, channelIndex, stateParam); addEvent(angle / 720, channelIndex, stateParam);
} }
// todo: the whole 'useOnlyRisingEdgeForTrigger' parameter and logic should not be here void TriggerShape::addEvent(angle_t angle, trigger_wheel_e const channelIndex, trigger_value_e const stateParam) {
// todo: see calculateExpectedEventCounts
// related calculation should be done once trigger is initialized outside of trigger shape scope
void TriggerShape::addEvent(bool useOnlyRisingEdgeForTrigger, angle_t angle, trigger_wheel_e const channelIndex, trigger_value_e const stateParam) {
efiAssertVoid(CUSTOM_OMODE_UNDEF, operationMode != OM_NONE, "operationMode not set"); efiAssertVoid(CUSTOM_OMODE_UNDEF, operationMode != OM_NONE, "operationMode not set");
efiAssertVoid(CUSTOM_ERR_6598, channelIndex!= T_SECONDARY || needSecondTriggerInput, "secondary needed or not?"); efiAssertVoid(CUSTOM_ERR_6598, channelIndex!= T_SECONDARY || needSecondTriggerInput, "secondary needed or not?");
@ -202,7 +198,10 @@ void TriggerShape::addEvent(bool useOnlyRisingEdgeForTrigger, angle_t angle, tri
#endif #endif
if (!useOnlyRisingEdgeForTrigger || stateParam == TV_RISE) { // todo: the whole 'useOnlyRisingEdgeForTrigger' parameter and logic should not be here
// todo: see calculateExpectedEventCounts
// related calculation should be done once trigger is initialized outside of trigger shape scope
if (!useOnlyRisingEdgeForTriggerTemp || stateParam == TV_RISE) {
expectedEventCount[channelIndex]++; expectedEventCount[channelIndex]++;
} }

View File

@ -211,7 +211,7 @@ public:
bool useOnlyRisingEdgeForTriggerTemp; bool useOnlyRisingEdgeForTriggerTemp;
/* 0..1 angle range */ /* 0..1 angle range */
void addEvent(bool useOnlyRisingEdgeForTrigger, angle_t angle, trigger_wheel_e const channelIndex, trigger_value_e const state); void addEvent(angle_t angle, trigger_wheel_e const channelIndex, trigger_value_e const state);
/* 0..720 angle range /* 0..720 angle range
* Deprecated? * Deprecated?
*/ */