Skip to content

Draft: captouch driver: proper data log & petal mode config

moon2 requested to merge positional_captouch_normalize into main

data log: users can opt-in to get the actual captouch driver backend frames that have occured since the last think(). this means no skipped/duplicate data points and full flexibility in filtering. in essence, you can now do this:

petal mode: a petal can merge multiple pads into a single data acquisition step, or can be deactivated entirely. this means the captouch driver spins faster, allowing for higher resolution data for the petals that you want to run more complex processing on.

also the .position attribute has been replaced by .pos and normalized to [-1..1]. it's a bad name, but we can't think of anything better. pressure has been renamed to coverage and is equally normalized so that 1 represents the upper pressed hysteresis threshold.

in practice:

class App(st3m.application.Application):
    def __init__(self, app_ctx):
        # create an empty configuration, i.e. all petals are turned off
        self.captouch_config = captouch.Config.empty()
        # activate only petal 0 in 3-channel (2d position) mode, enable logging
        self.captouch_config.petals[0].mode = 3
        self.captouch_config.petals[0].logging = True

    def on_enter(self, vm):
        self.captouch_config.apply()
        self.petal_0_log = []

    def think(self, ins, delta_ms):
        # this log is the last 100 raw data frames at a time resolution of ~2.3ms
        self.petal_0_log += ins.captouch.petals[0].log
        self.petal_0_log = self.petal_0_log[:-100]

it's not fully integrated in the OS yet, calibration is duct tape, will fix both before merge, but it's ready for API review.

docs are distributed over python_payload/mypystubs/captouch.pyi and docs/api/captouch.rst, sorry about that, ideally make html them in the docs directory for convenient reading.

there's also a higher level captouch.widgets module in here for now, but we think we're gonna move that to a second PR as it will need more polishing time.

Edited by moon2

Merge request reports

Loading