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