Commit Graph

529 Commits

Author SHA1 Message Date
Matthew Kennedy c92f6b832b ui & config for fuel/ign trim tables (#3704)
* ui & config

* bump flash version

* compaction

* s

* make things happy

* fsio too

* OK, well those defaults were insane

* b

* why are these defaults insane

* adjust cylinder offset ui

* s

* cleanup
2021-12-20 21:58:53 -05:00
Matthew Kennedy 2ba4c7844d simplify some table lookups (#3692)
* simplify

* expand interpolation test
2021-12-20 08:14:30 -05:00
rusefillc 44389c5eca helping mac 2021-12-20 01:23:23 -05:00
Andrey 53d842b19f 2 byte table axis #3045 2021-12-19 23:23:33 -05:00
Andrey 05daba6539 2 byte table axis #3045 2021-12-19 23:20:21 -05:00
Andrey 91f28b6cf5 2 byte table axis #3045 2021-12-19 23:17:17 -05:00
Andreika 95adac3f03 CAN ISO-TP progress (+unit-tests fix) (#3677)
Co-authored-by: Andrei <andreikagit@users.noreply.github.com>
2021-12-08 15:11:19 -05:00
rusefillc 216b5d9e7a tune via CAN #3361
CAN testability
2021-12-04 01:01:48 -05:00
rusefillc 8f3f2f4a55 hellen81 util changes 2021-12-01 20:46:36 -05:00
rusefillc 1e53844f5b why so many channels are hidden in debug ? #3614 2021-11-29 00:33:05 -05:00
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
Matthew Kennedy f6ddc2c17c Config generator jar (#2716)
* fix test

* jar

* kick config

* guard stuff

* nmea

* nmea

* nmea

* c++ is type safe, which is good

* c++ is type safe
2021-05-17 12:32:59 +03:00
Matthew Kennedy 1aed5c6ae2 remove intermediate buffer (#2668)
* remove define

* goodbye intermediate logging buffer

* free ram! woo!
2021-05-10 08:01:24 -04:00
Matthew Kennedy 0af7a9cb2d shrink canned tables (#2651)
* helper

* use it miata

* do type safe copy

* miata vvt

* etb

* default iat correction

* magic is afoot here

* hunchback

* misc

* neon

* neon

* aspire

* citroen

* neon

* missed one

* dead

* festiva

* remove andreyism

* very dead

* no need for copy of that function

* cleanup
2021-05-09 14:37:16 -04:00
Andrey G f2a194e035 Kill warnings (#2623)
* dead code

* rtc_helper: clean-up warnings

* kill unused
2021-05-04 18:55:27 -04:00
Matthew Kennedy 65a8941286 more Lua hooks (#2605)
* more hooks

* zero index

* test table hook

* test works

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-04-29 22:22:04 -04:00
Matthew Kennedy a470c1eec1 lua 5.4 (#2590)
* thread priority

* build

* makefile prep

* call startup

* lua 5.1

* mk

* 5.3

* mk

* I guess lua does something?

* extract hooks, builds for tests

* a bit of error handling

* guard

* bootloader makefile

* remove lua

* submodule

* submodule update

* builds with submodule

* disabled by default

* h7 chconf

* tweaks

* add a useful hook

* move luaconf

* perf trace lua

* test helpers

* lua unit tests

* include to satiate clang
2021-04-28 22:41:25 -04:00
Matthew Kennedy b6fc9befc8 finish it off: remove scheduleMsg (#2575)
* finish it off

* one more logger ptr

* fwd decl

* Revert "one more logger ptr"

This reverts commit a21fb0087ddc748978d716db2710800cf26e437b.

* unused

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-04-21 15:33:40 -04:00
Matthew Kennedy 737ee444b8 rip the bandaid: find-replace most of scheduleMsg (#2572)
* biiiig find replace

* more trivial find replace

* pwm

* almost all of them

* few more

* gpio

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-04-21 12:53:13 -04:00
Matthew Kennedy 8cfb63455d Logging remove 3 (#2568)
* ts logger

* sensors

* wideband too

* missed one

* init

* motors, pid, etc

* vvt

* more

* idle

* missed one

* dynoview

* launch

* can

* console IO

* s

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-04-20 14:09:41 -04:00
Matthew Kennedy 992c16b4af logging cleanup 2: sensors, pid, etb, etc (#2567)
* ts logger

* sensors

* wideband too

* missed one

* init

* motors, pid, etc

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-04-18 20:02:32 -04:00
Matthew Kennedy 177f3afd05 ts logger (#2566)
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-04-18 19:13:48 -04:00
Matthew Kennedy babb43013f rewrite text logging system (#2439)
* 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>
2021-04-18 18:46:47 -04:00
Matthew Kennedy 774f4416a7 constexpr-ify log field list (#2548)
* constexprify

* reclaim ram

* more constexpr

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-04-13 20:16:18 -04:00
Matthew Kennedy d7e95cd31f improve sensor chart flush behavior (#2545)
* disable sensor chart

* type signature, guards

* we can't log the message as that confuses the parser

* dead

* this syntax was technically illegal

* more

* turn it back on

* remove config

* api

* implement

* ui

* java ui
2021-04-12 14:05:52 -04:00
rusefillc 8080f3bde7 helping us trace CUSTOM_INTEPOLATE_ERROR 2021-04-08 16:14:06 -04:00
Matthew Kennedy ce142907a0 replace print/printMsg with scheduleMsg (#2497)
* 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>
2021-03-26 17:23:26 -04:00
Matthew Kennedy 5e6746c3aa Implement nonlinear fuel level sender (#2473)
* table function

* config fields

* sensor type

* switch consumers

* init the sensor

* ui

* 1mv resolution

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-03-19 08:39:08 -04:00
Matthew Kennedy a26002bc02 type signature, guards 2021-03-15 17:11:11 -04:00
rusefillc 3651883bcf test_timer 2021-03-12 00:43:48 -05:00
Matthew Kennedy 943e6078c8 logging cleanup before refactor (#2438)
* minor cleanup

* more cleaning

* signature

* spelling

* doy
2021-03-09 08:43:29 -05:00
Matthew Kennedy ff5bf3e3c3 error accumulator (#2434)
* error accumulator

* makefile
2021-03-08 07:40:46 -05:00
Matthew Kennedy abdce83190 virtual zero timer (#2426)
* virtual zero timer

* it would help to call the correct function

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-03-07 15:32:41 -05:00
Matthew Kennedy dbebc353a2 remove unused msg parameter (#2360)
* dead parameter

* last few
2021-02-16 09:32:16 -05:00
Matthew Kennedy ace0f4e78c Add fallback map table (#2248)
* table

* sd math

* config

* debug channel name

* ptr vs not ptr

* actually use return value

* memory

* less magic
2021-01-31 17:19:06 -05:00
Matthew Kennedy b32e9ecb4a templated interpolate2d (#2221)
* template table2d

* assertions

* oops

* tests

* test bins too

* more assert

* format

* explicitly handle and test NaN

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-01-11 08:00:15 -05:00
Matthew Kennedy b4c5c2dfef update biquad (#2201) 2021-01-08 19:48:56 -05:00
rusefillc fea596e867 RAM efficiency of VR crank trigger shapes #2182
Audi OEM 5-cyl trigger pattern aka "Tri-Tach" https://rusefi.com/forum/viewtopic.php?f=5&t=1912

fixing build?
2021-01-04 22:13:59 -05:00
rusefillc da8c1a3ed4 Audi OEM 5-cyl trigger pattern aka "Tri-Tach" https://rusefi.com/forum/viewtopic.php?f=5&t=1912 2021-01-04 21:05:16 -05:00
Matthew Kennedy 9e384a08a2 simplify confirmation (#2131) 2020-12-24 16:54:22 -05:00
Matthew Kennedy 8c1ce68903 handle negative timer delta (#2110) 2020-12-21 06:16:58 -05:00
rusefillc 9b7acb9dbf clang warnings again #2055 2020-12-11 12:50:10 -05:00
Matthew Kennedy 622021e799 switch rpm calculator to use timer class (#2005)
* add api

* rpm calculator

* fix fsio

* fix float

* remove wrong comment

* fix timer

* clang didn't like this

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2020-12-06 16:01:45 -05:00
Matthew Kennedy a806053d52 round rpm instead of truncating (#2023)
* 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>
2020-12-06 00:11:57 -05:00
rusefillc a1fe39b89d unit tests in clang #2012 2020-12-04 23:59:21 -05:00
Matthew Kennedy bb2208fb52 add timer since last trigger tooth (#2004)
* add elapsed time to timer

* store trigger time

* fsio method

* don't do a 64b divide

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2020-12-03 11:13:45 -05:00
rusefillc 16f4aa0281 Avoid float -> int64 conversion #1993 2020-12-03 10:31:16 -05:00
rusefillc cf77902193 Avoid float -> int64 conversion #1993 2020-12-03 10:26:50 -05:00
Matthew Kennedy c5295f520e timer (#1994) 2020-11-30 19:35:06 -05:00
rusefillc 315bfe6531 avoid float -> int64 conversion #1977
cherry picking...
2020-11-23 23:33:46 -05:00
Matthew Kennedy 8eaae30bca fix #1968 (#1976)
* tanf

* name

* comment, add test
2020-11-22 08:26:17 -05:00