Commit Graph

63 Commits

Author SHA1 Message Date
JF
da39f402e5 Replace bitmap icons by font icons (provided by AwesomeFont and LVGL). These icons are smaller in memory and quicker to draw.
BLE and battery icon replaced in Clock screen.
Added heartbeat and step icons in Clock screen.
Replace all labels in Menu by icons.

Add doc to generate new font.
2020-07-04 13:58:15 +02:00
JF
bb11891b6e Remove custom styles in Screens and define default style and "Big style" in LittleVgl during the initialization of LVGL. 2020-07-03 21:37:40 +02:00
JF
47851fb3b4 Display BLE MAC address in sysinfo Screen. 2020-06-08 21:51:34 +02:00
JF
421af9625b Add build date and time in sysinfo screen. 2020-06-07 20:16:39 +02:00
JF
e22c0609b5 Add uptime counter in DateTimeController and display it in SystemInfo screen. 2020-06-07 20:04:43 +02:00
JF
07f74cee63 DFU : add timeout detection : abort dfu procedure after 10s without any data from the host. 2020-06-01 16:30:24 +02:00
JF
dca559aad5 Improve DFU procedure :
- correctly write all bytes to flash
 - check CRC
 - Fix bug in notification : they cannot be sent from the control point handler (because it seems you cannot send a notification and a write acknowledge at the same time) using a timer (quick'n'dirty implementation to be improved)
 - Improve dfu screen
 - Reset if dfu image is correctly copied into flash and crc is ok.
