Daniel Thompson
bfd914a5d1
boards: simulator: Add ptr32 support
2020-04-17 17:19:11 +01:00
Daniel Thompson
66743d42c8
wasp: Manager: Bring in proper separation of apps
...
This is getting us much closer to the final UI concept. We have a
quick ring from which we can select typical apps such as clock and
stopwatch which will (eventually) be supplemented with step counting
and heart rate monitoriing. More exotic apps (currenrtly torch, self
test, settings) are all relagated to the launcher ring.
2020-04-14 20:05:57 +01:00
Daniel Thompson
10706a9704
wasp: stopwatch: Replace the stub with a "real" implementation
...
There are still some holes here. In particular the RTC resolution on
nRF devices (such as PineTime) is currently a full second (meaning
the centiseconds will always be zero. Nevertheless that isn't the apps
fault... as we can see when we run on the simulator.
2020-04-14 20:03:04 +01:00
Daniel Thompson
5fc802fb78
wasp: Manager: Push exceptions to the console as well as the crash app
2020-04-14 20:00:49 +01:00
Daniel Thompson
a77301ec64
fonts: Add sans36 (numerals only)
...
At 36pt this is already gobbling a fair bit of flash so, for now, we've
restricted this only numerals (and colon).
2020-04-14 20:00:04 +01:00
Daniel Thompson
64afea0d07
WIP: Introduce the quick_ring
2020-04-12 08:59:37 +01:00
Daniel Thompson
b649cd1b24
wasp: template: Implement optional application methods
2020-04-12 08:41:31 +01:00
Daniel Thompson
80d518b75b
wasp: apps: Add shortcuts to all apps
2020-04-12 08:40:49 +01:00
Daniel Thompson
64a97fce58
wasp: testapp: Sort tests alphabetically
2020-04-12 08:40:11 +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
4c09add2d8
docs: Add text descriptions of icons
...
Having the raw hex strings makes the docs look really unclean. Fix this
by providing a special version of icons for the "sphinx" board.
2020-04-11 20:49:06 +01:00
Daniel Thompson
683c3497e0
docs: Fix warnings and add a few extra apps to the docs
2020-04-11 20:26:12 +01:00
Daniel Thompson
af1379806c
wasp: simulator: Use Tab to replicate the physical button
2020-04-11 20:15:20 +01:00
Daniel Thompson
f68eb610c5
wasp: On-device crash reporting
...
If an application crashes let's report it on the device so it can be
distinguished from a hang (if nothing else it should mean we get better
bug reports).
2020-04-11 20:15:02 +01:00
Daniel Thompson
23368a659b
wasp: apps: Add a new (super simple) settings app
2020-04-10 20:30:20 +01:00
Daniel Thompson
f734568ad2
wasp: draw565: Optimize the bit expansion blitter slightly.
2020-04-10 20:23:12 +01:00
Daniel Thompson
22ca8886c2
wasp: draw565: Automatic RLE format conversion
...
From here we can also bring colour to the launcher!
2020-04-10 20:22:51 +01:00
Daniel Thompson
a1badfd95d
wasp: draw565: Fix colors when burst filling a line.
2020-04-10 20:20:01 +01:00
Daniel Thompson
3bcda8d546
Merge branch 'master' of https://github.com/daniel-thompson/wasp-os
2020-04-10 14:32:22 +01:00
Daniel Thompson
74511a1e1c
Merge pull request #7 from salcedo/master
...
wasp: pinetime: Release SPI NOR from deep power-down
2020-04-10 14:32:14 +01:00
Daniel Thompson
fd64abe882
wasp: draw565: Optimize the 2-bit RLE drawing functions
...
There's a bunch of different changes here but there are only really three
big wins. The biggest win comes from restructuring the 2-bit RLE decode
loop to avoid the inner function (~20%) but the switch to 16-bit writes in
_fill() and adoption of quick_write (e.g. no CS toggling) are also
note worthy (and about 5% each).
2020-04-08 21:50:42 +01:00
Daniel Thompson
841fbef8a6
wasp: testapp: Add RLE drawing benchmarks.
2020-04-06 22:04:21 +01:00
Daniel Thompson
8ed80eeeba
wasp: launcher: Experimental launcher implementation
...
It is not really the launcher itself that is immature. Rather that the
framework and UI concepts to move between applications isn't complete
yet.
2020-04-06 22:04:21 +01:00
Daniel Thompson
59bb70fa64
wasp: simulator: Optimize the drawing process
...
This makes per-pixel access more than double the performnace of a regular
pixelview (but at the expense of requiring numpy).
2020-04-06 22:04:21 +01:00
Daniel Thompson
a1a8f3f8a3
wasp: draw565: Add 2-bit RLE decoder
2020-04-06 22:04:21 +01:00
Daniel Thompson
2b5ebcef72
wasp: widgets: Add a scrolling indicator
...
As we enrich the navigation options we will increasinly need to visualize
between apps where up/down will switch us between rings and there
up/down is needed to scroll through content.
2020-04-06 22:04:21 +01:00
Daniel Thompson
bb4e76d852
wasp: testapp: Add an option to force an exception
...
We will shortly be adding machinary to handle application errors more
gracefully. This is a useful way to force an application error!
2020-04-06 22:04:20 +01:00
Daniel Thompson
83cc56969e
wasp: manager: make sleep() and background() callbacks optional
...
Making callbacks optional reduces pointless boilerplate in applications.
2020-04-06 22:04:20 +01:00
Daniel Thompson
6a6e393d1f
wasp: vibrator: Better default for pulse
...
These defaults are good for giving quick UI feedback.
2020-04-06 22:04:20 +01:00
Daniel Thompson
b5e69aead3
wasp: Manager: Parameterize the keep awake timer
...
This might be a reasonable preference for the setings but, more importantly,
we can also set blank_after to very high values to ensure the watch doesn't
sleep during the voice over in videos!
2020-04-06 22:04:20 +01:00
Daniel Thompson
8c35282214
wasp: Rename Debounce to PinHandler
...
Debounce was a lousy name...
2020-04-06 22:04:20 +01:00
Daniel Thompson
40b2482165
wasp: simulator: Swap up/down and left/right
...
This gives the simulator a more natural feel since the "swipe left" action
usually means "more a screen to the right". This will probably make
testing games impossible but makes it much easier to navigate the menus.
2020-04-06 22:04:20 +01:00
Daniel Thompson
c593e1e9f9
wasp: draw565: Allow the drawing context to be reset
...
The main reason to reset the drawing context is so that it can be reset
before we call foreground() on an application.
2020-04-06 22:04:20 +01:00
Daniel Thompson
b2622b579d
wasp: Add button presses to the event system.
...
Here the biggest changes are in the test application because we
refactor a number of the tests to make better use of the button.
Although applications may consume button events it does have a
default behavior which is to switch to the default application
(usually the clock).
2020-04-06 22:04:20 +01:00
Daniel Thompson
0cc7987689
apps: Remove unused support for effect animation
...
After a bit of testing I have not yet come up with a fast, visually
acceptable horizontal animated effect. Instead we simply reply on
screen blanking during the redraw... meaning there is no need for an
effect hint.
2020-04-06 22:04:20 +01:00
Daniel Thompson
d10f3dbc49
wasp: Get the terminology straight
...
As it turned out Direction was only a Direction because there were things
missing from the enumeration!
2020-04-06 22:04:20 +01:00
Daniel Thompson
0ac2321e82
wasp: Factor out the sleep/wake code
...
Pulling this out into a method allows it to be called by an application.
2020-04-06 22:04:20 +01:00
Daniel Thompson
afb9bd16b6
wasp: Add support for brightness caching and keep-awake signalling
2020-03-26 22:12:05 +00:00
Daniel Thompson
af33c7d79b
wasp: Major documentation string improvements.
2020-03-26 21:46:10 +00:00
Daniel Thompson
a9413db5cf
wasp: Move the constants into seperate container classes
2020-03-26 20:42:03 +00: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
Brian Salcedo
dcc51cd094
wasp: pinetime: Release SPI NOR from deep power-down
2020-03-15 09:38:47 -04:00
Daniel Thompson
5a234c16ad
wasp: Rotate the swipe UI by 90 degrees
...
This is something of an experiment but now the app roll is traversed using
horizontal swipes and applications should primarily use vertical swipes
to navigate internally. This is mostly because if "feels" better but it
also leaves the vertical scrolling hardware available for use by the
app.
2020-03-13 19:02:29 +00:00
Daniel Thompson
3ded49c5ef
fonts: sans24: Minor refactor to reduce memory allocation
...
This is a useful but modest optimization (maybe 3% in string
rendering.
2020-03-09 21:33:29 +00:00
Daniel Thompson
820764081e
drivers: st7789: Automatically park ready for the next call to write data
...
This makes line-by-line drawing more efficient because don't have to
handle the dc line. The optimization targets font rendering and if good
for slightly less than 10% rendering improvement.
2020-03-09 21:32:34 +00:00
Daniel Thompson
69bc452c65
draw565: Optimize the font rendering
...
This is a big one... more than 4x increase in font rendering performance!
2020-03-09 21:29:35 +00:00
Daniel Thompson
031d139b7c
wasp: draw565: Refactor to allow apps to focus on the drawable.
2020-03-09 00:00:13 +00:00
Daniel Thompson
5413d826d7
wasp: Re-factor how Draw565 is used.
...
Moving it from applications into the watch is useful for two reasons.
Firstly it means applications don't need to know as much about the
display color depth and secondly it makes it easier to replace the
drawing routines with wasptool.
2020-03-08 23:16:30 +00:00
Daniel Thompson
24438ad05d
testapp: Smoother transitions between tests
2020-03-08 21:31:17 +00:00
Daniel Thompson
d236db68dc
testapp: Show the render time for the string test
2020-03-08 21:22:54 +00:00
Daniel Thompson
cfffeddd77
wasp: testapp: Extend with a string render test
2020-03-08 20:48:48 +00:00
Daniel Thompson
a864a93706
wasp: manager: Blankt the display during app transitions
2020-03-08 20:47:19 +00:00
Daniel Thompson
adf9a33c9e
drivers: cst816s: Minor tweaks to the generated documentation.
2020-03-08 17:40:54 +00:00
Daniel Thompson
d2058fb87f
docs: Increase the scope of the documentation
...
We now generate documentation for everything included in the PineTime
manifest (although, at this stage, not everything in the manifest has
all the required docstrings).
2020-03-08 17:40:27 +00:00
Daniel Thompson
799a66c9b9
wasp: Move the apps into their own directory.
2020-03-08 17:39:39 +00:00
Daniel Thompson
b5b96bd776
wasp: Integrate the touch driver
...
At this point we are starting to bring an event model for applications
but there's still a long way to go!
2020-03-08 10:18:08 +00:00
Daniel Thompson
138425f4d4
wasp: manager: Start refining the application interface
...
This is the first step in starting to formalize the seperation of
applications from the system manager.
2020-03-07 11:52:42 +00:00
Daniel Thompson
1ebafc083b
wasp: simulator: Add CST816S simulation
2020-03-07 11:50:26 +00:00
Daniel Thompson
9664c394a6
drivers: nrf_rtc: Add a higher res monotonic timer
2020-03-07 11:49:35 +00:00
Daniel Thompson
1b334f7ad9
wasp: pinetime: Enable the cst816s by default
2020-03-07 11:48:17 +00:00
Daniel Thompson
e5f455b5ba
drivers: cst816s: Decouple from the watch module
2020-03-07 11:47:25 +00:00
Daniel Thompson
948454a33b
wasp: cst816s: Initial PoC driver
2020-03-06 21:09:43 +00:00
Daniel Thompson
7fc4592383
wasp: draw565: Add some docstrings
2020-02-23 20:52:09 +00:00
Daniel Thompson
c3d4ddafbc
wasp: clock: Add some docstrings
2020-02-23 20:51:58 +00:00
Daniel Thompson
5c0d86d938
docs: Fix some errors in the sphinx board
2020-02-23 20:51:26 +00:00
Daniel Thompson
41647556c1
clock: Reduce the update rate of the battery meter
...
In addition to the fix (which is simple) we also modify the button handling
of the simulator because, rather by acident, it relies on the bugs in the
battery meter redraw to ensure the simulator stays active.
2020-02-23 20:19:37 +00:00
Daniel Thompson
3ba356f6c4
docs: Add a sphinx board
...
The simulator board does rather too much when we import watch.py. This
change means we don't need SDL just to generate the documentation!
2020-02-23 20:16:23 +00:00
Daniel Thompson
019ca1b4ed
wasp: clock: Add date indication
2020-02-19 19:57:08 +00:00
Daniel Thompson
b508f4dc26
wasp: Add a simple font renderer
2020-02-19 19:57:08 +00:00
Daniel Thompson
0c4754fc74
wasp: Start collecting the fonts in a single directory
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
b2c5b482d5
wasp: pinetime: Enable filesystem support
2020-02-09 19:49:52 +00:00
Daniel Thompson
9c299afe41
wasp: Add pure-python SPI NOR FLASH drivers
2020-02-09 19:47:02 +00:00
Daniel Thompson
bb033577da
drivers: st7789: Optimize RLE decoding loop
...
Migrate the filling of the line buffer into a seperate function.
This does naturally reduce the cost of the loop management but
much more importantly allows us to use viper native code
generator.
2020-02-08 07:49:38 +00:00
Daniel Thompson
b48df32eb1
wasp: manager: Wake up on a change of charging state
2020-02-04 08:49:10 +00:00
Daniel Thompson
2d0df5aed5
wasp: clock: Tweak the greying of the high order digits
2020-02-04 08:48:13 +00:00
Daniel Thompson
be6c6b02b0
wasp: clock: Reduce battery meter redraws
...
The ADC on nRF doesn't run precisely stable which means the battery
meter can flicker if updated too often. This will eventually
be fixed by the framework but, for now, let's just force the
update rate to be fairly slow.
2020-02-04 08:47:14 +00:00
Daniel Thompson
5489437f78
wasp: demo: Power up the display before launching the demo
2020-02-04 08:44:21 +00:00
Daniel Thompson
1d8b900d40
waps: widgets: Improve the battery meter athtetics
...
Add some extra internal padding and draw the battery in red when
power is critically low.
2020-02-04 08:43:49 +00:00
Daniel Thompson
3e0cb4eed5
wasp: manager: Avoid spurious garbage collection
...
Running garbage collection when idle it a waste of power...
2020-02-03 22:45:12 +00:00
Daniel Thompson
1f2c25a7bd
wasp: clock: Add a simple battery meter
2020-02-03 22:35:16 +00:00
Daniel Thompson
57035ce080
wasp: st7789: Make fill() control sizing
2020-02-03 22:34:54 +00:00
Daniel Thompson
118b7bab00
wasp: st7789: Reuse the pre-allocated linebuffer
2020-02-03 22:32:53 +00:00
Daniel Thompson
b124a747dd
wasp: simulator: Add battery level simulation
...
In order to get best test coverage the act of reading the battery
results in the battery either charging or discharging.
2020-02-03 22:29:57 +00:00
Daniel Thompson
3892f07e62
wasp: Add simple clock app
...
At this point both the simulator and a PineTime will come up
and show a clock (although in the case of the PineTime the clock
will just come up at 12:00).
2020-02-03 19:26:08 +00:00
Daniel Thompson
fc74f7e37b
wasp: simulator: Add RTC support
2020-02-03 19:23:10 +00:00
Daniel Thompson
a5caa845b7
wasp: simulator: Add support for machine.[light|deep]sleep()
2020-02-03 19:22:54 +00:00
Daniel Thompson
d0f18a15fa
wasp: simulator: Fix column and row select
2020-02-03 19:14:44 +00:00
Daniel Thompson
127df66335
wasp: pinetime: Basic RTC support
...
Currently this supports time only (no date) and it based on the
RTCounter class which is customized for nRF ports. At present
the nRF port doesn't have proper machine.rtc support so we have
implemented within wasp instead.
2020-02-03 19:12:04 +00:00
Daniel Thompson
8168dd5939
wasp: st7789: Add positioning support to rleblit
2020-02-03 19:09:16 +00:00
Daniel Thompson
38c18b6403
wasp: fonts: Add a large font for digital clock apps
2020-02-03 19:08:40 +00:00
Daniel Thompson
e21f2a79ca
wasp: simulator: Add ST7789 simulation
2020-02-01 20:20:53 +00:00
Daniel Thompson
c7e11d6020
wasp: Adopt a low power mode shortly after booting
...
This is useful for battery run-down testing and so on.
2020-02-01 20:20:30 +00:00
Daniel Thompson
9eb5d19e35
wasp: dsd6/nitrogen: Fix the frozen manifests
2020-02-01 13:44:28 +00:00
Daniel Thompson
fed9c58205
wasp: pinetime: Start an RTC at board board
2020-02-01 13:42:11 +00:00
Daniel Thompson
262d93c76c
wasp: simulator: First steps towards a simulator
...
Currently this just traces SPI activity from the ST7789 driver but its
a good baseline to start building up test functions from.
2020-01-31 19:36:55 +00:00
Daniel Thompson
e36caf5997
wasp: Add a super-simple vibrator driver
2020-01-31 19:34:04 +00:00
Daniel Thompson
0acbcc415b
wasp: Reorganise the board support
2020-01-30 22:11:31 +00:00
Daniel Thompson
a34d65d7fd
wasp: Add battery support
2020-01-30 21:46:35 +00:00
Daniel Thompson
d3d98c8ffb
wasp: Re-enable REPL by default
...
The demo is still there but it needs to be activated by hand
(or the manifest can be updated to include main.py by default.
2020-01-29 17:30:57 +00:00
Daniel Thompson
80bee2d305
wasp: drivers: st7789: Remove redunant delay
2020-01-28 21:19:36 +00:00
Daniel Thompson
e88165b429
wasp: drivers: st7789: native code gen for rleblit
...
This is a useful performance boost... but there is still
scope to get this a lot quicker.
2020-01-28 18:45:27 +00:00
Daniel Thompson
6474317574
wasp: pinetime: Fix backlight flicker during bootup
2020-01-28 18:45:27 +00:00
Daniel Thompson
8f231430b3
logo: Gather together the bitmaps into a single variable
...
The PineTime demo will also now cycle through both the Pine64 and
MicroPython logos.
2020-01-28 18:45:26 +00:00
Daniel Thompson
06b8730af8
wasp: Turn-key demo
...
Press ^C to terminate the demo and start programming in python!
2020-01-28 18:45:26 +00:00
Daniel Thompson
3157bcc310
wasp: drivers: st7789: Replace with custom uPy driver
...
This driver was rewritten from scratch, borrowing some idioms
from the SSD1306 driver to ensure an efficient implementation
in uPy.
2020-01-28 18:45:15 +00:00
Daniel Thompson
7ea3acc21a
wasp: Add a RLE encoded Pine logo
2020-01-23 18:54:26 +00:00
Daniel Thompson
2805a719f2
wasp: st7789: Add a simple proof-of-concept display driver
2020-01-21 22:10:50 +00:00