* 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
* new function
* hellen
* MRE
* proteus
* put those function declarations in a reasonable place
* put the comment back
* weak
* move that to a reasonable place
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>
* early hw init
* s
* read configuration exactly once
* cleanup
* housekeeping
* test friendly
* ugh bad merge
* that is a noop
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* early hw init
* s
* Revert "s"
This reverts commit 10d3039168613cfb2b0cf1c960d2f18894745ce3.
* bor
* I can't type
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* hip9011: move hipCs out of EnginePins to hip9011 driver
* hip9011: cleanup debug output, save few RAM bytes
* Supress few signed vs unsigned warnings
* new apis
* dedicated USB path
* move decl
* init
* don't init usb twice
* guard
* check that we're initialized before using TS
* comment
* guard
* guard USB
* brain doesn't go good
* make tests happy
* dead define
* cypress
* ifdef != if
* s
* include priority
* don't start a thread we know we don't need
* bad-ish merge
* const
* why did this code exist...?
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* enable
* guard correctly
* h7 bit timing
* allow longer frames
* allow data smaller than maximum
* mcu temperature
* typo
* tx message
* testing
* check for CAN or FDCAN
* don't need that any more
* h7 bitrate config
* undo testing
* h7-ify msg tx
* comment
* break out SID/EID macros
* guard differently
* update ChibiOS
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* hook up lps25
* it would help to include all the files
* unguard some stuff
* unguard more
* guarding
* s
* guard
* only register if init worked
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* extract
* guard
* put some back
* put back
* slow is actually 500hz so slow is fine here
* no magic
* fix printFullAdcReport
* cast
* implement h7 adc ish
* analog switches
* bad merge
* no map avg on h7
* fix master while we're at it
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* extract
* guard
* put some back
* put back
* slow is actually 500hz so slow is fine here
* no magic
* fix printFullAdcReport
* cast
* if we turn those off is it happy
* stub cypress/kinetis
* guard fast stuff better
* bad merge
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* replace null device with rusefi ini
* comment
* warning
* stub ramdisk for when we don' thave an image
* maybe generate the image with a build
* install mtools
* fail on error
* install deps _before_ we need them
* embed a little readme
* oops
* Board subaru eg33: has HIP9011 knock sensor
* hip9011: lastExecutionCount does not exist any more
* hip9011: extranc commands to header, use logic math for bitfields
* mostly guard against no fast adc
* disable on h7
* guard more
* guard adc init
* you can't do that in c++
* we need that
* s
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* maybe hook up sdmmc
* the complier didn't like that very much
* mcuconf
* guard properly
* fix
* duh
* omg that's an extra close paren
* explicitly set which device fatfs should use
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* rusefi_halconf
* h7 gpt
* don't redefine that
* maybe this was necessary
* format
* no usb in cypress
* flags for bl
* cypress
* maybe bootloader
* no smart build for cypress/kinetis
* no smart build
* no really, disable smart build
* don't need to clean that env var
* cypress
* format
* h7 clocks
* run the core at 400
* disable LSE
* 8mhz timer clock
* osc
* it has to be even slower
* something is wrong with WFI
* this was wrong anyway
* ts cleanup part 1
* move more stuff in to the class
* extract base class
* switch to TsChannelBase where we can
* dfu
* more to TsChannelBase
* bad merge
* another bad merge
* bootloader
* bluetooth
* format
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* configure for no cache
* this doesn't need a setting
* now we don't need invalidate
* reorder and comment
* mmc
* sw knock
* use spiPolledExchange for small transfers
* mock spi
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* MRE is green: put cpu in standby in idle
* Revert "MRE is green: put cpu in standby in idle"
This reverts commit 62b5cadda014ace749b145b629da62b182b5e3ce.
* RusEFI is green on all boards
* enable msd
* modify descriptors for composite device
* makefile cleanup
* format
* define
* embiggen fifos
* needed that
* cleanup too while we're at it
* rename endpoints
* switchable descriptors
* guard the request hook too
* don't need this changed yet
* cleanup
* update ep0 response
* cleanup
* use the msd hook from chibios
* this was wrong
* this was covered by other PR
* this is also covered
* s
* move f4 config files
* don't need this
* f7
* f7
* h7
* this was duplicated
* turn off smart build
* loader too
* update prometheus paths
* bootloader should include confdir
* fix the flash size while we're at it
* move chconf_common
* use wait
* normalize board.mk
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* remove EFI_ADC_TEMP_SENSOR
* implement
* comment
* s
* switch adc_inputs over
* header
* s
* I think aligned-on-stack should work ok
* num channels
* cache safety
* move adc init too
* don't compile that file for the h7
* cypress & kinetis
* ports
* guard against bootloader
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* set mcu type in hw_ports
* move f4 linker script
* move f7 linker script
* don't set default linker file in makefiles
* extra line
* prometheus actually didn't depend on anything special for f469
* dead line
* h7
* dead
* move board.c
* set explicit cpu type for simulator
Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
* set mcu type in hw_ports
* move f4 linker script
* move f7 linker script
* don't set default linker file in makefiles
* extra line
* prometheus actually didn't depend on anything special for f469
* dead line
* h7
* dead
* ChibiOS: add support for STM32F765
This chip is used on Subaru EG33 p'n'p RusEFI board from Dron_Gus
* drivers: gpio: mc33810: commulative update
- use BIT macro
- fix wake-up method
- fix order of arguments in _add function
* port: stm32f4/7: detectCanDevice check for enabled interfaces only
* ADC: fix internal array size
internalAdcIndexByHardwareIndex should be EFI_ADC_LAST_CHANNEL size
couse adc_channel_e is used as index
* status LEDs: support status LEDs that driven by low level
* Proper way to add lis302 driver
* Proper way to add license directory to includes
* Makefile: simplify
All ChibiOS stuff is accumulated in ALLCSRC, ALLINC and so on.
* board.mk: append sources and includes to ALLSRC, ALLCPPSRC, ALLINC
* Cypress: fix CANv2 includence into build
* LCD: check if settings are valid on each access
* Lada Kalina: remove duplicate code
All LCD pins are set to GPIO_UNASSIGNED in disableLCD()
* Remove duplicate code
* We still need to know when invalid gpio is used...
This reverts commit c17775231a.
* 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
* 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
* 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
* 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
* we must lock earlier to be truly safe
* this was using huge memory
* devirtualize
* We still need consoleEventListener for boards with EFI_CONSOLE_SERIAL_DEVICE
* MC33810: add MC_ prefix for command defines
As CMD_PWM define is now used by console command
Bug was introduced in 2312b0ae57 when
sample buffer was moved out of class. So sample become adcsample_t*
instead of adcsample_t[] and sizeof returns 4.
* ADC: fixes:
-use enums
-internalAdcIndexByHardwareIndex array should be adc_channel_e size
-add sanity checks
-save few bytes of RAM
* ADC: use logical OR instead of math add
* 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>
* 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
* restructure
* guard c++
* idle too
* status_loop.h
* consolidate definitions
* use 1/0 instead, check for existence
* missed a few
* dead define
* defs for bootloader
* TLE8888: add support MR switching from SW
Main Relay has limitation - it is always active while KEY=1. When
KEY=0 MR can be switched on from SW.
* TLE8888: support reading of KEY and WAKE inputs
* Rusefi enums: add new TLE8888 pins
* smart gpio: fix tle8888 direct pin mapping for MRE
* MRE: use TLE8888 pins instead of MCU gpios that drives TLE8888
* TLE8888: cleanup
* TLE8888: do not reset driver private data on WD/undervoltage reset
* TLE8888: diagnostic updates
* TLE8888 driver: BIG driver rework
* TLE8888: check SPI answers for abnormal states
Reply with other than requested register can be a sign of:
-Power-On-Reset, then OpStat0 will be replyed
-WatchDog reset, then FWDStat1 will be replyed
-Invalid communication frame, then Diag0 will be replyed
Keep tracking last accessed register and check with the next reply.
* TLE8888: debug clean-up
* TLE8888: implement spi array write
This reduce CS inactive state time between two consequent accesses
from 8.8 uS to 1.4 uS
* TLE8888: fix PP outputs in OD mode
* TLE8888: cleanup register definitions
* TLE8888: run separate driver thread for each chip instance
Calculating poll interval for few chips become more complex, avoid
this running thread for each device.
* TLE8888: fix cypress and kinetic compilation
Both platforms define its own MAX and cause redifination error if
common.h is included in driver.
* MRE: update mapping.yaml and fix direct pin mapping for TLE8888
* TLE8888: diagnnostic: disable switch off in case of overcurrent
For all output, use current limiting instead
* TLE8888: check for overvoltage on OUT8..OUT13
* TLE8888: add TODO note about how to recover from failure condition
Currently TLE8888 automaticly recovers only from overcurrent and
(may be) overtemperature conditions.
Short to bat cause output disable (bit in OECONFIG is reset) and
needs driver/host intervention.
* TLE8888: save few bytes of RAM
* TLE8888: Lada Kalina is test mule for IDLE stepper on TLE8888
Don't forget to enable PP mode for TLE8888 outputs 21..24:
uncomment line 1087 in tle8888.c
* TLE8888: reorder code, cleanup
* TLE8888: mode all debug/statisctic to per-chip struct
* TLE8888: rework poll interval calculation
* MRE: use TLE8888 pins instead of MCU gpios that drives TLE8888 #2
* add
* remove old
* remove more old
* makefile
* fix init
* patch up other stuff
* actually fix it this time
* raw output channels
* gauges, UI
* scaled channel
* fix field ordering
* 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
* remove listener array
* 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