The original tool tip says that engine protections won't be active below min rpm.
the code implementation is actually that they won't be active until above the min rpm.
This is just a safety change.
Provides safe initial functions for decoder related function pointers.
Prevents possibly hard to track board reset issues in case some future decoder accidentally leaves any of the functions uninitialised. Or when those pointers accidentally are used before proper values are assigned.
Flash usage 18bytes for atmega2560
Ram usage unaffected.
* calculateInjector1Timeout proxies calculateInjectorNTimeout
Unit test still pass.
* Remove calculateInjector1Timeout,
Replace with call to calculateInjectorTimeout
All unit tests still pass.
* Remove unecassary unit test
* calculateIgnition1Timeout proxies calculateIgnitionNTimeout
Unit test all pass
* Remove calculateIgnition1Timeout,
Replace with call to calculateIgnitionTimeout
All unit tests still pass.
* Remove unecassary unit test
* calculateIgnitionAngle\d proxies
calculateIgnitionAngle
Unit tests all pass
* Remove calculateIgnitionAngle\d
Just call calculateIgnitionAngle() directly
* Route rotary ignition angle calcs
through generic calculateIgnitionTrailingRotary
function.
* Remove calculateIgnitionAngle\d
Just call calculateIgnitionTrailingRotary() directly
* calculateInjectorStartAngle: inject all parameters
Do not rely on global state
Easier unit testing.
* calculateIgnitionAngle: inject all parameters
Do not rely on global state
Easier unit testing.
* Pull all ignition global vars into schedule_calcs
* Conditional compile for schedule calc vars
Saves memory
* Optimize: break out angleToTimeIntervalRev
from angleToTime. The new function will
always be inlined.
* Optimize - simpler code path
when no channel offset (zero)
Some optimization of arithmetic operations.
* Fix unit tests
* Fix bug on injector angle calculations
Need while loops to correctly bring intermediate
values into range
---------
Co-authored-by: Josh Stewart <josh@noisymime.org>
Fix against possible condition that when fuel closeInjector assignments are changed, some injectors could remain open.
To prevent this, check was added to ensure that no fuel injection is ongoing when switching is done from halfsync to fullsync.