In cases where any other task takes too much time to execute (it can happen in Display Task, see https://github.com/InfiniTimeOrg/InfiniTime/issues/825), the timer task does not have the opportunity to run fast enough to detect and debounce presses on the button.
This commit sets the following priorities:
- [0] : Display Task
- [1] : Timer and System tasks
- [2] : BLE Host
- [3] : BLE LL
This way, we ensure that button presses will always be detected, even if the rendering of the display takes a huge amount of time.
We have a comparison like `if (( a == b ))`, which is a parenthesis too
much, which generates the following warning
```
InfiniTime/src/displayapp/screens/Twos.cpp:133:35: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
if ((grid[newRow][newCol].value == grid[oldRow][oldCol].value)) {
~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
InfiniTime/src/displayapp/screens/Twos.cpp:133:35: note: remove extraneous parentheses around the comparison to silence this warning
if ((grid[newRow][newCol].value == grid[oldRow][oldCol].value)) {
~ ^ ~
```
Clang warns on `OnTouchEvent()` function, which is overridden, but is
missing the `override` keyword
```
In file included from InfiniTime/src/displayapp/screens/Music.cpp:18:
InfiniTime/src/displayapp/screens/Music.h:43:14: warning: 'OnTouchEvent' overrides a member function but is not marked 'override' [-Winconsistent-missing-override]
bool OnTouchEvent(TouchEvents event);
^
```
There are 3 options, but the array-size is set to 2. This leads to
memory corruption in the initialization of the SettingChimes screen when
assigning the third option object pointer.
Found in https://github.com/InfiniTimeOrg/InfiniSim/issues/11
InfiniSim PR https://github.com/InfiniTimeOrg/InfiniSim/pull/10 adds
support for screenshots in png/bmp format using `libpng` submodule.
This new submodule must be added to the lv_sim workflow as well.
Split SystemMonitor into h and cpp file and move the logging code of the
`Process` function into the cpp file.
Depending of the `configUSE_TRACE_FACILITY` define from
`src/FreeRTOSConfig.h` create either a "FreeRtosMonitor" or a
"DummyMonitor".
Make the `Process()` function non-const, as the FreeRtosMonitor changes
the member variable `lastTick`.
In `SystemTask.h` we then only need to use `SystemMonitor`, without
knowledge of the `configUSE_TRACE_FACILITY` define.
Some components were missing a `nrf_log.h` include. This missing
include was accidentally provided by the SystemMonitor.h header, which
was included by Systemtask.h
For each filesystem interaction be more specific if we want to read from
the file or write to it.
Doing a non-creating read on the loading of the settings file, otherwise
an empty file could be created, and when reading that empty file for the
initial settings I would expect an error (or random data) when reading.
The variable `title` is defined as `const char*`, which means, that
`strchr()` returns a `const char*` as well according to
https://www.cplusplus.com/reference/cstring/strchr/
But in the same line the return value is assigned to a non-const
`char*`, which shouldn't be allowed (error with `-pedantic`).
Because the `lv_label` creates an internal copy of the title sting, just
modify that one instead and replace newline in the copied string.
Apply a few changes that were requested in the PR during the review.
# Conflicts:
# src/CMakeLists.txt
# src/displayapp/Apps.h
# src/displayapp/DisplayApp.cpp
# src/displayapp/Messages.h
# src/displayapp/screens/settings/Settings.cpp
For the simulator I need a way to get to the brightnessController object
and handle the set brightness-levels accoringly.
This is done by the constructor expecting a brightnessController object
instead of initializing one itself
For ease of use the simulator uses a globbing expression to get all
screens source files. This one was picked up as well and lead to a
compilation error.
SystemTask.h included BatteryController.h, and BatteryController.h
included SystemTask.h. If unlucky the class SystemTask isn't created yet
when BatteryController wants to use it.
Fix that cyclic dependency by forward declaring the BatteryController
class and including it in the SystemTask.cpp file, where it is needed.
SettingShakeThreshold.h uses SystemTask, but doesn't include the header.
Fixing that for the simulator.
For consistency make the header include a relative to src include.