Skip to content

Commit 83ad08a

Browse files
authored
Merge pull request #8 from glenrobertson/patch-1
Avoid AttributeError when calling start_wifi() after stop_bluetooth()
2 parents 918400d + 09dcef9 commit 83ad08a

File tree

1 file changed

+28
-23
lines changed

1 file changed

+28
-23
lines changed

adafruit_airlift/esp32.py

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -136,18 +136,22 @@ def reset(self, mode: int, debug: bool = False) -> None:
136136
return
137137

138138
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:
145154
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
151155

152156
# Everything's fine. Remember mode.
153157
self._mode = mode
@@ -174,13 +178,14 @@ def start_bluetooth(self, debug: bool = False) -> Adapter:
174178
# Choose Bluetooth mode.
175179
self._chip_select.switch_to_output(False)
176180

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+
)
184189

185190
# Reset into Bluetooth mode.
186191
self.reset(ESP32.BLUETOOTH, debug=debug)
@@ -189,9 +194,11 @@ def start_bluetooth(self, debug: bool = False) -> Adapter:
189194
self._gpio0_rts.switch_to_output()
190195
# pylint: disable=no-member
191196
# 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+
195202
self._bleio_adapter.enabled = True
196203
return self._bleio_adapter
197204

@@ -201,8 +208,6 @@ def stop_bluetooth(self):
201208
return
202209
self._bleio_adapter.enabled = False
203210
self.reset(ESP32.NOT_IN_USE)
204-
self._uart.deinit()
205-
self._uart = None
206211

207212
def start_wifi(self, debug: bool = False) -> SPI:
208213
"""Start WiFi on the ESP32.

0 commit comments

Comments
 (0)