Skip to content

Commit 0121bc3

Browse files
authored
Merge pull request #2 from dhalbert/defer-packet_size
defer buffer creations until MTU known
2 parents f8766e1 + 79e7238 commit 0121bc3

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

adafruit_ble_ibbq.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,9 @@ class IBBQService(Service):
9494

9595
def __init__(self, service=None):
9696
super().__init__(service=service)
97-
self._settings_result_buf = bytearray(
98-
self.settings_result.packet_size # pylint: disable=no-member
99-
)
100-
self._realtime_data_buf = bytearray(
101-
self.realtime_data.packet_size # pylint: disable=no-member
102-
)
97+
# Defer creating buffers until needed, since MTU is not known yet.
98+
self._settings_result_buf = None
99+
self._realtime_data_buf = None
103100

104101
uuid = StandardUUID(0xFFF0)
105102

@@ -151,6 +148,10 @@ def temperatures(self):
151148
"""Return a tuple of temperatures for all the possible temperature probes on the device.
152149
Temperatures are in degrees Celsius. Unconnected probes return 0.0.
153150
"""
151+
if self._realtime_data_buf is None:
152+
self._realtime_data_buf = bytearray(
153+
self.realtime_data.packet_size # pylint: disable=no-member
154+
)
154155
data = self._realtime_data_buf
155156
length = self.realtime_data.readinto(data) # pylint: disable=no-member
156157
if length > 0:
@@ -167,6 +168,11 @@ def battery_level(self):
167168
Results are approximate and may differ from the
168169
actual battery voltage by 0.1v or so.
169170
"""
171+
if self._settings_result_buf is None:
172+
self._settings_result_buf = bytearray(
173+
self.settings_result.packet_size # pylint: disable=no-member
174+
)
175+
170176
self.settings_data = self._REQUEST_BATTERY_LEVEL_MSG
171177
results = self._settings_result_buf
172178
length = self.settings_result.readinto(results) # pylint: disable=no-member

0 commit comments

Comments
 (0)