|
@@ -1,5 +1,24 @@
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+import datetime
|
|
|
import unittest.mock
|
|
|
|
|
|
+import gpiod
|
|
|
import pytest
|
|
|
|
|
|
|
|
@@ -26,5 +45,49 @@ def test__get_received_packet(transceiver, payload):
|
|
|
)
|
|
|
assert received_packet.payload == payload
|
|
|
assert received_packet._rssi_index == 128
|
|
|
- assert received_packet.checksum_valid
|
|
|
+
|
|
|
assert received_packet.link_quality_indicator == 42
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.parametrize("gdo0_chip_selector", (0, "/dev/gpiochip1"))
|
|
|
+@pytest.mark.parametrize("gdo0_line_name", ("GPIO24", "GPIO25"))
|
|
|
+@pytest.mark.parametrize("reached_timeout", (True, False))
|
|
|
+@pytest.mark.parametrize("timeout", (datetime.timedelta(seconds=1),))
|
|
|
+def test__wait_for_packet(
|
|
|
+ transceiver, gdo0_chip_selector, gdo0_line_name, timeout, reached_timeout
|
|
|
+):
|
|
|
+ line_mock = unittest.mock.MagicMock()
|
|
|
+ line_mock.event_wait.return_value = not reached_timeout
|
|
|
+ with unittest.mock.patch(
|
|
|
+ "cc1101._gpio.get_line"
|
|
|
+ ) as get_line_mock, unittest.mock.patch.object(
|
|
|
+ transceiver, "_get_received_packet"
|
|
|
+ ) as get_received_packet_mock, unittest.mock.patch.object(
|
|
|
+ transceiver, "_enable_receive_mode"
|
|
|
+ ) as enable_receive_mode_mock:
|
|
|
+ get_line_mock.return_value = line_mock
|
|
|
+ get_received_packet_mock.return_value = "packet-dummy"
|
|
|
+ packet = transceiver._wait_for_packet(
|
|
|
+ timeout=timeout,
|
|
|
+ gdo0_chip=gdo0_chip_selector,
|
|
|
+ gdo0_line_name=gdo0_line_name,
|
|
|
+ )
|
|
|
+ get_line_mock.assert_called_once_with(
|
|
|
+ chip_selector=gdo0_chip_selector, line_name=gdo0_line_name
|
|
|
+ )
|
|
|
+ assert line_mock.request.call_count == 1
|
|
|
+ (line_request,) = line_mock.request.call_args[0]
|
|
|
+ assert vars(line_request) == {
|
|
|
+ "consumer": "python cc1101 _wait_for_packet",
|
|
|
+ "flags": 0,
|
|
|
+ "request_type": gpiod.line_request.EVENT_RISING_EDGE,
|
|
|
+ }
|
|
|
+ assert not line_mock.request.call_args[1]
|
|
|
+ enable_receive_mode_mock.assert_called_once_with()
|
|
|
+ line_mock.event_wait.assert_called_once_with(timeout=timeout)
|
|
|
+ if reached_timeout:
|
|
|
+ assert packet is None
|
|
|
+ get_received_packet_mock.assert_not_called()
|
|
|
+ else:
|
|
|
+ get_received_packet_mock.assert_called_once_with()
|
|
|
+ assert packet == "packet-dummy"
|