rusEFI
The most advanced open source ECU
|
#include <trigger_scheduler.h>
Public Member Functions | |
void | schedule (const char *msg, AngleBasedEvent *event, angle_t angle, action_s action) |
bool | scheduleOrQueue (const char *msg, AngleBasedEvent *event, efitick_t edgeTimestamp, angle_t angle, action_s action, float currentPhase, float nextPhase) |
void | scheduleEventsUntilNextTriggerTooth (float rpm, efitick_t edgeTimestamp, float currentPhase, float nextPhase) |
AngleBasedEvent * | getElementAtIndexForUnitTest (int index) |
![]() | |
virtual void | onConfigurationChange (engine_configuration_s const *) |
virtual void | onSlowCallback () |
virtual void | onFastCallback () |
virtual void | onIgnitionStateChanged (bool) |
virtual bool | needsDelayedShutoff () |
Private Member Functions | |
void | schedule (const char *msg, AngleBasedEvent *event, action_s action) |
bool | assertNotInList (AngleBasedEvent *head, AngleBasedEvent *element) |
Private Attributes | |
AngleBasedEvent * | m_angleBasedEventsHead = nullptr |
Definition at line 5 of file trigger_scheduler.h.
|
private |
for example, this might happen in case of sudden RPM change if event was not scheduled by angle but was scheduled by time. In case of scheduling by time with slow RPM the whole next fast revolution might be within the wait
Definition at line 5 of file trigger_scheduler.cpp.
Referenced by schedule().
AngleBasedEvent * TriggerScheduler::getElementAtIndexForUnitTest | ( | int | index | ) |
Definition at line 169 of file trigger_scheduler.cpp.
|
private |
Definition at line 67 of file trigger_scheduler.cpp.
void TriggerScheduler::schedule | ( | const char * | msg, |
AngleBasedEvent * | event, | ||
angle_t | angle, | ||
action_s | action | ||
) |
Definition at line 29 of file trigger_scheduler.cpp.
Referenced by schedule(), and scheduleOrQueue().
void TriggerScheduler::scheduleEventsUntilNextTriggerTooth | ( | float | rpm, |
efitick_t | edgeTimestamp, | ||
float | currentPhase, | ||
float | nextPhase | ||
) |
Definition at line 90 of file trigger_scheduler.cpp.
bool TriggerScheduler::scheduleOrQueue | ( | const char * | msg, |
AngleBasedEvent * | event, | ||
efitick_t | edgeTimestamp, | ||
angle_t | angle, | ||
action_s | action, | ||
float | currentPhase, | ||
float | nextPhase | ||
) |
Schedules 'action' to occur at engine cycle angle 'angle'.
Definition at line 41 of file trigger_scheduler.cpp.
|
private |
That's the linked list of pending events scheduled in relation to trigger At the moment we iterate over the whole list while looking for events for specific trigger index We can make it an array of lists per trigger index, but that would take some RAM and probably not needed yet.
Definition at line 38 of file trigger_scheduler.h.
Referenced by getElementAtIndexForUnitTest(), schedule(), and scheduleEventsUntilNextTriggerTooth().