@@ -94,12 +94,9 @@ class IBBQService(Service):
94
94
95
95
def __init__(self, service=None):
96
96
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
103
100
104
101
uuid = StandardUUID(0xFFF0)
105
102
@@ -151,6 +148,10 @@ def temperatures(self):
151
148
"""Return a tuple of temperatures for all the possible temperature probes on the device.
152
149
Temperatures are in degrees Celsius. Unconnected probes return 0.0.
153
150
"""
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
+ )
154
155
data = self._realtime_data_buf
155
156
length = self.realtime_data.readinto(data) # pylint: disable=no-member
156
157
if length > 0:
@@ -167,6 +168,11 @@ def battery_level(self):
167
168
Results are approximate and may differ from the
168
169
actual battery voltage by 0.1v or so.
169
170
"""
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
+
170
176
self.settings_data = self._REQUEST_BATTERY_LEVEL_MSG
171
177
results = self._settings_result_buf
172
178
length = self.settings_result.readinto(results) # pylint: disable=no-member
0 commit comments