Add a new simulation key handler for weather data:
- 'w' will generate new weather, cycling through the various conditions
- 'W' will clear the weather data
Integrate the new `infinitime_apps` library and enable user applications
selection using the CMake variable `ENABLE_USERAPPS`.
Update InfiniTime to after CMake user app selection merged
On rolling distros the usage of `libpng` submodule makes problems as the
`zlib` system dependency of said module gets updated. Then the submodule
regularly is too old to handle the updates `zlib` dependency.
Fix this maintenance churn by requiring `libpng` as system library as
well. Then the distros package manager keeps those versions in sync.
This unfortunately requires users to install a new runtime/build
dependency, but it still can be disabled with `-DWITH_PNG=OFF`.
For me with vscode triggering a breakpoint during a mouse swipe event
handler freezes all interaction with the IDE.
As a workaround (and a nice way to play `Twos.h` :D ) map the direction
keys to the corresponding swipe events.
The `BUILD_RESOURCES` option is also available in `InfiniTime`, but we
don't want to require building the firmware to test `resource.zip` file
generation.
Add a new command `littlefs-do res load resource.zip` which loads
resources from a zip file to the SPI raw file.
Below an example `resource.zip` is loaded:
```sh
$ ./littlefs-do res load infinitime-resources-1.10.0.zip --verbose
Calling FS::Init()
running 'res'
running 'res load'
loading resource file: "infinitime-resources-1.10.0.zip"
zip: num of files in zip: 8
copy file teko.bin from zip to SPI path '/teko.bin'
copy file lv_font_dots_40.bin from zip to SPI path '/lv_font_dots_40.bin'
copy file 7segments_40.bin from zip to SPI path '/7segments_40.bin'
copy file bebas.bin from zip to SPI path '/bebas.bin'
copy file 7segments_115.bin from zip to SPI path '/7segments_115.bin'
copy file matrix.bin from zip to SPI path '/matrix.bin'
copy file infineat-1.bin from zip to SPI path '/infineat-1.bin'
finished: zip file fully loaded into SPI memory: infinitime-resources-1.10.0.zip
```
Afterwards the files are listed in the SPI raw file:
```sh
$ ./littlefs-do ls
type: DIR
name: /
type: DIR name: .
type: DIR name: ..
type: REG size: 4928 name: 7segments\_115.bin
type: REG size: 760 name: 7segments\_40.bin
type: REG size: 4420 name: bebas.bin
type: REG size: 1430 name: infineat-1.bin
type: REG size: 1840 name: lv\_font\_dots\_40.bin
type: REG size: 115204 name: matrix.bin
type: REG size: 440 name: teko.bin
```
Fixes: https://github.com/InfiniTimeOrg/InfiniSim/issues/55
The build dependencies section says to install `lv_font_conv` to the
source directory. But the instructions to download the InfiniSim sources
was after the build dependencies.
Move the "get sources" section before the "build dependencies" to
clairify the instructions.
Fixes: https://github.com/InfiniTimeOrg/InfiniSim/issues/53
Add helper to modify spi raw file, to make experimenting with it easier.
```sh
$ ./littlefs-do --help
Usage: ./littlefs-do <command> [options]
Commands:
-h, --help show this help message for the selected command and exit
-v, --verbose print status messages to the console
stat show information of specified file or directory
ls list available files in 'spiNorFlash.raw' file
mkdir create directory
rmdir remove directory
rm remove directory or file
cp copy files into or out of flash file
settings list settings from 'settings.h'
```
In the process restructure the CMake file for less duplicate
includes/defines for both executables (`infinisim` and `littlefs-do`).
Upload the `littlefs-do` binary built by the CI additionally to the `infinisim` binary.
Use the updated upload-artifact@v3 template to do that.
Press key `I` (shift+`i`) to start a screen capture creating a gif with
the captured screen. Hit `I` again to stop the screen recording.
---
Add gif-h helper header only library
Copied from https://github.com/charlietangora/gif-h3d2657b9ad
Since https://github.com/InfiniTimeOrg/InfiniTime/pull/1097 the fonts
are generated. Support this new way of using fonts.
When InfiniTime isn't a subdirectory of InfiniSim we need to provide
the binary dir when using `add_subdirectory()`. Use `fonts`.
Update README with instructions to install `lv_font_conv`.
The lv_drivers provided monitor driver supports a `MONITOR_ZOOM`-factor
which scales the window by the set factor. This is 'useful when
simulating small screens'.
The zoom can be set as cmake configuration setting `-DMONITOR_ZOOM=1`.
Probably even more usefull for high-dpi screens where 240 pixels is
really tiny.
When pressing `i` create a screenshot of the current InfiniTime screen
by dumping it to a timestamped png or bmp file like
`InfiniSim_2022-03-08_203421.png`.
Add a new configure option `WITH_PNG` with default `ON`. When switched
to `OFF` the screenshots will be created in `bmp` format.
Fixes: https://github.com/InfiniTimeOrg/InfiniSim/issues/5