Commit Graph

2081 Commits

Author SHA1 Message Date
Jean-François Milants
d1c146e2fb Improve and fix WeatherService
Ensure that PTS will update the weather info if temperature and cloud info were received. Assume 0 precipitation if no precipitation event were received.
2023-09-17 20:19:11 +02:00
Jean-François Milants
ddfe204f14 Improve and fix WeatherService
Ensure that we keep only 1 version of each weather event in the timeline.
2023-09-17 20:18:23 +02:00
Jean-François Milants
5c70b38c58 Improve and fix WeatherService
Fix Temperature handling (uint16 -> int16) + use of optional<>.
2023-09-17 20:11:27 +02:00
Jean-François Milants
96c2c9e0bc Improve and fix WeatherService
Disable the weather events that are not processed by InfiniTime right now using "if constexpr". We'll enable them when we need them.
2023-09-17 18:35:09 +02:00
Jean-François Milants
846f54e997 Improve and fix WeatherService
Refactor WeatherService :
 - Add a sane max number of elements in the timeline
 - Create events in their own factory methods (CreateXXXEvent())
 - Encapsulate QCBOR deserialization in template functions Get<>().
2023-09-17 18:26:50 +02:00
Jean-François Milants
df4c8d8c4c Improve and fix WeatherService
Enable C++ 17 so we can use new functionalities like "if constexpr".
2023-09-17 18:17:57 +02:00
JF
0aead42fdf
navigation: Add is available (#1847)
Navigation app now needs 2 images to be loaded from the resources on the external filesystem. This PR adds an 'enabled' field to the Applications struct. This field is true for all applications expect for Navigation which calls Navigation::IsAvailable(). This methods returns true if the 2 files are available in the resources.

The application list disables the application (draws it in grey, disables the touch callback) if the enable flag is not set.
2023-09-02 19:43:39 +02:00
JF
44d1798f4f
navigation: Move font to external memory (#1838)
The TTF font used by the navigation app is ~20KB and is stored in internal flash memory.
To free this space, the TTF font is now converted in 2 "atlas pictures" (pictures that contain multiple concatenated images) stored in the external flash memory. The navigation app now accesses one of those 2 files and apply an offset to display the desired picture.

The corresponding documentation has also been updated.

Add comments about the layout of the pictures that contain the icon and about the indexing of those icons.

In documentation (buildAndProgram.md), edit the section about the debug compilation mode. Remove the part about removing the Navigation app to free some memory (since it's not relevant anymore) and explain how to selectively build parts of the firmware in Debug mode.
2023-09-02 19:41:51 +02:00
FintasticMan
0f9f606b78
lowersleep: Implement Lower to Sleep functionality (#827) 2023-08-27 18:15:21 +02:00
Finlay Davidson
2b1eae7f59 raisewake: Improve raise to wake algorithm
This new algorithm calculates the number of degrees that the wrist has
rolled, and checks if that is above a threshold.

First it checks if the wrist is still enough for the acceleration values
to be considered mostly from gravity. It does this by calculating the
mean over the past 2 SystemTask loops, and checking that the variance
from that mean is below a threshold.
Then it calculates the angle the wrist is being held at, and calculates
the difference from the angle some time ago. If this difference is above
the threshold, it wakes the watch.
2023-08-17 21:21:22 +02:00
Finlay Davidson
cfe21103ea motioncontroller: Add functions for analysis
These are functions for converting acceleration due to gravity to angles
in degrees, and some statistical analysis including the mean and
variance.
2023-08-17 21:21:22 +02:00
Finlay Davidson
3085bb3990 motioncontroller: Store acceleration history
Store history of acceleration values for the y and z axes.
2023-08-17 21:21:22 +02:00
Finlay Davidson
47ca403857 shakewake: Slightly improve accuracy
The accumulated speed was calculated by dividing first and multiplying
after, which results in more rounding errors than if you multiply first
and then divide. The values aren't big enough to overflow.
2023-08-17 21:21:22 +02:00
Finlay Davidson
6d5847e046 circularbuffer: Add circular buffer utility struct 2023-08-17 21:21:22 +02:00
SteveAmor
cf782bb615 check closed issues 2023-08-17 19:40:32 +02:00
SteveAmor
9196c18d37 check closed bugs 2023-08-17 19:37:20 +02:00
Max Friedrich
6d0d8c7d63
watchfaceanalog: Background in lvgl (#1824)
* change background image to widgets

This commit removes the background image for the WatchFaceAnalog and replaces it with lvgl widgets. It aims to keep the original look.

* remove comments and background image

---------

Co-authored-by: minacode <minamoto9@web.de>
2023-08-15 13:01:17 +02:00
TailyFair
782ef7902f Include repository initialization in docker build docs 2023-08-11 21:08:26 +02:00
Max Friedrich
39d5b5c3a2
NotificationManager.h: Reorder notification struct fields to allow easier creation. (#1774)
This commit changes the order for the notification struct fields to allow the creation of notifications using a string literal.
```cpp
NotificationManager::Notifiation notification {
  "String literal with notification text",
  42,
  NotificationManager::Categories::SimpleAlert
};
```

Co-authored-by: minacode <minamoto9@web.de>
2023-07-09 14:39:38 +02:00
Jean-François Milants
5f3acfadd2 Set version to 1.13.0 2023-06-24 16:00:10 +02:00
Finlay Davidson
505520d83b arduinofft: Move to submodule, define srqt_internal externally 2023-06-17 17:46:48 +02:00
Timothy
473a0795d6 Fix Typo
label_battery_vallue > label_battery_value
2023-06-17 17:44:28 +02:00
Isaac
9e128c838e
ShakeWake: Fixed instant wake after sleep issue in certain positions (#1691)
* ShakeWake: Fixed instant wake after sleep issue in certain positions

Add lastX var to track the previous x acceleration for correct calculation of speed.

Reorder axes for clarity.

---------

Co-authored-by: Isaac <114504394+isaacc27@users.noreply.github.com>
Co-authored-by: FintasticMan <52415484+FintasticMan@users.noreply.github.com>
2023-06-17 17:37:53 +02:00
Reinhold Gschweicher
f057894d26 Allow mcuboot tool to use cbor2 additional to cbor
The mcuboot imgtool uses the python module `cbor`.

An equivalent and updated package `cbor2` requires Python 3.7 or newer.

The arch packages provide a package `python-cbor2`, but no package for
`cbor`.

This patch makes it possible to use the system package by adding
support for the `cbor2` package additionally to the `cbor` package.
2023-06-04 19:46:37 +02:00
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