@@ -136,18 +136,22 @@ def reset(self, mode: int, debug: bool = False) -> None:
136
136
return
137
137
138
138
startup_message = b""
139
- while self ._uart .in_waiting : # pylint: disable=no-member
140
- more = self ._uart .read ()
141
- if more :
142
- startup_message += more
143
-
144
- if not startup_message :
139
+ if self ._uart is not None :
140
+ while self ._uart .in_waiting : # pylint: disable=no-member
141
+ more = self ._uart .read ()
142
+ if more :
143
+ startup_message += more
144
+
145
+ if startup_message :
146
+ if debug :
147
+ try :
148
+ print (startup_message .decode ("utf-8" ))
149
+ except UnicodeError :
150
+ raise RuntimeError (
151
+ "Garbled ESP32 startup message"
152
+ ) from UnicodeError
153
+ else :
145
154
raise RuntimeError ("ESP32 did not respond with a startup message" )
146
- if debug :
147
- try :
148
- print (startup_message .decode ("utf-8" ))
149
- except UnicodeError :
150
- raise RuntimeError ("Garbled ESP32 startup message" ) from UnicodeError
151
155
152
156
# Everything's fine. Remember mode.
153
157
self ._mode = mode
@@ -174,13 +178,14 @@ def start_bluetooth(self, debug: bool = False) -> Adapter:
174
178
# Choose Bluetooth mode.
175
179
self ._chip_select .switch_to_output (False )
176
180
177
- self ._uart = busio .UART (
178
- self ._tx or board .ESP_TX ,
179
- self ._rx or board .ESP_RX ,
180
- baudrate = 115200 ,
181
- timeout = 0 ,
182
- receiver_buffer_size = 512 ,
183
- )
181
+ if self ._uart is None :
182
+ self ._uart = busio .UART (
183
+ self ._tx or board .ESP_TX ,
184
+ self ._rx or board .ESP_RX ,
185
+ baudrate = 115200 ,
186
+ timeout = 0 ,
187
+ receiver_buffer_size = 512 ,
188
+ )
184
189
185
190
# Reset into Bluetooth mode.
186
191
self .reset (ESP32 .BLUETOOTH , debug = debug )
@@ -189,9 +194,11 @@ def start_bluetooth(self, debug: bool = False) -> Adapter:
189
194
self ._gpio0_rts .switch_to_output ()
190
195
# pylint: disable=no-member
191
196
# pylint: disable=unexpected-keyword-arg
192
- self ._bleio_adapter = _bleio .Adapter (
193
- uart = self ._uart , rts = self ._gpio0_rts , cts = self ._busy_cts
194
- )
197
+ if self ._bleio_adapter is None :
198
+ self ._bleio_adapter = _bleio .Adapter (
199
+ uart = self ._uart , rts = self ._gpio0_rts , cts = self ._busy_cts
200
+ )
201
+
195
202
self ._bleio_adapter .enabled = True
196
203
return self ._bleio_adapter
197
204
@@ -201,8 +208,6 @@ def stop_bluetooth(self):
201
208
return
202
209
self ._bleio_adapter .enabled = False
203
210
self .reset (ESP32 .NOT_IN_USE )
204
- self ._uart .deinit ()
205
- self ._uart = None
206
211
207
212
def start_wifi (self , debug : bool = False ) -> SPI :
208
213
"""Start WiFi on the ESP32.
0 commit comments