Skip to content

Commit 0d0316b

Browse files
committed
Deal with spurious resets better
1 parent 72d9960 commit 0d0316b

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

bellows/ash.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -562,6 +562,7 @@ def rstack_frame_received(self, frame: RStackFrame) -> None:
562562

563563
self._tx_seq = 0
564564
self._rx_seq = 0
565+
self._cancel_pending_data_frames(NcpFailure(code=frame.reset_code))
565566
self._change_ack_timeout(T_RX_ACK_INIT)
566567
self._ezsp_protocol.reset_received(frame.reset_code)
567568

@@ -586,7 +587,7 @@ def error_frame_received(self, frame: ErrorFrame) -> None:
586587
def _enter_failed_state(self, reset_code: t.NcpResetCode) -> None:
587588
self._ncp_state = NcpState.FAILED
588589
self._cancel_pending_data_frames(NcpFailure(code=reset_code))
589-
self._ezsp_protocol.reset_received(reset_code)
590+
self._ezsp_protocol.error_received(reset_code)
590591

591592
def _write_frame(
592593
self,

bellows/uart.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ def data_received(self, data):
3838

3939
def reset_received(self, code: t.NcpResetCode) -> None:
4040
"""Reset acknowledgement frame receive handler"""
41+
LOGGER.debug("Received reset: %r", code)
42+
4143
if self._reset_future and not self._reset_future.done():
4244
self._reset_future.set_result(True)
4345
elif self._startup_reset_future and not self._startup_reset_future.done():
@@ -48,7 +50,10 @@ def reset_received(self, code: t.NcpResetCode) -> None:
4850

4951
def error_received(self, code: t.NcpResetCode) -> None:
5052
"""Error frame receive handler."""
51-
self._api.enter_failed_state(code)
53+
if self._reset_future is not None or self._startup_reset_future is not None:
54+
LOGGER.debug("Ignoring spurious error during reset: %r", code)
55+
else:
56+
self._api.enter_failed_state(code)
5257

5358
async def wait_for_startup_reset(self) -> None:
5459
"""Wait for the first reset frame on startup."""

0 commit comments

Comments
 (0)