* Use table_row_iterator_t to adjust ignitionTable
* Separate 2d & 3d table code, abstract page to table iterator conversion.
This is just moving code around in preparation for future changes.
* Reduce table RAM (.bss) usage
Generate a separate type for each possible
3d axis & size combination.
This turns what was runtime information into
compile time data.
* Save 1 byte per table.
Use a flag value (INT16_MAX) instead of a separate boolean
flag
* File renaming
table_iterator -> table3d_iterator.h
table3d.h -> table3d_interpolate.h
table3d.cpp -> table3d_interpolate.cpp
table3d_types.h -> table3d.h
* Optimize page.cpp: reduce code clutter, maintain performance
* Reduce flash usage
* Encapsulate table metadata
* Performance - hoist if statement
* Replace function with macro
* Use a packed enum as a type identifier
Use a packed enum as a type identifier
Slimmer data types
* Use table iterators for random access to table
values and axis.
* Centralize write buffer check
* Encapsulate 16-bit reference concept
* Performance: make table iterators proper classes
This allows us to chain calls on temporaries - not possible
with regular function calls.
* Performance: encapsulate EEPROM update
& address increment
* Save flash - don't duplicate function
* Performance: directly invalidate table cache
* Separate out iterator reversal
* Separate out entity mapping & per-byte access
Much faster, smaller code footprint & easier to understand
* Code quality fixes
* Separate out axis metadata
* Doxygen comments
* Separate int16_ref into separate file
* Separate out table axies & values into separate types
No need for metadata types & more localised code.
E.g. creating iterators is now alongside the data over
which they iterate.
* Doxygen
* Signed int8 for fixed crank angle (range -10to80)
* Limit ignition advance in tables to 70 and use different range for multiplied
* Limit WMI and Nitrous ign adv to reasonable values
* Fix IAT timing retard table
* Don't let IAT retard correction set a fixed advance. No other correction does this and this fixed correction can be changed by other corrections. Also the current code is not working as ignition offset is not used for IAT retard.
* doxygen warning fixes
* run doxygen -u, add speeduino logo to src tree for doxygen
* increase DOT_GRAPH_MAX_NODES
so we generate the complete call graph for loop() and setup()
* Chrysler NGC pattern for 4-cylinder cam pattern
* New ignition mode for NGC decoder
* NGC decoder: Cleanup/performance improvements
* NGC decoder: Comment fixes
* Update corrections.ino
flatSSoftWin stores a gundreds of RPMs, to should be multiplied by 100
* Update corrections.ino
Co-authored-by: Josh Stewart <josh@noisymime.org>
* DRZ400
Create the DRZ400 decoder based on duel wheel. Works by creating a filter on the secondary filter so it only detects one of the two teeth enabling single tooth decoder to work
* fix missing commas to speeduino.ini
* refactor: use a loop for writeAllConfig.
Future proofing: new pages will get automatically
written
* Call existing [read|store]EEPROMVersion functions
* Common function to compute CRC address
* Bulk write calibration tables
* Use EEPROM get/put instead of hand rolled code
* Typedef the EEPROM address
I.e. the EEPROM.read() parameter type
* Encapsulate eepromWritesPending
* Remove C++ namespaces
* Use table iterators for read/write
* Rename storage.ino to .cpp
This fixes a warning