-
Notifications
You must be signed in to change notification settings - Fork 178
/
test_eeprom.py
56 lines (44 loc) · 1.87 KB
/
test_eeprom.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
"""Tests for eeprom."""
import asyncio
import pytest
from opentrons_hardware.firmware_bindings import NodeId, ArbitrationId
from opentrons_hardware.firmware_bindings.messages.message_definitions import (
ReadFromEEPromRequest,
ReadFromEEPromResponse,
WriteToEEPromRequest,
)
from opentrons_hardware.firmware_bindings.messages.payloads import (
WriteToEEPromRequestPayload,
)
from opentrons_hardware.firmware_bindings.utils import UInt16Field
from opentrons_hardware.drivers.can_bus import CanMessenger, WaitableCallback
def filter_func(arb: ArbitrationId) -> bool:
"""Message filtering function."""
return bool(arb.parts.message_id == ReadFromEEPromResponse.message_id)
@pytest.mark.skip("eeprom simulator is broken")
@pytest.mark.requires_emulator
@pytest.mark.can_filter_func.with_args(filter_func)
async def test_read_write(
can_messenger: CanMessenger,
can_messenger_queue: WaitableCallback,
) -> None:
"""It should be able to read and write eeprom values."""
read_message = ReadFromEEPromRequest()
await can_messenger.send(node_id=NodeId.pipette_left, message=read_message)
response, arbitration_id = await asyncio.wait_for(can_messenger_queue.read(), 1)
assert isinstance(response, ReadFromEEPromResponse)
expected_data = response.payload.serial_number.value + 1
# Write to the again
await can_messenger.send(
node_id=NodeId.pipette_left,
message=WriteToEEPromRequest(
payload=WriteToEEPromRequestPayload(
serial_number=UInt16Field(expected_data)
)
),
)
# Read from eeprom again
await can_messenger.send(node_id=NodeId.pipette_left, message=read_message)
response, arbitration_id = await asyncio.wait_for(can_messenger_queue.read(), 1)
assert isinstance(response, ReadFromEEPromResponse)
assert response.payload.serial_number.value == expected_data