@@ -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