GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( f5f3e1...17bacd )
by Benjamin
01:07
created

cadenceRevCountDiff()   A

Complexity

Conditions 3

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 10
rs 9.4285
cc 3
1
from libAnt.profiles.factory import ProfileMessage
2
3
4
class SpeedAndCadenceProfileMessage(ProfileMessage):
5
    """ Message from Speed & Cadence sensor """
6
7
    def __init__(self, msg, previous, staleSpeedCounter, staleCadenceCounter):
8
        super().__init__(msg, previous)
9
        self.staleSpeedCounter = staleSpeedCounter
10
        self.staleCadenceCounter = staleCadenceCounter
11
12
        if self.previous is not None:
13
            if self.speedEventTime == self.previous.speedEventTime:
14
                self.staleSpeedCount[0] += 1
15
            else:
16
                self.staleSpeedCount[0] = 0
17
18
            if self.cadenceEventTime == self.previous.cadenceEventTime:
19
                self.staleCadenceCount[0] += 1
20
            else:
21
                self.staleCadenceCount[0] = 0
22
23
    maxCadenceEventTime = 65536
24
    maxSpeedEventTime = 65536
25
    maxSpeedRevCount = 65536
26
    maxCadenceRevCount = 65536
27
    maxStaleSpeedCount = 7
28
    maxStaleCadenceCount = 7
29
30
    @lazyproperty
31
    def cadenceEventTime(self):
32
        """ Represents the time of the last valid bike cadence event (1/1024 sec) """
33
        return (self.raw[2] << 8) | self.raw[1]
34
35
    @lazyproperty
36
    def cumulativeCadenceRevolutionCount(self):
37
        """ Represents the total number of pedal revolutions """
38
        return (self.raw[4] << 8) | self.raw[3]
39
40
    @lazyproperty
41
    def speedEventTime(self):
42
        """ Represents the time of the last valid bike speed event (1/1024 sec) """
43
        return (self.raw[6] << 8) | self.raw[5]
44
45
    @lazyproperty
46
    def cumulativeSpeedRevolutionCount(self):
47
        """ Represents the total number of wheel revolutions """
48
        return (self.raw[8] << 8) | self.raw[7]
49
50
    @lazyproperty
51
    def speedEventTimeDiff(self):
52
        if self.previous is None:
53
            return 0
54
        elif self.speedEventTime < self.previous.speedEventTime:
55
            # Rollover
56
            return (self.speedEventTime - self.previous.speedEventTime) + self.maxSpeedEventTime
57
        else:
58
            return self.speedEventTime - self.previous.speedEventTime
59
60
    @lazyproperty
61
    def cadenceEventTimeDiff(self):
62
        if self.previous is None:
63
            return 0
64
        elif self.cadenceEventTime < self.previous.cadenceEventTime:
65
            # Rollover
66
            return (self.cadenceEventTime - self.previous.cadenceEventTime) + self.maxCadenceEventTime
67
        else:
68
            return self.cadenceEventTime - self.previous.cadenceEventTime
69
70
    @lazyproperty
71
    def speedRevCountDiff(self):
72
        if self.previous is None:
73
            return None
74
        elif self.cumulativeSpeedRevolutionCount < self.previous.cumulativeSpeedRevolutionCount:
75
            # Rollover
76
            return (
77
                       self.cumulativeSpeedRevolutionCount - self.previous.cumulativeSpeedRevolutionCount) + self.maxSpeedRevCount
78
        else:
79
            return self.cumulativeSpeedRevolutionCount - self.previous.cumulativeSpeedRevolutionCount
80
81
    @lazyproperty
82
    def cadenceRevCountDiff(self):
83
        if self.previous is None:
84
            return None
85
        elif self.cumulativeCadenceRevolutionCount < self.previous.cumulativeCadenceRevolutionCount:
86
            # Rollover
87
            return (
88
                       self.cumulativeCadenceRevolutionCount - self.previous.cumulativeCadenceRevolutionCount) + self.maxCadenceRevCount
89
        else:
90
            return self.cumulativeCadenceRevolutionCount - self.previous.cumulativeCadenceRevolutionCount
91
92
    def speed(self, c):
93
        """
94
        :param c: circumference of the wheel (mm)
95
        :return: The current speed (m/sec)
96
        """
97
        if self.previous is None:
98
            return 0
99
        if self.speedEventTime == self.previous.speedEventTime:
100
            if self.staleSpeedCount[0] > self.maxStaleSpeedCount:
101
                return 0
102
            return self.previous.speed(c)
103
        return self.speedRevCountDiff * 1.024 * c / self.speedEventTimeDiff
104
105
    @lazyproperty
106
    def cadence(self):
107
        """
108
        :return: RPM
109
        """
110
        if self.previous is None:
111
            return 0
112
        if self.cadenceEventTime == self.previous.cadenceEventTime:
113
            if self.staleCadenceCount[0] > self.maxStaleCadenceCount:
114
                return 0
115
            return self.previous.cadence
116
        return self.cadenceRevCountDiff * 1024 * 60 / self.cadenceEventTimeDiff
117