Skip to content

Commit 782489f

Browse files
committed
Made requested changes
1 parent b4edbfa commit 782489f

1 file changed

Lines changed: 65 additions & 48 deletions

File tree

CircuitPython_Pyloton/pyloton.py

Lines changed: 65 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -300,63 +300,80 @@ def speed_cad_connect(self):
300300
return self.cyc_connections
301301

302302

303-
def read_s_and_c(self): #pylint: disable=too-many-branches
303+
def _speed_helper(self, values):
304+
wheel_diff = values.last_wheel_event_time - self._previous_wheel
305+
rev_diff = values.cumulative_wheel_revolutions - self._previous_revolutions
306+
307+
if wheel_diff:
308+
# Rotations per minute is 60 times the amount of revolutions since
309+
# the last update over the time since the last update
310+
rpm = 60*(rev_diff/(wheel_diff/1024))
311+
# We then mutiply it by the wheel's circumference and convert it to mph
312+
speed = round((rpm * self.circumference) * (60/63360), 1)
313+
if speed < 0:
314+
speed = self._previous_speed
315+
self._previous_speed = speed
316+
self._previous_revolutions = values.cumulative_wheel_revolutions
317+
self._i = 0
318+
else:
319+
self._i += 1
320+
if self._i >= 3:
321+
speed = 0
322+
self._previous_wheel = values.last_wheel_event_time
323+
324+
325+
def _cad_helper(self, values):
326+
crank_diff = values.last_crank_event_time - self._previous_crank
327+
crank_rev_diff = values.cumulative_crank_revolutions-self._previous_rev
328+
329+
if crank_rev_diff:
330+
# Rotations per minute is 60 times the amount of revolutions since the
331+
# last update over the time since the last update
332+
cadence = round(60*(crank_rev_diff/(crank_diff/1024)), 1)
333+
if cadence < 0:
334+
cadence = self._previous_cadence
335+
self._previous_cadence = cadence
336+
self._previous_rev = values.cumulative_crank_revolutions
337+
self._j = 0
338+
else:
339+
self._j += 1
340+
if self._j >= 3:
341+
cadence = 0
342+
self._previous_crank = values.last_crank_event_time
343+
344+
345+
def read_s_and_c(self):
304346
"""
305347
Reads data from the speed and cadence sensor
306348
"""
307349
speed = self._previous_speed
308350
cadence = self._previous_cadence
309-
for conn, svc in zip(self.cyc_connections, self.cyc_services): #pylint: disable=too-many-nested-blocks
310-
if conn.connected:
311-
values = svc.measurement_values
312-
if values is not None:
313-
if values.last_wheel_event_time:
314-
wheel_diff = values.last_wheel_event_time - self._previous_wheel
315-
rev_diff = values.cumulative_wheel_revolutions - self._previous_revolutions
316-
317-
if wheel_diff:
318-
# Rotations per minute is 60 times the amount of revolutions since
319-
# the last update over the time since the last update
320-
rpm = 60*(rev_diff/(wheel_diff/1024))
321-
# We then mutiply it by the wheel's circumference and convert it to mph
322-
speed = round((rpm * self.circumference) * (60/63360), 1)
323-
if speed < 0:
324-
speed = self._previous_speed
325-
self._previous_speed = speed
326-
self._previous_revolutions = values.cumulative_wheel_revolutions
327-
self._i = 0
328-
else:
329-
self._i += 1
330-
if self._i >= 3:
331-
speed = 0
332-
self._previous_wheel = values.last_wheel_event_time
333-
334-
if values.last_crank_event_time:
335-
crank_diff = values.last_crank_event_time - self._previous_crank
336-
crank_rev_diff = values.cumulative_crank_revolutions-self._previous_rev
337-
338-
if crank_rev_diff:
339-
# Rotations per minute is 60 times the amount of revolutions since the
340-
# last update over the time since the last update
341-
cadence = round(60*(crank_rev_diff/(crank_diff/1024)), 1)
342-
if cadence < 0:
343-
cadence = self._previous_cadence
344-
self._previous_cadence = cadence
345-
self._previous_rev = values.cumulative_crank_revolutions
346-
self._j = 0
347-
else:
348-
self._j += 1
349-
if self._j >= 3:
350-
cadence = 0
351-
self._previous_crank = values.last_crank_event_time
352-
353-
elif self._j >= 3 or self._i >= 3:
351+
for conn, svc in zip(self.cyc_connections, self.cyc_services):
352+
if not conn.connected:
353+
speed = cadence = 0
354+
continue
355+
356+
values = svc.measurement_values
357+
358+
if not values:
359+
if self._j >= 3 or self._i >= 3:
354360
if self._j > 3:
355361
cadence = 0
356362
if self._i > 3:
357363
speed = 0
358-
else:
359-
speed = cadence = 0
364+
continue
365+
366+
if not values.last_wheel_event_time:
367+
continue
368+
369+
self._speed_helper(values)
370+
371+
372+
if not values.last_crank_event_time:
373+
continue
374+
375+
self._cad_helper(values)
376+
360377
return speed, cadence
361378

362379

0 commit comments

Comments
 (0)