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
6 changes: 3 additions & 3 deletions tests/fake_machine/i2c.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,18 @@ def __init__(self, registers=None, address=None):
else:
self._registers[reg] = bytes(value)

def readfrom_mem(self, addr, reg, nbytes):
def readfrom_mem(self, addr, reg, nbytes, *, addrsize=8):
self._check_address(addr)
data = self._registers.get(reg, b"\x00" * nbytes)
return data[:nbytes]

def readfrom_mem_into(self, addr, reg, buf):
def readfrom_mem_into(self, addr, reg, buf, *, addrsize=8):
self._check_address(addr)
data = self._registers.get(reg, b"\x00" * len(buf))
for i in range(len(buf)):
buf[i] = data[i] if i < len(data) else 0

def writeto_mem(self, addr, reg, buf):
def writeto_mem(self, addr, reg, buf, *, addrsize=8):
self._check_address(addr)
self._registers[reg] = bytes(buf)
self._write_log.append((reg, bytes(buf)))
Expand Down
1 change: 1 addition & 0 deletions tests/runner/executor.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ def load_driver_mock(driver_name, fake_i2c, module_name=None):
fake_machine = types.ModuleType("machine")
fake_machine.I2C = FakeI2C
fake_machine.Pin = FakePin
fake_machine.lightsleep = lambda ms=0: None

sys.modules["machine"] = fake_machine
sys.modules["micropython"] = micropython_stub
Expand Down
56 changes: 56 additions & 0 deletions tests/scenarios/vl53l1x.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
driver: vl53l1x
driver_class: VL53L1X
i2c_address: 0x29

# I2C config for hardware tests (STeaMi board - STM32WB55)
i2c:
id: 1

# Register values for mock tests
# VL53L1X uses 16-bit register addresses
mock_registers:
# MODEL_ID (0x010F-0x0110): expected 0xEACC
0x010F: [0xEA, 0xCC]
# SOFT_RESET (0x0000): sensor active
0x0000: 0x01
# MM_CONFIG__OUTER_OFFSET_MM (0x0022): used during init
0x0022: [0x00, 0x00]
# RESULT__RANGE_STATUS (0x0089): 17-byte result block
# Bytes: range_status, report_status, stream_count,
# dss_spads(2), peak_rate(2), ambient_rate(2),
# sigma(2), phase(2), distance_mm(2), peak_corrected(2)
# Simulated distance: 250 mm (0x00FA)
0x0089: [0x09, 0x00, 0x01,
0x00, 0x80, 0x01, 0x00,
0x00, 0x10, 0x00, 0x20,
0x00, 0x00, 0x00, 0xFA,
0x01, 0x00]

tests:
- name: "Verify model ID register"
action: call
method: read_model_id
expect: 0xEACC
mode: [mock, hardware]

- name: "Read distance returns expected value"
action: call
method: read
expect: 250
mode: [mock]

- name: "Distance in plausible range"
action: call
method: read
expect_range: [0, 4000]
mode: [hardware]

- name: "Distance measurement feels correct"
action: manual
display:
- method: read
label: "Distance"
unit: "mm"
prompt: "La distance mesurée est-elle cohérente (objet devant le capteur) ?"
expect_true: true
mode: [hardware]
Loading