]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
Moved interval code into _KeysBase
authorMelissa LeBlanc-Williams <melissa@adafruit.com>
Tue, 27 Jul 2021 19:16:01 +0000 (12:16 -0700)
committerMelissa LeBlanc-Williams <melissa@adafruit.com>
Tue, 27 Jul 2021 19:16:01 +0000 (12:16 -0700)
src/keypad.py

index b602a68f08e1628e1c688ddd42250993f93ff125..97c58e782e9dc9f84ddca6f33e75f2cf485c73bc 100644 (file)
@@ -180,8 +180,11 @@ class _KeysBase:
 
     def _scanning_loop(self):
         while True:
+            remaining_delay = self._interval - (time.monotonic() - self._last_scan)
+            if remaining_delay > 0:
+                time.sleep(remaining_delay)
+            self._last_scan = time.monotonic()
             self._scanning_function()
-            time.sleep(0.001)
 
 
 class Keys(_KeysBase):
@@ -251,10 +254,6 @@ class Keys(_KeysBase):
         return len(self._digitalinouts)
 
     def _keypad_keys_scan(self):
-        if time.monotonic() - self._last_scan < self._interval:
-            return
-        self._last_scan = time.monotonic()
-
         for key_number, dio in enumerate(self._digitalinouts):
             self._previously_pressed[key_number] = self._currently_pressed[key_number]
             current = dio.value == self._value_when_pressed
@@ -348,10 +347,6 @@ class KeyMatrix(_KeysBase):
         return row * len(self._column_digitalinouts) + column
 
     def _keypad_keymatrix_scan(self):
-        if time.monotonic() - self._last_scan < self._interval:
-            return
-        self._last_scan = time.monotonic()
-
         for row, row_dio in enumerate(self._row_digitalinouts):
             row_dio.switch_to_output(
                 value=(not self._columns_to_anodes),
@@ -471,10 +466,6 @@ class ShiftRegisterKeys(_KeysBase):
         return self._events
 
     def _keypad_shiftregisterkeys_scan(self):
-        if time.monotonic() - self._last_scan < self._interval:
-            return
-        self._last_scan = time.monotonic()
-
         self._latch.value = self._value_to_latch
         for key_number in range(self._key_count):
             self._clock.value = False