1
0
Fork 0
Commit graph

474 commits

Author SHA1 Message Date
Daniel Thompson
71069e0170 apps: calc: Use the UI colours to generate a background
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-31 19:26:34 +00:00
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
6212a6275a drivers: bma421: Switch over to reset_step_counter()
Currently the bma421 driver simple re-initializes the sensor when asked
to set the step counter to zero. Switch over to the proper function
for this.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-31 09:31:47 +00:00
Daniel Thompson
bb1bee8feb apps: steps: Fix typo in docstrings
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-30 10:29:37 +00:00
Daniel Thompson
b8ba1a9eba widgets: ConfirmationView: Fix hit box problems
The ConfirmationView became broken when we converted it's images over to
2-bit RLE. That happened because the confirmation view relied on the
the 1-bit RLE to dynamically generate hit boxes.

Currently the code pre-calculates the hit box which is a waste of RAM.
Let's rip out the existing hit box logic and replace it with much larger
("fat finger") hit targets.

We make the touch() method more closely adopt the idioms of other UI
components (e.g. don't return the dialog status... just whether or
not we handled the touch).

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-30 10:29:02 +00:00
Daniel Thompson
116c138079 bma42x-upy: Implement step counter reset
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-30 09:56:22 +00:00
Daniel Thompson
bbfaefc97e docs: Update screenshots with new battery meter
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 20:24:16 +00:00
Daniel Thompson
86002b4188 apps: alarm: add a full colour icon
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 20:14:13 +00:00
Daniel Thompson
e4ce90d2eb apps: alarm: Adopt the spinner widget
Replace the open coded spinner widget with the newly introduced system
one.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 20:13:18 +00:00
Daniel Thompson
f19188b962 apps: alarm: avoid setting a "silly" alarm during app init
The alarm is off by default so there's no reason to set an alarm that
is disabled. Let's stop doing that.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 20:09:47 +00:00
Daniel Thompson
2641616ff6 widgets: Spinner: Add a simple spinner widget
We are able to add this to the self tests without having to create a
special page. Instead we can modify the existing notifications test
to utilize the spinner.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 20:07:50 +00:00
Daniel Thompson
62bca4d288 simulator: Better align simulator RTC API with the nRF API
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 16:07:37 +00:00
Daniel Thompson
d695981323 TODO: Add new widgets to the roadmap
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 12:36:52 +00:00
Daniel Thompson
b47298d446 apps: alarm: Adopt the checkbox widget
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 12:33:05 +00:00
Daniel Thompson
632ec713a4 widgets: Checkbox: Add a simple checkbox widget
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 12:32:38 +00:00
Daniel Thompson
3ddb7fc13d widgets: ConfirmationView: minor docstring tweak
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 12:32:04 +00:00
Daniel Thompson
f8231bc0ac widgets: Slider: Adopt draw565.lighten for palette management
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 12:31:38 +00:00
Daniel Thompson
ff76abfb8b draw565: Add lighten/darken functions
Add functions to generate shades from a single (usually theme provided)
basic palette colour.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 12:30:20 +00:00
Daniel Thompson
bffd41ea44 TODO: A couple of small additions to the roadmap
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 12:28:03 +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
0318640f62 apps: calc: Remember the results between invocations
Currently if you spend more then 15 seconds looking up figures or
transcribing the answer then the system will switch back to the
clock and the answer will be lost.

Fix this by remembering the output between invocations.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 08:59:53 +00:00
Daniel Thompson
21210c5c07 apps: calc: Rewrite the display and calculation engine
Currently calculations such as 22/7 do not work correctly on the
simulator (which uses double precision floating point). Fix this
by explicitly truncating the strings when needed.

Additionally the current calculate() method has some problems when
the calculation cannot be evaluated since it will needlessly clear out
the calculation. Push calculate (and the exception handling) into the
caller and report errors using the vibration motor instead.

Finally we rename display_output() to the more idiomatic _update().

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 08:59:53 +00:00
Daniel Thompson
e570bf4f26 apps: calc: Optimize the fields lookup structure
Currently the fields is a list of lists of strings. This will needlessly
consume RAM so lets switch it over to a simple string (which is immutable
and can be stored in flash).

We also replace indices with simple x and y variables. In addition to
avoiding a (temporary) memory allocation this is also easier to use
when looking up in fields.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 08:59:53 +00:00
Daniel Thompson
60fecc9469 apps: calc: Draw a closed grid
Currently the calculator uses an open grid. It's a matter of taste but
I prefer a closed grid.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 08:59:53 +00:00
Daniel Thompson
0884d22799 apps: calc: Correct after draw565 bug fix
Currently the coordindates used for line drawing are "tuned" for a bug in
the line drawing code (and now draw off the edge of the screen). Fix this.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 08:59:53 +00:00
Daniel Thompson
314947278d draw565: Allow strings to be right justified
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-29 08:59:48 +00:00
Daniel Thompson
01a7ad4d78 draw565: Handle empty strings when calculating the bounding box
Currently the empty string cannot be drawn into a fixed width box.
Fix this by adding a special case for empty strings.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-28 14:28:54 +00:00
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