1
0
Fork 0
Commit graph

55 commits

Author SHA1 Message Date
Daniel Thompson
ad9714b0dc manager: Recategorize the theme labels for apps
By default bright and mid are white/grey tones, the ui widgets are
blue and the spot colours are different variants of orange.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-31 19:22:54 +00:00
Daniel Thompson
1eada36ff4 wasp: manager: Byte-swap the theme encoding
Currently the theme is explicitly little endian. This does match the
underlying hardware but makes it needlessly difficult to hand edit
themes. Switch the default theme and theming tools over to big endian
form and add comments to the default theme to support hand editing.

We also expand the ASCII characters in the default them with hex codes.
This is the final step needed to make hand edited themes trivial to work
with.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-31 10:09:38 +00:00
Daniel Thompson
4425d81485 tools: rle_encode: Add a parameter for direct CLUT lookup
This can be useful for hand decoding and authoring of images.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 09:05:35 +00:00
Daniel Thompson
ed4a5503ba tools: rle_encode: Make 2-bit encoding the default
2-bit encoding is fully ROMable and therefore is more RAM efficient than
the older 1-bit encoding.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-28 12:02:45 +00:00
Daniel Thompson
8824646939 tools: themer: Fix the online help
Correct the indentation and the quoting of the theme strings.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-13 16:51:07 +00:00
Daniel Thompson
4468285c34 widgets: BatteryMeter: Fix theme handling
Add the battery frame to the theme so it matches the frame used for
charging and rename accordingly.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-13 16:51:07 +00:00
kozova1
2624a6e998 Added basic theming engine.
This theming engine uses a bytestring (but supports anything indexable,
as long as the index results are a byte long),
stored as `wasp.system._theme`.
It has a default value, which should not change anything about the way this looks currently.

The theme can be set via `wasp.system.set_theme`,
but this should *ONLY* be used in `main.py`.
`wasp.system.set_theme` will return True if it was successful,
or False if the theme is of an old format.
Using an old format theme will *not* crash the watch,
but will use the default theme instead.

To theme this, one has to use tools/themer.py (use flag -h for complete explanation)
to generate a bytestring that's added in main.py (see diff).

The bytestring is then loaded into 'wasp.system._theme'.
Theme values can be looked up by apps by using `wasp.system.theme("theme-key")`.
Theme keys appear in the function body of `wasp.system.theme()`.

I've took the liberty of converting existing apps to use this method,
and it seems to work well.

A test theme is provided in `tools/test_theme.py`

Signed-off-by: kozova1 <mug66kk@gmail.com>
2020-12-13 16:51:07 +00:00
Siroj42
c1773a3976 tools: Update intelhex, hexmerge.py and nrfutil for python 3.9 compatibility
Signed-off-by: Joris Warmbier <siroj42@t-online.de>
[daniel@redfelineninja.org.uk: Remove changes to tools/hexmerge.py]
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-12 09:11:12 +00:00
Daniel Thompson
fd288e01b8 tools: hexmerge: Replace redundant copy with a symlink
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-10 19:44:40 +00:00
Daniel Thompson
67d2ed83d2 tools: rle_encode: Add support for rendering 2-bit RLEs to C src
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-11-08 14:29:10 +00:00
Daniel Thompson
9dd793ff19 hex2c.py: Adopt a maximum chunk size
Large segments will be chunked into 32K blocks to they can be handled
seperate. Creating a maximum chunk size allows us to perform a few
tricks in the reloader by allowing us to overwrite parts of the reloader
whilst it is running!

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-11-04 19:06:03 +00:00
Daniel Thompson
2b244ec2a3 tools: wasptool: Improve error reporting if we can't sync
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-10-21 20:49:48 +01:00
Daniel Thompson
2bb0837440 tools: wasptool: Fix verbose/not-verbose handling
Fixes: 2839a04 ("tools: wasptool: Hide the stack trace on pexpect timeout")
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-10-21 20:48:12 +01:00
Daniel Thompson
2839a042be tools: wasptool: Hide the stack trace on pexpect timeout
The default pexpect exception dump is verbose and potentially useful if
you know how to read it... but let's handle timeouts in a friendlier way.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-10-10 21:42:51 +01:00
Daniel Thompson
b6357ad4d8 tools: wasptool: Wait longer for DFU to come up
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-10-10 21:42:51 +01:00
Panagiotis Vasilopoulos
eca0551c3e
wasptool: Change Python shebang to ensure compatibility
- Certain Unix-like systems (such as *BSD systems) do not use /usr/bin/python3 as the default Python path. This small change will ensure a higher degree of compatibility.

Signed-off-by: Panagiotis Vasilopoulos <hello@alwayslivid.com>
2020-08-14 08:53:27 +03:00
Daniel Thompson
c74d9e296b tools: preprocess: Ensure we use python3 interpreter
Not being explicit about the correct python interpreter causes trouble
on distros that do not alias python to python3 and/or that do not
install python2 by default.

