From 8487479a1bf7934b2948f7b54a84025e41663a1d Mon Sep 17 00:00:00 2001 From: Daniel Thompson Date: Tue, 4 Feb 2020 19:06:35 +0000 Subject: [PATCH] README: Update prior to initial announcement --- README.md | 17 +++++++++++------ res/clock_app.jpg | Bin 0 -> 22314 bytes 2 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 res/clock_app.jpg diff --git a/README.md b/README.md index 77c1711..997a8be 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,12 @@ Watch Application System in Python ================================== -Currently WASP is primarily useful as a pre-packaged MicroPython -development environment for PineTime. Whilst there are plans to grow -it into a smart watch runtime for Pine64 PineTime and the Desay -DS-D6 fitness tracker this goal has yet to be achieved. +Currently in its infancy wasp-os provides nothing more than a simple +digital clock application for PineTime together with access to the +MicroPython REPL for interactive testing and tweaking. However it +keeps time well and has enough power saving functions implemented +that it can survive for well over 24 hours between charges so even +at this early stage it is functional as a wearable timepiece. WASP includes a robust bootloader based on the Adafruit NRF52 Bootloader. It has been extended to make it robust for development on @@ -12,15 +14,18 @@ form-factor devices without a reset button, power switch, SWD debugger or UART. This allows us to confidently develop on sealed devices relying only on BLE for updates. +![wasp-os digital clock app running on PineTime](res/clock_app.jpg) + Video ----- -[![WASP bootloader and MicroPython running on Pine64 PineTime](https://img.youtube.com/vi/W0CmqOnl4jk/0.jpg)](https://www.youtube.com/watch?v=W0CmqOnl4jk) +[![WASP bootloader and MicroPython running on Pine64 PineTime](https://img.youtube.com/vi/W0CmqOnl4jk/1.jpg)](https://www.youtube.com/watch?v=W0CmqOnl4jk) Building from a git clone ------------------------- ~~~ +pip3 install --user click serial pyserial make submodules make softdevice make -j `nproc` BOARD=pinetime all @@ -73,5 +78,5 @@ watch.rtc.set_time((hh, mm, ss)) wasp.run() ~~~ -At this stage there are many drivers and features still to be +As mentioned above there are many drivers and features still to be developed, see the [TODO list](todo.md) for current status. diff --git a/res/clock_app.jpg b/res/clock_app.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fce4dc5c8726e1a1d0660afaa6ed2f921f0b95c5 GIT binary patch literal 22314 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
45t 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 JnJWHH{Ra|y0aXA1 literal 0 HcmV?d00001