Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion bellows/uart.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,9 @@ def rstack_frame_received(self, data):
LOGGER.warn("Reset future is None")
return

self._reset_future.set_result(True)
# Make sure that the reset_future is not done
if not self._reset_future.done():
self._reset_future.set_result(True)

def error_frame_received(self, data):
"""Error frame receive handler"""
Expand Down
10 changes: 10 additions & 0 deletions tests/test_uart.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,9 @@ def test_rst_frame_received(gw):

def test_rstack_frame_received(gw):
gw._reset_future = mock.MagicMock()
gw._reset_future.done = mock.MagicMock(return_value=False)
gw.data_received(b'\xc1\x02\x0b\nR\x7e')
assert gw._reset_future.done.call_count == 1
assert gw._reset_future.set_result.call_count == 1


Expand All @@ -138,6 +140,14 @@ def test_rstack_frame_received_nofut(gw):
gw.data_received(b'\xc1\x02\x0b\nR\x7e')


def test_rstack_frame_received_out_of_order(gw):
gw._reset_future = mock.MagicMock()
gw._reset_future.done = mock.MagicMock(return_value=True)
gw.data_received(b'\xc1\x02\x0b\nR\x7e')
assert gw._reset_future.done.call_count == 1
assert gw._reset_future.set_result.call_count == 0


def test_error_frame_received(gw):
gw.frame_received(bytes([0b11000010]))

Expand Down