Commit graph

242 commits

Author SHA1 Message Date
Kieran Cawthray 607af27ba8 Add step count gauge - replaces heartrate in sidebar 2021-06-20 21:53:09 +02:00
Kieran Cawthray f5d756928f Merge remote-tracking branch 'upstream/develop' into pinetimestyle 2021-06-16 16:33:34 +02:00
Jonathan Vander Mey 006771699f Remove infinitime-nb.c from source list
Was causing compiler warning for unused constant variable when being
compiled. This feel is directly included where it's needed so it doesn't
need to be separately compiled anyways.
2021-06-12 20:04:19 +02:00
Bryton Hall c575754b42
add basic metronome app (#409)
* add basic metronome app

* add bpb, tap to bpm, update widgets

* use event pressed for bpm tap

* move case statement break to the right place

* narrow bpm selection range, override touch events

* fix arc knob style

* re-enable sleeping in destructor
2021-06-12 15:06:58 +02:00
Jean-François Milants 7f9cc51b05 Initialize SystemTask, DisplayApp and HeartRateTask as global static variable instead of variables on the heap. We don't need them on the heap as we know their size at build time, it'll reduce memory fragmentation and it'll make memory analysis easier. 2021-06-06 15:56:03 +02:00
Kieran Cawthray f2d01166c3 Merge remote-tracking branch 'upstream/develop' into pinetimestyle 2021-06-04 08:57:40 +02:00
JF002 1b6acdedc2
Enable various compilation flags to reduce the binary size (#401)
* Add the following compilation flags:
 * -fno-exceptions and -fno-non-call-exceptions : disable exception handling
 * -fno-rtti : disable run time type information (needed by dynamic_cast, for example)

These flags reduce the binary size by about 100KB!

Also, -fstack-usage generate debug info (not in final binary) to allow tools like Puncover to do a stack analysis.

* Remove unused CMake variables in CMake_nRF5x.cmake (duplicated in src/CMakeLists.txt).
Replace -O0 by -Og in DEBUG builds. This generates a smaller binary (small enough for the internal memory) that is debugger friendly.
2021-06-01 21:03:01 +02:00
JF002 c0b0f8cb73
Remove debug defines (DEBUG & DEBUG_NRF_USER) from the build. These debug can be useful for debugging purposes but not in production (release). (#400)
This reduces the size of the binary by about 6KB!
This also removes filepath that were embedded into the binary (.bin) file.
2021-06-01 21:02:15 +02:00
Kieran Cawthray 565601ef50 Merge remote-tracking branch 'upstream/develop' into pinetimestyle 2021-05-21 14:34:25 +02:00
Florian 13e3463276
Timer App (#355)
* built timer app

* Style improvements

* making sure buttons stay hidden when the app is reopened and reappear after the timer runs out

* more sensible calculations of time deltas. eliminated that mysterious scaling factor

* changing the timer icon
2021-05-20 20:43:54 +02:00
Kieran Cawthray 108bbc3642 Fix it again.. 2021-05-18 18:03:26 +02:00
Kieran Cawthray 6a92529272 Revert "Reset"
This reverts commit 378fa6b401.
2021-05-18 17:45:16 +02:00
Kieran Cawthray 378fa6b401 Reset 2021-05-18 15:33:25 +02:00
Joaquim cd4a3e1dfe New Steps app
Settings to set the steps goal
More detail in Motion app
New 42px Font
2021-04-19 15:28:38 +01:00
Jean-François Milants 15b3b8e282 Merge branch 'develop' into motion-sensor
# Conflicts:
#	src/CMakeLists.txt
#	src/displayapp/Apps.h
#	src/displayapp/DisplayApp.cpp
#	src/displayapp/DisplayApp.h
#	src/displayapp/lv_pinetime_theme.c
#	src/displayapp/screens/ApplicationList.cpp
#	src/drivers/TwiMaster.cpp
#	src/systemtask/SystemTask.h
2021-04-09 21:16:21 +02:00
Jean-François Milants 9ac4be8b75 TwiMaster is now based on the NRFX TWI driver, as it handles more edge cases and workarounds for errors on the bus.
Reset the TWI bus after the soft-reset of the motion sensor to workaround issues on the TWI bus.
2021-04-08 20:07:24 +02:00
Jean-François Milants 68bdaee1cc First integration of the motion sensor (bma 421) : step counting + wake on wrist rotation + app to see the value of the 3 axis in "real time". 2021-04-04 15:56:04 +02:00
Joaquim 1d3742e14f Big UI and navigation Rewrite
new navigation
add some color to the apps
redesign menus
new settings menu
new quick settings
code clean up
size reduction by converting navigation images to font
and more...
2021-04-04 03:08:51 +01:00
Niall Cooling e5e3fc02b8 Updated to include WatchFaceAnalog and fixed clashes 2021-03-22 17:23:49 +00:00
panky-codes 5345650880 Merged upstream 2021-03-20 22:45:29 +01:00
Jean-François Milants 405c85c160 Merge branch 'develop' of github.com:JF002/Pinetime into develop
# Conflicts:
#	src/main.cpp
#	src/systemtask/SystemTask.h
2021-03-20 11:41:49 +01:00
Niall Cooling 14bd790701 Resolved C++14 Cmake build issues so correctly building to C99/C++14 standards 2021-03-16 12:43:50 +00:00
panky-codes 1f8f527f9f Merge branch 'develop' of github.com:JF002/Pinetime into feature/add-stop-watch 2021-03-11 10:54:58 +01:00
panky-codes cc58b635a3 Basic logic done. Need to change the timer source to get ms. Also need to replace with paddle app in displayApp.cpp and ApplicationList.cpp later. 2021-03-11 10:54:14 +01:00
Jean-François Milants 9f67e6f652 Merge branch 'develop' into recovery-firmware
# Conflicts:
#	src/CMakeLists.txt
#	src/displayapp/DisplayApp.h
#	src/systemtask/SystemTask.cpp
#	src/systemtask/SystemTask.h
2021-03-07 08:44:14 +01:00
Joaquim 3d6e8c3beb Merge from upstream 2021-03-06 19:55:36 +00:00
Niall Cooling 35aa4bb8d6 Refactored src/CMakelist to support C++14 and cleanup up redundant/incorrect -std= directives 2021-03-03 15:27:32 +00:00
Joaquim ee6ce64571 Merge branch 'develop' of https://github.com/JF002/Pinetime into MultiFaceClock 2021-02-25 09:28:25 +00:00
Joaquim 8c53d0b70b Multi face support, analog clock, 12/24 config 2021-02-24 19:40:24 +00:00
JF002 8a48850afd
Merge pull request #211 from roblabla/fix-flashing
Flash correct file name
2021-02-24 20:05:47 +01:00
Jean-François Milants f864330d35 Merge branch 'LVGL7' of https://github.com/joaquimorg/Pinetime into joaquimorg-LVGL7
# Conflicts:
#	src/CMakeLists.txt
#	src/displayapp/DisplayApp.cpp
#	src/displayapp/screens/Modal.cpp
#	src/displayapp/screens/Modal.h
#	src/displayapp/screens/Notifications.cpp
#	src/displayapp/screens/Tile.h
2021-02-23 21:18:59 +01:00
roblabla 9f6d1c6948 Flash correct file name 2021-02-19 19:44:51 +01:00
Jean-François Milants 5fdfb2112e Fix merge conflict. 2021-02-14 14:19:30 +01:00
JF002 4c3803450e
Merge pull request #161 from petterhs/calls
Call functionality with changed UUID for notification event characteristic
2021-02-14 12:03:49 +01:00
Jean-François Milants 740b3d7b58 Add new cmake option to disable the generation of DFU file (which needs adafruit-nrfutil on the build machine) : BUILD_DFU (disabled by default, enabled in docker build). 2021-02-01 21:07:53 +01:00
Joaquim a4361de0cf Cleanup 2021-02-01 12:14:49 +00:00
Joaquim ccd423bcef Merge branch 'develop' of https://github.com/JF002/Pinetime into LVGL7 2021-02-01 10:44:10 +00:00
Avamander 4371b7fecc
Update CMakeLists.txt 2021-01-30 19:11:07 +02:00
Joaquim a456887eff LVGL v7.10.0 2021-01-28 17:13:28 +00:00
Jean-François Milants 25f35c7d0e Generate pinetime-recovery : a light version of InfiniTime design to be used as a recovery firmware : it only provides basic UI and BLE connectivity for OTA.
This new FW is build on the same codebasse than the actual InfiniTime. Only the display task is different (this allows to remove lvgl from the recovery fw, which is very heavy).

CMake builds and docker have been modified accordingly.
Note than the fw is converted into an image and then into a DFU in the cmake build (previously, it was only done in the
2021-01-26 20:31:45 +01:00
The King 8c3df5f021
Merge branch 'develop' into upstream-dev 2021-01-24 16:01:14 -05:00
Jean-François Milants 219bafb01a Handle call notification the same way than other notifications.
Display the call notifications in the Notification app, with buttons to accept/reject the call.
2021-01-24 17:22:39 +01:00
jlukanc 51c8cadcb7 fix merge issue 2021-01-23 16:13:58 -05:00
jlukanc 4cbcc99c8d fis merge conflict? 2021-01-23 16:12:06 -05:00
Jean-François Milants 522a1eb0be Merge branch piggz/nav into develop:
- fix conflict
 - add a icon for the navigation app.
2021-01-20 21:34:09 +01:00
Jean-François Milants 68674cec53 Add heart rate BLE service. 2021-01-17 16:34:14 +01:00
jlukanc ce6c5d3bd3 add motorcontroller to cmake 2021-01-15 22:46:03 -05:00
jlukanc fbb77baa3b add non-blocking motor controller 2021-01-15 22:11:53 -05:00
Jean-François Milants 1a582815ba First implementation of the HR sensor using 100% foss code (ported from waspos) 2021-01-10 17:57:26 +01:00
Jed 12617ed1bf adds 2048 clone game
styles table


reads touch events


allows moving tiles


allows merging tiles


improves tile movement


allows merging tiles


adds score display


implements color


edit comments


adjust game logic


disallows double merges
2021-01-02 14:15:12 -06:00
ZephyrLabs 1d69c79942 Addition of new files in MakeList
added Paddle.cpp and Paddle.h
2020-12-03 19:46:36 +05:30
Ryan Hartlage a30282bdd5 Flash the correct file when running FLASH_pinetime-app with JLink 2020-11-14 19:23:16 -05:00
JF 29f8074fcb Refactoring of BLE service discovery : it is now implemented into the classes of the services. 2020-10-29 16:06:01 +01:00
JF 7de43a1660 Fix conflicts 2020-10-27 21:55:18 +01:00
JF 1bb2eb9dcd Disable sleep mode on the SPI NOR Flash when the version is unknown. This is because the current bootloader (which does not exposes its version) cannot initialize the chip when it's in sleep mode.
This feature will be re-enabled when the bootloader expses it's version.
2020-10-27 19:38:45 +01:00
JF ef5670c7e0 Integrate new notification UI with notifications coming from BLE 2020-10-20 20:57:39 +02:00
JF 55427d83b8 [WIP] Add new notification UI that use HW scrolling effects. Both notification apps are available in the menu, we can compare them. 2020-10-19 21:46:41 +02:00
JF 28bc434419 [WIP] New notification app that uses software scrolling effect. 2020-10-18 17:35:36 +02:00
Avamander f68c7b65b3 Minor formatting, diagnostic and documentation changes 2020-10-09 11:36:16 +03:00
Avamander cc3a9f3c79 Removed an incomplete message() call from CMakeLists.txt 2020-10-04 18:46:34 +03:00
Avamander 6c86d1d9d7 Fixed all the includes that were broken due to the renames 2020-10-02 22:16:48 +03:00
Avamander 4daab26926 Renamed displayapp/Screens to displayapp/screens 2020-10-02 21:49:55 +03:00
Avamander e3fb2f0b89 Renamed DisplayApp/ to displayapp/ 2020-10-02 21:46:41 +03:00
Avamander 30c261028e Renamed Logging/ to logging/ 2020-10-02 21:45:51 +03:00
Avamander e25c4edbcf Renamed SystemTask/ to systemtask/ 2020-10-02 21:45:21 +03:00
Avamander 40a643d203 Renamed Components/ to components/ 2020-10-02 21:44:27 +03:00
Avamander 455d8319e4 Reformatted the CMakeLists for consistency 2020-10-02 21:43:30 +03:00
JF f3728c41bb Add Immediate Alert Service, needed by the "Find Me" profile from BLE spec. 2020-09-27 20:59:06 +02:00
JF 5d3a974493 Add BatteryInformationService to expose the battery level to BLE host. 2020-09-27 20:02:47 +02:00
JF d757344f1b Docker post build : generate post build script with versions from the CMake project. 2020-09-08 22:15:10 +02:00
JF a664dec07f Add paint application. 2020-08-21 11:55:59 +02:00
JF 7d3af600bd Add TouchModes : in Gestures mode, only 1 event is processed for each touchevent. This allows to recognize gesture and handle them in Screens or in DisplayApp.
In Polling mode, X/Y positions are sent continuously to lvgl, allowing to scroll inside a dropdown menu for example.
2020-08-20 21:09:45 +02:00
JF e6a1aff6ce Docker build : split build.sh into 2 scripts : build.sh that always exists and post_build.sh that is generated by cmake build.sh 2020-08-20 09:38:10 +02:00
JF f197a3fe88 All output files (bin, hex, image, dfu) contain the version of the project in their filename.
Update Docker build script accordingly.
Also fix permission issue with docker build (all files belonged to root).
2020-08-19 21:52:46 +02:00
JF 1e1bb1c6b7 Build lvgl, nimble and nrf sdk as static libs. This allows to specify custom build param and to remove warnings from these libs.
This also speeds up the build of the whole project as those libs are now built once for the 3 targets.
2020-08-17 16:48:12 +02:00
JF 83f6d7d81b Fix most of the warnings. Remaining warnings come from nimble source code. 2020-08-17 16:31:00 +02:00
JF e6f5ab7b91 Merge develop and fix conflicts. 2020-08-14 19:54:43 +02:00
JF f5328ec9eb Refactor ScreenList to make it more generic : it can now contain any Screen type.
Integrate this new ScreenList in SystemInfo.

Add ApplicationList, which is a ScreenList of Tile. This allows to display a menu of more than 6 applications.
2020-08-14 09:46:37 +02:00
JF bbfc20c3ff Add new screen that allows the user to manually validate the new firmware he's just OTA'ed.
Still need to find a way to display this screen when needed.
2020-08-11 17:50:00 +02:00
JF002 3f72af1030
Merge pull request #40 from piggz/music
Music
2020-07-25 15:03:29 +02:00
JF 6af5bbcbc8 New implementation of the I²C/TWI driver.
Fix reset timing and add dummy reading in Cst816S to fix init error on some devices.
2020-07-19 20:30:44 +02:00
Adam Pigg 789e06fdb7 Merge branch 'develop' of https://github.com/JF002/Pinetime into music 2020-07-11 21:41:20 +01:00
Adam Pigg 7a1e6e6e5b Add start of music appliction 2020-07-11 21:37:28 +01:00
JF 09adb78b55 Fix/Workaround a memory leak each time a device connects to BLE. 2020-07-11 20:50:40 +02:00
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 ca549bcfd8 Add doc about memory usage analysis. 2020-07-03 14:45:01 +02:00
JF a83f067af9 Reduce RAM memory usage by tuning the stack of the stasks and the heap allocated for FreeRTOS.
Add Monitor to log the stack usage of each task.
2020-07-02 21:38:52 +02:00
JF f8ffb405a2 Merge branch 'nimble_1_3_0' into develop 2020-06-27 16:10:17 +02:00
Vojtěch Jirkovský 34fd4c5cf3 Fix link error because of missing file "nrf_common.ld" 2020-06-17 23:32:56 +02:00
JF 73e6cbde79 Fix builds that do not specify CMAKE_BUILD_TYPE during CMake generation. Apply Release by default. 2020-06-16 21:02:03 +02:00
JF 9898fed806 Update to nimble 1.3.0 + WIP : debug BLE connection issue with android phones. 2020-06-16 20:36:24 +02:00
JF 46b8bf9fc1 Add new target (pinetime-graphics) that flash the bootloader logo into the spi flash memory. 2020-06-06 19:28:01 +02:00
JF de822cc3a2 Encapsulate DFU Image buffering and writing into spi flash in DfuImage.
Add some const in SPI driver.
2020-06-01 18:32:46 +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 4717cf0a1d Add driver for writing into the internal flash.
Write the OK flag for mcuboot using this driver.
2020-05-24 20:30:06 +02:00
JF 073717980f Merge develop 2020-05-24 16:51:50 +02:00
JF 331481cd0c Refactor CMake files to allow building 2 binaries : one standalone and one compatible with mcuboot bootloader (the offset in memory is different).
Add documentation about mcuboot image generation and OTA.

Re-enable watchdog
2020-05-24 16:36:04 +02:00
JF 0b8e6c3fa2 Add SPI NOR Flash driver, WIP. 2020-05-07 19:53:51 +02:00
Adam Pigg 206bdbf5eb Move PinetimeService to CurrentTimeService witha view to implement CTS
for time handling
2020-05-05 20:58:15 +01:00
Adam Pigg d33be52bc9 Run the alert notification service and simplify trhe pinetime service
initialization
2020-05-05 20:58:15 +01:00
Adam Pigg b760b3f98c Add a simple service to allow setting the time from a controlling
application
2020-05-05 20:58:15 +01:00
JF e20fdfa494 Add new screen that is displayed during the OTA transfert. 2020-05-02 14:16:57 +02:00
JF 5291bcc7de Nimble OTA : work in progress 2020-04-27 20:16:03 +02:00
JF 746c164c59 BLE : Display the actual status of the connection on the screen. 2020-04-27 20:13:27 +02:00
Adam Pigg be67b5297d Remove references to BLE Manager 2020-04-27 14:41:08 +01:00
JF 5fcb90a149 NimbleController : CTS & ANS working but not at the same time (conflict during discovery) 2020-04-25 13:09:47 +02:00
JF 89ccdd0003 NimbleController : Encapsulate CTS client in its own class. 2020-04-23 20:57:53 +02:00
JF 24a7b6e397 NimbleController : Encapsulate device info service in its own class. 2020-04-23 20:34:38 +02:00
JF 2c9ce1cfc7 Encapsulate nimble code into NimbleController.
Handle all GAP events.
2020-04-19 21:26:09 +02:00
JF dd6aecbf6b Integration of nimble, work in progress.
Advertising is working.
2020-04-19 20:44:59 +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 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 dccef16180 Remove default lvgl font (roboto). 2020-03-01 21:15:39 +01:00
JF 6f1857c503 Add debugPins module that provides functions to set and clear debug GPIOs.
Disable logging once again.
2020-03-01 21:00:59 +01:00
JF 179b14f48c Add new Screens (gauge, meter,...) 2020-02-26 20:49:26 +01:00
JF 0aa1803ea2 Enable watchdog, and issue a WDT reset when the button is pushed for more than 7s. 2020-02-23 21:09:11 +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 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 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 aeb4cce8fe Merge branch 'master' of https://github.com/JF002/Pinetime 2020-01-19 12:30:03 +01:00
Daniel Kucera ffbeeba3e9 downgrade to cmake 3.10 2020-01-18 21:26:05 +01:00
JF 86d9f6e6c8 Set minimum version of cmake to 3.10 2020-01-18 20:52:33 +01:00
JF f049f382f0 Encapsulate the drawing of the screen into Screens classes. 2020-01-18 18:17:52 +01:00
JF 3c29a11c78 Fix link error because of missing file "nrf_common.ld" 2020-01-12 16:26:20 +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
JF bbe4e500c3 Improve power consumption and SLEEP mode :
- Disable IDLE hook (it would wake the device up as soon as possible).
 - Logger task sleep for 100ms (disable logging for better battery life)
 - Logging is disabled by default
 - Apply fix for ERRATA 87 (clear FPU interrupt before going to sleep). Ports files from FreeRTOS are now in the sources (they where in the SDK before)
2020-01-05 11:09:07 +01:00
JF ee530baaa0 Add basic touch panel driver.
Handle touch event in display app : draw a big square at the touch point coordinates.
2020-01-03 16:32:31 +01:00
JF 6abe5d8db8 Remove deleted files from CMakeLists.txt 2019-12-30 17:44:43 +01:00
JF b744b96622 Add DateTimeController to manage the time.
Use messages in message queues to refresh the UI
2019-12-28 14:34:50 +01:00
JF 46eeefb53a Add BleController to manage the BLE connection status 2019-12-27 17:05:49 +01:00
JF fcbd341c1c Implement battery measurement in BatteryController.
Update battery info on wake up (with button)
2019-12-27 16:05:35 +01:00
JF 11d5403558 Add small font, display date, Ble connection and battery power in display app (hard-coded values for now). 2019-12-27 15:12:09 +01:00
JF e8f9304d37 Code cleaning, implement BT connection, advertising, discovery and CTS in ble_manager module. 2019-12-23 19:57:45 +01:00
JF 6fbb6c8f70 Convert Spi and GFX to C++. 2019-12-07 17:11:50 +01:00
JF 5225706cc8 Add DisplayApp, and lcdfont. Update the display every second 2019-12-05 21:19:47 +01:00
JF adf405a230 Add support for LCD (ST7789) 2019-12-05 19:23:46 +01:00
JF 2ea27e0cda Initial commit 2019-11-17 20:47:04 +01:00