Reported by: Mirko Covizzi <mrkcvzz@gmail.com>
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-08-02 11:54:58 +01:00
Daniel Thompson
b4e78935ba wasptool: Add support for selecting devices by name and MAC address
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-07-26 21:04:30 +01:00
Daniel Thompson
ae5743529f wasp: Switch to scheduling from interrupt
This has two useful properties. Firstly it means the watch will be
maintained in the background, allowing the REPL to be used for
notifications and other updates. Secondly it will save a little bit
of power by reducing the work needed to handle spurious wake ups.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-06-30 23:04:01 +01:00
Daniel Thompson
f102d75ee7 wasptool: Add support for binary uploads
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-06-20 20:16:25 +01:00
Daniel Thompson
d172349565 wasptool: Fix --reset
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-06-20 20:15:36 +01:00
Daniel Thompson
0678128c26 tools: hex2c: Add crc32s for each segment
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-06-09 21:31:55 +01:00
Daniel Thompson
60c48b447c wasptool: Better reporting of out-of-memory problems when pasting 2020-05-25 09:23:58 +01:00
Daniel Thompson
1abda8dd17 wasptool: Enable fully automatic OTA firmware delivery 2020-05-24 14:20:50 +01:00
Daniel Thompson
7f6b1b9059 draw565: Switch to a different palette for RLE 2-bit images
This is an incompatible change... older 2-bit images will need to be
re-encoded to display correctly.
2020-05-18 22:17:51 +01:00
Daniel Thompson
c3bc871727 pynus: Switch to the wasp-os version 2020-05-15 20:12:54 +01:00
Daniel Thompson
d11e6eb4a1 Make wasp-os namig consistant
Rename WASP to wasp-os (or Wasp-os)
2020-05-14 22:41:05 +01:00
Daniel Thompson
399b956eb5 wasptool: Add a command to compare RTC against the local workstation
This allows us to observe RTC drift during reboot relatively easily.
2020-05-09 14:21:39 +01:00
Daniel Thompson
b0dec58769 tools: ota-dfu: Adopt latest version 2020-05-09 14:09:45 +01:00
Daniel Thompson
dc4ea4ab62 reloader: OTA flashing tool for wasp-os 2020-04-26 19:21:28 +01:00
Daniel Thompson
17a8cfc346 tools: ota-dfu: Include a Linux-native OTA DFU tool 2020-04-26 19:18:17 +01:00
Daniel Thompson
5ce0d4cd6f tools/hexmerge: Fix file permissions 2020-04-26 15:01:48 +01:00
Daniel Thompson
2e7db3ae19 tools: wasptool: Improve command output for --exec and --eval 2020-04-26 15:01:48 +01:00
Daniel Thompson
1fe0602995 tools: wasptool: Introduce simple chunking
This reduces the memory overhead required to --exec a file (although
we will still have problems with big classes).

For now we have avoided matching "^def" since we need additional
handling for decorators!
2020-04-17 17:18:27 +01:00
Daniel Thompson
fe43091bcf tools: wasptool: Add support for --reset 2020-04-17 17:17:24 +01:00
Daniel Thompson
50ecff29ef wasp: Automatically generate watch.py for PineTime
This should ensure that main.py is always up to date.
2020-04-11 21:12:18 +01:00
Daniel Thompson
8cf9369efa tools: wasptool: Change characters used in the progress bar 2020-04-10 20:31:26 +01:00
Daniel Thompson
906c313e49 tools: rle_encode: Optimize the 2-bit encoding slightly
This results in a image that is entirely ROMable.
2020-04-10 20:20:48 +01:00
Daniel Thompson
02b92ff90d tools: wasptool: Add a progress bar to the BLE uploads 2020-04-06 22:04:21 +01:00
Daniel Thompson
e2234112ff tools: rle_encode: Add a new "2-bit" encoding mode. 2020-04-06 22:04:21 +01:00
Daniel Thompson
b9fe31241c Add licensing information for all wasp-os files. 2020-03-22 15:40:18 +00:00
Daniel Thompson
f8bd1a7461 Rename manager.py and expose its interfaces to all applications
This is a big change that break compatiblity with existing applications
*and* with existing installed versions of main.py.

When upgrading it is import to update main.py:

    ./tools/wasptool --upload wasp/main.py
2020-03-22 12:37:19 +00:00
Daniel Thompson
321484b845 tools: wasptool: Sneaky hack to avoid copying docstrings to the device 2020-03-09 21:34:01 +00:00
Daniel Thompson
753a1e68f1 tools: wasptool: Reorder the execution of arguments.
The new ordering is tuned to allow --exec to be used to download new code,
--eval to be used to set it up and then --console used to interact with
it.
2020-03-08 10:16:49 +00:00
Daniel Thompson
b508f4dc26 wasp: Add a simple font renderer 2020-02-19 19:57:08 +00:00
Daniel Thompson
3d091e3422 wasptool: Launch the console after all other arguments
This allows for an elegant iterative development approach where we upload
some code than then interact with it, for example:

  wasptool --exec wasp/drivers/nrf_rtc.py --console
  rtc = RTC(watch.rtc.counter)
2020-02-19 19:57:08 +00:00
Daniel Thompson
df11539c29 wasp: Simple shell commands (based on upysh) 2020-02-19 19:57:08 +00:00
Daniel Thompson
f689c90498 wasp: Add full dd-mm-yyyy calender tracking 2020-02-19 19:57:08 +00:00
Daniel Thompson
c9ab38d757 wasptool: Simple tool for interacting with wasp-os devices 2020-02-19 19:57:08 +00:00
Daniel Thompson
fb252818e9 tools: rle_encode: Derive variable names from filenames 2020-02-03 19:07:11 +00:00