Skip to content

Commit 2f28492

Browse files
committed
changed the way the gesture method handles reading when no data.
1 parent 69082fc commit 2f28492

File tree

1 file changed

+48
-50
lines changed

1 file changed

+48
-50
lines changed

adafruit_apds9960/apds9960.py

Lines changed: 48 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -204,59 +204,57 @@ def gesture(self): #pylint: disable-msg=too-many-branches
204204
up_down_diff = 0
205205
left_right_diff = 0
206206
gesture_received = 0
207-
208207
time.sleep(0.030) # 30 ms
209208

210209
n_recs = self._read8(APDS9960_GFLVL)
211-
if not n_recs:
212-
continue
213-
214-
with self.i2c_device as i2c:
215-
i2c.write(buffer, end=1, stop=False)
216-
i2c.readinto(buffer, start=1, end=min(129, 1 + n_recs * 4))
217-
upp, down, left, right = buffer[1:5]
218-
219-
if abs(upp - down) > 13:
220-
up_down_diff = upp - down
221-
222-
if abs(left - right) > 13:
223-
left_right_diff = left - right
224-
225-
if up_down_diff != 0:
226-
if up_down_diff < 0:
227-
# either leading edge of down movement
228-
# or trailing edge of up movement
229-
if self._saw_up_start:
230-
gesture_received = 0x01 # up
231-
else:
232-
self._saw_down_start += 1
233-
elif up_down_diff > 0:
234-
# either leading edge of up movement
235-
# or trailing edge of down movement
236-
if self._saw_down_start:
237-
gesture_received = 0x02 # down
238-
else:
239-
self._saw_up_start += 1
240-
241-
if left_right_diff != 0:
242-
if left_right_diff < 0:
243-
# either leading edge of right movement
244-
# trailing edge of left movement
245-
if self._saw_left_start:
246-
gesture_received = 0x03 # left
247-
else:
248-
self._saw_right_start += 1
249-
elif left_right_diff > 0:
250-
# either leading edge of left movement
251-
# trailing edge of right movement
252-
if self._saw_right_start:
253-
gesture_received = 0x04 #right
254-
else:
255-
self._saw_left_start += 1
256-
257-
# saw a leading or trailing edge; start timer
258-
if up_down_diff != 0 or left_right_diff != 0:
259-
time_mark = time.monotonic()
210+
if n_recs:
211+
212+
with self.i2c_device as i2c:
213+
i2c.write(buffer, end=1, stop=False)
214+
i2c.readinto(buffer, start=1, end=min(129, 1 + n_recs * 4))
215+
upp, down, left, right = buffer[1:5]
216+
217+
if abs(upp - down) > 13:
218+
up_down_diff = upp - down
219+
220+
if abs(left - right) > 13:
221+
left_right_diff = left - right
222+
223+
if up_down_diff != 0:
224+
if up_down_diff < 0:
225+
# either leading edge of down movement
226+
# or trailing edge of up movement
227+
if self._saw_up_start:
228+
gesture_received = 0x01 # up
229+
else:
230+
self._saw_down_start += 1
231+
elif up_down_diff > 0:
232+
# either leading edge of up movement
233+
# or trailing edge of down movement
234+
if self._saw_down_start:
235+
gesture_received = 0x02 # down
236+
else:
237+
self._saw_up_start += 1
238+
239+
if left_right_diff != 0:
240+
if left_right_diff < 0:
241+
# either leading edge of right movement
242+
# trailing edge of left movement
243+
if self._saw_left_start:
244+
gesture_received = 0x03 # left
245+
else:
246+
self._saw_right_start += 1
247+
elif left_right_diff > 0:
248+
# either leading edge of left movement
249+
# trailing edge of right movement
250+
if self._saw_right_start:
251+
gesture_received = 0x04 #right
252+
else:
253+
self._saw_left_start += 1
254+
255+
# saw a leading or trailing edge; start timer
256+
if up_down_diff or left_right_diff:
257+
time_mark = time.monotonic()
260258

261259
# finished when a gesture is detected or ran out of time (300ms)
262260
if gesture_received or time.monotonic() - time_mark > 0.300:

0 commit comments

Comments
 (0)