* most of the plumbing
* easy tests
* trigger types that are rise only
* configs
* change mode of various triggers
* vvt
* 898 test is now impossible 🥳
* s
* instant rpm test
* actually remove useOnlyRisingEdgeForTrigger
* remove vvtCamSensorUseRise
* s
* print
* one happy test
* another test
* happy testSomethingWeird
* happy testCamInput
* maybe fix it a different way
* better
* quad cam
* nb2 happy
* bad merge
* vvt test
* trigger.test1995FordInline6TriggerDecoder
* hellen gm e67
* changelog
* plumbing parts of 4621
* show error list
* exit on error too!
* this test has some unhealthy undefined behavior
* no uninitialized values
* no that doesn't work
* remove the invalid data and the bug becomes obvious
* schedule ignition charge by angle
* same mistake as #4536
* s
* wrap sparkAngle too
* AngleBasedEventNew
* function moved
* implement scheduleOrQueue
* prints
* allow logging multiple warnings at once
* comment
* .Code
* Revert ".Code"
This reverts commit 2b986bd50035aeec051d11aafd83fdbc1694351c.
* add a better comparison operator instead of conversion
* dot code
* Revert "dot code"
This reverts commit 35f6ae1007c41e3b30ea129a324f33ab4205036d.
* force gcc-10 maybe?
* Revert "force gcc-10 maybe?"
This reverts commit 4ddf8bcefddd354ccdc1da682c5fff1e68d44273.
* vq
* dot code
* dead
* dot code
* return may be null
* static_vector; maybe cyclic_buffer is broken or wrong tool for the job?
* move static vector
* put cyclic buffer back how it was since we don't use it now
* trigger decoder returns a result
* TriggerFormDetails
* s
* don't reach out and touch the engine
* injection doesn't care about teeth
* fix up existing tests
* oh look, we can actually test this logic now without trying to depend on trigger shape!!!
* fix a real bug
* simplify
* clarify getOperationMode
* wait for phase synchronize to transition to sequential mode
* one test
* encapsulate vvtSyncCounter
* test
* Add option to stop VVT sync above some RPM
* getOrZero
* Revert "synchronized Phase handling improvements fix #4099"
This reverts commit 32d46d1f09.
* Revert "m_hasSynchronizedSymmetrical handling improvements #4099"
This reverts commit d5e131b1d0.
* remove synchronizedPhase
* only crank needs this
* changelog
* needsDisambiguation()
* test
* s
* bad merge
* put the timer back
* s
* s
* changelog
* test for new behavior
* correct parameter order
* spelling
* s
* s
* s
* tests merge happy
* bad merge
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* remove third trigger
* clean up the honda mess
* there was nothing novel about this engine config
* include
* missed a few
* s
* x
* changelog
* don't set the third trigger input
* don't redefine the same thing 3 times
* only two inputs!
* test
* This field was ignored.
* move pad out
* gone
* make trigger configuration a little clearer
* even simpler!
* format
* test fix
* remove duty cycle thing
* Drop SingleChannelStateSequence in favor of MultiChannelStateSequenceWithData
Most all the users were Multi* anyways, so just improve that:
1. Allow up to 8 waveforms to share one byte per timestamp. It could be better but this is simple
and gets most of the benefit.
2. Use a wrapper structure to handle reserving space for the arrays. Makes the interface simpler
and more rigid. Also saves 4 bytes per Multi*. Downside is access is now via -> and *,
not . and (nothing).
Saves 224 bytes of BSS, 1832 bytes of RAM4/CCM, 952 bytes of TEXT, and 103 bytes of RODATA
* Instantiate a base_t to make debugging easier.
Also fixes crash on real firmware by using &m_base instead - LTO optimization issue?
* No magical templated StaticAlloc thingy. Just virtual functions.
engineModules.get<FOO>(). becomes modules<FOO>()->
I believe the new API is more conducive to supporting arrays, by doing std::array<T, N> or
std::array<Mockable<T>, N>, with the support of a helper class.
* Create a base class EngineModule for that contains various useful callbacks.
This cleans up the API by not requiring the notifiers to know about who wants callbacks. The only
place you need to update to add a module is in one place.
* Add mockability.
* Convert InjectorModel to a Mockable EngineModule
* Programmatically remove EnginePtr/inject, EXPAND_Engine, and WITH_ENGINE_TEST_HELPER*
for i in ": public EnginePtr " ", public EnginePtr" "EXPAND_Engine;" "EXPAND_Engine"; do
git grep -l "$i" | xargs sed -i "s/$i//g"
done
git grep -l "inject" | xargs sed -i "/inject[(][)]/d"
for i in WITH_ENGINE_TEST_HELPER_SENS WITH_ENGINE_TEST_HELPER_BOARD_CALLBACK WITH_ENGINE_TEST_HELPER; do
git grep -l "$i" | xargs sed -i "s/$i/EngineTestHelper eth/g"
done
git checkout firmware/controllers/core/engine_ptr.h
git checkout unit_tests/global.h
* Review fixups.
* Start the process of using a global engine ptr for unit tests.
Passing around the engine, config, and persistent state wasn't buying anything. Instead, use
EngineTestHelper(Base) to correctly set and clear the global variables. Add a dummy check in
case some test tries to set them manually.
* Fix OSX build
* Adapt PR to recently added code.
* static functions with (void)
* more
* Revert "more"
This reverts commit 246e53441f935451437df186ac92d7df26b62fb6.
* s
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
Better than reaching into members that should be private. I didn't feel like actually making
them private though, as one user validates pinStates isn't NULL.