summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhathach <[email protected]>2025-09-30 22:44:58 +0700
committerhathach <[email protected]>2025-09-30 22:44:58 +0700
commit732d4a8c97a667dd3784f3b8a664850fa0d767d8 (patch)
tree5aaffe2edfbd2b22d1aaa0818a0ba3215b27f1c1
parentff492dc2b6c9da4fc6ab7f080435a5cb3e7be1c4 (diff)
fix serial, try to test mtp with hil
-rw-r--r--examples/device/mtp/src/mtp_fs_example.c4
-rwxr-xr-xtest/hil/hil_test.py25
2 files changed, 26 insertions, 3 deletions
diff --git a/examples/device/mtp/src/mtp_fs_example.c b/examples/device/mtp/src/mtp_fs_example.c
index d47ec41b8..4914661bb 100644
--- a/examples/device/mtp/src/mtp_fs_example.c
+++ b/examples/device/mtp/src/mtp_fs_example.c
@@ -354,8 +354,8 @@ static int32_t fs_get_device_info(tud_mtp_cb_data_t* cb_data) {
mtp_container_add_cstring(io_container, DEV_INFO_VERSION);
uint16_t serial_utf16[32];
- board_usb_get_serial(serial_utf16, 32);
- serial_utf16[31] = 0; // ensure null termination
+ size_t nchars = board_usb_get_serial(serial_utf16, 32);
+ serial_utf16[tu_min32(nchars, 31u)] = 0; // ensure null termination
mtp_container_add_string(io_container, serial_utf16);
tud_mtp_data_send(io_container);
diff --git a/test/hil/hil_test.py b/test/hil/hil_test.py
index 93cc0a750..fc7c43bbe 100755
--- a/test/hil/hil_test.py
+++ b/test/hil/hil_test.py
@@ -38,6 +38,16 @@ import glob
from multiprocessing import Pool
import fs
+import ctypes
+from pymtp import MTP, LIBMTP_MTPDevice, LIBMTP_RawDevice
+mtp = MTP()
+lib = mtp.mtp
+
+# # tell ctypes that Open_Raw_Device returns MTPDevice*
+lib.LIBMTP_Open_Raw_Device.restype = ctypes.POINTER(LIBMTP_MTPDevice)
+lib.LIBMTP_Open_Raw_Device.argtypes = [ctypes.POINTER(LIBMTP_RawDevice)]
+
+
ENUM_TIMEOUT = 30
STATUS_OK = "\033[32mOK\033[0m"
@@ -456,7 +466,6 @@ def test_device_dfu(board):
def test_device_dfu_runtime(board):
uid = board['uid']
-
# Wait device enum
timeout = ENUM_TIMEOUT
while timeout > 0:
@@ -491,6 +500,19 @@ def test_device_hid_composite_freertos(id):
pass
+def test_device_mtp(board):
+ uid = board['uid']
+ for raw in mtp.detect_devices():
+ mtp.device = lib.LIBMTP_Open_Raw_Device(ctypes.byref(raw))
+ if mtp.device and mtp.get_serialnumber().decode('utf-8') == uid:
+ break
+ else:
+ mtp.device = None
+ if mtp.device is None:
+ assert False, 'MTP device not found'
+
+
+
# -------------------------------------------------------------
# Main
# -------------------------------------------------------------
@@ -503,6 +525,7 @@ device_tests = [
'device/dfu_runtime',
'device/cdc_msc_freertos',
'device/hid_boot_interface',
+ 'device/mtp'
]
dual_tests = [