Speeduino
Loading...
Searching...
No Matches
Functions
scheduler.cpp File Reference
#include "globals.h"
#include "scheduler.h"
#include "timers.h"
#include "preprocessor.h"
#include "units.h"
#include "schedule_state_machine.h"
#include "unit_testing.h"
#include "decoders.h"
#include "scheduledIO_inj.h"

Functions

void nullCallback (void)
 A scheduler callback that does nothing.
 
void setCallbacks (Schedule &schedule, Schedule::callback pStartCallback, Schedule::callback pEndCallback) noexcept
 Set the schedule callbacks. I.e the functions called when the action needs to start & stop.
 
static uint16_t clipDuration (uint16_t duration)
 
static void setScheduleNext (Schedule &schedule, uint32_t delay, uint16_t duration) noexcept
 
static void setScheduleRunning (Schedule &schedule, uint32_t delay, uint16_t duration) noexcept
 
void setSchedule (Schedule &schedule, uint32_t delay, uint16_t duration, bool allowQueuedSchedule)
 Set the schedule action to run for a certain duration in the future.
 
void moveToNextState (FuelSchedule &schedule) noexcept
 Shared fuel schedule timer ISR implementation. Should be called by the actual timer ISRs (as timed interrupts) when either the start time or the duration time are reached. See Schedule finite state machine.
 
template<typename T >
static void increment_volatile (volatile T &value)
 Increment a volatile variable correctly.
 
static void onEndIgnitionEvent (const IgnitionSchedule *pSchedule)
 Called when an ignition event ends. I.e. a spark fires.
 
 BEGIN_LTO_ALWAYS_INLINE (void) static ignitionPendingToRunning(Schedule *pSchedule)
 Called when the supplied schedule transitions from a PENDING state to RUNNING.
 
void moveToNextState (IgnitionSchedule &schedule) noexcept
 Shared ignition schedule timer ISR implementation. Should be called by the actual ignition timer ISRs (as timed interrupts) when either the start time or the duration time are reached. See Schedule finite state machine.
 

Detailed Description

Injector and Ignition (on/off) scheduling (functions). There is usually 8 functions for cylinders 1-8 with same naming pattern.

Scheduling structures

Structures FuelSchedule and Schedule describe (from scheduler.h) describe the scheduling info for Fuel and Ignition respectively. They contain duration, current activity status, start timing, end timing, callbacks to carry out action, etc.

Scheduling Functions

For Injection:

For Ignition (has more complex schedule setup):

Function Documentation

◆ clipDuration()

static uint16_t clipDuration ( uint16_t  duration)
inlinestatic
Here is the call graph for this function:
Here is the caller graph for this function:

◆ nullCallback()

void nullCallback ( void  )

A scheduler callback that does nothing.

Here is the caller graph for this function:

◆ setCallbacks()

void setCallbacks ( Schedule schedule,
Schedule::callback  pStartCallback,
Schedule::callback  pEndCallback 
)
noexcept

Set the schedule callbacks. I.e the functions called when the action needs to start & stop.

Parameters
scheduleSchedule to modify
pStartCallbackThe new start callback - called when the schedule switches to RUNNING status
pEndCallbackThe new end callback - called when the schedule switches from RUNNING to OFF status
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setSchedule()

void setSchedule ( Schedule schedule,
uint32_t  delay,
uint16_t  duration,
bool  allowQueuedSchedule 
)

Set the schedule action to run for a certain duration in the future.

Parameters
scheduleSchedule to modify
delayDelay until the action starts (µS)
durationAction duration (µS)
allowQueuedScheduletrue to allow a schedule to be queued up if one is currently running; false otherwise
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setScheduleNext()

static void setScheduleNext ( Schedule schedule,
uint32_t  delay,
uint16_t  duration 
)
inlinestaticnoexcept
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setScheduleRunning()

static void setScheduleRunning ( Schedule schedule,
uint32_t  delay,
uint16_t  duration 
)
inlinestaticnoexcept
Here is the call graph for this function:
Here is the caller graph for this function: