Commit Graph

445 Commits

Author SHA1 Message Date
Andrey 695557f709 MAP phase sensing #3544 2021-11-24 22:36:36 -05:00
Matthew Kennedy 5752b4ba92 bye (#3609) 2021-11-24 22:03:17 -05:00
Matthew Kennedy 5f01898dfd fix map avg logging (#3606)
* s

* s
2021-11-24 18:24:39 -05:00
Matthew Kennedy 1c8c22f9f1 map averaging usability (#3603) 2021-11-24 14:39:54 -05:00
rusefillc 6c23986cf0 MAP phase sensing #3544 2021-11-24 14:26:41 -05:00
Matthew Kennedy 9bd8a19564 oh my god we've had no asserts (#3595) 2021-11-22 17:52:03 -05:00
Matthew Kennedy e2a4504728 rpm calculator refactoring, gm 24x test (#3585)
* 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?
2021-11-20 14:59:02 +03: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 e7956a53f6 fuel pump doesn't use fsio (#3576)
* 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
2021-11-19 22:23:12 -05:00
Scott Smith aba4e5167e Separate out scheduleOrQueue into it's own standalone scheduler. (#3573)
It's a large enough entity that it shouldn't be buried in ignition logic.
2021-11-18 14:27:21 -05: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 a5b0604880 Add a lock for scheduleOrQueue events. (#3572)
Ignition callers are all tooth based, but aux valves calls it from both the microsecond timer and
the main initialization thread.  HPFP will also soon call it from both those places too.
2021-11-18 05:08:32 +03:00
Scott Smith 659cc68be1 Final cleanup of ENGINE macros (#3567)
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.
2021-11-17 13:45:10 -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
rusefillc 46d2b21ecc proportional spark cut #3427 2021-11-17 04:06:22 -05:00
Scott Smith 80091498a6 Programmatically replace ENGINE() and CONFIG() with engine-> etc (#3565)
git grep -l -w ENGINE | xargs sed -i -r "s/ENGINE\(([]a-zA-Z_0-9.[]+)\)/engine->\1/g"

git grep -l -w CONFIG | xargs sed -i -r "s/([^a-zA-Z_])CONFIG\(([]a-zA-Z_0-9.[]+)\)/\1engineConfiguration->\2/g"
2021-11-17 03:54:21 -05: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 c201b5b0ec proportional spark cut #3427 2021-11-16 05:56:15 -05:00
Matthew Kennedy 7296593448 remove engine pointer passing (#3556)
* some

* more

* more

* the last?!
2021-11-16 04:15:29 -05:00
Scott Smith 2cfc4af998 Start the process of using a global engine ptr for unit tests. (#3551)
* 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.
2021-11-16 00:23:14 -05:00
Andrey 7b790d36f6 random refactoring: trigger central encapsulation 2021-11-15 20:22:05 -05:00
Andrey 4bc9343d0b refactoring launch 2021-11-15 20:09:03 -05:00
Andrey 837cdf2cfb refactoring launch 2021-11-15 19:55:04 -05:00
Andrey bc3befd0ac refactoring launch 2021-11-15 18:57:12 -05:00
Andrey bafd5e0e17 refactoring launch 2021-11-15 14:40:35 -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
rusefillc 3327b0d4e7 Epic: Remove FSIO #2928 2021-11-14 10:57:19 -05:00
rusefillc 2080ae2148 script settings need names! 2021-11-13 23:10:38 -05:00
Andrey 1aca049c47 Something something Automatic Compression Release #3442 2021-11-11 20:16:46 -05:00
Andrey 7d3d93d469 dead line 2021-11-11 20:16:46 -05:00
Scott Smith 9b40e68155 Save ~2800 bytes of RAM by not caching angle->trigger mapping (#3506)
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
2021-11-09 07:03:27 -05:00
Scott Smith e350b0b6b4 Configuration for HPFP control algorithm. (#3475) 2021-11-05 23:15:35 -04:00
rusefillc b9861159a1 more curves! also names for curves 2021-11-04 23:19:44 -04:00
Matthew Kennedy cadaf2a801 extract engine phase function (#3456)
* extract getCurrentEnginePhase

* inject engine ref

* never invalid RPM, use 0 instead

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-11-04 05:46:16 -04:00
Matthew Kennedy 1cee83a56c Knock retard (#3396)
* output gauge

* knock controller

* don't need that

* inject engine ref

* test knock

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-11-01 23:33:59 -04:00
rusefillc 504bd78814 Remove engine load acceleration enrichment fix #3357 2021-10-16 21:24:05 -04:00
Matthew Kennedy dab377d15d getOrZero (#3319) 2021-10-05 19:59:07 -04:00
Matthew Kennedy b84df3dda8 dead map (#3316) 2021-10-04 18:33:10 -04:00
Matthew Kennedy 53d20d203e put MAP in the sensor model (#3292)
* map averaging in sensor model

* deadly, deadly code!

* mpxh

* Revert "deadly, deadly code!"

This reverts commit 346fe25267966a313145a809792dced84be348cf.

* comments

* sensor types

* last sensor

* channel init

* correct spot

* deinit properly

* simplify

* fix

* mocks

* map init test

* showInfo

* comment

* singleton identity function

* sensor info print

* multiple cylinder averaging buffer

* comments

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-10-04 17:18:08 -04:00
Matthew Kennedy e9cf522292 shrink multi cylinder map average buffer (#3315)
* halve

* add tooltip, rename UI
2021-10-04 07:50:17 -04:00
rusefillc 613ef6fe21 OBD error renames 2021-10-03 01:30:42 -04:00
Andrey 4478e7cf30 overdwell protection #3071 2021-10-02 01:33:26 -04:00
rusefillc ace0efe39a overdwell protection #3071 (#3294) 2021-10-02 01:17:53 -04:00
Matthew Kennedy ea7187bb25 overdwell protection (#3220)
* 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.
2021-10-02 01:10:24 -04:00
Andrey 82116d9aa1 SPARK_EXTREME_LOGGING 2021-10-01 23:50:32 -04:00
Matthew Kennedy 6703df0be3 dead code in map avg (#3290)
* dead code in map avg

* while we're at it

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-09-30 23:05:58 -04:00
Matthew Kennedy 64c9bcd364 bye frequency map (#3285)
* bye freq map

* map.cpp

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-09-30 00:20:21 -04:00
rusefillc bbcb82bf0f Complete fuel cut, maybe by wall wetting? Warning on decel (?) CUSTOM_OBD_SKIPPED_FUEL = 9010 fix #3225 2021-09-27 22:04:03 -04:00
rusefillc d2fd61ac9a "Injector Duty cycle cut" 2021-09-26 20:59:32 -04:00
Matthew Kennedy f4c8ebe4db weak link stub (#3258) 2021-09-22 14:33:25 -04:00
Matthew Kennedy 48da721c49 dead knock code (#3255)
* more unification

* hip stub

* comment

* guard

* channel idx

* include

* hip

* move in to engine

* hip9011

* dead stuff

* dead

* fsio

* lcd

* more dead
2021-09-21 20:40:20 -04:00
Matthew Kennedy 6ac12f2984 more knock sense unification (#3250)
* more unification

* hip stub

* comment

* guard

* channel idx

* include

* hip

* move in to engine

* hip9011
2021-09-21 17:39:21 -04:00
Matthew Kennedy c6e04a8d58 share some knock logic (#3246)
* knocky knock

* only if TS

* typo

* merge
2021-09-20 16:10:34 -04:00
rusefillc 6224a0a2f3 refactoring: just a better constant name 2021-09-08 20:32:50 -04:00
rusefillc 68f94e8abc Smart ECU: misfire detection #936 2021-09-06 15:29:36 -04:00
rusefillc d4fd06db54 Smart ECU: misfire detection #936 2021-09-06 11:10:11 -04:00
rusefillc 160d7810a4 Smart ECU: misfire detection #936 2021-09-06 10:35:26 -04:00
Matthew Kennedy ae84ec2044 simpler way for limp manager to handle engine stop (#3194)
* simpler

* why would we lie about spinning?
2021-08-25 11:29:20 +03:00
rusefillc 06060dc43b Implement auto knock threshold sampling #3033 2021-08-10 06:42:39 -04:00
Matthew Kennedy d5155cfd86 don't "validate instant RPM" (#3095)
* don't "validate instant RPM"

* test actually tests the right thing

* test mode transition
2021-08-04 08:17:14 +03: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
Matthew Kennedy e3e5e57eac instant rpm uses full engine cycle (#3077)
* instant rpm uses full engine cycle

* turn off fast spinup for this test
2021-07-30 08:18:24 -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 6ba3c0bace dead (#3016) 2021-07-23 08:31:23 -04:00
Andrey 79be2db269 trailing spark outputs fix #2931 2021-07-22 00:01:54 -04:00
Matthew Kennedy 243cba9784 not setValue (#3026) 2021-07-21 23:36:46 -04:00
rusefillc 9570458aea NB2 trigger shape does not seem to match JimStim #2980 2021-07-17 16:12:54 -04:00
Matthew Kennedy e3849b95d5 don't require EXTERN_ENGINE in every file (#2969)
* move enginePins

* no more extern engine

* uses

* more

* extern config too

* put this where it belongs

* include correct header

* merge
2021-07-16 18:13:33 -04:00
Andrey 47f285c50c FATAL on NB2 tune jim stim input signal #2965 2021-07-14 16:03:00 -04:00
Matthew Kennedy f169fbf615 trailing spark scheduling (#2932)
* enable bit

* implement trailing sparks

* test trailing spark

* it helps to call the correct function

* add pins

* gobblin ram
2021-07-09 08:37:46 -04:00
Matthew Kennedy 110322d353 store cylinder count as plain number (#2915)
* update test framework

* eh

* hey look it's fewer warnings

* unwind

* fix

* config

* configs

* logic

* even java had some

* no need to be a typedef

* paste in actual cylinder count
2021-07-07 08:31:05 -04:00
Matthew Kennedy 717d4dd7ac Unified cyl count macro (#2914)
* update test framework

* eh

* hey look it's fewer warnings

* unwind

* fix

* config

* configs

* logic

* even java had some

* console needs help
2021-07-06 20:14:08 -04:00
Matthew Kennedy 2cf2db8fb2 fix instant rpm (#2886)
* fix instant rpm

* this is what it should look like!

* warning

* comment issue link

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-07-01 09:19:16 -04:00
rusefillc d69ad4f45c unit_tests: mapAveragingTriggerCallback causes segmentation fault fix #2858 2021-06-25 10:43:58 -04:00
rusefillc dc331a3b63 unit_tests: mapAveragingTriggerCallback causes segmentation fault #2858 2021-06-25 10:21:31 -04:00
Andrey 0a5f688697 global static not good, there shall be only one god object /s 2021-06-25 01:37:43 -04:00
Andrey f567c764ab giving unit tests a chance to use tdcMarkCallback 2021-06-25 01:31:53 -04:00
Andrey 263bdb7eae global static not good, there shall be only one god object /s 2021-06-23 06:10:27 -04:00
Andrey a138ab98b0 https://www.rusefi.com/forum/viewtopic.php?p=41296 2021-06-20 17:26:24 -04:00
Matthew Kennedy f1a95123fb kill engine if no oil pressure (#2800)
* 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>
2021-06-16 17:20:28 -04:00
Andrey G 84856f3073 Fixes (#2807)
* tle6240: fix Matt's trap

* map: report some default value if no map sensor configured

Othervise user will get "unexpected MAP value" warning

Thread 2 hit Breakpoint 1, validateMap (mapKPa=3121.66162) at ./controllers/sensors/map.cpp:126
126		if (cisnan(mapKPa) || mapKPa < CONFIG(mapErrorDetectionTooLow) || mapKPa > CONFIG(mapErrorDetectionTooHigh)) {
(gdb) bt
 0  validateMap (mapKPa=3121.66162) at ./controllers/sensors/map.cpp:126
 1  0x002717dc in getMap () at ./controllers/engine_cycle/map_averaging.cpp:334
 2  0x0028175a in GetMapWrapper::getMap (this=0x2004214c <mapWrapper>) at ./init/sensor/init_map.cpp:12
 3  0x0028177c in operator() (__closure=0x0) at ./init/sensor/init_map.cpp:20
 4  0x002817a8 in _FUN () at ./init/sensor/init_map.cpp:21
 5  0x002811de in FunctionPointerSensor::get (this=0x20042150 <mapSensor>) at ./controllers/sensors/function_pointer_sensor.h:24
 6  0x002651c0 in SensorRegistryEntry::get (this=0x2003ddf0 <s_sensorRegistry+48>) at ./controllers/sensors/sensor.cpp:111
 7  0x002653e2 in Sensor::get (type=SensorType::Map) at ./controllers/sensors/sensor.cpp:208
 8  0x00261f38 in updateTunerStudioState (tsOutputChannels=0x2003d2e8 <tsOutputChannels>) at ./console/status_loop.cpp:637
 9  0x00262e48 in prepareTunerStudioOutputs () at ./console/status_loop.cpp:900
 10 0x00260914 in TunerStudio::cmdOutputChannels (this=0x20021a64 <tsInstance>, tsChannel=0x2003d4dc <usbChannel>, offset=0, count=340) at ./console/binary/tunerstudio_commands.cpp:24
 11 0x00260584 in TunerStudioBase::handleCrcCommand (this=0x20021a64 <tsInstance>, tsChannel=0x2003d4dc <usbChannel>, data=0x2003d4e1 <usbChannel+5> "", incomingPacketSize=5)
    at ./console/binary/tunerstudio.cpp:701
 12 0x0025fb3c in tsProcessOne (tsChannel=0x2003d4dc <usbChannel>) at ./console/binary/tunerstudio.cpp:537
 13 0x0025fbe2 in TunerstudioThread::ThreadTask (this=0x2003d608 <usbConsole>) at ./console/binary/tunerstudio.cpp:554
 14 0x0025f094 in ThreadController<1200>::StaticThreadTaskAdapter (thread=0x2003d608 <usbConsole>) at ./controllers/system/thread_controller.h:37
 15 0x0020035e in _port_thread_start () at ChibiOS/os/common/ports/ARMCMx/compilers/GCC/chcoreasm_v7m.S:201
2021-06-10 19:39:48 -04:00
Matthew Kennedy ccd75b5173 parser rewrite prep: normalize config (#2741)
* cleanup 1

* cleanup 2

* impl

* fix
2021-05-27 08:23:28 -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 ae668edf2a Fix multi bank fueling (#2661)
* add cylinder number

* changelog

* wording
2021-05-09 09:37:07 -04:00
Andrey G dd46591ad5 hip9011 (#2658)
* hip9011: isolate debug stuff

* hip9011: renames

* hip9011: start sensing knockDetectionWindowStart degres from fire

* engine: more realistic values for knock window

* hip9011: remove magic CS toggling

* hip9011: EFI_HIP_9011_DEBUG should depend on EFI_HIP_9011
2021-05-08 18:43:55 -04:00
Matthew Kennedy d7f9d42e07 Hook up multi bank fuel trim (#2532)
* multi bank trim

* cleaning

* output channels

* output channels
2021-05-08 17:41:50 -04:00
Matthew Kennedy 5f0791f9fb Destroy all shared logger (#2574)
* most of shared logger

* a few more

* one more

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-04-21 14:28:48 -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 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
Andrey G 7da6b4fa67 use cylinders_count_t in loops through cylinders (#2563)
to supress signed vs usigned warnings
2021-04-18 08:58:56 -04:00
rusefillc 549839b0de engine sniffer into unit tests 2021-04-04 22:41:38 -04:00
Andrey G a0053d5845 hip9011 and friends (#2527)
* engine math: extrant getFiringOrderTable for reuse

* engine math: getNextFiringCylinderId helper

* introduce knock_logic: first member is getCylinderKnockBank()

moved from software_knock.cpp

* hip9011: support two inputs/banks

* fix CI

* Board Subaru EG33: populated with TPIC8101 with Advanced mode

* hip9011: test communication in advanced mode

* hip9011: handle situation when chip is already in advanced mode

* Board Subaru EG33: cylinder to knock bank mapping

* hip9011: count spi transactions in advansed mode too

* hip9011: reset incalid responce counter after chip initialization

* hip9011: make debug output more structured
2021-04-04 18:13:21 -04:00
Andrey G 5fda278503 hip9011: get callback from spark on each cylinder (#2499)
* hip9011: get callback from spark on each cylinder

* hip9011: cleanup unused
2021-03-27 14:12:49 -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
Andrey G aa05ff195d Hip9011 and cleanups (#2477)
* hip9011: move hipCs out of EnginePins to hip9011 driver

* hip9011: cleanup debug output, save few RAM bytes

* Supress few signed vs unsigned warnings
2021-03-20 08:40:36 -04:00
Matthew Kennedy 2bf833a1ee Usable fuel consumption data/gauges (#2474)
* fuel consumption

* gauge names

* consumers

* obd

* binary logging

* doesn't need explicit constructor

* getters

* it works

* correct for injections per cycle

* datalog

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-03-19 17:04:42 -04:00
Matthew Kennedy c168c748ea dead code, warnings (#2461) 2021-03-15 10:23:19 -04:00
Matthew Kennedy 89d71e4379 Compute injection duration later in the pipeline (#2175)
* 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>
2021-03-03 07:30:56 -05:00
Matthew Kennedy 4d080c4e86 try rpm calculator timer (#2053)
* add api

* rpm calculator

* fix fsio

* fix float

* remove wrong comment

* fix timer

* clang didn't like this

* oops

* format

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-02-28 18:56:34 -05:00
Matthew Kennedy 55facb6613 use DECLARE_ENGINE_PTR for Engine class (#2365)
* engine cleanup

* do the cleanup

* one last spot

* expand_engine noop for firmware

* simulator
2021-02-16 16:58:54 -05:00
Matthew Kennedy dbebc353a2 remove unused msg parameter (#2360)
* dead parameter

* last few
2021-02-16 09:32:16 -05:00
rusefillc 8fa1a6530b M62T vanos support #2243 2021-02-08 21:50:31 -05:00
rusefi 2ccb75a064 refactoring: naming consistency 2021-02-08 18:20:53 -05:00
Matthew Kennedy cd03443dea Limp handles inj/ign disable (#2245)
* status loop just asks limp mgr

* put logic in limp manager

* don't need that function any more

* bye

* TIL these bits already exist in the configuration
2021-01-27 21:28:53 -05:00
Matthew Kennedy 5bfee13c21 fix instant rpm (#2180)
* consumers

* impl

* instant rpm in idle timing
2021-01-14 20:45:55 -05:00
Matthew Kennedy d534a00d5f make fuel math look more like ign math (#2214) 2021-01-14 19:18:30 -05:00
Matthew Kennedy c870215c46 part of 2217 which may fix it alone (#2220) 2021-01-11 08:01:54 -05:00
rusefillc 6fef10bd6d Revert "Revert "rpm rate of change (#2159)""
This reverts commit d3c49578
2021-01-09 20:06:19 -05:00
rusefillc d3c49578b7 Revert "rpm rate of change (#2159)"
This reverts commit eecb7ce9

#2207 yes, this makes no sense but just to confirm
2021-01-09 19:45:07 -05:00
Andrey G b61ae75fe2 gpio helper (#2195)
* gpios: isBrainPinValid helper

* LCD HD44780: do not touch pins if DM_NONE or invalid gpio

* Fix isEnabled checks for GPS and Joystick

* LCD HD44780: writePad use this method wider
2021-01-08 20:01:26 -05:00
Andrey G 71fe582ce5 Adc isAdcChannelValid helper (#2188)
* Guard define argument

* ADC: isAdcChannelValid

Check for both <= EFI_ADC_NONE and >= EFI_ADC_LAST_CHANNEL
Also check for value out of enum range (corrupted settings)

* Fix unit tests
2021-01-05 16:02:20 -05:00
Matthew Kennedy eecb7ce97f rpm rate of change (#2159)
* compute rpm rate of change

* fix units on gauge

* oops

* correct order

* scaling and limits

* correct for engine cycle length

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2021-01-03 09:55:44 -05:00
Matthew Kennedy b0f7fbf28a create limp manager (#2142)
* move rev limit to limp manager

* call fatal error

* include order

* fix bug

* tests

* comment

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2020-12-26 17:30:46 -05:00
rusefi 3d3b5706d3 HW_CHECK_SPARK_FSIO 2020-12-26 16:16:40 -05:00
Matthew Kennedy 26a205f72b clang warnings again (#2055)
* s

* changelog

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2020-12-11 13:59:28 -05:00
rusefi df4f738401 Merge remote-tracking branch 'origin/master' into master
# Conflicts:
#	firmware/controllers/engine_cycle/high_pressure_fuel_pump.cpp
2020-12-08 21:37:45 -05:00
rusefillc 81b7b2da59 refactoring 2020-12-08 21:33:59 -05:00
rusefillc 8d6255b1e2 Revert "switch rpm calculator to use timer class (#2005)"
This reverts most of 622021e799 commit.
2020-12-06 18:05:53 -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
rusefi b2493e3181 Merge remote-tracking branch 'origin/master' into master 2020-12-04 21:52:22 -05:00
rusefillc a57296d641 avoid float -> int64 conversion #1977
both cases have to be relatively small durations of time cherry picking...
2020-12-03 13:30:17 -05:00
rusefillc 59655af204 Fuel pump should turn on at the first sign of engine rotation #1961 2020-12-02 23:09:39 -05:00
rusefi 6bf93b653f Merge remote-tracking branch 'origin/master' into master 2020-11-29 12:51:04 -05:00
rusefillc 56044d4dd0 avoid float -> int64 conversion #1977
cherry picking...
2020-11-24 00:06:12 -05:00
rusefillc b939feea2b avoid float -> int64 conversion #1977
cherry picking...
2020-11-23 23:53:25 -05:00
Matthew Kennedy be71d06dfc remove (#1985) 2020-11-23 20:10:17 -05:00
rusefi a54f3e5289 GDI Epic #1448 2020-11-23 01:10:12 -05:00
Matthew Kennedy 2792828dce Remove lockAnyContext, replace with CriticalSectionLocker (#1938)
* switch to CriticalSectionLocker

* that's just about all

* clean up last usage

* include hpp for sim

* need the cpp wrappers in the makefile too

* include dir

* include
2020-11-19 06:56:02 -05:00
Matthew Kennedy 89c56a00fa minor perf tweaks (#1946)
* only start PWM if needed

* put important stuff first

* use conversion

* this broke the logic
2020-11-16 00:06:11 -05:00
rusefillc 529a6863c3 GDI Epic #1448 2020-11-09 22:53:23 -05:00
rusefillc ac37b2c19e GDI Epic #1448 2020-11-09 22:33:48 -05:00
rusefillc 0474458906 GDI Epic #1448 2020-11-09 22:21:38 -05:00
rusefillc e168ae1d35 refactoring: code duplication 2020-11-06 21:24:58 -05:00
rusefillc 14fffa5136 refactoring 2020-11-05 18:10:44 -05:00
rusefillc 721ab9c7ca Output pin init/deinit needs a linked list #1803
one step back
2020-11-05 17:44:16 -05:00
rusefillc 310998d0ae GDI Epic #1448 2020-11-05 16:42:56 -05:00
rusefillc e06fdaea0a GDI Epic #1448 2020-11-05 16:34:25 -05:00
rusefillc c354d1deb2 dead legacy code - current implementation is definitely more correct 2020-10-17 18:46:07 -04:00
rusefillc 3314394dd9 refactoring: better method name 2020-10-17 18:45:08 -04:00
Matthew Kennedy f6f3e514d2 trigger/scheduler perf improvements (#1885)
* avoid 64b on hot path

* no tooth log when fast

* use crit section locker

* final

* only flip pins if not also self stim

* only trace if doing work

* slightly drop lateDelay

* trace if not bailing out
2020-10-16 11:04:27 -04:00
rusefillc e6bac27c70 60/2 perf grab #1850
unused parameter
2020-10-04 02:09:12 -04:00
rusefillc 8c32b13567 60/2 perf grab #1850
a) removing more of stack validating - one validation within the deepest method would be enough

b) un-wrapping main callback loop for explicit order of execution
2020-10-04 01:43:02 -04:00
rusefillc edc8ee7299 60/2 perf grab #1850 2020-10-04 01:26:29 -04:00
rusefillc 149bc309f7 60/2 perf grab #1850 2020-10-04 01:04:15 -04:00
shadowm60 2d665e2c90 Launch control - experimental (#1816)
* 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

* Switched UART DMA on

* Revert "Switched UART DMA on"

This reverts commit 4a23974c431e0e7fd760595d2161e74e6854897e.

* enable launch control

make use of already existent code + integration

* Delete compile_frankenso_all.sh

remove it since it is not part of the project

* Update main_trigger_callback.cpp

broke unit_Tests

Co-authored-by: rusefi <rusefi@users.noreply.github.com>
2020-09-22 16:25:27 -04:00
rusefi 3e34b65ec5 better QC procedure 2020-09-19 04:57:07 -04:00
rusefi 34904db591 better QC procedure 2020-09-19 04:39:32 -04:00
Matthew Kennedy c2eb7c9f4a remove tach output pin (#1779)
* remove from cfg

* cfg

* rip out impl

* efi gpio
2020-09-09 16:52:23 -04:00
rusefi c990170dfa Hellen says merge #1772 progress 2020-09-08 00:15:09 -04:00
rusefi 57569ca6a8 Hellen says merge #1772
where is implementation?
2020-09-07 15:54:31 -04:00
rusefi c8af242a68 Merge remote-tracking branch 'origin/Hellen_fork_point' into master
# Conflicts:
#	firmware/controllers/engine_cycle/rpm_calculator.cpp
2020-09-07 15:39:23 -04:00
rusefi 4f2735c44a Hellen says merge #1772 noise filter bugfix 2020-09-07 15:36:17 -04:00
Matthew Kennedy fc02c2bdf4 fix broken master, inject engine ptr to rpmcalculator (#1759)
* fix

* oops
2020-09-05 18:49:42 -04:00
rusefi ea1fbe14b3 OBD CAN sensors #1733 2020-09-03 23:27:53 -04:00
rusefi d7ed141713 refactoring 2020-09-03 19:51:50 -04:00
rusefi c476cd3b95 refactoring 2020-09-03 19:29:15 -04:00
Matthew Kennedy 95f858265b detect which cylinder knocked (#1732)
* s

* science

* set pin mode

* turn stuff off so it fits

* filtering maybe

* filtering actually works

* generate filter parameters internally

* shorter window

* guard behind enable flag

* use checked in filter

* add biquad reset

* tracing

* const

* exec order

* do it from a thread

* smaller buffer, comment

* configure with header

* only for proteus

* oops

* unused

* not needed

* guards

* pin config

* don't need that include

* precook filter steady state

* define sample rate

* multi cylinder knock

* TS

* only sense when running
2020-08-31 21:05:33 -04:00
Matthew Kennedy 1b07647e72 Software knock detection (#1730)
* s

* science

* set pin mode

* turn stuff off so it fits

* filtering maybe

* filtering actually works

* generate filter parameters internally

* shorter window

* guard behind enable flag

* use checked in filter

* add biquad reset

* tracing

* const

* exec order

* do it from a thread

* smaller buffer, comment

* configure with header

* only for proteus

* oops

* unused

* not needed

* guards

* pin config

* don't need that include

* precook filter steady state

* define sample rate

* config enable switch
2020-08-28 21:13:50 -04:00
rusefi 7d53f5859d VVT support for VAG trigger #883 2020-08-25 00:59:07 -04:00
rusefi a483d14750 A vague bug #1684 2020-08-08 20:57:42 -04:00
rusefi 9496f17ef1 A vague bug #1684 2020-08-08 20:36:16 -04:00
Matthew Kennedy c37560f5f7 fix the problem 2020-07-31 14:41:42 -07:00
Matthew Kennedy 79e3bb307d misc 2020-07-29 02:29:55 -07:00
Matthew Kennedy 2bad7ed180 deprecate 2020-07-28 12:13:55 -07:00
Matthew Kennedy d19e2b2499 refacto 2020-07-24 18:26:24 -07:00
Matthew Kennedy ef590b9e7c Merge remote-tracking branch 'upstream/master' into reset-overlap 2020-07-20 18:43:17 -07:00
rusefi 8a337f18a5 changing crazy in composite logger 2020-07-20 21:20:58 -04:00
Matthew Kennedy b210bf6986 Merge remote-tracking branch 'upstream/master' into reset-overlap 2020-07-20 14:53:59 -07:00
rusefi 7681dbc307 unit test framework improvements for smoother event execution 2020-07-20 17:13:33 -04:00
Matthew Kennedy a65ac8702c Merge remote-tracking branch 'upstream/master' into reset-overlap 2020-07-20 13:27:51 -07:00
rusefillc 7d3876148b Merge pull request #1622 from mck1117/encapsulate-wwae
put wall wetting inside InjectionEvent
2020-07-20 14:19:57 -04:00
rusefi 097ca21626 better unit test logging 2020-07-20 13:38:33 -04:00
Matthew Kennedy b96f57596d Merge remote-tracking branch 'origin/master' into reset-overlap 2020-07-20 00:07:04 -07:00
Matthew Kennedy b38c2e3863 put wall wetting inside 2020-07-20 00:04:05 -07:00
rusefi 403603b126 logicdata into unit tests 2020-07-19 22:03:30 -04:00
Matthew Kennedy 5fce27da8b Merge remote-tracking branch 'upstream/master' into reset-overlap 2020-07-19 13:52:45 -07:00
Matthew Kennedy def94739ff encapsulate (#1617) 2020-07-19 16:46:28 -04:00
rusefi 53f2810216 better unit test logging 2020-07-19 16:05:19 -04:00
rusefi e2c62b8ab3 better unit test logging 2020-07-19 15:47:21 -04:00
rusefi b8e033f3d1 better unit test logging 2020-07-19 15:25:49 -04:00
rusefi 1ae3334980 better unit test logging 2020-07-19 14:26:28 -04:00
rusefi adbaf9e179 better unit test logging 2020-07-19 14:17:15 -04:00
rusefi cc2a68b753 better unit test logging 2020-07-19 14:13:15 -04:00
Matthew Kennedy 65b41a9306 encapsulate overlap logic 2020-07-18 23:03:12 -07:00
Matthew Kennedy f06b2c2edd comments & improve logic 2020-07-16 23:55:41 -07:00
Matthew Kennedy c21b60eeb8 add reset 2020-07-14 23:54:41 -07:00
rusefi 0847dc4683 useFSIO6ForRevLimiter 2020-06-01 09:09:55 -04:00
Matthew Kennedy d0e5b8674f Integrate stft (#1475)
* code changes

* missed a spot

* update UI

* gauge name

* adjust gauge scaling

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2020-05-31 16:59:05 -04:00
rusefi 7d8236a6b3 composite log for console 2020-05-26 00:07:18 -04:00
rusefi 804f4b9db5 better file name 2020-05-25 13:02:05 -04:00
Matthew Kennedy a2313a853c switch some firmware warnings to errors (#1465)
* warnings as errors

* throw instead of exit

* test massaging

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2020-05-23 10:46:28 -04:00
Matthew Kennedy 00aa06a6b5 as suggested by the comment, this doesn't need a warning (#1464)
* the comment is correct

* format
2020-05-23 00:40:20 -04:00
Matthew Kennedy 7a41df6153 Fix 100% duty injection (#1431)
* skip turn-off for high duty

* mock executor injection

* test

* switch to hard cut

* test no longer relevant
2020-05-14 07:44:32 -04:00
rusefi 30759ed8b3 VVT miata trying to crank with random phase #1278 2020-04-26 20:50:49 -04:00
Matthew Kennedy 024ef96d0d MAP scheduling (#1352)
* map sched

* format

* guard test
2020-04-23 08:12:44 -04:00
rusefi 6a85ebb7b8 docs 2020-04-20 23:44:59 -04:00
rusefi 5ff316b374 BUGFIX: console engine sniffer was not displaying TDC mark properly in cases of negative angles 2020-04-20 22:43:55 -04:00
rusefi 85c493ae46 more butter more better 2020-04-19 20:57:01 -04:00
rusefi 600744c926 multi-channel Tuner Studio tooth logger #1284
composite TDC mark not working?
2020-04-19 20:46:29 -04:00
Matthew Kennedy 942403cec2 Fuel/ign correctino on new temp sensors (#1318)
* corrections

* test

* adv map

* tests

* cleanup

* lcd

* fsio

* unneeded

* more math

* last consumer

* cleanup

* fix kinetis
2020-04-18 18:45:30 -04:00
Matthew Kennedy 24b0c85a9e fix warnings (#1282)
* warnings

* don't need to template those
2020-04-12 09:39:14 -04:00
Matthew Kennedy 95ef31da67 Goodbye, old TPS (#1266)
* clear out tps

* boost control

* aux valves

* launch, aux valves

* unused field
2020-04-05 19:33:33 -04:00
Matthew Kennedy 44bb09d1a4 yet more tps consumers (#1258)
* 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>
2020-04-05 09:11:25 -04:00
Matthew Kennedy 0ac3e06149 cleanup extern mess (#1237)
* cleanup

* move outside define
2020-03-29 19:06:03 -04:00
Matthew Kennedy b7b67a2a7f Multispark implementation (#1192)
* 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>
2020-03-26 01:49:36 -04:00
Matthew Kennedy 45f5afe871 Remove old monitoring timestamps (#1217)
* remove monitoring timestamps

* adv map

* fuel calc

* map avg

* printing

* spark logic

* hip 9011

* new traces

* s

* missed a few
2020-03-24 20:19:19 -04:00
rusefi 4d617aa0fe random header clean-up 2020-03-23 09:00:57 -04:00
Matthew Kennedy 61c4d0fe83 save some ram (#1211)
* remove dead stuff

* why store those pointers twice?
2020-03-22 19:06:29 -04:00
Matthew Kennedy a2a5b40ced Support disabling most/all features (#1162)
* this flag did nothing

* guard features properly
2020-02-26 18:16:35 -05:00
Matthew Kennedy bcbac0b47f minor simplify spark (#1150)
* simplify

* rename
2020-02-21 19:35:11 -05:00
Matthew Kennedy f5b90d3f30 Simplify fuel math again (#1117)
* return the scheduled time from scheduleByAngle

* simplify fueling math
2020-02-01 17:29:55 -05:00
rusefi 1735529a6b refactoring: extracting DEEP_IN_THE_PAST_SECONDS contant 2020-01-31 01:21:56 -05:00
rusefi 9bd796ab6b trigger refactoring 2020-01-26 12:02:54 -05:00
Matthew Kennedy 9473e03a6a Inject timestamps for injection too (#1108)
* schedule by nt, not us

* inject timestamp
2020-01-20 00:12:18 -05:00
Matthew Kennedy f8cd2ad3ce use NT_PER_SECOND instead of convert from microseconds (#1107)
* add NT_PER_SECOND

* missed a few

* inject tooth logger timestamp

* inject
2020-01-19 22:23:41 -05:00
rusefi a222ecdfe1 happy new year unification 2020-01-13 21:57:43 -05:00
Matthew Kennedy 3cf068e5a2 injector logic simplification (#1095)
* simplify injector scheduling a little

* clearer logic

* comment
2020-01-11 10:26:20 +03:00
rusefi 2ac0041d1e better method name 2020-01-10 23:45:01 -05:00
rusefi 8f27c8f8ed fear he who sees dead code: 'overlappingScheduleOffTime' was never assigned so the whole logic around it is dead 2020-01-10 23:39:30 -05:00
rusefi 7fe5a665ce Merge branch 'master' of https://github.com/rusefi/rusefi
# Conflicts:
#	firmware/controllers/engine_cycle/main_trigger_callback.cpp
2020-01-10 23:19:30 -05:00
rusefi 67a3796086 better method names 2020-01-10 23:17:58 -05:00
rusefi f20967664d better method name 2020-01-10 23:09:38 -05:00
Matthew Kennedy 262e3a4516 Dedupe (#1094)
* deduplicate

* yeah, the compiler is smart enough
2020-01-11 06:29:42 +03:00
Matthew Kennedy 36211a6738 Schedule sparks with scheduleByAngle (#1092)
* injection

* injectors

* add edge timestamp to ShaftPositionListener

* scheduleByAngle require edgeTimestamp

* schedule with nt not us

* fix all schedulers

* schedule spark based on edge timestamp

* aux valves too

* update comments

* schedule dwell with new stamp

* format
2020-01-11 00:01:54 +03:00
Matthew Kennedy e2841e689d Require tooth reference time for scheduleByAngle (#1091)
* injection

* injectors

* add edge timestamp to ShaftPositionListener

* scheduleByAngle require edgeTimestamp

* schedule with nt not us

* oops, these were missing from this branch
2020-01-09 23:45:13 +03:00
rusefi 63e3e84e08 happy new year 2020-01-08 00:02:40 -05:00
Matthew Kennedy 3d8c4f4179 Strongly typed action constructor (#1087)
* strong typing

* maybe we needed that one
2020-01-07 18:10:31 -05:00
Matthew Kennedy 6703705a33 Pass action_s instead of callback/param (#1084)
* change action

* consumers

* fix test

* didn't mean to add those

* simplify

* fix simulator

* fix sim for real

* oy

* maybe this time the simulator will actually be fixed, for real

* don't rely on undefined behavior
2020-01-07 00:41:18 -05:00
rusefi 50d78f648b de-coupling things a bit 2019-12-24 00:26:23 -05:00
rusefi c629b21ab4 adding simplicity 2019-12-23 23:25:08 -05:00
rusefi d489191ebb refactoring 2019-12-23 22:12:55 -05:00
rusefi 9ce2a4bb32 refactoring 2019-12-23 21:58:06 -05:00
rusefi b290b4ae7a removing legacy perf code 2019-12-23 21:56:16 -05:00
rusefi 0e231dd035 Revert "couple of dead lines"
This reverts commit dc20ee1d
2019-12-23 21:55:08 -05:00
rusefi dc20ee1da1 couple of dead lines 2019-12-23 21:44:38 -05:00
rusefi 9243c0facc replacing probably unused engineSnifferHisto with new perf_trace 2019-12-23 20:22:17 -05:00
rusefi 95fa4c78c4 removing one dead line 2019-12-23 20:19:13 -05:00
rusefi cf0b13041f random refactoring: hopefully not changing byte size of any variables but clarifying/fixing type between ticks, US and MS 2019-12-21 21:11:09 -05:00
rusefi 32564db46e fixing build is my most favourite time! 2019-12-13 20:51:04 -05:00
rusefi 44c98029d7 fixing build is my most favourite time! 2019-12-13 18:02:24 -05:00
rusefi f47a1a16d1 getting rid of boardConfiguration / binary compatible change 2019-12-11 17:48:55 -05:00
rusefi 579770b66f The Big Refactoring of 2019: folder structure #723 2019-12-08 13:21:35 -05:00
rusefi 65c8dd83b3 The Big Refactoring of 2019: folder structure #723 2019-12-08 13:09:51 -05:00