2020-06-01 09:22:54 +02:00
JF
ee05577dd6 Fix race conditions on SPI and integrate the SPI NOR Flash driver into DFUService (WIP) 2020-05-11 18:50:37 +02:00
JF
e20fdfa494 Add new screen that is displayed during the OTA transfert. 2020-05-02 14:16:57 +02:00
JF
d5c2a58914 Update BLE and battery icons from https://gitlab.com/arteeh/pinetimeos : it saves ~60KB of flash! 2020-04-05 18:54:04 +02:00
JF
baca0fc3e5 Encapsulate Notification management in NotificationManager. It implement a static array of notifications to avoid dynamic allocation. 2020-03-28 19:05:28 +01:00
JF
68240704c7 Add support for BLE notification (ANS client).
Work In Progress!!!
2020-03-25 21:23:40 +01:00
JF
7e9a7e4d5f Fix bad memory alloaction in sysinfo screen. 2020-03-22 12:14:38 +01:00
JF
fb64ba8fb6 Add new App : Sysinfo. It displays various info about the running system : version, date/time, battery, brightness and resetreason. It contains placeholder for future use (like mac address, uptime,...). 2020-03-22 12:03:17 +01:00
JF
8ed6ffaaf8 Add the possibility to the screen to handle a touch gesture.
A default action is taken if the current screen doesn't handle it.
2020-03-15 21:01:24 +01:00
JF
2ed76ac556 Encapsulate brightness controll into the class BrightnessController.
Add a new app to configure the brightness.
2020-03-15 18:03:11 +01:00
JF
4d2aacf863 Display battery level and BLE connection status using icon on Clock screen. 2020-03-14 16:33:47 +01:00
JF
a91c68c931 Backup and restore vertical scroll offset when goind to sleep/wakeup to avoid scrambled display on wake-up. 2020-03-11 21:35:06 +01:00
JF
4de22601f5 Apply a "up" transition when an app is opened. 2020-03-10 20:21:41 +01:00
JF
35e221078b Add support for gestures and integrate it with the vertical scrolling transition. 2020-03-09 21:29:12 +01:00
JF
0a5cd60fe8 When a full screen refresh is done, apply a vertical scroll during the refresh. This makes the transition from one screen the another one smoother, even if the refresh rate is slow. 2020-03-08 21:46:25 +01:00
JF
d834f40c10 Do not copy LittleVgl object in DislayApp, use reference instead.
Make Cst816s, SpiMaster and St7789 not copiable and not movable
2020-03-08 21:38:11 +01:00
JF
d88ec8c2f0 Workaround for the first touch that is taken twice into account. 2020-03-02 20:48:58 +01:00
JF
64014f03ee Fix date/time conversion from CTS to internal date/time representation. 2020-03-02 20:13:30 +01:00
JF
824b8a7ebd Move version display from Clock screen to the modal window (accessible from tile menu) 2020-03-02 20:12:46 +01:00
JF
5bc0640b73 Fix typo in the name of the font "jetbrains_mono_extrabold_compressed" + use it as the default font. 2020-03-01 19:09:59 +01:00
JF
a1d79e7ecc Fix Model that would crash when closing it. 2020-03-01 17:20:27 +01:00
JF
63c5725882 Simplify Tile to improve refresh speed (it's not a tile anymore...).
Disable debug mode of lvgl.
2020-03-01 16:01:53 +01:00
JF
6d288b905a Configure lvgl theme and use 2*4lines buffers as video buffer (2 lines was not enough and caused perf issues) 2020-03-01 15:59:17 +01:00
JF
e285ba9972 Fix double-buffering for spi display (it's actually using double-buffering, now) 2020-03-01 15:57:58 +01:00
JF
179b14f48c Add new Screens (gauge, meter,...) 2020-02-26 20:49:26 +01:00
JF
f07ffab4c1 Re-enable BLE, BLE status on display and battery level on display. 2020-02-23 16:14:03 +01:00
JF
02772b996f Do not compile GFX and older fonts anymore.
Refactor SystemTask in its own class.
Refactor Screen to be able to close current screen and open a new one.
Re-enable sleep/wake up and propagate button event to Screens.
2020-02-23 13:44:39 +01:00
JF
2bdff7ed2b Re-enable BLE display on Clock screen 2020-02-20 18:17:53 +01:00
JF
167a0ffc87 Add touch panel port to lvgl.
PoC of user interaction with 3 screen (clock, menu and app).
2020-02-16 18:32:36 +01:00
JF
52539a5ff1 Log Touchpanel data (position + gesture!) 2020-02-12 19:57:04 +01:00
JF
e65c9fa181 Integration of lvgl : continued... 2020-02-10 21:05:33 +01:00
JF
a97faf8e9e First quick'n'dirty integration of LittleVGL. Needs some cleaning. 2020-02-08 18:01:02 +01:00
JF
6491a7c3a0 Remove test code 2020-01-26 15:39:49 +01:00
JF
5fa4f5abe0 Better integration of SPI with DMA and IRQ. Using only 'End' IRQ. Perf could be improved by using 'Started' IRQ to prepare the next buffer while the current one is beeing sent. 2020-01-26 13:37:10 +01:00
JF
eb7a1b3ac9 [WIP] Max SPI speed reached (119ms for a full refresh. Theo max : 240*240*16 = 115.2ms) using IRQ and DMA.
Code needs some cleaning before integration.
2020-01-22 21:08:53 +01:00
JF
aa3e5c0c6f [WIP] Use IRQ in SPI driver to improve performances 2020-01-22 19:45:53 +01:00
JF
b4bd41cd56 Implement the SPI driver using DMA. 2020-01-19 19:47:49 +01:00
JF
2b3e6b1cde Refactor ctor() and Ini() of SpiMaster. 2020-01-18 20:53:32 +01:00
JF
f049f382f0 Encapsulate the drawing of the screen into Screens classes. 2020-01-18 18:17:52 +01:00
JF
fb99520c98 Add version (major.minor.patch) in CMake files.
Display the version on the display.
2020-01-18 14:50:24 +01:00
JF
b34ff32f76 DateTimeController is now updated in the system task.
It runs every 1s in Running mode, and every 1h in sleep mode.
This should allow to keep the watch on time for more than 4 hours.
2020-01-18 13:56:25 +01:00
JF
c1f3a31b51 Disable SPI, I²C, touch controller and display controller in sleep mode.
Re-enable them on wake up.

Remove delays that were not needed in st7889 driver.

Hopefully, it'll improve the battery life!
2020-01-17 22:16:45 +01:00
JF
f23ef842ca Improve date/time accuracy and handle counter overflow. 2020-01-12 16:00:45 +01:00
JF
8253c099d9 Add date library (https://github.com/HowardHinnant/date) to manage the date and time.
The date is now properly processed (31 December 2019 23:59:59 + 1s => 1 January 2020 00:00:00)
2020-01-11 17:14:12 +01:00