Commit Graph

2104 Commits

Author SHA1 Message Date
Jean-François Milants
9bd90c906e Power optimization - Improve SPI sleep mode
ST7789 driver : replace the constant '26' with a named constant to specify the pin number of the reset pin of the LCD controller.
2023-06-04 17:22:27 +02:00
Jean-François Milants
62848b33fb Power optimization - Improve SPI sleep mode
Calls to Spi::Init() are not needed, pin initialization is already done in ctor().
Remove calls to Spi::Sleep()/Spi::Wakeup() to ensure that SPI CS pins are kept high even in sleep mode.
2023-06-04 17:22:27 +02:00
Jean-François Milants
4c0f897953 Power optimization - Improve SPI sleep mode
Ensure that all pins are set to their default configuration during sleep mode.
Disable the workaround for FTPAN58 (SPI freezes when transfering a single byte) at the end of the transfer. This disables the resources needed for the workaround.
Those changes reduce the power usage by 430-490µA.
2023-06-04 17:22:27 +02:00
Jean-François Milants
2fa3aaa161 Power optimization - enable the DC/DC regulator.
The DC/DC regulator reduce the power consumption of the MCU compared to the default LDO regulator. The DC/DC regulator needs additional HW that is mounted on the PineTime.

This change reduces the power usage by 380µA during fast advertising, by 200µA during slow advertising and by 186µA when BLE is disabled.
2023-06-04 17:03:37 +02:00
Jean-François Milants
a48d4e0b13 Power optimization - Enable HRS3300 (heart rate sensor) sleep mode.
Put the HRS3300 to sleep mode when InfiniTime is going to sleep. This change reduces the power consumption by 130µA when the heart rate sensor is disabled.
2023-06-04 17:03:22 +02:00
Jean-François Milants
32a9fff60c Add links to documentation about PineTimeStyle (PTS) and weather integration in PTS. 2023-06-04 17:01:42 +02:00
kieranc
94f41258d5
PineTimeStyle weather display (#1459)
Weather display for PineTimeStyle

Documentation : https://wiki.pine64.org/wiki/PineTimeStyle and https://wiki.pine64.org/wiki/Infinitime-Weather
2023-06-04 16:52:31 +02:00
FintasticMan
394f58fbb2
clangd: Add clangd cache directory to gitignore (#1763) 2023-05-27 20:24:17 +02:00
Elara Musayelyan
24af739af8 Update link for ITD 2023-05-18 21:08:24 +02:00
Jean-François Milants
8abfd25a6c Fix code formatting 2023-05-18 19:58:09 +02:00
Jean-François Milants
e038703efe Refactor pvPortRealloc() to improve readability. 2023-05-18 19:58:09 +02:00
Jean-François Milants
611e0ff768 Enable malloc error and stack overflow error detection in FreeRTOS. Count them and display them in the SystemInfo app. 2023-05-18 19:58:09 +02:00
Jean-François Milants
1911e2d928 Unify all heaps (stdlib + LVGL + FreeRTOS) into a single heap managed by FreeRTOS and heap_4_infinitime.c.
LVGL supports custom implementation of malloc() and free() so using pvPortMalloc() and vPortFree() is just a matter of setting the right variables.

Other libraries (NimBLE, LittleFS) and InfiniTime code (new) call malloc() and free() from stdlib. InfiniTime now provides the file stdlib.c that provides a custom implementation for malloc(), free(), calloc() and realloc(). This ensures that all calls to the standard allocator are redirected to the FreeRTOS memory manager.

Note that realloc() is needed by NimBLE.
2023-05-18 19:58:09 +02:00
Jean-François Milants
9e808a65ec Add pvPortRealloc() in heap_4_infinitime.c. An implementation of realloc() is needed by NimBLE. 2023-05-18 19:58:09 +02:00
Jean-François Milants
1df3d1a14d Copy the memory manager heap_4.c from the FreeRTOS distribution to the InfiniTime project codebase. This will allow to implement custom functionalities that are not available in the original implementation. 2023-05-18 19:58:09 +02:00
Max Friedrich
020a7fd11d
Refactor watch face to enum (#1339)
change watch face from int to enum

---------

Co-authored-by: minacode <minamoto9@web.de>
2023-04-30 17:03:46 +02:00
JF
5f19f689f9
Refactor, document and fix the Watchdog driver (#1710)
* Refactor and document the Watchdog driver to make it more readable.

Fix the configuration of the behaviours configuration that was not properly implemented (but it didn't cause any side effect since the correct value was eventually set in NRF_WDT->CONFIG).

Fix the wrong interpretation of the reset reasons caused by implicit conversions of int to bool.
2023-04-30 15:56:13 +02:00
Ceimour
c22e30a4a6
Refactored Ppg for frequency based algorithm. (#1486)
New implementation of the heart rate sensor data processing using a frequency based PPG algorithm.
The HRS3300 settings are fine-tuned for better signal to noise at 10Hz.
The measurement delay is now set to 100ms.
Enable and use the ambient light sensor.
FFT implementation based on ArduinoFFT (https://github.com/kosme/arduinoFFT, GPLv3.0).
2023-04-30 15:50:18 +02:00
Riku Isokoski
40f7e1c7be TimerController: Rename to Timer 2023-04-16 14:33:23 +00:00
Riku Isokoski
661ffbeb1e TimerController: Make TimerController reusable
TimerController instance was moved to DisplayApp.
2023-04-16 14:33:23 +00:00
Riku Isokoski
4d93ae6d27 MotionController: Remove IsOk variable
We should be able to assume MotionController is safe to use.
2023-04-16 14:15:49 +00:00
Riku Isokoski
348d3de60b Watchfaces: Assume motionsensor is ok
The watch face shouldn't and doesn't start before the sensor is ready.
2023-04-16 14:15:49 +00:00
Finlay Davidson
e4a6f6ad77 fonts: Make patching silent
The generate script should only output anything if there are errors.
2023-04-16 15:57:18 +02:00
fossison
d472a71078
stopwatch: Add hours tracking (#1692)
Stopwatch application : add hours tracking

---------

Co-authored-by: fossison <fossison@mailbox.org>
Co-authored-by: Jean-François Milants <jf@codingfield.com>
2023-04-16 15:55:49 +02:00
Riku Isokoski
5d45392453 lvgl: Use InfiniTime fork of LVGL 2023-04-03 09:46:41 +00:00
Riku Isokoski
56fe2e4c43 WatchFaceTerminal: Simplify time update check 2023-04-02 18:19:10 +00:00
Riku Isokoski
d251a47828 WatchFaceG7710: Simplify time update check 2023-04-02 18:14:42 +00:00
Riku Isokoski
8d089b1429 WatchFaceInfineat: Simplify time update check 2023-04-02 18:07:29 +00:00
Riku Isokoski
c5c3e81e15 WatchFaceDigital: Simplify update check 2023-04-02 17:56:51 +00:00
Jean-François Milants
238a829577 Set version to 1.12.0 2023-04-02 14:48:26 +02:00
Finlay Davidson
616aa91b4c dirtyvalue: Move to src/utility 2023-03-27 22:12:32 +00:00
Finlay Davidson
47931f41d5 staticstack: Move to src/utility 2023-03-27 22:12:32 +00:00
Finlay Davidson
2ba8b17967 linearapproximation: Move to src/utility 2023-03-27 22:12:32 +00:00
Riku Isokoski
9641fd7308 pr-comment: Comment instructions instead of failing 2023-03-27 19:54:36 +00:00
Riku Isokoski
0a4f015783 WeatherService: const DateTimeController reference 2023-03-19 12:41:01 +02:00
Riku Isokoski
829ab86f37 HeartRateService: Remove SystemTask dependency 2023-03-19 12:41:01 +02:00
Riku Isokoski
7c98f26f12 MotionService: Remove SystemTask dependency 2023-03-19 12:41:01 +02:00
Riku Isokoski
ca5e7d1adf NavigationService: Remove unused SystemTask ref 2023-03-19 12:41:01 +02:00
Riku Isokoski
7e15a1e340 WeatherService: Remove unused SystemTask reference 2023-03-19 12:41:01 +02:00
Riku Isokoski
c7a9b3d7d3 MusicService: Remove SystemTask dependency 2023-03-19 12:41:01 +02:00
Riku Isokoski
310ea81eec inactivity: Use LVGL inactivity timers
Replace custom FreeRTOS inactivity timers with LVGL inactivity timers.

DisplayApp: Trigger display activity on timer done.

inactivity: Add additional checks
The backlight could be turned on by RestoreBrightness() on ble connect
event.

inactivity: Trigger activity on screen switch

A notification timing out could put the watch to sleep immediately.
While this could be ideal behaviour, it was caused by delay in
processing the EnableSleeping event and pushing RestoreBrightness to
DisplayApp.
2023-03-18 01:15:33 +02:00
Riku Isokoski
11ade64166 WatchFaceAnalog: Simplify date update check 2023-03-15 08:30:03 +02:00
Finlay Davidson
e55a76f740 raisewake: Change names in line with the style guide 2023-03-09 10:17:03 +02:00
Finlay Davidson
49ad5be742 motioncontroller: Fix clang-tidy warnings
Also move one-line functions to header.
2023-03-09 10:17:03 +02:00
Finlay Davidson
76e79df375 shakewake: Switch to more generic timekeeping
Could be used for other motion-based algorithms in the future.
2023-03-09 10:17:03 +02:00
Finlay Davidson
a43463762c shakewake: Simplify return code 2023-03-09 10:17:03 +02:00
Finlay Davidson
6cf6455313 shakewake: Switch to more generic last* vars
These could be used for other motion-based algorithms in the future.
Also fix includes.
2023-03-09 10:17:03 +02:00
Finlay Davidson
f993311830 shakewake: Fix names according to style guide 2023-03-09 10:17:03 +02:00
kieranc
ada182336f
PTS: Fix double tap behaviour on settings screen (#1669)
Fixes #1467 "Double tapping PineTimeStyle steps style button sends watch to sleep"
Double tap is disabled on the color settings screen by checking if the Rnd button is visible, but this didn't work for the options screen as the Rnd button isn't visible. I've changed it to check if the Close button is visible instead, which is used on both settings screens, and resolves the bug. I also changed the button used to disable the long press behaviour which was an as-yet-undiscovered bug which would have allowed the long press action to be used when the options screen was visible.
2023-03-04 09:16:10 +02:00
Riku Isokoski
08b4cfbb50 Add low battery indicator to StatusIcons, digital and analog watchfaces
Define deepOrange color in InfiniTimeTheme
2023-03-02 13:38:31 +02:00