summaryrefslogtreecommitdiff
path: root/wasp
AgeCommit message (Collapse)Author
2021-06-20wasp: Manager: Rewrite the startup logicDaniel Thompson
Reduce the number of applications imported by the manager and alter the way applications are initially registered to allow main.py complete control over the initial applications (but only if it wants it). Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-06-20drivers: cst816s: Add a version() methodDaniel Thompson
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-06-20apps: SportsApp: Initial sports app implementationDaniel Thompson
This app is functional... although it lacking in almost every costmetic way, from the icon to the main screen. Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-06-20widgets: Further compact some of the internal representationsDaniel Thompson
Many widgets adopted the _im(mutable) idiom to allow us to reduce the RAM overhead of each widget. Where the immutable data considers entirely of integers smaller than 256 then we can push this just a little further by switching from a tuple to a bytes. Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-06-20widgets: Refactor the stopwatch as a widgetDaniel Thompson
This is purely a refactoring for the purposes of code reuse. No change of behaviour is expected. Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-06-20boards: simulator: main: Update the ChronoApp exampleDaniel Thompson
Currently the ChronoApp example code is both broken (missing apps. prefix) and doesn't use the latest API for registering watch faces. Fix this. Whilst here let's also provide an example for the DemoApp since that is not included in the Software chooser. Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-06-20apps: DemoApp: Fully document the demo appDaniel Thompson
The demo app is of somewhat niche interest and is disabled by default but arguable that makes it more important to document it fully since this app is harder to find the many others. Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-06-20apps: FacesApp: Add a watch face chooserDaniel Thompson
This app is enabled by default and allows users to select a watch face based on a fullscreen preview of how the app will draw the screen. Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-06-20all clocks: Add a preview() method ready for a watch face chooserDaniel Thompson
One benefit from wasp-os' dirt simple drawing model is that it is very easy for apps to provide full screen previews of themselves. Add this for all clocks ready for us to add a watch face chooser application. Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-06-20icons: Introduce new clock iconDaniel Thompson
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-06-19rtc: Undo the once-per-second wake upDaniel Thompson
So... waking up once per second turns out to be a dumb idea because it regresses the stop watch and HRS tools (which now also only wake up once per second). Undo this change but sprinkle a few more micropython.native decorations on methods used on the wakeup path to minimise power. Fixes: fb18705b9b9cc ("manager/rtc: Experimental power saving technique") Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-06-18drivers: nrf_rtc: Fix sphinx buildDaniel Thompson
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-06-04manager/rtc: Experimental power saving techniqueDaniel Thompson
Currently the time is calculated 8 times per second from (relatively) slow python code. Optimize the power consumed by reducing the number of times we check for wall time updates to only once-per-second and use native code generation to reduce VM overhead when executing this critical code. At the time of writing the difference is battery life has not yet been measured (but we know the current master branch is worse than v0.4 and, in theory at least, this should close the gap). Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-06-04draw565: Fix bounding box calculationsDaniel Thompson
wasp-os uses an drawing optimization technique to automatically place a single pixel line on the right of glyphs when rendering them. This results in a change to the bounding box for a rendered string (by adding a single pixel on the right of the final character). Fix the bounding box calculations accordingly. Among other things this eliminates graphical artifacts when rendering labels in 2048. Fixes: #203 Fixes: 58b5c0378ec3 ("draw565: Optimize the string drawing") Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-06-03MemoryError exception now shows custom message instead of CrashApp.Tait Berlette
Signed-off-by: Tait Berlette <54515877+taitberlette@users.noreply.github.com>
2021-06-03Added weather application.Tait Berlette
Signed-off-by: Tait Berlette <54515877+taitberlette@users.noreply.github.com>
2021-06-03manager: Improve application registrationDaniel Thompson
When an application is registered using a string that gives the class name (e.g. "apps.chrono.ChronoApp") when we automatically delete the module from a couple of namespaces. This ensures the garbage collector can do a deeper clean when the application is unregistered. We also provide a means to directly register watch faces (e.g. to replace the default clock). Fixes: #214 Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-05-05apps: heart: Implement a debug mode to copy out raw dataDaniel Thompson
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-03-29apps: testapp: Force characters to render with a not-black backgroundDaniel Thompson
This helps pick up any problems with the glpyh rendering. Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-03-29draw565: Optimize the string drawingDaniel Thompson
Currently there is a redundant fill operation issued for every character drawn. This was added to draw the background colours correctly but the change did not account for the optimized character rendering in _draw_glyph(). This results in ~15% performance improvement for character rendering Fixes: cc34c5d46de9 ("draw565: Fix wrong background color of strings") Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-03-28fonts: add 18pt fontthefenriswolf
Signed-off-by: thefenriswolf <stefan.rohrbacher97@gmail.com> [daniel@redfelineninja.org.uk: fixed up the manifest] Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-03-27apps: Add DualClock app.Benoît HERVIER
Signed-off-by: Benoît HERVIER <b@rvier.fr> [daniel@redfelineninja.org.uk: Removed unused dual clock fonts from clock_dual.py, fixed up the manifest] Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-03-27apps: music: Change SWIPE_LEFTRIGHT to SWIPE_UPDOWN.Tait Berlette
The music player volume control uses up and down events, but in the foreground function the app requests left and right events. Signed-off-by: Tait Berlette <54515877+taitberlette@users.noreply.github.com>
2021-03-22draw565: Avoid over-long lines when handling spaceDaniel Thompson
Currently, if the line wrapper attempts to break a line on a space and that space character is outside the bounding box, then we generate an over-long line. Fix this by handling line break generation *after* we have checked the length of the current line. Fixes: #193 Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-03-10apps: software: Include word clock in the available applicationsDaniel Thompson
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-03-10apps: software: Automatically track y position for checkboxesDaniel Thompson
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-03-10apps: WordClock: Add a new word-based clock appBrendan M. Sleight
Signed-off-by: Brendan M. Sleight <bms.git@barwap.com> [daniel@redfelineninja.org.uk: Squashed down into a single commit and updated subject] Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk
2021-03-09Update requirements.txtBrendan M. Sleight
Signed-off-by: Brendan M. Sleight <bms.git@barwap.com>
2021-03-01apps: steps: Reduce the graphing scaleDaniel Thompson
Currently then even fast walking will run off the top of the graph. Change the scale to that fast walking shows in full. I think at this level fast running will probably run off the top but I need to gather a few more details before settling on the final scale. Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-02-25apps: steps: Add a history graphDaniel Thompson
The steplogger records steps but currently there is no way to see the data recorded on the device itself. Make a first attempt at graphing the step data. Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-02-25steplogger: Write less frequentlyDaniel Thompson
Currently we dump the step data every 30 minutes. This was a good interval for testing but we can extend it a little without any problems. Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-02-25steplogger: Ensure today's data is updated when we provide itDaniel Thompson
Currently steps from the last six minutes do not appear in the data. We can fix this by updating the data before creating the iterator. Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-02-25boards: simulator: Increase the display blanking timeDaniel Thompson
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-02-25boards: simulator: Pick up out-of-bounds drawingDaniel Thompson
Currently, if we ask the simulator to draw out-of-bounds then it will do exactly that, it will draw outside of the "screen" and corrupt the pixels of the watch frame that surrounds it. This is an obviously poor simulation of the real watch and when the out-of-bounds error is only an out-by-one error can be easily overlooked until we load the code on the device. Let's just throw an exception if we draw out-of-bounds. That can easily be picked up during testing. Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-02-21steplogger: Add iterator to allow UI to read the dataDaniel Thompson
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-02-21steplogger: Introduce code to perform data loggingDaniel Thompson
The code is not yet enabled by default but it can be tested by adding custom code to an interested user's main.py . Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-02-20st7789: Fix incorrect variable name in ST7789_SPIs. __init__ docstring.Piotr Tworek
The data signal pin name is dc, not cs. Signed-off-by: Piotr Tworek <tworaz@tworaz.net>
2021-02-20apps: settings: Clamp the dates a little more tightlyDaniel Thompson
Currently a couple of down presses on the year results in the time being set to some time in 2099. The micropython date logic does not support dates this far in the future and throws an exception. Adopt a simple fix that should be OK for the next 39 years ;-) . Reported-by: Christopher Peters <me@christopherp.de> Fixes: #167 Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-02-06simulator: test: Add Draw565.bounding_box unit testsDaniel Thompson
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-02-05drivers: draw565: Added bounding_box() function that returns the size of a ↵kozova1
string. This function returns a tuple of (width, height) of the string, as it would appear if used in draw.string() Signed-off-by: kozova1 <mug66kk@gmail.com>
2021-02-04draw565: Fix an out-by-one error in _bounding_boxDaniel Thompson
Currently we add an extra blank pixel to the end of the string but this is not required. Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-02-04apps: testapp: Ensure we test centred stringsDaniel Thompson
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-02-03apps: settings: Added labels to the datesIsaiah Grace
Signed-off-by: Isaiah Grace <isaiah@graces.com>
2021-01-30install: Include the wasptool dependencies in the install guideDaniel Thompson
Fixes: #159 Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-01-18apps: musicplayer: Adopt GfxButton and use it for trace fwd/backDaniel Thompson
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-01-18widgets: Add a button with a graphical iconDaniel Thompson
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-01-17drivers: st7789: Further reduce allocations during set_window()Daniel Thompson
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-01-17drivers: st7789: Pre-allocate a memoryviewDaniel Thompson
Reduce the cost of slicing the linebuffer by pre-allocating a memoryview. Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-01-17drivers: st7789: Optimize set_window()Daniel Thompson
For small graphical items (line drawing, font glyphs) the performance of the set_window() method is critical. Emit native code for this function and optimize the SPI write_cmd() method to avoid memory allocation. This give a performance boost of a little over 15% for (24pt) font rendering and 30% for line drawing. Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-01-17draw565: Optimize string drawingDaniel Thompson
Avoid needless bouncing the chip select when drawing glyphs. This improved performance by around 15% for 24pt fonts. Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>