Commit graph

745 commits

Author SHA1 Message Date
Jozef Mlich 3e23ee7c78 Show alarm controller state in status icon 2025-01-05 14:37:35 +01:00
Victor Kareh d69cfcfb13 weather: Fix inverted imperial forecast temperatures
When converting to imperial units, the min and max temperatures were
incorrectly inverted, causing confusion in the display.

Fixes https://github.com/InfiniTimeOrg/InfiniTime/issues/2183
2024-12-10 00:02:17 +01:00
Felipe Martínez b8c51abe69
Use all free RAM for FreeRTOS heap
* Use all free RAM for FreeRTOS heap
* Wrap newlib malloc and related functions
* Implement calloc
2024-12-09 00:10:09 +00:00
Lionel Elie Mamane b1d70ae2ed remove unused include 2024-11-25 08:55:37 +01:00
Lionel Elie Mamane 5ea9c5537e Weather: fix min and max temperature being switched 2024-11-16 23:53:33 +00:00
FintasticMan f7c87a700d weather: Switch to std::optional for Forecast days
Also only iterate over the number of days actually in use, rather than
MaxNbForecastDays.
2024-11-04 21:22:38 +01:00
FintasticMan e247bd7019 Switch to simpler temperature interface 2024-11-04 21:22:38 +01:00
FintasticMan 29ad09f4ef weather: Refactor temperature type for type safety
There is now a Temperature struct in the weather service, which holds
the internal representation. There is also a temperature struct in the
Applications namespace, which holds the temperature in either Celsius or
Fahrenheit.
2024-11-04 21:22:38 +01:00
Samuel Dorsaz afeded0126 Update Date&Time settings label for "Date & Time" 2024-11-04 21:20:44 +01:00
NeroBurner 3db4e012ce
Remove unused pointer to DisplayApp member variables (#2125)
In the screens that use `DisplayApp *app` and pass it to a child item,
or use the reference just in the constructor. Afterwards the `app`
member is not used. So remove it from the private member variables.

Completely remove `app` parameter from `SettingDisplay` constructor as
it is unused.
2024-09-29 19:39:14 +02:00
NeroBurner a0cd439efc
Alarm persist to flash (#1367)
* AlarmController: Add saving alarm time to file

Save the set alarm time to the SPI NOR flash, so it does not reset to
the default value when the watch resets, e.g. due to watchdog timeout
or reflashing of a new version of InfiniTime.

Just like the `Settings.h` `LoadSettingsFromFile()` the previous alarm
at boot (if available) and `SaveSettingsToFile()` the current alarm when
the `Alarm.h` screen is closed (only if the settings have changed).

The alarm-settings file is stored in `.system/alarm.dat`. The `.system`
folder is created if it doesn't yet exist.

Fixes: https://github.com/InfiniTimeOrg/InfiniTime/issues/1330

* alarmController: close .system dir after usage

Close the `lfs_dir` object for the `.system` dir after usage. Otherwise
on the second changed alarm the system will lockup because the `.system`
dir is already open and was never closed.

---------

Co-authored-by: Galdor Takacs <g@ldor.de>
2024-09-28 08:14:08 +02:00
mark9064 7ca0418c82 Refactor doNotGoToSleep to a wakelock counter 2024-09-21 22:45:57 +02:00
Eli Tan a266202831
notifications: Dismiss to watchface when empty (#1716)
Set `running` to false to flag end of watchface when there are no more
notifications left to display.

I found it slightly annoying that dismissing all notifications leaves me with
a "No notification to display" message. Instead of dismissing to a relatively
useless message, dismiss to watchface.
2024-09-18 22:31:15 +02:00
mark9064 fd019c7aad Use DirtyValue for timer 2024-09-14 11:20:47 +02:00
Derry Tutt 83922fb3de Remove space before colon 2024-08-18 11:58:56 +02:00
Jean-François Milants 3a0d673df4 Display the SPI flash JEDEC IDs in SystemInformation.
This is needed since a new memory chip will be used in future batches of PineTimes.
2024-08-05 20:34:41 +02:00
mark9064 bf69e0dcc5 aod: fix flashlight brightness restore 2024-08-05 20:32:43 +02:00
John Crawford e884b053d3 aod: disable while in notification sleep 2024-08-05 20:32:43 +02:00
John Crawford 85a2181b64 aod: integrate with display timeout 2024-08-05 20:32:43 +02:00
KaffeinatedKat 20ac7e8df3 feat: always on display 2024-08-05 20:32:43 +02:00
mark9064 a449b272f7 Continuous time updates 2024-06-09 18:34:07 +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
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
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
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
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
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 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
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
FintasticMan d889f3e444 settings: Add settings item for weather format 2023-12-23 21:42:16 +01:00
Jean-François Milants fc5424cb72 User applications selection using CMake
Fix include path since last rebase.
2023-12-23 21:29:13 +01:00
Jean-François Milants f0e8bb26e9 Watch face selection with CMake
Move displayapp/Apps.h into a header only library (to make the integration easier in InfiniSim.
2023-12-23 21:29:13 +01:00
Jean-François Milants 6f83a3bade Simple Weather Service
Fix code formatting.
2023-12-23 21:12:25 +01:00
Jean-François Milants e5b73212f6 Simple Weather Service
Store temperatures as int16_t (instead of uint8_t previously). The temperature is expressed in °C * 100.
2023-12-23 21:12:25 +01:00
Jean-François Milants ad090ab188 Simple Weather Service
Move the function GetIcon that converts SimpleWeatherService::Icons to char (symbol) into a new header file so that it can be used by other apps and companion apps.
2023-12-23 21:12:25 +01:00
Jean-François Milants 199aefc617 Simple Weather Service - code cleaning and improvements
Rename Symbols::cloud_meatball to Symbols::cloudMeatball.
2023-12-23 21:12:25 +01:00
Jean-François Milants d29eb1ea99 Simple Weather Service - code cleaning and improvements
Remove unused Weather debug app.
Fix formatting in SimpleWeatherService.cpp.
2023-12-23 21:12:25 +01:00