1
0
Fork 0
Commit Graph

646 Commits (76b6e35f9763b9e194c970658ad81bdcaefef448)

Author SHA1 Message Date
Daniel Thompson 8c1ab85257 draw565: Fix bug in the straight line optimization
Currently the line drawing code does not draw the final pixel of
straight lines. Thus a line from (0, 0) to (10, 10) finishes on a
different pixel to (10, 0) to (10, 10).

Fix this by removing the spurious subtract one from the end point

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-28 14:27:10 +00:00
Daniel Thompson 6d74d4f585 apps: calc: Adopt the system theme for accent colors
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-28 14:24:00 +00:00
Daniel Thompson 77b693414e apps: calc: Move the copyright header to the top of the file.
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-28 14:20:17 +00:00
Johannes Wache a1ee40016d apps: calc: Created memory-saving calculator app
Signed-off-by: Johannes Wache <jbwa@posteo.de>
2020-12-28 12:06:51 +00:00
Daniel Thompson 0e31c0a937 TODO: Update for the recent flurry of changes
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-28 12:03:02 +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 0edee8067e simulator: Start with a higher initial voltage
Starting with the battery full makes testing the battery meter easier...

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-28 12:01:51 +00:00
Daniel Thompson aef6466550 icons, fonts.digits: Switch over to 2-bit RLE encoding
The 2-bit RLE encoding, in addition to supporting colour is also fully
ROMable meaning we can save 32 bytes of RAM per image by switching to
2-bit encoding.

Switch everything in icons and font.clock over to 2-bit encoding.

Note: this requires all the clock PNG files to be reencoded (because
      they were originally in 1-bit grayscale format and this is no
      longer supported by the encoder).

This reduces RAM overhead by 480 bytes and has only a negligable effect
on FLASH usage (+4 bytes).

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-28 12:01:15 +00:00
Daniel Thompson 8abb6f3f4d widgets: Reduce the size of the battery icon
Currently the battery icon is overlarge compared to other status bar
icons such as the BT and notification icons (both of which are 32px
high). Fix this by redrawing the battery artwork and updating
the widgets in the status bar.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-28 11:12:16 +00:00
Daniel Thompson ff958d154f apps: snake: Update artwork
Update the icon so it more closely resembles the in-game visual style
(and also so it compresses better) and update the screenshot since the
old one is the wrong size (FullHD instead of 358x406) and doesn't render
correctly in the documentation.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-28 10:08:15 +00:00
Daniel Thompson f38e7f8936 apps: snake: Fix screenshots
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-27 19:35:09 +00:00
Daniel Thompson 286a5ffe2d apps: chrono: Minor visual improvements
Make the ticks and hands larger and shorten the hands slightly to avoid
visual glitches during "undraw".

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-27 18:19:07 +00:00
Daniel Thompson b7c622c03d draw565: fix width handling for vertical and horizontal lines
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-27 18:18:14 +00:00
Johannes Wache 6d3f2126bf apps: snake: fix a couple of errors
Signed-off-by: Johannes Wache <jbwa@posteo.de>
2020-12-27 18:16:03 +00:00
Daniel Thompson 726d5c8554 apps: chrono: Implement a simple analogue watch face
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-27 09:13:49 +00:00
Daniel Thompson 0ae31a53b3 draw565: Add a polar line drawing function.
Polar coordinates are very convenient for implementing anything with
radial lines (such as a traditional watch face).

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-27 09:07:06 +00:00
Daniel Thompson 8c03ddbb7a draw565: Add width to the line drawing function
Currently all lines are a single pixel wide. To draw wider lines we
must draw two parallel lines with a single pixel offset and this is
a *very* inefficient approach, espeically on ST7789 where we spend
longer setting the clipping window than we do drawing each pixel.

Fix this by constructing a line using a variable sized square rather than
a single pixel. This will "overdraw" (some pixels will be drawn more than
once) but since square blocks can be efficiently transferred to the
display the overdraw is acceptable.

Note: It is a difficult decision whether to maintain the convention that
      color is the last argument or to keep compatibility with existing
      line drawing tests. This patch opts for the former and fixes up
      all uses within the existing codebase.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-27 08:52:54 +00:00
Daniel Thompson 8a14faa668 draw565: Improve default argument values for line()
Currently there are default argument values for the start and end
coordinates but the defaults don't really make any sense since there
is no reason to prefer the value 0 over any other. Remove them.

Similarly color currently defaults to 0xffff which isn't right. It
should default to the foreground colour.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-27 08:40:45 +00:00
Daniel Thompson 2034340f3b tests: Auto-discover applications and try to switch to them
Currently `make check` doesn't test any not-default applications.
Fix this by automatically discovering constructors and ensure that the
application can be started and stopped without generating an exception.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-26 18:07:45 +00:00
Daniel Thompson 421a32de58 micropython: Improve wdt logic
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-26 15:12:43 +00:00
Daniel Thompson ffb460d7df TODO: Roadmap update
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-26 15:10:30 +00:00
Daniel Thompson 8ac5f6c16d github: workflows: Fix add-path problems
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-24 14:14:39 +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
Daniel Thompson e44e605b7a apps: clock: Fix theme handling
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
Daniel Thompson 784c9bb36d apps: testapp: Automatically report free memory
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-13 16:07:24 +00:00
Daniel Thompson 338925b4a8 apps: testapp: Make the line benchmark use 360 degrees
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-12 18:19:57 +00:00
Kozova1 c17abd1728 draw565: Added line drawing function
This is the API:
drawable.line(x1, y1, x2, y2, color)

