@@ -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