58
58
)
59
59
"""Namedtuple for measurement values.
60
60
61
- .. :attribute:: heart_rate:
61
+ * `HeartRateMeasurementValues. heart_rate`
62
62
63
63
Heart rate (int), in beats per minute.
64
64
65
- .. :attribute:: contact:
65
+ * `HeartRateMeasurementValues. contact`
66
66
67
67
``True`` if device is contacting the body, ``False`` if not,
68
68
``None`` if device does not support contact detection.
69
69
70
- .. :attribute:: energy_expended:
70
+ * `HeartRateMeasurementValues. energy_expended`
71
71
72
72
Energy expended (int), in kilo joules, or ``None`` if no value.
73
73
74
- .. :attribute:: rr_intervals:
74
+ * `HeartRateMeasurementValues. rr_intervals`
75
75
76
76
Sequence of RR intervals, measuring the time between
77
77
beats. Oldest first, in ints that are units of 1024ths of a second.
@@ -139,9 +139,8 @@ class HeartRateService(Service):
139
139
140
140
def __init__ (self , service = None ):
141
141
super ().__init__ (service = service )
142
- self ._measurement_buf = bytearray (
143
- self .heart_rate_measurement .packet_size # pylint: disable=no-member
144
- )
142
+ # Defer creating buffer until needed.
143
+ self ._measurement_buf = None
145
144
146
145
@property
147
146
def measurement_values (self ):
@@ -150,6 +149,10 @@ def measurement_values(self):
150
149
151
150
Return ``None`` if no packet has been read yet.
152
151
"""
152
+ if self ._measurement_buf is None :
153
+ self ._measurement_buf = bytearray (
154
+ self .heart_rate_measurement .packet_size # pylint: disable=no-member
155
+ )
153
156
buf = self ._measurement_buf
154
157
packet_length = self .heart_rate_measurement .readinto ( # pylint: disable=no-member
155
158
buf
0 commit comments