* vss uses real values
* some defaults
* test and correct math
* km, not miles!
* comment
* tooltip
* that macro went away
* 100hz and default settings gives 9kph
* changelog
* order of operations safety
* make the test like the pwm test
* housekeeping
* this is why we need sensor automation
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* fuel pump
* s
* call correct callback
* more dead
* test adjustment
* don't overflow
* don't need separate function
* java
* give it a name
* generated
* generated
* add to generate script
* import *
* this is so cheap we don't need a flag
* main relay
* plumbing
* dead fsio stuff
* test it
* by 100%, we mean 99.98%
* 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.
* data
* stub test
* use getTimeSinceSyncPoint
* s
* s
* no
* test
* stray ;
* those were 1/10 what they were supposed to be
* actually check something
* dead log line?
* Basic framework for high pressure fuel pump control
* Many changes
Move calculations to fast callback
Move main object into Engine
Respond to pin changes without requiring a reboot
* Use EngineModule for HpfpController
Schedule pin off after executing pin on so we are sure it ends, even if the motor stops.
Test scheduling.
Less RAM use by only having one event and reordering fields.
* Make scheduling test actually useful - need non-0 activation angle.
Co-authored-by: rusefillc <48498823+rusefillc@users.noreply.github.com>
* fuel pump
* s
* call correct callback
* more dead
* test adjustment
* don't overflow
* don't need separate function
* java
* give it a name
* generated
* generated
* add to generate script
* import *
* this is so cheap we don't need a flag
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.
Fix some uses of ENGINE() not detected by regex due to parenthesis.
Remove now empty engine_ptr.h
Don't worry about EFI_* not being defined, the compiler defaults to 0 if they aren't.
* 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.
Memory seems more valuable than CPU; use the O(lg n) lookup by angle. A side effect is that it
seems to fix trigger lookup for the second phase of TRIGGERTYPE 53 544 TT_TRI _TACH 0.00
Having to remove the precompiled header when switching from firmware to simulator to unit_tests and
back again is annoying. Use a directory to store the precompiled header output. Turn off
precompiled header warnings as GCC still complains even if it finds a valid one eventually.
The last version is already much better than the original, mostly because it doesn't call
CriticalSectionLocker, which has a ton of overhead due to debug tracking. But this version is
another 4 instructions / 12 bytes shorter. Does as much match in 32-bit land as possible, and
avoids math operations that span 64-bits (i.e. either operate on the lower half or upper half, but
not both). The result is only 3 instructions not including the necessary 4 loads (ptr to now, now,
ptr to upper, upper), 1 store (upper), and 1 return/branch.
Disallow scaled_channel for float. I can't think of a reason to allow it, and it gets in the way
of rounding.
Add separate template param to setTable; let the compiler sort out whether assignment can happen
between TElement and VElement without forcing them to be the same at function call time.
* scale map Y axis
* allow different row/col types
* scaled channel detector
* interpolation
* looks like this actually works
* tests, no manual scaling
* comment
* wiring
* static
* implementation
* comment
* unit tests happy
* guard
* guard smarter, not harder
* guard smarter not harder
* guard even smarter, not even harder
* don't need that
* fix for stepperHbridgeHardware
* new config fields for microstepping
* add stepper dir pin mode to the dialog
* refactor stepper hw dialog & add microstepping panel
* microstepper modes enum
* stepperDcInvertedPins needed by Hellen
* add sleep() for stepper and divisor for pause()
* microstepping impl.
* make unit-tests more happy
* small progress
* fix etb-stepper dlg conflict
Co-authored-by: Andrei <andreikagit@users.noreply.github.com>
* cancel event
* looks like it works...
* some tests are happy
* add enable bit
* undo test changes
* Revert "add enable bit"
This reverts commit 000afadd3fc560867302557afe26f76cd9fc4ed6.
* enable bit in engine
* only turn off for one test
* Revert "undo test changes"
This reverts commit 106db49e291b5a531a94de6ac177c6584d5337f6.
* load script
* test
* needs more rams
* embiggen stack
* init system lua from lua thread
* de-embiggen stack
* system needs a little more
* memory
* om nom nom delicious memory
* how much more memory could it want
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* enable asan
* lua
* this is dead and leaky
* leaky nissan
* fix pwm generator use-after-stack
* initializers
* prevent problems in case of invalid trigger shape
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* Lua: Timer class #3159
* Lua: Timer class #3159
* Lua: Timer class #3159
* Lua: Timer class #3159
* lua timer is happy (#3216)
* hooks are happy
* don't need that any more
* format
* update lib
* module
Co-authored-by: rusefillc <sdfsdfqsf2334234234>
Co-authored-by: Matthew Kennedy <matthewkennedy@outlook.com>
* allow re-register of the same sensor
* add api to unsubscribe
* do it for tps
* clear the pin
* happy test
* maybe make afr happy for now
* tests build
* happy simulator
* active configuration
* check valid
* we need vbatt now
* manage all pin init in init_sensors.cpp
* don't need that
* cleanup
* thermistors
* do two phase reinit in the right place
* config vs engine
* finally the tests are happy
* Add new sensor type "VehicleSpeed"
* Add "Vehicle speed" sensor to name list
* Add Vehicle speed sensor initialization with function pointer sensor.
* Add init_vehicle_speed_sensor.cpp to Makefile
* Replace dependencies from "getVehicleSpeed" to OOP-like "Sensor::get()"
* Add warning and TODO to "mock vehicle speed" call
* Replace get & mock "VehicleSpeed" methods in tests
* Remove #warning directive (cause error by current settings)
* Remove stray tab
* Remove explicitly type casting.
* Add "InitVehicleSpeedSensor" function declaration to init.h
* Add "VehicleSpeedSensor" initialization call into "InitNewSensors"
Co-authored-by: alxrMironov <330OMcorporative>
* big pch energy
* put back ramdisk stub
* tests are happy
* h743 nucleo
* kinetis
* I love deleting code!
* make stepper happy
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* perform extra-step-prevention in the stepper driver itself
* isBusy flag
* I am unable to type
* the court of public opinion has decided that greater-equal is correct
* that sets target in steps, not percent
* correct var name
* mock stepper motor
* testable stepper
* build is happy
* helping build
* Add test_flex_sensor.cpp
* Add test_flex_sensor.cpp to makefile
* Edit test_flex_sensor.cpp code formatting
* Fix test case name in test_flex_sensor.cpp
* Remove explicitly defined constructor of "FlexSensorForTests" class
* Edit included headers replaced by single one in test_flex_sensor.cpp
* Edit format to make similar to other files.
Co-authored-by: alxrMironov <330OMcorporative>
* CanTxMessage usable from unit test
* testLuaReturnsNil
* CAN hook and tests
* it helps if parameter names exist
* nameless params
* s
* redefinition of default argument
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* strict mazda trigger shape
* this is an even better gap
* sync point moved so things are different now
* fix
* update instantrpm in test
* s
* s
* this is safer
* test
* tests
* instant rpm
* cleanup
* new impl
* remove fsio
* inject "is ac active" to fan
* include the correct code
* include
* test
* more AC features
* AC switch vs. actual AC indicators
* include
* duh
* min oil pressure for crank
* do it time-based
* rename field
* include
* fix existing test
* tests
* fix logic
* more test
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* always apply open loop in closed loop
* simplify flags
* comment
* move
* comment
* missed one
* config for fan bump
* adjust miata defaults
* test fan/ac open loop
* idle CL tests
* test coasting
* test integration case
* fix merge
* put back reset logic for now
* s
* don't need that part
* I guess use OL as baseIdlePosition
* reset condition
* remove callback parameter from cj125
* remove from ext
* remove stateChangeCallback
* alt doesn't need that
* demorgan
* remove call
* bad cut/paste
* check the actual pin in the test
* minor cleanup
* enable mailboxes
* priority
* implement new logger
* more cleaning
* signature
* remove debug
* put the assertion back in
* remove debugging
* spelling
* doy
* tweaks & comments
* cleaning
* size_t
* guard more
* test build now
* needs more ram until we can remove LogginWithSTorage
* hunt for memory
* bootloader
* unused
* stub simulator
* it would help to get the signature right
* geez kinetis only has 64k ram
* more guarding because kinetis
* that's now very legal and very cool
* templatify
* s
* force null terminate
* probably fix
* const
* write a test
* disable sensor chart for now
* hide SC ui
* oh nope that breaks many things
This reverts commit c3c1bb324fb484c3d9cc44b7715c234bc0392e1e.
* missed one
* reset after scheduleLogging
* we can't print out the full message because it contains commas which break parsing
* force terminate long buffers
* let's see how much memory we have to play with
* a lot, is the answer
* real thread name
* shrink this for now before its deleted
* turn that back on
* biiig comment
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* ford tps
* configurable maximum
* initialization
* check consistency when in the low range
* print info
* default
* config field
* config parameter
* test
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* hip9011: coexistance with other spi devices
* hip9011: rework so SPI transfer is invoked from thread
also use polling spi exchange to avoid cache problems
* hip9011: move calculations from ADC callback to thread
* hip9011: big cleanup
* hip9011: simplify spi communication
* No need to set knockBandCustom if it is not custom
HIP9011 calculates knockBand from cylinderBore same way
* hip9011: make unit test happy
* hip9011: fix unit test
* hip9011: remove duplicated initialization, reorder
* hip9011: just renames and data type adjustments
* hip9011: rename BAND() to HIP9011_BAND()
* hip9011: move some code from lookup.cpp to logic.cpp
* hip9011: move initEngineNoiseTable to engine_configuration.cpp
* hip9011: move lookup tables to hip9011_logic.c
* hip9011: remove empty files
* hip9011: additional checks
* carve out UART specific
* implement channel
* config cleanup
* use new config
* bootloader
* dead code
* s
* h7 inherits f7
* oops
* ok now it's right
* tests
* cleanup
* call setup
* put that in its own file
* cleanup
* format
* guard
* not needed
* improve guarding
* portable
* allow override of uart mode
* fixes for bootloader
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* start cleaning
* disabled feature means don't print that it's disabled
* cli
* usages
* printMsg -> scheduleMsg
* this is alllll dead now
* no crlf please
* all hope is lost if you manage to hit this line
* tests
* tests
* ok we did actually need that part
* sim
* d
* kinetis
* it did ifdef, not if
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* injector model, test
* new math
* inject fuel based on new math
* tests
* fix
* it should work like this
* format
* update TPS AE even when we're cutting fuel
* comment
* conversion factor
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* Board subaru eg33: has HIP9011 knock sensor
* hip9011: lastExecutionCount does not exist any more
* hip9011: extranc commands to header, use logic math for bitfields
* vbatt in sensor model
* sensor name
* vbatt
* s
* oy vei
* a little bit of cleanup
* memory apparently
* cj125 test
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* use phase computation
* move & simplify implementation
* test
* bad merge
* initialize
* wonderful changelog
* now unused parameter
* put back deadzone
* ui
* test deadzone
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* hook up map
* check for init
* switch some consumers
* that's the rest of them
* test
* tests
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* move rev limit to limp manager
* call fatal error
* include order
* fix bug
* tests
* limp can disable etb
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* move rev limit to limp manager
* call fatal error
* include order
* fix bug
* tests
* comment
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* fix unregister api for gpio
* consumers
* guard with a critical section
* index
* guard less
* unregister under lock
* fix reinit
* dead flag
* fix most tests
* initialize properly
* initialize properly
* assertions in tests
* fix message
* move gpio mocking
* test gpios
* we must lock earlier to be truly safe
* this was using huge memory
* devirtualize
* test deinit
* switch pump fsio logic
* value collision
* fuel pump in tests
* mock time since trigger
* test fp
* init pin in test
* fix gpio outputs in tests
* comment
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* Require redundant tps for ETB (#2037)
* mod sensor api
* require redundancy
* fix tests
* check that it fails
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* add a test that fails but should not
* fix the bug
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* enums
* don't collide
* auto_generated_enums
* check based on new enum val
* maybe this will make generate tool happy
* add a test
* fix test
* fix and add another test
* make clang happier
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* require values to be different
* fix not
* oops
* missed another spot
* test negative cases too
* resets
* test no sensor case
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* round rpm instead of truncating
* efiround is expensive
* Revert "efiround is expensive"
This reverts commit e5690f89e1b1988aacf5ced1f024d576465a7cd6.
* round is better than rintf
* testing
* it works now?!
* comment
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* refactor
- called from periodicFastCallback
- removed defines
* Update rusefi.input
removed unused configurations.
added clutch inversion option
* Added new tests
fixed limiting only in case we have launch condition and rpm outside of window
* Update launch_control.cpp
Unintialized config update, now it is working fine with VSS and with clutch as well.
* small fixes
updated after review findings
* Fix breaking engine rev limiter
applyLaunchControlLimiting should not overwrite booleans to false!
* Delay timer in seconds
timer uses ms, so convert seconds to ms
* testable launch start
* extract base class
* add a test
* fix ts debug
* Launch control unit_tests
updated launch control for a better split
VSS mock for unit tests
Co-authored-by: Matthew Kennedy <matthewkennedy@outlook.com>
* lambda
* default configs, fix build
* config, gauge, UI
* more digits
* change menu text
* fix that while I'm here
* doesn't need extra word
* todo note
* tests
* last test
* missed a config
* update java
* store target lambda
* more java
* format
* hopefully enough java for CI to pass
* two throttles one thread
* look at all this RAM!
* add enum
* switch from index to function
* test fixup
* improve init logic
* remove old vw idle mode bit
* add config
* better spot for it
* use config init values
* handle null controller array
* fatal error testability
* test new init config
* defaults
* fix for default config
* remove old impl
* add cpp wrapper to os_access
* clean up os_access
* remove touchTimeCounter
* new impl
* put comment about lock free impl
* include cpp wrappers for BL
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* two throttles one thread
* look at all this RAM!
* add enum
* switch from index to function
* test fixup
* improve init logic
* remove old vw idle mode bit
* add config
* better spot for it
* use config init values
* handle null controller array
* fatal error testability
* test new init config
* defaults
* fix for default config
* two throttles one thread
* look at all this RAM!
* add enum
* switch from index to function
* test fixup
* improve init logic
* remove old vw idle mode bit
* add config
* better spot for it
* use config init values
* handle null controller array
* fatal error testability
* test new init config
* defaults
* fix for default config
* two throttles one thread
* look at all this RAM!
* add enum
* switch from index to function
* test fixup
* improve init logic
* remove old vw idle mode bit
* change acSwitch name, add mode
* fix
* remove some adc stuff
* remove some adc stuff
* semicolon stupid
* left behind
* add readpinstate
* wrong var name
* add functions back
* fix name
* bool, not void, plus fix name
* move
* not sure what I broke
* try setMockValue
* namespace
* whoops missed one
* switch values because adc was set up for pullup
* try 5
* comment for now
* comment for now
* uncomment tests, add function to mock, add mock to efiReadPin
* fixes
* for F's sake
* if
* add defy
* pass params
* use ASSERT_TRUE/FALSE
* advance time
* remove ifdef from readPin
* try moving if
* move to separate func
* move extern
* move include
* try engine_test_helper
* am confuse
* move func to else
* include hal
* add efi prod check
* remove include
* try extern
* move include
* semicolon stupid
* move extern again
* include
* move mockPinStates
* size
* add if
* add comment
* clean on instantiation
* add config fields
* config options
* new output channels
* dump out state to ts
* s
* implement override
* enums
* this test is no longer used
* test new behavior
* old
* comments
* impl
* unhide option
* fix
* tests
* add config fields
* config options
* new output channels
* dump out state to ts
* s
* implement override
* enums
* this test is no longer used
* test new behavior
* old
* comments
* lambda sens
* fix init
* fix
* a test for good measure
* he's climbin in your windows, snatchin you ram up
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* correct batch fuel cylinder pairing
* param
* only change behavior on two wire batch
* Add tests for two wire batch & sequential
* improve testing a little bit
* comments
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* add redundant sensor
* add tests
* add configure, info printing
* tests
* tests
* partial hookup
* fix
* fix
* bad makefile merge
* use second TPS config
* update test
* update test
* sensor names
* set second pin by default
* fix auto cal
* auto cal both sensors
* add reconfigure of secondary sensors
* gobblin' up your ram
* slow down write a little bit
* put split in debug gauge
* s
Co-authored-by: Matthew Kennedy <matthew@mck-mbp-15.local>
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* field support
* tests
* makefiles
* test data too
* missing include dir
* write correct thing
* fix one test
* fix test
* omnomnomnom ram
* format
* use defined names
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* switch to thread
* actually use default frequency define
* crank ADC too
* make space in RAM
* remove TS field
* this should work for test
* fix dt
* re-resize ram
* add clampf
* more tests
* public
* missed a mock
* fix output duty clamping
* do it that way
* more
* ah ha!
* test negative too
* clamp pedal
* inject pedal map
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* add clampf
* more tests
* public
* missed a mock
* fix output duty clamping
* do it that way
* more
* ah ha!
* test negative too
* clamp pedal
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* closed loop controller base
* etb tps test
* closed loop controller tests
* test support
* update gtest
* fix for change
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* use type instead of value
* fix remaining initializer-list users
* impruv
* last consumer?
* consumer
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* hook up clt
* init test
* probably fix test
* aux temp
* relax checking
* more significant figures
* remove old aux temp
* hand generate
* claim RAM
* move to ccm
* subscribe
* info printing
* warnings
* raise high voltage failure threshold
* fix test
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* advance_map
* tests
* unneeded
* idle
* use driver intent instead
* and obd and lcd
* engine load
* ve lookup
* unused
* oops we needed that
* oops needed that too
* mocking
* test mocks
* oops
* helps to use the right sensor
* and cylinder cleanup
* fuel math
* typo
* old tests
* kill dead stuff
* cleanup
* more
* fix
* test
* s
* fix signature
* fix test
* comment
* priming pulse
* remove mock tps
* remove more dead
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* advance_map
* tests
* unneeded
* idle
* use driver intent instead
* and obd and lcd
* engine load
* ve lookup
* unused
* oops we needed that
* oops needed that too
* mocking
* test mocks
* oops
* helps to use the right sensor
* and cylinder cleanup
* fuel math
* typo
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* Update tachometer.cpp
Initial implementation of E30 M3 Tach output solution #907, unit_test plus debugging next
* tacho unit tests
First successfull unit test for tachometer
* RAM adjustment so it would link
* refactoring tacho, broken!
* starting to make some progress...still fails after a few seconds
* Rework with SW PWM
* Update after code review
* unit_test update
* First working unit_test
* Update .gitignore
* Update engine_controller.cpp
* Update engine_controller.cpp
* Update tachometer.h
* Update test_tacho.cpp
Co-authored-by: rusefi <rusefi@users.noreply.github.com>
* remove
* add Sensor::hasSensor
* consume in etb
* remove unused state
* don't use it there either
* format
* fix up tests
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* proxy sensor
* header
* idle
* can
* settings
* remove old mocking
* remove old impl
* etb
* oops, gotta actually register it
* fix test
* structured bindings ftw!
* driver intent for stepper
* tear out old
* oops too much
* multispark prototype
* only multispark if not cut
* typo
* do some reasonableish math
* consume cfg
* todo
* bad merge
* move math out of engine2.cpp
* engine state config
* consume generated
* use new
* hand generate
* doc, debugging
* debug channel names
* don't depend on rpmcalc
* safer, fix math
* tests
* default multispark config
* remove todo
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>