Commit graph

2157 commits

Author SHA1 Message Date
Jean-François Milants 8fee341b86 ST7789 : do not reconfigure the reset pin to default during sleep. 2023-06-04 17:22:27 +02:00
Jean-François Milants c9747462f7 Power optimization - Improve SPI sleep mode
Fix RecoveryLoader.
2023-06-04 17:22:27 +02:00
Jean-François Milants e224263828 Power optimization - Improve SPI sleep mode
Fix formatting issue in St7789.cpp
2023-06-04 17:22:27 +02:00
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