Re-introduce software-based gesture fallback
The algorithm still has to be adjusted for the new mapping.
This commit is contained in:
parent
a15cc6697d
commit
c816d1db35
|
@ -39,6 +39,7 @@ class BMA421:
|
|||
self._orientation = orientation
|
||||
self._gesture_int = intr
|
||||
self._gesture_event = motion.AccelGestureEvent.NONE
|
||||
self.hardware_gesture_available = False
|
||||
|
||||
if self._gesture_int != None:
|
||||
self._gesture_int.irq(trigger=Pin.IRQ_FALLING, handler=self.handle_interrupt)
|
||||
|
@ -67,15 +68,17 @@ class BMA421:
|
|||
# Software readout is remapped manually in accel_xyz().
|
||||
dev.set_remap_axes(self._orientation)
|
||||
|
||||
self.hardware_gesture_available = dev.get_chip_id() == bma42x.BMA425_CHIP_ID
|
||||
|
||||
# Enable gesture interrupts
|
||||
dev.set_int_pin_config(int_line=bma42x.INTR1_MAP,
|
||||
edge_ctrl=bma42x.LEVEL_TRIGGER,
|
||||
lvl=bma42x.ACTIVE_LOW,
|
||||
od=bma42x.PUSH_PULL,
|
||||
output_en=True, input_en=False)
|
||||
dev.feature_enable(bma42x.WRIST_WEAR, True)
|
||||
#dev.feature_enable(bma42x.DOUBLE_TAP, True)
|
||||
dev.map_interrupt(bma42x.INTR1_MAP, bma42x.WRIST_WEAR_INT, True)
|
||||
if self.hardware_gesture_available:
|
||||
dev.set_int_pin_config(int_line=bma42x.INTR1_MAP,
|
||||
edge_ctrl=bma42x.LEVEL_TRIGGER,
|
||||
lvl=bma42x.ACTIVE_LOW,
|
||||
od=bma42x.PUSH_PULL,
|
||||
output_en=True, input_en=False)
|
||||
dev.feature_enable(bma42x.WRIST_WEAR, True)
|
||||
dev.map_interrupt(bma42x.INTR1_MAP, bma42x.WRIST_WEAR_INT, True)
|
||||
|
||||
def handle_interrupt(self, pin_obj):
|
||||
"""Interrupt handler for gesture events originating from the sensor"""
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 905652f9fd6541283591cf6e085c31f9aa63bf40
|
||||
Subproject commit 30b19fec7c1d05abd533ce46dcbe2d1a38f56a0c
|
18
wasp/wasp.py
18
wasp/wasp.py
|
@ -499,14 +499,16 @@ class Manager():
|
|||
self.wake()
|
||||
|
||||
if self.raise_wake:
|
||||
if watch.accel.get_gesture_event() == motion.AccelGestureEvent.WRIST_TILT:
|
||||
watch.accel.reset_gesture_event()
|
||||
self.wake()
|
||||
#now = rtc.get_uptime_ms()
|
||||
#if now >= self.accel_poll_expiry:
|
||||
# self.accel_poll_expiry = (now + self.accel_poll_ms)
|
||||
# if self._do_raise_wake():
|
||||
# self.wake()
|
||||
if watch.accel.hardware_gesture_available:
|
||||
if watch.accel.get_gesture_event() == motion.AccelGestureEvent.WRIST_TILT:
|
||||
watch.accel.reset_gesture_event()
|
||||
self.wake()
|
||||
else:
|
||||
now = rtc.get_uptime_ms()
|
||||
if now >= self.accel_poll_expiry:
|
||||
self.accel_poll_expiry = (now + self.accel_poll_ms)
|
||||
if self._do_raise_wake():
|
||||
self.wake()
|
||||
|
||||
def _do_raise_wake(self):
|
||||
|
||||
|
|
Loading…
Reference in New Issue