Commit graph

1554 commits

Author SHA1 Message Date
Jean-François Milants d7e4f7993d Continuous time update - Alternative implementation to #2041
This is an alternative implementation to #2041 we talked about in this comment (https://github.com/InfiniTimeOrg/InfiniTime/pull/2041#issuecomment-2081533165).

This implementation does not change the state of the DateTime controller (previousSystickCounter and currentDateTime fields) in GetCurrentDateTime(). This allows to keep the method GetCurrentDateTime() const.

I also applied a small refactoring of the methods UpdateTime() to avoid trying to lock the same mutex multiple times (FreeRTOS mutexes are not reentrant).

Co-authored-by: 30447455+mark9064@users.noreply.github.com
2024-05-01 20:14:55 +02:00
mark9064 06c6935315 Include task header (Fixes sim) 2024-05-01 16:17:59 +02:00
mark9064 47c104643d Move includes back 2024-05-01 16:17:59 +02:00
mark9064 7b1110187e Apply display driver datasheet delays 2024-05-01 16:17:59 +02:00
mark9064 7e460d3c80 Use FreeRTOS delay instead of spinning the CPU 2024-05-01 16:17:59 +02:00
mark9064 7a9211587a Rename to pre-transaction hook 2024-05-01 16:13:47 +02:00
mark9064 24e6a2f8ab Avoid storing lambda 2024-05-01 16:13:47 +02:00
mark9064 9a7ba405e1 Refactor lambdas 2024-05-01 16:13:47 +02:00
mark9064 940cd3459f Use functional abstraction for hooks 2024-05-01 16:13:47 +02:00
mark9064 869bec8f88 Refactor display WriteToRam 2024-05-01 16:13:47 +02:00
mark9064 ee925200c3 Remove task to notify 2024-05-01 16:13:47 +02:00
mark9064 079e676baf SPI transaction hooks 2024-05-01 16:13:47 +02:00
John Crawford 6b5235c301
fix: heartrate app displays --- instead of 000 (#1887) 2024-04-12 14:50:33 +02:00
Victor Kareh 9a5f516c42 WatchFaceDigital: Remove unused variables 2024-03-20 20:31:35 +01:00
JF 4ca2112890
Emit the message BleRadioEnableToggle to DisplayApp only if the enable state of the radio has actually changed. (#2037)
This fixes an issue where the BLE connected logo would disappear when opening and closing the BLE setting (without changing it) while InfiniTime was already connected to a companion app.

Co-authored-by: JustScott <development@justscott.me>
2024-03-15 09:20:19 +01:00
FintasticMan 7dbb8f54c6 chrono: Resolve TODOs related to C++20 chrono feats 2024-03-14 21:09:03 +01:00
Ritvik 4d86a3c6c1 Fix conflicts of min and max from stl_algo.h (included from atomic) 2024-03-13 21:58:13 +01:00
Victor Kareh 3b4b5a5163 ApplicationList: Reset app menu screen when loading watch face
This prevents the application list from loading in the last used screen
and instead goes back to the first screen whenever the watch face is
loaded.

Fixes #2006
2024-03-12 21:01:42 +01:00
FintasticMan f2df0c45ef lowersleep: Improve algorithm by checking wrist angle
Inspired by https://github.com/InfiniTimeOrg/InfiniTime/pull/827#issuecomment-1881580414.
2024-03-12 19:14:58 +01:00
mark9064 636af4d33d Simplify ISR task wake checks
The macro checks the variable, so we don't need to check it ourselves
2024-03-12 19:09:01 +01:00
mark9064 70f6604878 Fix chimes 2024-03-12 19:08:17 +01:00
Victor Kareh 004b2bf3a0 README: Fix broken URLs 2024-02-25 13:17:19 +01:00
Victor Kareh 6ab512a6b6 weather: Define function to round and render temperature 2024-02-18 12:57:48 +01:00
Victor Kareh 68ae335a97 weather: Pad forecast temperatures
This ensures temperatures are correctly aligned with one another
2024-02-18 12:57:48 +01:00
Victor Kareh 1857b02efa weather: Colorize forecast temperatures 2024-02-18 12:57:48 +01:00
Victor Kareh f422929d8c weather: Add new app with forecast 2024-02-18 12:57:48 +01:00
Victor Kareh 5d971690cb DateTimeController: Make DayOfWeekShortToStringLow static
This allows it to be used outside of the current datetime context and
makes it consistent with the MonthShortToStringLow function.
2024-02-18 12:57:48 +01:00
Tim Teichmann b0a0afdd4b README: Make hex and UTF-8 code consistent for the chosen example 2024-02-15 21:20:33 +01:00
mark9064 93d7da1691 Fix OOB flash write when DFU interrupted
If a DFU is restarted, the write indices aren't reset causing the image to be written out of bounds. The CRC check prevents the faulty image from booting but LittleFS still gets nuked.
2024-02-14 19:12:08 +01:00
Victor Kareh fa1af55a45
Alarm: Replace clock icon with bell 2024-02-12 16:08:40 +01:00
Graham Jones c2c53bc6ab
bma421: Change acceleration values to 'binary milli-G' units
Co-authored-by: FintasticMan <finlay.neon.kid@gmail.com>
2024-02-11 20:46:26 +01:00
Victor Kareh a49dc15a6e WatchFaceDigital: Move weather widget away from status icons
The weather widget is too high and could overlap the status icons.
Moving it to match the rest of the face avoids this issue and makes it
align with the rest of the theme.
2024-02-11 14:13:17 +01:00
mark9064 4c274421d9 Remove GFX (and unused GFX dependencies) 2024-02-11 13:28:01 +01:00
Victor Kareh 2db920599e
SimpleWeatherService: Add forecast operator overrides (#2011)
Any screen that relies on DirtyValue to display up-to-date forecast data
would require the struct to provide an operator override for comparison.
2024-02-10 19:24:46 +01:00
kieranc 44be356dc2
navigation: Missing character for font 2024-02-07 08:46:09 +01:00
Victor Kareh 2135e12b33
WatchFaceDigital: Add weather display
If weather is available, display the cloud icon and temperature.
2024-01-23 23:39:28 +01:00
apilat a6cd3679eb Only inhibit sleep if motion notifications are enabled, not just Bluetooth 2024-01-23 14:58:21 +01:00
apilat 074df0526f Keep updating motion during sleep when Bluetooth is on 2024-01-23 14:58:21 +01:00
Yusuf Ebrahim a40168a9d7
New dice-rolling app: InfiniDice! (#1326)
Add new App `Dice.h` to randomly roll the dice(s).
The number of dice can range from 1-9 (default 1), and the sides can
range from d2-d99 (default d2).

To have a haptic feedback we make Dice vibrate on roll.

Regarding the use of C++ `<random>` library:
There are known problems with `rand()` and `srand()` (see https://en.cppreference.com/w/cpp/numeric/random/rand)
and the `<random>` library is preferred for this reason. The function used from
`<random>` also avoids a very rare bias that would occur using `rand()` and modulo,
when `RAND_MAX` is not a multiple of `d` and the initially generated number falls in
the last "short" segment. This commit also updates the seed to derive entropy
(via `seed_seq`) from a mix of the system tick count and the x,y,z components of the
PineTime motion controller -- taking inspiration from and with credit to @w4tsn
(https://github.com/InfiniTimeOrg/InfiniTime/pull/1199)

Thanks for suggestions:
* in Dice, when rolling 1d2, also show "HEADS" or "TAILS" -- suggestion by @medeyko
* ui adjustments and result realignment -- suggestion by @Boteium

---------

Co-authored-by: NeroBurner <pyro4hell@gmail.com>
Co-authored-by: Riku Isokoski <riksu9000@gmail.com>
Co-authored-by: Paul Weiß <45500341+Poohl@users.noreply.github.com>
Co-authored-by: FintasticMan <finlay.neon.kid@gmail.com>
2024-01-23 09:45:52 +01:00
Reinhold Gschweicher a481af06cf lv_img_conv: support other modes like 'P'
Support other image modes like `P`, which uses 8 bits per pixel and a
color palette to save space.

Luckily the Pillow module can do the mode conversion for us.

Fixes: https://github.com/InfiniTimeOrg/InfiniTime/issues/1985
2024-01-23 08:51:14 +01:00
Lennart Jahn 034d83fe6b Split declaration and implementation of GetSymbol 2024-01-16 22:34:51 +01:00
Victor Kareh 264b5bed43
WatchFacePineTimeStyle: Fix conditional in weather display (#1965)
Since returning a valid weather is always considered an updated value,
if the current weather is empty, the face will attempt to display the
temperature and icon as empty values, rather than clearing the labels.
2024-01-14 22:37:26 +01:00
Jean-François Milants 25b3e2461d CMake watch faces selection
Improve wording and replace "watchface" by "watch face" in Apps.md.
Improve CMake readability regarding watch face selection

Co-authored-by: Reinhold Gschweicher <pyro4hell@gmail.com>
2024-01-06 14:44:10 +01:00
Jean-François Milants 22f6d4a40b Watch face selection using CMake
The list of watch face to build into the firmware is now set by CMake (-DENABLE_WATCHFACES).

Fix SettingWatchFace : convert to index to/from WatchFace when needed.
2024-01-06 14:44:10 +01:00
Reinhold Gschweicher 12acef6a71 apps: restore default apps ordering in CMake
Restore the default list of apps to compile. The ordering was changed in
the changeset to make the app-list configurable through a CMake-variable
in https://github.com/InfiniTimeOrg/InfiniTime/pull/1928

In the process have one app per line to create the default app list in
CMake. This makes git diffs easer and more readable.
2024-01-06 12:38:36 +01:00
Jean-François Milants b4ff1f9ca2 Simple Weather Service : Fix timestamp
In the documentation, specify that the timestamp is expressed in seconds from epoch (instead of nanoseconds).
SimpleWeatherService now uses "localtime" (GetCurrentDateTime()) instead of UTC time.
2024-01-04 13:00:01 +01:00
FintasticMan 9b36afc787 pinetimestyle: Round the displayed temperature
Instead of truncating. This fixes the displayed temperature being 1
degree lower than expected when using GadgetBridge.
2024-01-03 21:01:53 +01:00
liamcharger 82db3dcd18 Update incorrect icon in weather settings 2023-12-30 20:11:13 +01:00
liamcharger ab8515f766 PineTimeStyle: fix brief display of weather dummy data 2023-12-30 20:09:10 +01:00
FintasticMan e88d0afabf pinetimestyle: Display temp in Fahrenheit with setting 2023-12-23 21:42:16 +01:00