Commit Graph

469 Commits

Author SHA1 Message Date
rusefillc d791ef5581 skipspark script kills ECU fix #3611 2021-11-25 22:40:19 -05:00
Andrey 4e45297145 minor progress 2021-11-24 22:35:56 -05:00
Andrey f17c951742 dead file 2021-11-24 20:26:40 -05:00
Matthew Kennedy 9bd8a19564 oh my god we've had no asserts (#3595) 2021-11-22 17:52:03 -05:00
rusefillc 3d8ddbceea j1850 SAE crc8 2021-11-22 14:03:52 -05:00
Scott Smith 04fa1fd410 Fix potential buffer overrun in cyclic_buffer. (#3583)
This exposed a buffer overrun, so double the size of the buffer (to account for 720 degree engine
cycle vs 360 degree crank events).

Also use proper numeric limits when computing min/max.
Finally, add a lock around the call to cyclic_buffer that actually caused the contention.
2021-11-20 03:01:11 -05:00
Matthew Kennedy 569415930c detect more overflows with asan (#3582)
* overflow detector

* type list dynamic allocate

* fix the buffer length

* comment

* pr fb

* sanitize sim

* fix sim sanitizer bug

* didn't mean to turn off optimization for sim

* asan can do that, if you turn it on!

* cleaning
2021-11-20 01:38:39 -05:00
Scott Smith 07d30285fc Basic framework for high pressure fuel pump control (#3476)
* 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>
2021-11-19 23:06:51 -05:00
Matthew Kennedy a0a1b5e6a0 delimeter is not comma (#3533)
* delimeter is not comma

* do it in config txt

* use txt

* s

* string

* compat

* also, spelling is hard

* use new name

* use new name

* generate enough for happy console

* use an even less common character

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-11-19 12:01:45 +03:00
Scott Smith b3e0b28c75 Make the module API more concise. (#3571)
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.
2021-11-17 21:50:00 -05:00
Scott Smith f9f13f0bad Create a base class EngineModule for that contains various useful callbacks. (#3548)
* 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
2021-11-17 20:13:19 +03:00
Scott Smith dac2ae9b1d Programmatically remove EnginePtr/inject, EXPAND_Engine, and WITH_ENGINE_TEST_HELPER* (#3560)
* 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.
2021-11-16 16:52:11 -05:00
Andrey c8b733ea6e refactoring launch 2021-11-15 19:34:42 -05:00
Matthew Kennedy c1941f3a49 (void) -> () (#3550)
* static functions with (void)

* more

* Revert "more"

This reverts commit 246e53441f935451437df186ac92d7df26b62fb6.

* s

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-11-15 13:02:34 +01:00
Matthew Kennedy bd04dc8352 less macro, more c++ (#3549)
* less macro

* s
2021-11-15 12:44:40 +01:00
rusefi 1f486a1e15 Lua: changing "table" API 2021-11-14 16:29:46 -05:00
rusefi e40780a595 more API 2021-11-14 14:53:44 -05:00
rusefillc 677a2ede70 Overflow in currentTimeMillis and getTimeNowSeconds #3531
it now takes 1000 times longer to overflow
2021-11-11 16:39:23 -05:00
rusefillc 0ec6d5be4a dead code 2021-11-08 19:01:18 -05:00
Scott Smith 8639b7c7e4 Make getTimeNowNt even faster (#3504)
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.
2021-11-08 14:24:31 -05:00
Scott Smith fcac26c032 Allow scaled_channel to have both multiplier and divisor (#3468)
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.
2021-11-05 17:34:22 -04:00
racer-coder a18beadb03 Create an interpolate3d function to match the interpolate2d, but for 3d tables. (#3459)
Remove some implicit C array to pointer conversions in Map3D by adding
(), *, and & where appropriate.  This allows us to remove getBinPtr.

Call interpolate3d from Map3d so there's no code duplication.
2021-11-04 14:07:37 -04:00
Matthew Kennedy a2766e5d9b support autoscale on table axes (#3452)
* scale map Y axis

* allow different row/col types

* scaled channel detector

* interpolation

* looks like this actually works

* tests, no manual scaling

* comment
2021-11-03 19:53:26 -04:00
Andrey 592bf2a359 docs 2021-11-02 23:34:44 -04:00
Andrey 14aac56c41 warning(CUSTOM_PID_DTERM, "PID: unexpected dTime") 2021-10-29 18:31:43 -04:00
Matthew Kennedy e7d66fd242 Lua CAN RX (#3403)
* 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
2021-10-24 08:37:04 -04:00
rusefillc 4ff353b98a pid into lua 2021-10-21 19:43:30 -04:00
rusefillc 8feeb9cacd refactoring 2021-10-20 21:47:49 -04:00
GitHub build-firmware Action 5ab712c51d Auto-generated configs and docs 2021-10-17 01:13:47 +00:00
rusefillc 86db25f94a progress - live doc generator works again! 2021-10-16 21:08:50 -04:00
rusefillc 94be3608a1 better file locations 2021-10-16 20:17:01 -04:00
Matthew Kennedy 9fc1e5d24c Knock count (#3240)
* knocky knocky

* check the right thing

* improve operator

* TS

* s

* bbbbb
2021-09-20 14:27:26 -04:00
Andrey 4d6e94645f SD-card log fields improvement (warning counter & last code) #3162 2021-09-05 07:25:52 -04:00
Andrey 9075888e7b zero dwell warning at zero RPM #3153 2021-08-16 09:11:22 -04:00
rusefillc 47c20c95dd zero dwell warning at zero RPM #3153 2021-08-16 04:20:32 -04:00
Matthew Kennedy e056369f05 actually remove FSIO idle stuff (#3150)
* debug mode

* pid cleanup

* more dead

* more dead

* wow more dead

* much dead many death wow
2021-08-14 09:48:45 +03:00
Matthew Kennedy 39388c75d8 even more pch (#3112)
* s

* more

* s

* f7
2021-08-04 19:30:52 -04:00
Matthew Kennedy 4e6b61234f yet more pch (#3068)
* 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>
2021-08-03 22:05:01 -04:00
rusefillc f0cadf084b Faster enginePins.stopPins() #3070
refactoring: reducing magic constants
2021-07-28 14:14:51 -04:00
Matthew Kennedy d3ec2b21d1 Use pch in lots of files (#3066)
* most engine.h

* most engine_configuration

* more

* more

* more

* more

* more

* moooooore

* ok I'm done for now

* oops
2021-07-26 01:05:17 -04:00
Matthew Kennedy be7ef805c9 fix nonlinear correction threshold (#3060)
* s

* macro

* test has to do the inverse
2021-07-25 20:42:26 -04:00
Matthew Kennedy ba331f4895 knock sensing peak detect (#2910)
* knock peak detect

* comments

* comment

* initialize

* test

* fix warnings while we're here

* those are functions, not values

* ram
2021-07-06 21:44:59 -04:00
Andrey G fdfec5ea3c Fix swap macro (#2904)
* convert swap macroses to inline functions

* clean-up workarounds
2021-07-04 18:03:17 -04:00
Andrey 78daeb7cba more details into error message 2021-07-02 19:05:54 -04:00
Matthew Kennedy aadcd0cc6b Check that table axes are ascending (#2866)
* templated interpolation check

* check tables
2021-06-26 15:02:25 -04:00
Matthew Kennedy 70c0db189d warnings & assorted cleanup (#2793)
* lua hook

* validateBuffer

* tables

* simplify fsio table

* test

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-06-03 14:30:25 -04:00
David Holdeman 68da5c279e Doxygen titles (#2728)
* move addRow call

* undo submo bump

* add header titles
2021-05-22 22:10:58 +03:00
Matthew Kennedy 68ad12da53 convert a table to scaled_channel (#2724)
* scaled VE table

* use setTable

* efi::clear

* ratio -> struct
2021-05-20 20:00:32 -04:00
Matthew Kennedy 8b042ab9b1 rewrite table3d (#2723)
* post cranking factor limits

* sensible defaults

* but not for tests

* add pointer version of get bin

* test via map3d

* put that back for a minute

* new impl

* fix order

* rename and fix table orientation

* flip the table to the correct orientation

* dead cleanup, rename

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-05-20 22:31:16 +03:00
Matthew Kennedy 4b0d75ff92 make the simulator usable (#2717)
* these start themselves now

* dead

* configure ports

* start serial

* dead

* minimal pins

* simulator logging works

* why not enable lua

* speeeeeed

* start lua

* spammy print
2021-05-17 12:44:02 +03:00