04c923bd82
Move lvgl display init from main.cpp into LittleVgl.cpp to be closer to InfiniTime, where display initialization is also done in LitteVgl.cpp. Enable the original FlushDisplay code to get the screen transition animations like on the real PineTime. Also slow down the rendering, to actually be able to see the screen flushing. For the Up and Down screen transitions implement the screen movement. When moving Down, move the the whole screen content down, and then draw the new part of the new screen at the top of the display. Repeat until screen transition is finished. Fixes: https://github.com/InfiniTimeOrg/InfiniSim/issues/13 |
||
---|---|---|
.github/workflows | ||
InfiniTime@443408312a | ||
cmake | ||
libpng@a37d483651 | ||
lv_drivers@8c96359f41 | ||
sim | ||
.gitignore | ||
.gitmodules | ||
CMakeLists.txt | ||
LICENSE | ||
README.md | ||
lv_drv_conf.h | ||
main.cpp |
README.md
InfiniSim
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 thesrc/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
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 ringingR
... disable ringingm
... let motor run for 100 msM
... let motor run for 255 msn
... send notificationN
... clear new notification flagb
... connect BluetoothB
... disconnect Bluetoothv
... increase battery voltage and percentageV
... decrease battery voltage and percentagec
... charging,C
... not chargingl
... increase brightness levelL
... lower brightness levelp
... enable print lvgl memory usage to terminalP
... disable print memory usages
... increase step count by 500 stepsS
... decrease step count by 500 stepsh
... set heartrate running, and on further presses increase by 10 bpmH
... stop heartratei
... 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.