Skip to content

Commit 7ee6699

Browse files
Tapasztó LejlaTapasztó Lejla
Tapasztó Lejla
authored and
Tapasztó Lejla
committed
Speed and Cadence Profile
1 parent 17bacdd commit 7ee6699

File tree

3 files changed

+31
-15
lines changed

3 files changed

+31
-15
lines changed

libAnt/core.py

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
def lazyproperty(fn):
2+
attr_name = '__' + fn.__name__
3+
4+
@property
5+
def _lazyprop(self):
6+
if not hasattr(self, attr_name):
7+
setattr(self, attr_name, fn(self))
8+
return getattr(self, attr_name)
9+
10+
return _lazyprop

libAnt/message.py

+8-3
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,11 @@ def __init__(self, type: int, content: bytes):
4141
self.flag = None
4242
self.deviceNumber = self.deviceType = self.transType = None
4343
self.rssiMeasurementType = self.rssi = self._rssiThreshold = None
44+
self.rssi = None
45+
self.rssiThreshold = None
4446
self.rxTimestamp = None
47+
self.channel = None
48+
self.extendedContent = None
4549

4650
super().__init__(type, content)
4751

@@ -59,14 +63,14 @@ def build(self, raw: bytes):
5963
self.transType = self.extendedContent[3]
6064
offset += 4
6165
if self.flag & EXT_FLAG_RSSI:
62-
rssi = self.extendedContent[offset:(offset+3)]
66+
rssi = self.extendedContent[offset:(offset + 3)]
6367
self.rssiMeasurementType = rssi[0]
6468
self.rssi = rssi[1]
6569
self.rssiThreshold = rssi[2]
6670
offset += 3
6771
if self.flag & EXT_FLAG_TIMESTAMP:
6872
self.rxTimestamp = int.from_bytes(self.extendedContent[offset:],
69-
byteorder='little', signed=False)
73+
byteorder='little', signed=False)
7074
return self
7175

7276
def checksum(self) -> int:
@@ -121,6 +125,7 @@ def __init__(self, enable: bool = True):
121125
content = bytes([0, int(enable)])
122126
super().__init__(MESSAGE_ENABLE_EXT_RX_MESSAGES, content)
123127

128+
124129
class LibConfigMessage(Message):
125130
def __init__(self, rxTimestamp: bool = True, rssi: bool = True, channelId: bool = True):
126131
config = 0
@@ -130,4 +135,4 @@ def __init__(self, rxTimestamp: bool = True, rssi: bool = True, channelId: bool
130135
config |= EXT_FLAG_RSSI
131136
if channelId:
132137
config |= EXT_FLAG_CHANNEL_ID
133-
super().__init__(MESSAGE_LIB_CONFIG, bytes([0, config]))
138+
super().__init__(MESSAGE_LIB_CONFIG, bytes([0, config]))

libAnt/profiles/speed_cadence_profile.py

+13-12
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from libAnt.core import lazyproperty
12
from libAnt.profiles.factory import ProfileMessage
23

34

@@ -11,41 +12,41 @@ def __init__(self, msg, previous, staleSpeedCounter, staleCadenceCounter):
1112

1213
if self.previous is not None:
1314
if self.speedEventTime == self.previous.speedEventTime:
14-
self.staleSpeedCount[0] += 1
15+
self.staleSpeedCounter[0] += 1
1516
else:
16-
self.staleSpeedCount[0] = 0
17+
self.staleSpeedCounter[0] = 0
1718

1819
if self.cadenceEventTime == self.previous.cadenceEventTime:
19-
self.staleCadenceCount[0] += 1
20+
self.staleCadenceCounter[0] += 1
2021
else:
21-
self.staleCadenceCount[0] = 0
22+
self.staleCadenceCounter[0] = 0
2223

2324
maxCadenceEventTime = 65536
2425
maxSpeedEventTime = 65536
2526
maxSpeedRevCount = 65536
2627
maxCadenceRevCount = 65536
27-
maxStaleSpeedCount = 7
28-
maxStaleCadenceCount = 7
28+
maxstaleSpeedCounter = 7
29+
maxstaleCadenceCounter = 7
2930

3031
@lazyproperty
3132
def cadenceEventTime(self):
3233
""" Represents the time of the last valid bike cadence event (1/1024 sec) """
33-
return (self.raw[2] << 8) | self.raw[1]
34+
return (self.msg.content[1] << 8) | self.msg.content[0]
3435

3536
@lazyproperty
3637
def cumulativeCadenceRevolutionCount(self):
3738
""" Represents the total number of pedal revolutions """
38-
return (self.raw[4] << 8) | self.raw[3]
39+
return (self.msg.content[3] << 8) | self.msg.content[2]
3940

4041
@lazyproperty
4142
def speedEventTime(self):
4243
""" Represents the time of the last valid bike speed event (1/1024 sec) """
43-
return (self.raw[6] << 8) | self.raw[5]
44+
return (self.msg.content[5] << 8) | self.msg.content[4]
4445

4546
@lazyproperty
4647
def cumulativeSpeedRevolutionCount(self):
4748
""" Represents the total number of wheel revolutions """
48-
return (self.raw[8] << 8) | self.raw[7]
49+
return (self.msg.content[7] << 8) | self.msg.content[6]
4950

5051
@lazyproperty
5152
def speedEventTimeDiff(self):
@@ -97,7 +98,7 @@ def speed(self, c):
9798
if self.previous is None:
9899
return 0
99100
if self.speedEventTime == self.previous.speedEventTime:
100-
if self.staleSpeedCount[0] > self.maxStaleSpeedCount:
101+
if self.staleSpeedCounter[0] > self.maxstaleSpeedCounter:
101102
return 0
102103
return self.previous.speed(c)
103104
return self.speedRevCountDiff * 1.024 * c / self.speedEventTimeDiff
@@ -110,7 +111,7 @@ def cadence(self):
110111
if self.previous is None:
111112
return 0
112113
if self.cadenceEventTime == self.previous.cadenceEventTime:
113-
if self.staleCadenceCount[0] > self.maxStaleCadenceCount:
114+
if self.staleCadenceCounter[0] > self.maxstaleCadenceCounter:
114115
return 0
115116
return self.previous.cadence
116117
return self.cadenceRevCountDiff * 1024 * 60 / self.cadenceEventTimeDiff

0 commit comments

Comments
 (0)