auto-sync

This commit is contained in:
rusEfi 2016-01-26 22:03:19 -05:00
parent cd6abe183f
commit bb62a7ce98
4 changed files with 21 additions and 6 deletions

View File

@ -35,9 +35,6 @@ EXTERN_ENGINE;
static histogram_s triggerCallback;
// we need this initial to have not_running at first invocation
static volatile efitime_t previousShaftEventTimeNt = (efitimems_t) -10 * US2NT(US_PER_SECOND_LL);
static Logging *logger;
efitime_t getCrankEventCounter(DECLARE_ENGINE_PARAMETER_F) {
@ -94,6 +91,9 @@ void hwHandleShaftSignal(trigger_event_e signal) {
TriggerCentral::TriggerCentral() {
nowNt = 0;
// we need this initial to have not_running at first invocation
previousShaftEventTimeNt = (efitimems_t) -10 * US2NT(US_PER_SECOND_LL);
memset(hwEventCounters, 0, sizeof(hwEventCounters));
clearCallbacks(&triggerListeneres);
triggerState.reset();

View File

@ -30,6 +30,7 @@ public:
void resetCounters();
TriggerState triggerState;
efitick_t nowNt;
volatile efitime_t previousShaftEventTimeNt;
private:
IntListenerArray triggerListeneres;
int hwEventCounters[HW_EVENT_TYPES];

View File

@ -107,7 +107,7 @@ static void assertTriggerPosition(event_trigger_position_s *position, int eventI
assertEqualsM("angleOffset", angleOffset, position->angleOffset);
}
static void test1995FordInline6TriggerDecoder(void) {
void test1995FordInline6TriggerDecoder(void) {
printf("*************************************************** test1995FordInline6TriggerDecoder\r\n");
assertEqualsM("triggerIndex ", 0, getTheAngle(FORD_INLINE_6_1995));
@ -121,6 +121,10 @@ static void test1995FordInline6TriggerDecoder(void) {
assertEqualsM("triggerShapeSynchPointIndex", 0, shape->getTriggerShapeSynchPointIndex());
// this is needed to have valid CLT and IAT. todo: extract method
initThermistors(NULL PASS_ENGINE_PARAMETER);
engine->updateSlowSensors(PASS_ENGINE_PARAMETER_F);
event_trigger_position_s position;
assertEqualsM("globalTriggerAngleOffset", 0, engineConfiguration->globalTriggerAngleOffset);
findTriggerPosition(&position, 0 PASS_ENGINE_PARAMETER);
@ -132,14 +136,22 @@ static void test1995FordInline6TriggerDecoder(void) {
findTriggerPosition(&position, 360 PASS_ENGINE_PARAMETER);
assertTriggerPosition(&position, 6, 0);
eth.initTriggerShapeAndRpmCalculator();
eth.engine.triggerCentral.addEventListener(mainTriggerCallback, "main loop", &eth.engine);
eth.engine.periodicFastCallback(PASS_ENGINE_PARAMETER_F);
// eth.fireTriggerEvents(48);
// assertEquals(2000, eth.engine.rpmCalculator.rpmValue);
// eth.engine.periodicFastCallback(PASS_ENGINE_PARAMETER_F);
// eth.fireTriggerEvents(48);
IgnitionEventList *ecl = &eth.ec2.ignitionEvents[0];
assertEqualsM("ignition events size", 6, ecl->size);
assertEqualsM("event index", 0, ecl->elements[0].dwellPosition.eventIndex);
assertEquals(0, ecl->elements[0].dwellPosition.angleOffset);
assertEqualsM("angle offset#1", 0, ecl->elements[0].dwellPosition.angleOffset);
assertEqualsM("event index", 10, ecl->elements[5].dwellPosition.eventIndex);
assertEquals(0, ecl->elements[5].dwellPosition.angleOffset);
assertEqualsM("angle offset#2", 0, ecl->elements[5].dwellPosition.angleOffset);
TriggerState state;
@ -278,6 +290,7 @@ extern engine_pins_s enginePins;
void testRpmCalculator(void) {
printf("*************************************************** testRpmCalculator\r\n");
timeNow = 0;
EngineTestHelper eth(FORD_INLINE_6_1995);
EXPAND_EngineTestHelper;

View File

@ -10,5 +10,6 @@
void testTriggerDecoder(void);
void testRpmCalculator(void);
void test1995FordInline6TriggerDecoder(void);
#endif /* TEST_TRIGGER_DECODER_H_ */