* Refactor: separate out schedule calcs from speeduino.ino
(so they can be unit tested)
* Add unit tests for compute_delay
* Use PROGMEM to store test input & output
* Add some 720 unit tests
* Rename unit test file
* Test ignition codepaths 2-8
* Test ign1 calcs
* Add first injector calc tests
* Add 720 deg tests
Simplify
* Simplify test_calc_inj1_timeout
* Claw back RAM
* Simplify test framework
Channel angle is part of the test data set.
* Move schedule calculation unit tests into their own harness
Competing for RAM with the rest of Speeduino
can cause them to fail,
* Performance: inline all schedule calcs.
* Unit test end angle
* Unit test calculateIgnitionAngle1
* Test start angles also
And test end angles for channel 1
* Unit test calculateIgnitionAngle3
* Unit test calculateIgnitionAngle4
* Improve unit test output
* Add Nissan360 decoder unit tests.
* Add Ford ST170 decoder unit tests
* Add NGC decoder unit tests
* Adjust RPM conversion.
Change the BMW can broadcast RPM conversion to accurate calculation.
* no signed ints
Whoopsie. Non of these are signed values.
* Remove serialCRC - only used within parseSerial()
Also hoist the CRC read into a function.
* Minimize global variable visibility
* Encapsulate write of multi-byte primitives
* Factor out sendBufferAndCrc()
* Push safety test into TS_CommandButtonsHandler()
* Extract writePage()
* Simpler parsing
* Remove some functions from public interface
* Store constant arrays in progmem
* Centralize high speed logger start/stop code
* Factor out loadO2Calibration()
* Factor out temperature calibration table update functions
* Remove dead code
* Fix sendToothLog()
* Fix sendCompositeLog()
* Replace tooth log send booleans with an enum
Saves a byte
* Remove sendBufferAndCrcProgMem()
Use serialPayload to send
* Whitespace clean up
* Optimize comms.cpp for size
* Replace global unsigned long with bool
Saves 2 bytes
* Replace 2 global bools with an enum
Saves a byte, reads better.
* Remove global FastCRC instance
* Make sendSerialReturnCode blocking.
It was using non-blocking functions but was never
re-entered.
Rename to make blocking & non-blocking calls
more obvious.
* Use one uint16_t to track RX/TX byte count
* Simplify new comms log tx API
* Extract loadPageToBuffer function
* All endianess changes use the same code
* Doxygen comments and code organization
* Remove serialWriteUpdateCrc() & updateTmpCalibration()
* Combine SerialStatus & logSendStatus enums.
Makes sense since we can only be doing one thing at a time.
* Remove global inProgressCompositeTime
Only used when sending composite log
* Replace 3 global bools with expanded SerialStatus enum
* Remove unused global tsCanId
* Limit scope of some comms globals.
* Remove isMap global - replace witth function
* Reduce the serial API to only 2 calls
transmit & receive
* Tidy up #define visibility
* Fix Black* build errors
* Workaround Teensy code race condition
availableForWrite() is not reliable.
* Prevent race condition
Was pematurely setting the serialStatusFlag to
SERIAL_INACTIVE before final CRC ws read from
serial.
* Use post write buffer availability checks
Remove buffer size check prior to writing.
* Write multi-byte values as single bytes.
(attempt to fix Teensy 3.5 issue)
* Only use Serial.available() as a boolean test
(Teensy fix)
* writeNonBlocking checks Serial.write() return value
* Non-blocking CRC write
In sendBufferAndCrcNonBlocking().
* Fix compile warning
* Set serial status flag prior to transmitting!
* Reliable blocking byte writes.
* Fix timeout code: not firing under some conditions
* MISRA fixes
* Added Lambda option for EGO correction. Same fields, just another way to view and set them.
* Added Lambda option for Nitrous Leanest AFR. Same field, just another way to view and set it.
* Use separate afrProtectDeviationLambda constant memory-mapped onto afrProtectDeviation
* 3 decimal accuracy for Lambda
* Add default for afrProtectDeviationLambda
* MISRA check: add XML output
* Improve handling of cppcheck output
* Simplify - make cppcheck do more work
Now need for the script to gather source files
and run them one at a time, or flatten xml etc.
* Define the byte type - flushes out violations.
* Precaution: apply dos2unix before invoking shell script
* Restore force rename of libdivide folder
Scans on Windows Git Bash were taking way too long.
* Performance: run as many cppcheck jobs as possible
Logical CPU count - 1
* Set the build dir
Prevents temp files being left in the source tree
Ego control gets stuck at 100% when ignitionCount wraps during an DFCO event because the test "if (ignitionCount < AFRnextCycle).." continues to fail until ignitionCount catches up with AFRnextCycle again - long time.
This fix also checks for ignitionCount < (AFRnextCycle - configPage6.egoCount)
* Add decel enleanment feature
* Fix tps and map DOT scaling in TS.
* updates.ino
* Small bug fix.
* One more small bug fix.
* Update cancomms.ino
Cast tps/mapDOT as uint8 to cancomms to retain backwards compatibility
* Fix programmable outputs list.
* Fix programmable outputs in updates.ino
* Add abs around currentStatus.mapDOT
* Change X axis in memory orientation to match Y
* X & Y axes can use the same type (Ie.e class)
* Table3D axis iterator: replace reverse() with rbegin()
* Use iterators as part of unit tests
* Doxygen fixes/corrections