5858)
5959"""Namedtuple for measurement values.
6060
61- .. :attribute:: heart_rate:
61+ * `HeartRateMeasurementValues. heart_rate`
6262
6363 Heart rate (int), in beats per minute.
6464
65- .. :attribute:: contact:
65+ * `HeartRateMeasurementValues. contact`
6666
6767 ``True`` if device is contacting the body, ``False`` if not,
6868 ``None`` if device does not support contact detection.
6969
70- .. :attribute:: energy_expended:
70+ * `HeartRateMeasurementValues. energy_expended`
7171
7272 Energy expended (int), in kilo joules, or ``None`` if no value.
7373
74- .. :attribute:: rr_intervals:
74+ * `HeartRateMeasurementValues. rr_intervals`
7575
7676 Sequence of RR intervals, measuring the time between
7777 beats. Oldest first, in ints that are units of 1024ths of a second.
@@ -139,9 +139,8 @@ class HeartRateService(Service):
139139
140140 def __init__ (self , service = None ):
141141 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
145144
146145 @property
147146 def measurement_values (self ):
@@ -150,6 +149,10 @@ def measurement_values(self):
150149
151150 Return ``None`` if no packet has been read yet.
152151 """
152+ if self ._measurement_buf is None :
153+ self ._measurement_buf = bytearray (
154+ self .heart_rate_measurement .packet_size # pylint: disable=no-member
155+ )
153156 buf = self ._measurement_buf
154157 packet_length = self .heart_rate_measurement .readinto ( # pylint: disable=no-member
155158 buf
0 commit comments