When a passkey is displayed, screen on or off, and another
passkey is displayed the screen may become scrambled. Fix
the issue by insuring the whole screen is drawn every time.
This commit adds the following:
Passkey pairing - passkey is displayed on watch
Swipe down to clear passkey screen
Connection encryption
Connection bonding
Automatic reconnects to a bonded peripheral
Trusted device on Android
Note that persisting the bond between reboots is NOT included in
this commit. Therefore, rebooting the watch will cause reconnect failures.
You must delete the bond from the phone to reconnect/pair.
Add missing include in `Clock.cpp` for `Settings.h`. The Settings class
is forward declared in the header file, but it needs to be included in
the cpp file.
To make the game a bit more challenging an less predictable add a little
bit of randomness to the `dy` value. When hitting the right wall add a random
number (one of [-1, 0, 1]) to the `dy` value.
To keep the difficulty level managable limit the dy value to be in the
range from -5 to 5.
Remove unused `ScreenList.h` include.
For `std::abs()` add needed include `<cmath>`.
For the forward declared Settings-Controller add the `Settings.h`
include to the cpp file.
Don't use relative imports like `../foo.h` as those depend on the
relative position of both files. Rather than that use imports relative
to the `src` directory, which explicitly is part of the include
directories.
Fix the comment as the comparison checks if the ball is at the right
side of the screen.
Compare the x coordinate of the ball with the horizontal resolution of
the screen, instead of the vertical resolution. On the PinePhone this
does make no difference as we have square 240x240 screen. Change it
anyways to be completely correct.
Previously, pressing the back button would close the alarm app anyway. Now if you press on it and the popup with information is open, it will first close and the second press will close the application
`xTaskGetTickCount()` returns a `TickType_t`, which is defined as an
`uint32_t`. This is compared to the `bpm` variable, which is a `int16_t`
in the range of 40 to 220 as defined in the constructor.
```cpp
lv_arc_set_range(bpmArc, 40, 220);
```
Just assume that `bpm` is greater than 0, as this
would result in a divison by zero or negative values, which would
unintentionally underflow to a very large number.