1
0
Fork 0

Compare commits

...

10 commits

Author SHA1 Message Date
Francesco Gazzetta
bf07f0cf55 tools/nix: fix wasptool
Fixes "ImportError: cannot import name GLib, introspection typelib not found"

Signed-off-by: Francesco Gazzetta <fgaz@fgaz.me>
2024-09-30 09:26:53 +01:00
Francesco Gazzetta
6e1c422ff9 ci: update more github actions
Signed-off-by: Francesco Gazzetta <fgaz@fgaz.me>
2024-09-30 09:26:16 +01:00
Francesco Gazzetta
faa18b7129 tools/pynus: Update to latest version
Includes NixOS fix

Signed-off-by: Francesco Gazzetta <fgaz@fgaz.me>
2024-09-30 09:25:38 +01:00
Francesco Gazzetta
6ca5d75ffa Add some missing files to make clean
Mitigates #506. Now a `make clean && make` will update any modified app.

Signed-off-by: Francesco Gazzetta <fgaz@fgaz.me>
2024-09-30 09:25:00 +01:00
Francesco Gazzetta
10692602f5 CI: update upload-artifact
https://github.blog/changelog/2024-02-13-deprecation-notice-v1-and-v2-of-the-artifact-actions/

Signed-off-by: Francesco Gazzetta <fgaz@fgaz.me>
2024-09-25 19:26:45 +01:00
Gary Myers
24dcb62fdb
docs: fix simulator main.py path (#482)
Signed-off-by: GaryM0101 <gary@geekslounge.com>
2024-08-07 14:48:18 +00:00
Gary Myers
7d156cdc05
docs: Document installation via Gadgetbridge (#480)
Signed-off-by: GaryM0101 <gary@geekslounge.com>
2024-08-05 20:34:56 +00:00
Gary Myers
ce1a2634f0
docs: document how to save RAM by disabling apps (#471)
Signed-off-by: GaryM0101 <gary@geekslounge.com>
2024-08-05 20:34:36 +00:00
Francesco Gazzetta
fbf00957dd Fix build up to GCC 13
The errors cannot be disabled individually because the
-Wno-error=some-gcc13-error flags are not recognized by older compilers.

Signed-off-by: Francesco Gazzetta <fgaz@fgaz.me>
2024-06-28 09:37:46 +01:00
Francesco Gazzetta
1798bc6eea bma42x-upy: update submodule
The remote of its submodule disappeared. Update it to a fork under
the wasp-os organization.

Signed-off-by: Francesco Gazzetta <fgaz@fgaz.me>
2024-06-28 09:30:14 +01:00
8 changed files with 78 additions and 38 deletions

View file

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

View file

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

View file

@ -23,10 +23,13 @@ clean :
reloader/build-$(BOARD) reloader/src/boards/$(BOARD)/bootloader.h \
micropython/mpy-cross/build \
micropython/ports/nrf/build-$(BOARD)-s132 \
apps/*.mpy \
build-$(BOARD) \
wasp/boards/$(BOARD)/watch.py \
wasp/apps/user \
wasp/boards/manifest_user_apps.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
submodules :
@ -62,7 +65,13 @@ wasp/boards/$(BOARD_SAFE)/watch.py : wasp/boards/$(BOARD_SAFE)/watch.py.in
|| ($(RM) wasp/boards/$(BOARD)/watch.py; false)
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
$(RM) micropython/ports/nrf/build-$(BOARD)-s132/frozen_content.c
@ -70,7 +79,13 @@ micropython: build-$(BOARD_SAFE) wasp/boards/manifest_user_apps.py wasp/boards/$
BOARD=$(BOARD) SD=s132 \
MICROPY_VFS_LFS2=1 \
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 \
--dev-type 0x0052 \
--application micropython/ports/nrf/build-$(BOARD)-s132/firmware.hex \

View file

@ -254,7 +254,7 @@ To launch the simulator:
sh$ make sim
PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=.:wasp/boards/simulator:wasp \\
python3 -i wasp/main.py
python3 -i wasp/boards/simulator/main.py
MOTOR: set on
BACKLIGHT: 2
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.
The application can also be registered automatically when you load the
simulator if you add it to ``wasp/main.py``. Try adding lines 5 and 6 from
the above example into this file (between ``import wasp`` and
simulator if you add it to ``wasp/boards/simulator/main.py``. Try adding lines
5 and 6 from the above example into this file (between ``import wasp`` and
``wasp.system.run()``).
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
system using an over-the-air update with no tools or disassembly
required. nRF Connect for Android can be used to install both the
:ref:`wasp-bootloader<Bootloader nRF Connect>` and the
:ref:`main OS image<Main OS nRF Connect>`.
required. Gadgetbridge for Android can be used to install both the
:ref:`wasp-bootloader<Bootloader Gadgetbridge>` and the
:ref:`main OS image<Main OS Gadgetbridge>`.
.. note::
@ -330,12 +330,12 @@ DaFlasher for Android can be used to install both the
Installing wasp-bootloader
--------------------------
.. _Bootloader nRF Connect:
.. _Bootloader Gadgetbridge:
nRF Connect for Android
~~~~~~~~~~~~~~~~~~~~~~~
Gadgetbridge for Android
~~~~~~~~~~~~~~~~~~~~~~~~
For Pine64 PineTime devices running Infinitime then nRF Connect for Android
For Pine64 PineTime devices running Infinitime then Gadgetbridge for Android
can be used to install wasp-bootloader:
* Ensure the watch is fully charged before attempting to install the
@ -343,12 +343,14 @@ can be used to install wasp-bootloader:
sealed devices.
* Copy ``reloader-mcuboot.zip`` (see :ref:`Building wasp-os from source`) to
your Android device and download
`nRF Connect <https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp>`_
`Gadgetbridge <https://f-droid.org/en/packages/nodomain.freeyourgadget.gadgetbridge/>`_
for Android if you do not already have it.
* Wake the device so that Infinitime is showing a watch face.
* Connect to the *Infinitime* device usnig nRF Connect, click the DFU button
and send ``reloader-mcuboot.zip`` to the device.
* When the progress meter reaches 100% the nRF Connect will disconnect
* Connect to the *Infinitime* device usnig Gadgetbridge, tap on the "+" button on the
bottom right of the screen to add a new device, *Infinitime* should be detected.
* Tap on it and Gadgdetbridge will pair and connect to your device. Use the file browser
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.
* 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
@ -366,9 +368,11 @@ can be used to install wasp-bootloader:
.. note::
If you want to restore the PineTime factory firmware then you can
use nRF Connect to do this. Perform a long press reset and then
use nRF Connect to send ``reloader-factory.zip`` to the *PineDFU*
device.
use Gadgetbridge to do this. Perform a long press reset and then
use Gadgetbridge to send ``reloader-factory.zip`` to the *PineDFU*
device. GadgetBridge may list *PINE DFU* as an unsupported device.
See the work around at the end of
:ref:`main OS image<Main OS Gadgetbridge>`.
.. _Bootloader DaFlasher:
@ -465,23 +469,35 @@ logo and wait for a OTA update.
Installing wasp-os
------------------
.. _Main OS nRF Connect:
.. _Main OS Gadgetbridge:
nRF Connect for Android
~~~~~~~~~~~~~~~~~~~~~~~
Gadgetbridge for Android
~~~~~~~~~~~~~~~~~~~~~~~~
To install the main firmware using nRF Connect for Android:
To install the main firmware using Gadgetbridge for Android:
* Copy ``micropython.zip`` (see :ref:`Building wasp-os from source`) to
your Android device and download
`nRF Connect <https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp>`_
`Gadgetbridge <https://f-droid.org/en/packages/nodomain.freeyourgadget.gadgetbridge/>`_
for Android if you do not already have it.
* 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
nRFConnect, click the DFU button and send ``micropython.zip`` to the device.
Gadgetbridge, use the file browser application and send ``micropython.zip`` to the
device.
* When the upload is complete the watch will reboot and launch the digital
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:
DaFlasher for Android
@ -584,8 +600,14 @@ A default version of ``main.py`` is installed automatically when wasp-os initial
formats the external flash as a file system.
Most problems with normal mode operation occur either because ``main.py`` is
missing, out-of-date or corrupt. These issues most commonly result in an
entirely black screen when running the watch is running in normal mode.
missing, out-of-date or corrupt, or because too many applications are being started
by default, resulting in the system running out of RAM.
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::

View file

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

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

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