diff options
| author | hathach <[email protected]> | 2026-03-23 15:43:47 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2026-03-23 15:43:47 +0700 |
| commit | 3c2627e7390dc9145329732900f0c0de6e886cc0 (patch) | |
| tree | 9f39d14d48a5417fab3abe184ad2ba740e3f4060 /test | |
| parent | f7cf6bc581c514984d3513bea8538e33e7d726d8 (diff) | |
update host msc hil test
Diffstat (limited to 'test')
| -rwxr-xr-x | test/hil/hil_test.py | 30 | ||||
| -rw-r--r-- | test/hil/tinyusb.json | 2 |
2 files changed, 23 insertions, 9 deletions
diff --git a/test/hil/hil_test.py b/test/hil/hil_test.py index f8b43430d..4b17bed54 100755 --- a/test/hil/hil_test.py +++ b/test/hil/hil_test.py @@ -456,17 +456,30 @@ def test_host_device_info(board): return 0 -def print_msc_info(lines): - """Print MSC inquiry and disk size on a single line""" +def check_msc_info(lines, msc_devs): + """Print MSC info and verify block_count/block_size against config""" inquiry = '' disk_size = '' for l in lines: - if re.match(r'^[A-Za-z].*\s+rev\s+', l): + if re.match(r'^[A-Za-z].*\s+(rev\s+|[0-9])', l) and 'Disk Size' not in l: inquiry = l.strip() if 'Disk Size' in l: disk_size = l.strip() if inquiry or disk_size: print(f'\r\n {inquiry} {disk_size} ', end='') + # Verify block_count and block_size from "Disk Size: COUNT SIZE-byte blocks: N MB" + if disk_size and msc_devs: + m = re.match(r'Disk Size:\s+(\d+)\s+(\d+)-byte blocks', disk_size) + if m: + actual_count = int(m.group(1)) + actual_size = int(m.group(2)) + for dev in msc_devs: + exp_count = dev.get('block_count') + exp_size = dev.get('block_size') + if exp_count and actual_count == exp_count: + assert actual_size == exp_size, ( + f'MSC block_size mismatch: expected {exp_size}, got {actual_size}') + break def test_host_cdc_msc_hid(board): @@ -525,7 +538,7 @@ def test_host_cdc_msc_hid(board): if msc_devs: assert b'MassStorage device is mounted' in data, 'MSC device not mounted on host' assert b'Disk Size' in data, 'MSC Disk Size not reported' - print_msc_info(lines) + check_msc_info(lines, msc_devs) # CDC echo test via flasher serial if not cdc_devs: @@ -533,6 +546,7 @@ def test_host_cdc_msc_hid(board): return time.sleep(2) + ser.read(ser.in_waiting) ser.reset_input_buffer() def rand_ascii(length): @@ -540,7 +554,7 @@ def test_host_cdc_msc_hid(board): packet_size = 64 - # Echo test: 1KB random data, write random 1-packet_size chunks, only write next once echo matched + # Echo test: write random 1-packet_size chunks, wait for echo before sending next echo_len = 1024 echo_data = rand_ascii(echo_len) ser.reset_input_buffer() @@ -551,8 +565,8 @@ def test_host_cdc_msc_hid(board): ser.flush() # wait until this chunk is echoed back echo = b'' - t = 5.0 - while t > 0 and len(echo) < chunk_size: + t_end = time.monotonic() + 5.0 + while time.monotonic() < t_end and len(echo) < chunk_size: rd = ser.read(chunk_size - len(echo)) if rd: echo += rd @@ -591,7 +605,7 @@ def test_host_msc_file_explorer(board): timeout -= 0.1 assert b'Disk Size' in data, 'MSC device not mounted' lines = data.decode('utf-8', errors='ignore').splitlines() - print_msc_info(lines) + check_msc_info(lines, msc_devs) # Send "cat README.TXT" and read response time.sleep(1) diff --git a/test/hil/tinyusb.json b/test/hil/tinyusb.json index b4c6aaefe..37e98a52f 100644 --- a/test/hil/tinyusb.json +++ b/test/hil/tinyusb.json @@ -182,7 +182,7 @@ "dev_attached": [ {"vid_pid": "0403_6001", "serial": "0", "is_cdc": true}, {"vid_pid": "058f_6387", "serial": "A8BEE062633D", "is_msc": true, - "msc_disk_size": 3730, "msc_inquiry": "Generic Flash Disk rev 8.07"} + "block_size": 512, "block_count": 7639040, "msc_inquiry": "Generic Flash Disk 8.07"} ] }, "flasher": { |
