Commit aa96436
Feat/new pwm (#553)
* Update Inc/MockedDrivers/common.hpp
#534 (comment)
Co-authored-by: Jorge Sáez <125664643+jorgesg82@users.noreply.github.com>
* Actually do the change github didn't do :/
* Fix typo p2
* Fix another typo
* Fix unsigned long - 64bit when testing using LL functions
* Minor fixes to scheduler
Rebased from remotes/origin/MockTim
* Fix: uint32_t* cast of a word instead of the ptr
* Fix: remove active_task_count_ decrement in pop_front()
#534 (comment)
* Try fix Wstrict-aliasing in front_id
* Try fix Wstrict-aliasing again
* Fix typo in allocate_slot
* fix: test UsedBitmap -> FreeBitmap
* used_bitmap_ -> free_bitmap_ in test part 2
* fixed tests discovery
* fix: set_timeout() test
* Add a test, fix the error (kind of)
* Fix: underflow in schedule_next_interval
* Fix: call schedule_next_interval() in start()
* Fix: invert condition, that was stupid
* feat: add test showcasing possible usage within StateMachine logic
* fix: Calculate correct prescaler & add to HALAL.hpp
* Try to fix tests
* try to fix tests part 2
* Try to fix tests part 3
* part 4 - add the wrapper.c to cmake, will this work?
* part 5 - fix cmake stm32h723xx_wrapper.c path
* fix: try to fix tests part 6
* fix: volatile warnings
* fix: active_PSC is now set when PSC is set
* fix: remove outdated comment
* fix: tests part 7, should work now
* fix: remove unecessary if, return if cancelled in cancel_timeout
* Pop all due tasks, several might be due in the same tick
* Revert force-push
* fix: off by one error + configure_timer_for_interval should use uint32_t
* fix: off by one error in schedule_next_interval()
* All 15 tasks in MultipleTasks test, and it works
* Add SameTaskMultipleTimes test, does all 16 tasks too
* larger NUM_TICKS just in case
* fix bug mentioned in previous cancel_timeout()
* fix: id uint32_t -> uint16_t + bug fix
* fix: remove TimerPeripheral::start and Time::start from HALAL::start
* try to fix ci/cd
* try to fix ci/cd part 2
* try to fix ci/cd part 3
* clean up ci/cd fix
* Remove unnecessary warning ignore
* fix: use wrapper instead of interface for stm32h7xx_ll_tim.h
* fix ci/cd and add the other submodule to be automatically added
* fix: actually add stm32h7xx_ll_tim_wrapper.h
* try to fix ci/cd warning
* try fix warnings again
* fix: add ignore Woverflow to stm32h7xx_ll_tim
* fix: remove need to ignore Woverflow warnings
* fix: Remove tim_register_definitions.hpp
We're already including them in stm32h723xx_wrapper
* Initial TimerDomain commit, lots of work to do...
* Change name to TimerDomain.hpp in comment
* feat: Implement getting AnyGeneralPurpose timer with priorities
* Make prettier
* Remove leftovers
* Remove outdated comment
* fix: Finish the comment :)
* Clean up error messages, add comment
* temp: setup to try to compile template_project
* Try to get TimerDomain to compile
* Add initial implementation of scheduler
* Try to fix -Wuninitialized warning
* Try to remove Wuninitialized warning temporarily
* Remove unnecessary clear of task element
* fix: Readability and todo for validation
* fix: allocate_slot
* Add explenation of sorted_task_ids_, static_assert for the bitmaps
* Remove long_wait_remaining_us_
* fix: better get_at
* fix: better front_id
Compiler would've probably optimized it but it's better to make it explicit
* fix: endianness in pop_front
* Added unlikely to release_slot conditional
* fix: Correct comment explenation
* No bit field insert, it annoyed me
* No more diagnostic ignore
* fix: loss in accuracy by not adding 1: #534 (comment)
* fix: Moved active_task_count_ modification
* Actually set used_bitmap_ in allocate_slot
* fix: used_bitmap_ -> free_bitmap_
* only include sources when cross-compiling
* modify CMakeLists inside Tests
* feat: use ugly ifdef guards for host testing purposes
* add sample tests for Scheduler
* add emulated ticking
* test for execution count
* fix: CI
* fix: expected result in test case + explanation
* add compiler specific and CoreMacros
* copy files from LL and CMSIS for TIM Registers
* bridge between LL MMIO Timer and user defined TIMER
* reduce the number of ugly macros
* compile the new mock file
* update test
* enable debugging of tests with TestMate C++ extension
* feat: add DSB and ISB intructions in x86_64
* feat: add NVIC
* add NVIC logic
* feat: use NVIC and remove print
* fix: move extern"C" block to allow using <iostream>
* add Register class to allow for side effects
* feat: use newly created Register class for side effects, neat trick in CNT write
* feat: be as realistic as possible in test, by using CNT++
* feat: remove unnecessary include
* feat: add an __RBIT impl for x86_64
* fix: compilation
* Added tests check in CI/CD
* fix(ci/cd): output folder
* Added ARM specific instructions to be able to compile in ARM hosts (Mac)
* Fix: compiler barrier for msvc, hopefully works
* Fix: Try to fix -Wchanges-meaning warning
* Fix typo
* Update Inc/MockedDrivers/common.hpp
#534 (comment)
Co-authored-by: Jorge Sáez <125664643+jorgesg82@users.noreply.github.com>
* Actually do the change github didn't do :/
* Fix typo p2
* Fix another typo
* Fix unsigned long - 64bit when testing using LL functions
* Fix: uint32_t* cast of a word instead of the ptr
* Minor fixes to scheduler
Rebased from remotes/origin/MockTim
* Fix: remove active_task_count_ decrement in pop_front()
#534 (comment)
* Try fix Wstrict-aliasing in front_id
* Try fix Wstrict-aliasing again
* Fix typo in allocate_slot
* fix: test UsedBitmap -> FreeBitmap
* used_bitmap_ -> free_bitmap_ in test part 2
* fixed tests discovery
* fix: set_timeout() test
* Add a test, fix the error (kind of)
* Fix: underflow in schedule_next_interval
* Fix: call schedule_next_interval() in start()
* Fix: invert condition, that was stupid
* feat: add test showcasing possible usage within StateMachine logic
* fix: Calculate correct prescaler & add to HALAL.hpp
* Try to fix tests
* try to fix tests part 2
* Try to fix tests part 3
* part 4 - add the wrapper.c to cmake, will this work?
* part 5 - fix cmake stm32h723xx_wrapper.c path
* fix: try to fix tests part 6
* fix: volatile warnings
* fix: active_PSC is now set when PSC is set
* fix: remove outdated comment
* fix: tests part 7, should work now
* fix: remove unecessary if, return if cancelled in cancel_timeout
* Pop all due tasks, several might be due in the same tick
* Revert force-push
* fix: off by one error + configure_timer_for_interval should use uint32_t
* fix: off by one error in schedule_next_interval()
* All 15 tasks in MultipleTasks test, and it works
* Add SameTaskMultipleTimes test, does all 16 tasks too
* larger NUM_TICKS just in case
* fix bug mentioned in previous cancel_timeout()
* fix: id uint32_t -> uint16_t + bug fix
* fix: remove TimerPeripheral::start and Time::start from HALAL::start
* try to fix ci/cd
* try to fix ci/cd part 2
* try to fix ci/cd part 3
* clean up ci/cd fix
* Remove unnecessary warning ignore
* fix: use wrapper instead of interface for stm32h7xx_ll_tim.h
* fix ci/cd and add the other submodule to be automatically added
* fix: actually add stm32h7xx_ll_tim_wrapper.h
* try to fix ci/cd warning
* try fix warnings again
* fix: add ignore Woverflow to stm32h7xx_ll_tim
* fix: remove need to ignore Woverflow warnings
* fix: Remove tim_register_definitions.hpp
We're already including them in stm32h723xx_wrapper
* Initial TimerDomain commit, lots of work to do...
* Change name to TimerDomain.hpp in comment
* feat: Implement getting AnyGeneralPurpose timer with priorities
* Make prettier
* Remove leftovers
* Remove outdated comment
* fix: Finish the comment :)
* Clean up error messages, add comment
* temp: setup to try to compile template_project
* Try to get TimerDomain to compile
* Fix all compilation errors (yipee)
* Try to fix compile errors when in template_project
* Try to fix compile errors...
Goodbye ErrorInRequestN I thought it could be used T-T
* try fix again
* slowly but surely
* Fix TimerWrapper constructor
* Add timer interrupt callbacks, use XList for TIM_HandleTypeDef definitions
* try to choose 16 bit or 32 bit at compile time
* Fix compilation issues
* Fix overflow calculation and a test
* Fix all remaining issues
* Change TimerRequest values
* Remove temporary function
* fix: Remove static assert
* fix: Change order of parameters
* fix: timer 15 (hopefully?)
* fix: Rollback removal of tim15 when getting AnyGeneralPurpose timer
* fix: pins are now part of TimerWrapper, not TimerDomain
* fix: Split TimerWrapper into a different file: TimerWrapper.hpp
* fix: Use new way to add Domain to board
* feat: Initial implementation of new PWM class
* fix: Make PWM class more private
* feat: Use an initializer_list to get the pins without needing a size
* fix: Remove prescaler and period from TimerDomain
* feat: Add Any32bitTimer to TimerDomain
* fix: Rename Any32bitTimer to Any32bit
* Fix docker build hopefully
* feat: add a macro: get_timer_instance
* fix: compile error
* fix: revert change to .vscode settings
* fix: tim3 is 16 bit, tim5 is 32 bit + start of pin af checking
* More timer pin afs
* More pins, todo: tim23 and tim24
* tim23, tim24 pins done, now programming time
* next step: compile time check_pins
* feat: Finish implementing check_pins
* Add tests for TimerWrapper, not running them yet
* Almost implement all wrappers for TimerDomain tests
* Add TimerDomain.cpp to simulator
* Further fix compile errors
* Fix tests compilation!
* NVIC ICER now clears the bit in NVIC ISER
* fix: TimerDomain pins
* hotfix! pwm compilation
* Huge cleanup of TimerDomain, TimerWrapper
+ NewPWM now starts up the timer channel
should work now?
Also removed Wpedantic because I hate it
* Keep TimerPeripheral behaviour - default psc = 5
* fix test
* get_CCR_offset -> set_capture_compare
* fix gpio operation mode
* Fix frequency, it was a typo T-T
* fix frequency completely, off by one errors and all
* cleanup get_pwm()
* fix get_pwm
* remove these todos
* add set_frequency, remove CLOCK_FREQ_MHZ_WITHOUT_PRESCALER
* set_frequency [uint64_t -> float], remove psc default 5
* Added newlines to GetPinFromIdx to make it more readable
* PWM gpio speed is now low
* Add compile time check for one pin per channel per timer
* remove outdated comment
---------
Co-authored-by: Jorge Sáez <125664643+jorgesg82@users.noreply.github.com>
Co-authored-by: StefanCostea <stefanxenadu@gmail.com>
Co-authored-by: Jorge Sáez <jorgeesg82@gmail.com>
Co-authored-by: Gonzalo Sánchez <gonzalosmoya24@gmail.com>1 parent 162914e commit aa96436
6 files changed
Lines changed: 850 additions & 542 deletions
File tree
- Inc
- HALAL
- Models/TimerDomain
- Services
- PWM/PWM
- Time
- MockedDrivers
- Tests/Time
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
285 | 285 | | |
286 | 286 | | |
287 | 287 | | |
288 | | - | |
289 | 288 | | |
290 | 289 | | |
291 | 290 | | |
| |||
0 commit comments