The function has optimizations for the case of vertical or horizontal lines.

Signed-off-by: Kozova1 <mug66kk@gmail.com>
[daniel@redfelineninja.org.uk: Minor update to commit message]
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-12 18:18:01 +00:00
Daniel Thompson 339b835782 apps: snake: Remove redundant import
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-12 18:15:33 +00:00
Daniel Thompson 941d4a264d boards: simulator: Additional tests
Start to work (most of) the code paths in the self test application.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-12 18:15:15 +00:00
Daniel Thompson e3b2c7bf7d boards: simulator: Improve spi.write() simulation
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-12 12:57:06 +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
kozova1 502efa7493 apps: settings: Add Scroll Indicator
This commit adds a ScrollIndicator widget to the settings app,
to help users realize they can scroll there.

Signed-off-by: kozova1 <mug66kk@gmail.com>
2020-12-05 20:51:27 +00:00
Daniel Thompson 896a4e1a8d simulator: Suppress the pysdl2/numpy warning
This makes the simulator look nicer when it starts up... but it
doesn't help the simulator.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-04 20:35:16 +00:00
Daniel Thompson 46bd454392 simulator: test: Grey box stopwatch test
Currently we can act on the controls but we cannot "see" the display
in the test suite. That leads us to a slightly odd form of "grey box"
testing. It's functionally black box testing but some of the asserts
have to reach inside the components instead of looking at the display.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-04 20:34:23 +00:00
Daniel Thompson 901e43870e simulator: tests: Parameterize the basic app tests
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-04 20:32:40 +00:00
Daniel Thompson 2bb5ae3a89 Makefile: Allow specific tests to be run
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-04 20:31:14 +00:00
Daniel Thompson f1f5cc9e0c simulator: Introduce fully automatic testint
Currently the tests do little more than fire up the simulator and
switch into (and out of) the built in applications. However this is
useful and allows us to fully integrate as a CI job.

Unfortunately the numpy warning from pysdl2 mean we have been forced
to disable all warnings to prevent pytest from collecting and reporting
them.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-04 20:11:41 +00:00
Carlosgg 3fb1faceab Notify level in settings app
Signed-off-by: Carlos Gil Gonzalez <carlosgilglez@gmail.com>
[daniel@redfelineninja.org.uk: Fixed board support for simulator and
sphinx (a.k.a. doc builder)]
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-11-29 20:20:03 +00:00
Johannes Wache e450ccf9f0 apps: snake: Add a snake game application
Signed-off-by: Johannes Wache <jbwa@posteo.de>
[daniel@redfelineninja.org.uk: Removed some couple of unwanted merge artifacts]
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-11-29 20:08:59 +00:00
Daniel Thompson bdd3f91b77 github: actions: Ensure warning free docs build
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-11-29 20:01:21 +00:00
Daniel Thompson 233c136a5c apps: alarm: Add the alarm app to the library
Like the other library applications this is enabled in the simulator and
included in the flash image but is disabled by default to conserve RAM
(and to give time to new apps to mature and receive improvements).

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-11-29 19:14:31 +00:00
Daniel Thompson 39c9344b14 apps: alarm: Fix touch handling when the alarm is ringing
Currently the widgets react to touch when the alarm is ringing (and they
are invisible. For now we fix this by disabling the alarm on a touch
event. Maybe the app should reject touch events since they could acidentally
dismiss the alarm... but we already disable the alarm if we get a swipe
event so this doesn't make things much worse than they already are!

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-11-29 19:14:31 +00:00
Daniel Thompson 707c4e2fa7 apps: alarm: Adopt 2-bit RLE for the icon
The long term plan is to retire and remove the 1-bit RLE code from wasp-os
so we don't want new icons using that encoding.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-11-29 19:14:31 +00:00
Siroj42 27413eb5e1 apps: alarm: Add Alarm application based on the new alarm system
Signed-off-by: Joris Warmbier <siroj42@t-online.de>
2020-11-29 19:14:31 +00:00
Daniel Thompson 02d5d8ca28 docs: Makefile: Turn sphinx warnings into errors
Currently patches that break the documentation build are not triggering
CI failure. Fix this.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-11-29 19:14:03 +00:00
Daniel Thompson 66cbfa20e8 sphinx: icons: Get the doc build working again
Fixes: 393dfefc86 ("apps: pager: notifications: Added remove all notifications dialog")
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-11-29 19:12:54 +00:00
Daniel Thompson 057c140f0e apps: pager: notifications: improve swipe handling
Currently the swipe handling added for the confirmation view has a number
of prolems: it does not work at all for multi-screen notifications, it
interferes with the haptic feedback if we keep swiping down and an up
swipe incorrectly dismisses whole notification app.

Fix these.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-11-29 09:12:14 +00:00