1
0
Fork 0

Compare commits

..

No commits in common. "bf07f0cf551cfec5253b7efe38673d6ae13986bb" and "749fe3432fb0ee22dd68fb22b504f188f8646023" have entirely different histories.

8 changed files with 38 additions and 78 deletions

View file

@ -13,11 +13,11 @@ jobs:
steps: steps:
- name: Checkout files - name: Checkout files
id: checkout-files id: checkout-files
uses: actions/checkout@v4 uses: actions/checkout@v2
- name: Check the cached arm-none-eabi-gcc compiler - name: Check the cached arm-none-eabi-gcc compiler
id: cache-toolchain id: cache-toolchain
uses: actions/cache@v4 uses: actions/cache@v2
env: env:
cache-name: cache-toolchain-10-2020-q4 cache-name: cache-toolchain-10-2020-q4
with: with:
@ -68,35 +68,35 @@ jobs:
- name: Upload full binary distribution - name: Upload full binary distribution
id: upload-binaries id: upload-binaries
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v2
with: with:
name: wasp-os-${{ github.sha }} name: wasp-os-${{ github.sha }}
path: wasp-os-${{ github.sha }}.tar.gz path: wasp-os-${{ github.sha }}.tar.gz
- name: Upload pinetime binaries - name: Upload pinetime binaries
id: upload-pinetime id: upload-pinetime
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v2
with: with:
name: pinetime-${{ github.sha }} name: pinetime-${{ github.sha }}
path: build-pinetime path: build-pinetime
- name: Upload Colmi P8 binaries - name: Upload Colmi P8 binaries
id: upload-p8 id: upload-p8
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v2
with: with:
name: p8-${{ github.sha }} name: p8-${{ github.sha }}
path: build-p8 path: build-p8
- name: Upload Senbono K9 binaries - name: Upload Senbono K9 binaries
id: upload-k9 id: upload-k9
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v2
with: with:
name: k9-${{ github.sha }} name: k9-${{ github.sha }}
path: build-k9 path: build-k9
- name: Upload extra apps binaries - name: Upload extra apps binaries
id: upload-apps id: upload-apps
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v2
with: with:
name: apps-${{ github.sha }} name: apps-${{ github.sha }}
path: apps/*.mpy path: apps/*.mpy

View file

@ -13,11 +13,11 @@ jobs:
steps: steps:
- name: Checkout files - name: Checkout files
id: checkout-files id: checkout-files
uses: actions/checkout@v4 uses: actions/checkout@v2
- name: Check the cached python downloads - name: Check the cached python downloads
id: cache-modules id: cache-modules
uses: actions/cache@v4 uses: actions/cache@v2
env: env:
cache-name: cache-toolchain cache-name: cache-toolchain
with: with:

View file

@ -23,13 +23,10 @@ clean :
reloader/build-$(BOARD) reloader/src/boards/$(BOARD)/bootloader.h \ reloader/build-$(BOARD) reloader/src/boards/$(BOARD)/bootloader.h \
micropython/mpy-cross/build \ micropython/mpy-cross/build \
micropython/ports/nrf/build-$(BOARD)-s132 \ micropython/ports/nrf/build-$(BOARD)-s132 \
apps/*.mpy \
build-$(BOARD) \
wasp/boards/$(BOARD)/watch.py \ wasp/boards/$(BOARD)/watch.py \
wasp/apps/user \ wasp/apps/user \
wasp/boards/manifest_user_apps.py \ wasp/boards/manifest_user_apps.py \
wasp/appregistry.py wasp/appregistry.py
find . -type f -name '*.py[co]' -delete -o -type d -name __pycache__ -delete
# Avoid a recursive update... it grabs far too much # Avoid a recursive update... it grabs far too much
submodules : submodules :
@ -65,13 +62,7 @@ wasp/boards/$(BOARD_SAFE)/watch.py : wasp/boards/$(BOARD_SAFE)/watch.py.in
|| ($(RM) wasp/boards/$(BOARD)/watch.py; false) || ($(RM) wasp/boards/$(BOARD)/watch.py; false)
micropython/mpy-cross/mpy-cross: micropython/mpy-cross/mpy-cross:
$(MAKE) -C micropython/mpy-cross \ $(MAKE) -C micropython/mpy-cross
CWARN="-Wall -Wno-error"
# ^ Disable some Werrors from GCC>=13, specifically
# - dangling-pointer
# - enum-int-mismatch
# TODO update micropython and remove.
# https://github.com/wasp-os/wasp-os/issues/493
micropython: build-$(BOARD_SAFE) wasp/boards/manifest_user_apps.py wasp/boards/$(BOARD_SAFE)/watch.py micropython/mpy-cross/mpy-cross micropython: build-$(BOARD_SAFE) wasp/boards/manifest_user_apps.py wasp/boards/$(BOARD_SAFE)/watch.py micropython/mpy-cross/mpy-cross
$(RM) micropython/ports/nrf/build-$(BOARD)-s132/frozen_content.c $(RM) micropython/ports/nrf/build-$(BOARD)-s132/frozen_content.c
@ -79,13 +70,7 @@ micropython: build-$(BOARD_SAFE) wasp/boards/manifest_user_apps.py wasp/boards/$
BOARD=$(BOARD) SD=s132 \ BOARD=$(BOARD) SD=s132 \
MICROPY_VFS_LFS2=1 \ MICROPY_VFS_LFS2=1 \
FROZEN_MANIFEST=$(CURDIR)/wasp/boards/$(BOARD)/manifest.py \ FROZEN_MANIFEST=$(CURDIR)/wasp/boards/$(BOARD)/manifest.py \
USER_C_MODULES=$(CURDIR)/wasp/modules \ USER_C_MODULES=$(CURDIR)/wasp/modules
COPT="-Wno-error"
# ^ Disable some Werrors from GCC>=13, specifically
# - dangling-pointer
# - enum-int-mismatch
# TODO update micropython and remove.
# https://github.com/wasp-os/wasp-os/issues/493
$(PYTHON) -m nordicsemi dfu genpkg \ $(PYTHON) -m nordicsemi dfu genpkg \
--dev-type 0x0052 \ --dev-type 0x0052 \
--application micropython/ports/nrf/build-$(BOARD)-s132/firmware.hex \ --application micropython/ports/nrf/build-$(BOARD)-s132/firmware.hex \

View file

@ -254,7 +254,7 @@ To launch the simulator:
sh$ make sim sh$ make sim
PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=.:wasp/boards/simulator:wasp \\ PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=.:wasp/boards/simulator:wasp \\
python3 -i wasp/boards/simulator/main.py python3 -i wasp/main.py
MOTOR: set on MOTOR: set on
BACKLIGHT: 2 BACKLIGHT: 2
Watch is running, use Ctrl-C to stop Watch is running, use Ctrl-C to stop
@ -280,8 +280,8 @@ by swiping or using the Arrow keys to bring up the launcher and then clicking
on your application. on your application.
The application can also be registered automatically when you load the The application can also be registered automatically when you load the
simulator if you add it to ``wasp/boards/simulator/main.py``. Try adding lines simulator if you add it to ``wasp/main.py``. Try adding lines 5 and 6 from
5 and 6 from the above example into this file (between ``import wasp`` and the above example into this file (between ``import wasp`` and
``wasp.system.run()``). ``wasp.system.run()``).
The simulator accepts gestures such as up/down and left/right swipes but the The simulator accepts gestures such as up/down and left/right swipes but the

View file

@ -243,9 +243,9 @@ screen, a step counter and a heart rate sensor.
wasp-os can be installed directly from the factory default operating wasp-os can be installed directly from the factory default operating
system using an over-the-air update with no tools or disassembly system using an over-the-air update with no tools or disassembly
required. Gadgetbridge for Android can be used to install both the required. nRF Connect for Android can be used to install both the
:ref:`wasp-bootloader<Bootloader Gadgetbridge>` and the :ref:`wasp-bootloader<Bootloader nRF Connect>` and the
:ref:`main OS image<Main OS Gadgetbridge>`. :ref:`main OS image<Main OS nRF Connect>`.
.. note:: .. note::
@ -330,12 +330,12 @@ DaFlasher for Android can be used to install both the
Installing wasp-bootloader Installing wasp-bootloader
-------------------------- --------------------------
.. _Bootloader Gadgetbridge: .. _Bootloader nRF Connect:
Gadgetbridge for Android nRF Connect for Android
~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~
For Pine64 PineTime devices running Infinitime then Gadgetbridge for Android For Pine64 PineTime devices running Infinitime then nRF Connect for Android
can be used to install wasp-bootloader: can be used to install wasp-bootloader:
* Ensure the watch is fully charged before attempting to install the * Ensure the watch is fully charged before attempting to install the
@ -343,14 +343,12 @@ can be used to install wasp-bootloader:
sealed devices. sealed devices.
* Copy ``reloader-mcuboot.zip`` (see :ref:`Building wasp-os from source`) to * Copy ``reloader-mcuboot.zip`` (see :ref:`Building wasp-os from source`) to
your Android device and download your Android device and download
`Gadgetbridge <https://f-droid.org/en/packages/nodomain.freeyourgadget.gadgetbridge/>`_ `nRF Connect <https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp>`_
for Android if you do not already have it. for Android if you do not already have it.
* Wake the device so that Infinitime is showing a watch face. * Wake the device so that Infinitime is showing a watch face.
* Connect to the *Infinitime* device usnig Gadgetbridge, tap on the "+" button on the * Connect to the *Infinitime* device usnig nRF Connect, click the DFU button
bottom right of the screen to add a new device, *Infinitime* should be detected. and send ``reloader-mcuboot.zip`` to the device.
* Tap on it and Gadgdetbridge will pair and connect to your device. Use the file browser * When the progress meter reaches 100% the nRF Connect will disconnect
application and find and send ``reloader-mcuboot.zip`` to the device.
* When the progress meter reaches 100% Gadgetbridge will disconnect
and the watch will reboot. and the watch will reboot.
* The watch will boot the reloader application which draws a small blue * The watch will boot the reloader application which draws a small blue
pine cone in the centre of the screen. The pine cone acts a progress pine cone in the centre of the screen. The pine cone acts a progress
@ -368,11 +366,9 @@ can be used to install wasp-bootloader:
.. note:: .. note::
If you want to restore the PineTime factory firmware then you can If you want to restore the PineTime factory firmware then you can
use Gadgetbridge to do this. Perform a long press reset and then use nRF Connect to do this. Perform a long press reset and then
use Gadgetbridge to send ``reloader-factory.zip`` to the *PineDFU* use nRF Connect to send ``reloader-factory.zip`` to the *PineDFU*
device. GadgetBridge may list *PINE DFU* as an unsupported device. device.
See the work around at the end of
:ref:`main OS image<Main OS Gadgetbridge>`.
.. _Bootloader DaFlasher: .. _Bootloader DaFlasher:
@ -469,35 +465,23 @@ logo and wait for a OTA update.
Installing wasp-os Installing wasp-os
------------------ ------------------
.. _Main OS Gadgetbridge: .. _Main OS nRF Connect:
Gadgetbridge for Android nRF Connect for Android
~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~
To install the main firmware using Gadgetbridge for Android: To install the main firmware using nRF Connect for Android:
* Copy ``micropython.zip`` (see :ref:`Building wasp-os from source`) to * Copy ``micropython.zip`` (see :ref:`Building wasp-os from source`) to
your Android device and download your Android device and download
`Gadgetbridge <https://f-droid.org/en/packages/nodomain.freeyourgadget.gadgetbridge/>`_ `nRF Connect <https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp>`_
for Android if you do not already have it. for Android if you do not already have it.
* Ensure the watch is running in :ref:`OTA update mode<OTA update mode>`. * Ensure the watch is running in :ref:`OTA update mode<OTA update mode>`.
* Connect to the device (e.g. *PineDFU* if you have a PineTime) using * Connect to the device (e.g. *PineDFU* if you have a PineTime) using
Gadgetbridge, use the file browser application and send ``micropython.zip`` to the nRFConnect, click the DFU button and send ``micropython.zip`` to the device.
device.
* When the upload is complete the watch will reboot and launch the digital * When the upload is complete the watch will reboot and launch the digital
clock application. clock application.
.. note::
GadgetBridge may list PINE DFU as an unsupported device. This prevents users from
sending the ``micropython.zip`` file to the device. Do the following to work around
this: In GadgetBridge, go to discovery and pairing options and allow unsupported
devices.
The Pinetime will show up as an unsupported device. Long-press it and select Add
as a test device. A list of devices will show up. Scroll down to Pinetime and select
it. The device will be added and you then can upload the ``micropython.zip`` file.
.. _Main OS DaFlasher: .. _Main OS DaFlasher:
DaFlasher for Android DaFlasher for Android
@ -600,14 +584,8 @@ A default version of ``main.py`` is installed automatically when wasp-os initial
formats the external flash as a file system. formats the external flash as a file system.
Most problems with normal mode operation occur either because ``main.py`` is Most problems with normal mode operation occur either because ``main.py`` is
missing, out-of-date or corrupt, or because too many applications are being started missing, out-of-date or corrupt. These issues most commonly result in an
by default, resulting in the system running out of RAM. entirely black screen when running the watch is running in normal mode.
Out of memory problems are best addressed by reducing the number of applications you
have set to automatically load (auto_load in wasp.toml). If you are developing your
own application, it is best that you load the minimal set of applications to have
the maximum possible amount of available RAM and minimum fragmentation. For example,
only autoloading the software app will get you the maximum amount of RAM.
.. note:: .. note::

View file

@ -6,9 +6,6 @@ let
ifLinux = pkgs.lib.optionals pkgs.stdenv.isLinux; ifLinux = pkgs.lib.optionals pkgs.stdenv.isLinux;
in pkgs.mkShell { in pkgs.mkShell {
buildInputs = ifLinux [
pkgs.gobject-introspection
];
nativeBuildInputs = [ nativeBuildInputs = [
(pkgs.python3.withPackages (pp: with pp; [ (pkgs.python3.withPackages (pp: with pp; [
cbor cbor

@ -1 +1 @@
Subproject commit 0e95be2ed0ddc21ea0c833fe0497e175a132524c Subproject commit 5572b01b26e04c7f8c79e8407f4d202e7258bf6b

@ -1 +1 @@
Subproject commit 2c41c396adc80ee0c09f7cc7263f162c0f508d59 Subproject commit b968b2530440afae8b555613e89b1240afcf4da2