Commit Graph

126 Commits

Author SHA1 Message Date
Matthew Kennedy 115a0bfef0 consolidate pwm logic 2023-10-06 19:56:14 -04:00
Matthew Kennedy 22a10cc0eb minor pwm logic cleanup 2023-10-06 19:41:40 -04:00
Andrey f4da504968 tooth-event angle cannot be negative 2023-10-06 12:21:55 -04:00
Andrey a6103dca56 tooth-event angle cannot be negative 2023-10-06 12:21:55 -04:00
rusefillc e4a3fb260d only: readability? 2023-10-05 22:42:00 -04:00
rusefillc 696a83d04a only: documenting the current naming mess 2023-10-05 22:32:20 -04:00
rusefillc fd69d25866 only: reducing confusion? 2023-10-05 22:03:41 -04:00
Andrey f0479fdc17 preparing method for reuse 2023-09-06 08:16:14 -04:00
Andrey e81f9f953a some of these error codes are quite pointless now in 2023 2023-09-05 21:32:50 -04:00
Andrey ba66fdcf82 reducing code duplication around assert 2023-09-05 21:28:39 -04:00
Andrey 464ce6ae50 default arguments are cool even while I might not even need it now 2023-09-05 16:17:13 -04:00
Andrey 70945665e9 default arguments are cool even while I might not even need it now 2023-09-05 16:01:34 -04:00
Andrey 05a8a93028 technical debt? our way to have unit tests working is to have this field instead of proper 'this' 2023-09-05 15:38:51 -04:00
Andrey c8302be4ae type clean-up to avoid nasty cast 2023-09-05 15:33:05 -04:00
Andrey 1067e27a50 this field can use a type 2023-09-05 15:20:57 -04:00
rusefi e8c45a2e7d refactoring: reducing code duplication. Also, do we even care for critical error codes?! 2023-08-20 22:23:44 -04:00
rusefillc 9febfc7070 startPwm should not FATAL fix #5497 2023-08-07 23:32:52 -04:00
rusefillc bc2a2b9ab9 only:better method name 2023-06-25 02:08:53 -04:00
rusefi f77f356e6d reducing code duplication 2023-06-11 23:17:13 -04:00
Andrey 8c9b17485e Revert "Allow scheduling_s to come from a pool (#4841)"
This reverts commit 5250b177
2023-05-25 10:10:17 -04:00
rusefillc 8f6f7819a4 one step back: sleep implementation not to use heap 2023-05-25 10:10:17 -04:00
rusefillc 9ec713c162 dead doc 2023-05-25 09:49:30 -04:00
rusefillc cdd7bfe535 code style 2023-05-24 00:09:06 -04:00
Matthew Kennedy 61e5b4b1ad change ObdCode to enum class builds firmware 2023-04-29 00:44:00 -04:00
Matthew Kennedy dc6f53bda5
extract newton's method implementation (#5157)
* move expected, update libfirmware

* hellen ID solver uses shared Newton's method

* comment shouldn't have been moved
2023-03-07 08:45:17 -05:00
Matthew Kennedy 5250b177c2
Allow scheduling_s to come from a pool (#4841)
* injection events use scheduling pool

* knock and prime

* bench test

* dropped this: *

* extract action before execute

* comment

* init allocated timers

* metrics

* dropped this: ,

* guard

* injection events use scheduling pool

* knock and prime

* bench test

* dropped this: *

* extract action before execute

* comment

* init allocated timers

* metrics

* dropped this: ,

* guard

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2022-12-10 17:55:51 -05:00
Matthew Kennedy 994ee2f22f
Combine angle based event (#4884)
* Remove AngleBasedEventOld/New, only AngleBasedEvent now

* this 7 year old comment of old test code can go away
2022-12-10 17:07:02 -05:00
Matthew Kennedy 769cdd32ca
TriggerScheduler cleanup (#4844)
* TriggerScheduler cleanup

* remove TRIGGER_EVENT_UNDEFINED

* remove dead overload of scheduleOrQueue

Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
2022-11-28 08:55:38 -05:00
Andrey G e7b06cbfca
compile warnings: signed vs unsigned and unused (#4713) 2022-10-30 09:47:53 -04:00
Matthew Kennedy b089825a4a
schedule ignition charge by angle instead of tooth (#4513)
* schedule ignition charge by angle

* same mistake as #4536

* s

* wrap sparkAngle too

* AngleBasedEventNew

* function moved

* implement scheduleOrQueue

* prints
2022-09-25 11:00:55 -04:00
Matthew Kennedy af7e4f6fe5
two modes trigger scheduler (#4598)
* two modes trigger scheduler

* asOld

* hpfp
2022-09-20 05:28:23 -04:00
Matthew Kennedy 35997c6318
pwm iteration limit to avoid float math accuracy loss (#4578) 2022-09-13 21:16:35 -04:00
Andrey G 55c1f53c75
dead code, reduce typedefs (#4566)
* Do lightweight checks first

* Dead getTimeIgnitionSeconds()

Dead since 81fffe87b7

* Get rid of efitime_t.

Purpose are not clear. Use efitick_t where ticks are used,
use efitimeus_t for uS, use efitimems_t or efitimems64_t for mS.

* Fix unit tests

* Fix misc: stm32f1_test_project
2022-09-11 16:08:11 -04:00
rusefillc 851e8e48d3 refactoring: type safety 2022-09-11 02:57:35 -04:00
Andrey 5962cbd5c2 brutal encapsulation 2022-09-07 20:31:04 -04:00
Andrey 52869d63bb tear down Engine god object #4511
just trying different things
2022-09-07 20:25:49 -04:00
Andrey ab4b451195 os_access.h dead? 2022-09-07 15:56:45 -04:00
Matthew Kennedy 769f7ec558
get correct stamp (#4174) 2022-05-14 23:01:02 -04:00
rusefillc 500c443a15 Timestamp Error scheduleByTimestampNt too far #3395
improving error message
2022-05-14 21:24:19 -04:00
Matthew Kennedy 9b820cf1dc
remove suspicious cast that could maybe cause an overflow (#4169)
* suspicious cast

* don't print 64b

* explicit type
2022-05-13 06:40:37 +03:00
Matthew Kennedy bc6a87cadc
allow enum_class in rusefi_hw_enums.h (#4104)
* make things c++ friendly

* install various canaries in coal mines

* using is much clearer than typedef

* fixing builds

* lps25

* trigger includes were a mess

* c -> c++ cleanup

* os util

* why did so many include os_util.h?

* fwd declare

* cypress/kinetis

* s

* eg33 happy

* happy sim

* cypress usb

* pch

* cypress

* doesn't need to include all that

* h7
2022-04-25 20:38:16 -04:00
Andrey 08c1c5d969 Remove legacy check fix #3808 2022-01-18 16:01:27 -05:00
rusefillc 64387689ff On m_event vs lobe vs scheduling #3804 2022-01-18 00:45:24 -05:00
Andrey 940b04ab24 Let's always have TS structure so that unit tests can check values in outputChannels, kind of making outputChannels a god dump for state but whatever since Live View is coming 2021-12-07 20:18:47 -05:00
rusefillc 4b8c5f1671 harley 2021-11-26 14:41:35 -05:00
Scott Smith ba4a00d3bb
Drop SingleChannelStateSequence in favor of MultiChannelStateSequenceWithData (#3519)
* 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.
2021-11-21 04:56:07 -05:00
rusefillc e54d3b9e06 On -fpermissive in Windows in unit tests #3581 2021-11-20 00:16:03 -05:00
Scott Smith 5bc1949aef
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
Scott Smith 18c27a6e9c
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 cc95bd6c8e
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