1
0
Fork 0
Commit graph

56 commits

Author SHA1 Message Date
Daniel Thompson
fbc806721e drivers: st7789: Further reduce allocations during set_window()
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-01-17 17:44:50 +00:00
Daniel Thompson
6b41c8f3db drivers: st7789: Pre-allocate a memoryview
Reduce the cost of slicing the linebuffer by pre-allocating a memoryview.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2021-01-17 17:44:21 +00:00
Daniel Thompson
5abae5a7f6 drivers: st7789: Optimize set_window()
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-17 16:08:27 +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
e3b2c7bf7d boards: simulator: Improve spi.write() simulation
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-12-12 12:57:06 +00:00
Daniel Thompson
d0a99d5636 manager: Implement alarm callbacks for applications to use
Create a simple time queue where actions (functions or bound methods) can
be queued against the real time clock.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-11-14 12:24:28 +00:00
Daniel Thompson
294797d826 hrs3300: Defer initialization until the HRS is used
This means hardware failure won't cause the initial boot to fail. This
won't stop the heart rate app from crashing when it starts up but at
least it will give a comprehensible crash report.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-11-11 22:07:21 +00:00
Daniel Thompson
6e91e0e414 drivers: flash: Automatic wake/sleep to minimise idle current
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-10-10 11:45:25 +01:00
Jeffrey Bailey
f924bb6414 boards: Remove flash wake up commands
Wake from deep power down is now handled in the driver. Remove attempt
to wake the board files.

Signed-off-by: Jeffrey Bailey <wb.jeffrey@gmail.com>
[daniel@redfelineninja.org.uk: Update commit message, simplify
slightly, extended to all boards with spinor flash and update
gitmodules to bring in the flash driver updates.]
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-09-27 14:26:29 +01:00
Daniel Thompson
6bf350a6e9 drivers: cst816s: Clear the event buffer during a wake up
Currently with CST816S controllers (but not CST716S controllers) then a
swipe delivered whilst the device is asleep will sometimes be processed
after we wake it up. That's never likely to be useful. Fix this by
explicitly clearing the event buffer as part of the wakeup sequence.

Reported-by: Siroj42 <siroj42@users.noreply.github.com>
Fixes: #65
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-09-21 20:12:38 +01:00
Daniel Thompson
44ba8ebd22 drivers: cst816s: Handle a failure to sleep
Exceptions on th sleep path more or less kill the device (it is half
alseep and is not on... but not off enough for the power button to work.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-08-15 20:40:26 +01:00
Daniel Thompson
5ae327ea54 wasp: Introduce a NEXT event
This is useful for devices that do not have touchscreens. It can be used
to cycle through the quick ring and to check out notifications.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-08-15 17:00:49 +01:00
Daniel Thompson
2d1942f76a k9: Add support for Senbono K9
The K9 is similar to the PineTime and P8 devices but does not appear
to use the CST[78]16 touch screen controllers. At present the protocol
is not known (readfrom yields all zeros, readfrom_mem provokes an
exception) so we have a hugely limited interface consisting of the side
button and the touchscreen interrupts (in other words we can treat the
touchscreen like a second button).

Works suprisingly well considering...

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-08-09 20:06:45 +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
417e408dc4 drivers: hrs3300: Add a basic HRS3300 sensor driver
Add the driver and enable it on PineTime.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-06-22 22:22:40 +01:00
Daniel Thompson
ab33027fff drivers: bma421: Reduce the post-reset delay
There nothing in the docs to give the delay time required after a
reset. Currently we use 200ms because that appears on some older
code for BMA423 but is removed in more recent drivers. 50ms is still
a long time (for hardware) and has held up in testing.

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-06-12 08:51:44 +01:00
Fuji Pebri
df9d80f6f7 drivers: cst816s: optimize for power saving and responsiveness
Signed-off-by: Fuji Pebri <pebri86@gmail.com>
[daniel@redfelineinja.org.uk: removed leading underscore from method
arguments, removed redundant state tracking, adopt i2c.writeto_mem]
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-06-11 21:17:16 +01:00
Daniel Thompson
ccaf12750b wasp: apps: Step counter application
Currently there's no fancy algorithms to estimate stride length. Just
pure simple step counting directly from the hardware's "intelligence
engine".

Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
2020-06-09 21:31:55 +01:00
Daniel Thompson
42fe7bf352 drivers: vibrator: Finalize docstrings 2020-05-14 21:42:16 +01:00
Daniel Thompson
95f1788347 drivers: st7789: Finalize docstrings 2020-05-14 21:41:02 +01:00
Daniel Thompson
9274d8cc2d drivers: signal: Finalize docstrings 2020-05-14 21:39:14 +01:00
Daniel Thompson
880083977c drivers: nrf_rtc: Finalize docstrings 2020-05-14 21:36:33 +01:00
Daniel Thompson
d5c629a9ac drivers: cst816s: Finalize docstrings 2020-05-14 21:36:09 +01:00
Daniel Thompson
85079c149b drivers: battery: Finalize docstrings 2020-05-14 21:32:01 +01:00
Daniel Thompson
09071427e4 drivers: nrf_rtc: Fix some tab/space issues
These issues do not appear when parsing with micropython but when we
import this file into sphinx then things go a bit south.
2020-05-10 09:34:22 +01:00
Daniel Thompson
c1f8823f61 Add PNVRAM support to avoid forgetting the time during a reboot. 2020-05-09 14:19:10 +01:00
Daniel Thompson
2d437b0f68 wasp: drivers: nrf_rtc: Fix a nasty bug when setting the time
The code to recalculate the uptime to walltime adjustment was broken
(e.g. the longer we leave it after reboot the more inaccurate the time
setting becomes).

Fixes: 80079e4 ("wasp: nrf_rtc: Add a tiny bit of extra resolution")
2020-04-26 15:01:48 +01:00
Daniel Thompson
9348e758b2 wasp: nrf_rtc: Add a tiny bit of extra resolution
We now have a couple of applications (stopwatch, Game of Life) that benefit
from sub-second precision. The micropython RTC/utime code for nrf still
needs a major overhaul but this allows us to paper over the cracks for
just a little longer.
2020-04-26 15:01:48 +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
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
b9fe31241c Add licensing information for all wasp-os files. 2020-03-22 15:40:18 +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
031d139b7c wasp: draw565: Refactor to allow apps to focus on the drawable. 2020-03-09 00:00:13 +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
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
9664c394a6 drivers: nrf_rtc: Add a higher res monotonic timer 2020-03-07 11:49:35 +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
b508f4dc26 wasp: Add a simple font renderer 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
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
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
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
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
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