Go to file
JF 644431cbc4
Add support for SpiNorFlash and FS (#30)
The external SPI flash is implemented as a 4MB on the local filesystem.
This allows the FS (littleFS) and settings to work properly.

Remove the simulated `FS.h` and `FS.cpp`, because we can now use
the files from InfiniTime directly as the heavy lifting is done in the simulated
`SpiNorFlash.h` and cpp files.

`SpiNorFlash.h` provides read and write functions with `uint8_t` buffer, but
`fs::fstream` expects `char` buffer. Use `reinterpret_cast` and check if by
any chance the `char` type on a platform is implemented with more
than one byte. Then the `reinterpret_cast<char *>(buffer)` would change the
meaning of the `size` parameter, which could lead to garbage data.

Co-authored-by: Reinhold Gschweicher <pyro4hell@gmail.com>
2022-05-15 22:15:19 +02:00
.github/workflows Initial InfiniSim project 2022-02-17 22:57:08 +01:00
cmake Initial InfiniSim project 2022-02-17 22:57:08 +01:00
InfiniTime@b498e1d633 Update InfiniTime to 1.9.0 development branch 2022-04-02 17:56:09 +02:00
libpng@a37d483651 main: implement saveScreenshot() writing bmp/png from SDL window buffer 2022-03-08 21:39:16 +01:00
lv_drivers@8c96359f41 Initial InfiniSim project 2022-02-17 22:57:08 +01:00
sim Add support for SpiNorFlash and FS (#30) 2022-05-15 22:15:19 +02:00
.gitignore init 2022-02-16 21:19:37 +01:00
.gitmodules Use relative path for libpng submodule, don't force ssh/http 2022-03-08 21:48:55 +01:00
CMakeLists.txt Add support for SpiNorFlash and FS (#30) 2022-05-15 22:15:19 +02:00
LICENSE Initial InfiniSim project 2022-02-17 22:57:08 +01:00
lv_drv_conf.h fix compile error by removing static_assert 2022-03-30 22:13:58 +02:00
main.cpp Add support for SpiNorFlash and FS (#30) 2022-05-15 22:15:19 +02:00
README.md Use infinitime_fonts target if fonts/CMakeLists.txt exists 2022-05-14 21:31:26 +02:00

InfiniSim

Build InfiniSim LVGL Simulator

Simulator for InfiniTime project.

Experience the InfiniTime user interface directly on your PC, to shorten the time until you get your hands on a real PineTime smartwatch. Or use it to develop new Watchfaces, new Screens, or quickly iterate on the user interface.

For a history on how this simulator started and the challenges on its way visit the original PR.

Build dependencies

  • CMake
  • SDL2 (provides the simulator window, handles mouse and keyboard input)
  • Compiler (g++ or clang++)
  • lv_font_conv (for font.c generation since InfiniTime#1097)

On Ubuntu/Debian install the following packages:

sudo apt install -y cmake libsdl2-dev g++ npm

On Arch Linux the following packages are needed:

sudo pacman -S cmake sdl2 gcc npm

On Fedora the following packages are needed:

sudo dnf install cmake SDL2-devel gcc

Then install the lv_font_conv executable to the source directory (will be installed at node_modules/.bin/lv_font_conv)

npm install lv_font_conv@1.5.2

Get the Sources

Clone this repository and tell git to recursively download the submodules as well

git clone --recursive https://github.com/InfiniTimeOrg/InfiniSim.git

If you've already cloned the repository without the submodules (or you want to update them to the latest checked in version) run the following command:

git submodule update --init --recursive

Configure and Build

In the most basic configuration tell cmake to configure the project and build it with the following two commands:

cmake -S . -B build
cmake --build build -j4

The following configuration settings can be added to the first cmake -S . -B build call

  • -DInfiniTime_DIR=InfiniTime: a full path to an existing InfiniTime repository checked out. Inside that directory the src/libs/lvgl submodule must be checked out as well. The default value points to the InfiniTime submodule in this repository.
  • -DMONITOR_ZOOM=1: scale simulator window by this factor

Run Simulator

When the build was successful the simulator binary can be started with

./build/infinisim

Running Simulator

To hide the second simulator-status-window start the binary with the --hide-status option

./build/infinisim --hide-status
  • Left mouse button: simulates your finger, just click to tap, click and drag to swipe
  • Right mouse button: simulates the hardware button (for example turn the screen off or on again)

Using the keyboard the following events can be triggered:

  • r ... enable ringing
  • R ... disable ringing
  • m ... let motor run for 100 ms
  • M ... let motor run for 255 ms
  • n ... send notification
  • N ... clear all notifications
  • b ... connect Bluetooth
  • B ... disconnect Bluetooth
  • v ... increase battery voltage and percentage
  • V ... decrease battery voltage and percentage
  • c ... charging,
  • C ... not charging
  • l ... increase brightness level
  • L ... lower brightness level
  • p ... enable print lvgl memory usage to terminal
  • P ... disable print memory usage
  • s ... increase step count by 500 steps
  • S ... decrease step count by 500 steps
  • h ... set heartrate running, and on further presses increase by 10 bpm
  • H ... stop heartrate
  • i ... take screenshot

Licenses

This project is released under the GNU General Public License version 3 or, at your option, any later version. The same license as InfiniTime.

The simulator is based on lv_sim_eclipse_sdl project under the MIT license.