mirror of https://github.com/FOME-Tech/fome-fw.git
start switching TriggerValue to bool #55
This commit is contained in:
parent
2ed148fa9b
commit
ef10a91c59
|
@ -163,7 +163,11 @@ angle_t TriggerWaveform::getAngle(int index) const {
|
||||||
return cycleStartAngle + positionWithinCycle;
|
return cycleStartAngle + positionWithinCycle;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TriggerWaveform::addEventClamped(angle_t angle, TriggerValue const stateParam, TriggerWheel const channelIndex, float filterLeft, float filterRight) {
|
void TriggerWaveform::addEventClamped(angle_t angle, TriggerValue const state, TriggerWheel const channelIndex, float filterLeft, float filterRight) {
|
||||||
|
addEventClamped(angle, state == TriggerValue::RISE, channelIndex, filterLeft, filterRight);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TriggerWaveform::addEventClamped(angle_t angle, bool stateParam, TriggerWheel const channelIndex, float filterLeft, float filterRight) {
|
||||||
if (angle > filterLeft && angle < filterRight) {
|
if (angle > filterLeft && angle < filterRight) {
|
||||||
addEvent(angle / getEngineCycle(operationMode), stateParam, channelIndex);
|
addEvent(angle / getEngineCycle(operationMode), stateParam, channelIndex);
|
||||||
}
|
}
|
||||||
|
@ -232,6 +236,10 @@ void TriggerWaveform::addEvent360(angle_t angle, bool state, TriggerWheel const
|
||||||
}
|
}
|
||||||
|
|
||||||
void TriggerWaveform::addEventAngle(angle_t angle, TriggerValue const state, TriggerWheel const channelIndex) {
|
void TriggerWaveform::addEventAngle(angle_t angle, TriggerValue const state, TriggerWheel const channelIndex) {
|
||||||
|
addEventAngle(angle, state == TriggerValue::RISE, channelIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TriggerWaveform::addEventAngle(angle_t angle, bool state, TriggerWheel const channelIndex) {
|
||||||
addEvent(angle / getCycleDuration(), state, channelIndex);
|
addEvent(angle / getCycleDuration(), state, channelIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -206,11 +206,13 @@ public:
|
||||||
* @param angle (0..360] or (0..720] depending on configuration
|
* @param angle (0..360] or (0..720] depending on configuration
|
||||||
*/
|
*/
|
||||||
void addEventAngle(angle_t angle, TriggerValue const state, TriggerWheel const channelIndex = TriggerWheel::T_PRIMARY);
|
void addEventAngle(angle_t angle, TriggerValue const state, TriggerWheel const channelIndex = TriggerWheel::T_PRIMARY);
|
||||||
|
void addEventAngle(angle_t angle, bool state, TriggerWheel const channelIndex = TriggerWheel::T_PRIMARY);
|
||||||
|
|
||||||
/* (0..720] angle range
|
/* (0..720] angle range
|
||||||
* Deprecated?
|
* Deprecated?
|
||||||
*/
|
*/
|
||||||
void addEventClamped(angle_t angle, TriggerValue const state, TriggerWheel const channelIndex, float filterLeft, float filterRight);
|
void addEventClamped(angle_t angle, TriggerValue const state, TriggerWheel const channelIndex, float filterLeft, float filterRight);
|
||||||
|
void addEventClamped(angle_t angle, bool state, TriggerWheel const channelIndex, float filterLeft, float filterRight);
|
||||||
operation_mode_e getWheelOperationMode() const;
|
operation_mode_e getWheelOperationMode() const;
|
||||||
|
|
||||||
void initialize(operation_mode_e operationMode, SyncEdge syncEdge);
|
void initialize(operation_mode_e operationMode, SyncEdge syncEdge);
|
||||||
|
|
|
@ -24,14 +24,14 @@ void addSkippedToothTriggerEvents(TriggerWheel wheel, TriggerWaveform *s, int to
|
||||||
for (int i = 0; i < totalTeethCount - skippedCount - 1; i++) {
|
for (int i = 0; i < totalTeethCount - skippedCount - 1; i++) {
|
||||||
float angleDown = engineCycle / totalTeethCount * (i + (1 - toothWidth));
|
float angleDown = engineCycle / totalTeethCount * (i + (1 - toothWidth));
|
||||||
float angleUp = engineCycle / totalTeethCount * (i + 1);
|
float angleUp = engineCycle / totalTeethCount * (i + 1);
|
||||||
s->addEventClamped(offset + angleDown, TriggerValue::RISE, wheel, filterLeft, filterRight);
|
s->addEventClamped(offset + angleDown, true, wheel, filterLeft, filterRight);
|
||||||
s->addEventClamped(offset + angleUp, TriggerValue::FALL, wheel, filterLeft, filterRight);
|
s->addEventClamped(offset + angleUp, false, wheel, filterLeft, filterRight);
|
||||||
}
|
}
|
||||||
|
|
||||||
float angleDown = engineCycle / totalTeethCount * (totalTeethCount - skippedCount - 1 + (1 - toothWidth));
|
float angleDown = engineCycle / totalTeethCount * (totalTeethCount - skippedCount - 1 + (1 - toothWidth));
|
||||||
s->addEventClamped(offset + angleDown, TriggerValue::RISE, wheel, filterLeft, filterRight);
|
s->addEventClamped(offset + angleDown, true, wheel, filterLeft, filterRight);
|
||||||
// custom handling of last event in order to avoid rounding error
|
// custom handling of last event in order to avoid rounding error
|
||||||
s->addEventClamped(offset + engineCycle, TriggerValue::FALL, wheel, filterLeft, filterRight);
|
s->addEventClamped(offset + engineCycle, false, wheel, filterLeft, filterRight);
|
||||||
}
|
}
|
||||||
|
|
||||||
void initializeSkippedToothTrigger(TriggerWaveform *s, int totalTeethCount, int skippedCount,
|
void initializeSkippedToothTrigger(TriggerWaveform *s, int totalTeethCount, int skippedCount,
|
||||||
|
@ -65,11 +65,11 @@ void initializeSkippedToothTrigger(TriggerWaveform *s, int totalTeethCount, int
|
||||||
void configureOnePlusOne(TriggerWaveform *s) {
|
void configureOnePlusOne(TriggerWaveform *s) {
|
||||||
s->initialize(FOUR_STROKE_CAM_SENSOR, SyncEdge::Rise);
|
s->initialize(FOUR_STROKE_CAM_SENSOR, SyncEdge::Rise);
|
||||||
|
|
||||||
s->addEvent360( 90, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
|
s->addEvent360( 90, true, TriggerWheel::T_PRIMARY);
|
||||||
s->addEvent360(180, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
|
s->addEvent360(180, false, TriggerWheel::T_PRIMARY);
|
||||||
|
|
||||||
s->addEvent360(270, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
|
s->addEvent360(270, true, TriggerWheel::T_SECONDARY);
|
||||||
s->addEvent360(360, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
|
s->addEvent360(360, false, TriggerWheel::T_SECONDARY);
|
||||||
|
|
||||||
s->isSynchronizationNeeded = false;
|
s->isSynchronizationNeeded = false;
|
||||||
s->useOnlyPrimaryForSync = true;
|
s->useOnlyPrimaryForSync = true;
|
||||||
|
@ -84,29 +84,29 @@ void configure3_1_cam(TriggerWaveform *s) {
|
||||||
|
|
||||||
TriggerWheel crank = TriggerWheel::T_SECONDARY;
|
TriggerWheel crank = TriggerWheel::T_SECONDARY;
|
||||||
|
|
||||||
s->addEvent720(10, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
|
s->addEvent720(10, true, TriggerWheel::T_PRIMARY);
|
||||||
s->addEvent720(50, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
|
s->addEvent720(50, false, TriggerWheel::T_PRIMARY);
|
||||||
|
|
||||||
|
|
||||||
float a = 2 * crankW;
|
float a = 2 * crankW;
|
||||||
|
|
||||||
// #1/3
|
// #1/3
|
||||||
s->addEvent720(a += crankW, TriggerValue::RISE, crank);
|
s->addEvent720(a += crankW, true, crank);
|
||||||
s->addEvent720(a += crankW, TriggerValue::FALL, crank);
|
s->addEvent720(a += crankW, false, crank);
|
||||||
// #2/3
|
// #2/3
|
||||||
s->addEvent720(a += crankW, TriggerValue::RISE, crank);
|
s->addEvent720(a += crankW, true, crank);
|
||||||
s->addEvent720(a += crankW, TriggerValue::FALL, crank);
|
s->addEvent720(a += crankW, false, crank);
|
||||||
// #3/3
|
// #3/3
|
||||||
a += crankW;
|
a += crankW;
|
||||||
a += crankW;
|
a += crankW;
|
||||||
|
|
||||||
// 2nd #1/3
|
// 2nd #1/3
|
||||||
s->addEvent720(a += crankW, TriggerValue::RISE, crank);
|
s->addEvent720(a += crankW, true, crank);
|
||||||
s->addEvent720(a += crankW, TriggerValue::FALL, crank);
|
s->addEvent720(a += crankW, false, crank);
|
||||||
|
|
||||||
// 2nd #2/3
|
// 2nd #2/3
|
||||||
s->addEvent720(a += crankW, TriggerValue::RISE, crank);
|
s->addEvent720(a += crankW, true, crank);
|
||||||
s->addEvent720(a += crankW, TriggerValue::FALL, crank);
|
s->addEvent720(a += crankW, false, crank);
|
||||||
|
|
||||||
s->isSynchronizationNeeded = false;
|
s->isSynchronizationNeeded = false;
|
||||||
}
|
}
|
||||||
|
@ -125,8 +125,8 @@ void configureKawaKX450F(TriggerWaveform *s) {
|
||||||
addSkippedToothTriggerEvents(TriggerWheel::T_PRIMARY, s, 18, 0, toothWidth, 0, engineCycle,
|
addSkippedToothTriggerEvents(TriggerWheel::T_PRIMARY, s, 18, 0, toothWidth, 0, engineCycle,
|
||||||
NO_LEFT_FILTER, 720 - 39);
|
NO_LEFT_FILTER, 720 - 39);
|
||||||
|
|
||||||
s->addEvent(0.97, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
|
s->addEvent(0.97, true, TriggerWheel::T_PRIMARY);
|
||||||
s->addEvent(1, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
|
s->addEvent(1, false, TriggerWheel::T_PRIMARY);
|
||||||
}
|
}
|
||||||
|
|
||||||
void configureQuickStartSenderWheel(TriggerWaveform *s) {
|
void configureQuickStartSenderWheel(TriggerWaveform *s) {
|
||||||
|
@ -138,17 +138,17 @@ void configureQuickStartSenderWheel(TriggerWaveform *s) {
|
||||||
s->setTriggerSynchronizationGap(0.645);
|
s->setTriggerSynchronizationGap(0.645);
|
||||||
s->setSecondTriggerSynchronizationGap(1.556);
|
s->setSecondTriggerSynchronizationGap(1.556);
|
||||||
|
|
||||||
s->addEvent360(offset + 0, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
|
s->addEvent360(offset + 0, true, TriggerWheel::T_PRIMARY);
|
||||||
s->addEvent360(offset + 70, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
|
s->addEvent360(offset + 70, false, TriggerWheel::T_PRIMARY);
|
||||||
|
|
||||||
s->addEvent360(offset + 90, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
|
s->addEvent360(offset + 90, true, TriggerWheel::T_PRIMARY);
|
||||||
s->addEvent360(offset + 110, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
|
s->addEvent360(offset + 110, false, TriggerWheel::T_PRIMARY);
|
||||||
|
|
||||||
s->addEvent360(offset + 180, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
|
s->addEvent360(offset + 180, true, TriggerWheel::T_PRIMARY);
|
||||||
s->addEvent360(offset + 200, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
|
s->addEvent360(offset + 200, false, TriggerWheel::T_PRIMARY);
|
||||||
|
|
||||||
s->addEvent360(offset + 270, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
|
s->addEvent360(offset + 270, true, TriggerWheel::T_PRIMARY);
|
||||||
s->addEvent360(offset + 340, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
|
s->addEvent360(offset + 340, false, TriggerWheel::T_PRIMARY);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Useful for:
|
// Useful for:
|
||||||
|
@ -173,6 +173,6 @@ void configure12ToothCrank(TriggerWaveform* s) {
|
||||||
float width = 360 / 12;
|
float width = 360 / 12;
|
||||||
|
|
||||||
// Just a single tooth with 50% duty cycle
|
// Just a single tooth with 50% duty cycle
|
||||||
s->addEventAngle(width / 2, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
|
s->addEventAngle(width / 2, false, TriggerWheel::T_PRIMARY);
|
||||||
s->addEventAngle(width, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
|
s->addEventAngle(width, true, TriggerWheel::T_PRIMARY);
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,17 +87,17 @@ TEST(misc, testFuelMap) {
|
||||||
static void configureFordAspireTriggerWaveform(TriggerWaveform * s) {
|
static void configureFordAspireTriggerWaveform(TriggerWaveform * s) {
|
||||||
s->initialize(FOUR_STROKE_CAM_SENSOR, SyncEdge::Rise);
|
s->initialize(FOUR_STROKE_CAM_SENSOR, SyncEdge::Rise);
|
||||||
|
|
||||||
s->addEvent720(53.747, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
|
s->addEvent720(53.747, true, TriggerWheel::T_SECONDARY);
|
||||||
s->addEvent720(121.90, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
|
s->addEvent720(121.90, false, TriggerWheel::T_SECONDARY);
|
||||||
s->addEvent720(232.76, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
|
s->addEvent720(232.76, true, TriggerWheel::T_SECONDARY);
|
||||||
s->addEvent720(300.54, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
|
s->addEvent720(300.54, false, TriggerWheel::T_SECONDARY);
|
||||||
s->addEvent720(360, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
|
s->addEvent720(360, true, TriggerWheel::T_PRIMARY);
|
||||||
|
|
||||||
s->addEvent720(409.8412, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
|
s->addEvent720(409.8412, true, TriggerWheel::T_SECONDARY);
|
||||||
s->addEvent720(478.6505, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
|
s->addEvent720(478.6505, false, TriggerWheel::T_SECONDARY);
|
||||||
s->addEvent720(588.045, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
|
s->addEvent720(588.045, true, TriggerWheel::T_SECONDARY);
|
||||||
s->addEvent720(657.03, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
|
s->addEvent720(657.03, false, TriggerWheel::T_SECONDARY);
|
||||||
s->addEvent720(720, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
|
s->addEvent720(720, false, TriggerWheel::T_PRIMARY);
|
||||||
|
|
||||||
ASSERT_FLOAT_EQ(53.747 / 720, s->wave.getSwitchTime(0));
|
ASSERT_FLOAT_EQ(53.747 / 720, s->wave.getSwitchTime(0));
|
||||||
ASSERT_EQ(true, s->wave.getChannelState(1, 0)) << "@0";
|
ASSERT_EQ(true, s->wave.getChannelState(1, 0)) << "@0";
|
||||||
|
|
Loading…
Reference in New Issue