From 5b385493b3ae76a2398cc9d4e82b3841f3504707 Mon Sep 17 00:00:00 2001 From: Johann Fischer Date: Thu, 30 Jan 2025 16:48:45 +0100 Subject: [PATCH] samples: usb: testusb: use new USB device stack Rework sample to use new USB device stack. Signed-off-by: Johann Fischer --- samples/subsys/usb/testusb/CMakeLists.txt | 1 + samples/subsys/usb/testusb/Kconfig | 9 +++++++ samples/subsys/usb/testusb/README.rst | 4 +-- samples/subsys/usb/testusb/prj.conf | 18 ++++++------- samples/subsys/usb/testusb/sample.yaml | 8 +++--- samples/subsys/usb/testusb/src/main.c | 31 ++++++++++++++++------- 6 files changed, 47 insertions(+), 24 deletions(-) create mode 100644 samples/subsys/usb/testusb/Kconfig diff --git a/samples/subsys/usb/testusb/CMakeLists.txt b/samples/subsys/usb/testusb/CMakeLists.txt index 2351275f036..353c10f0738 100644 --- a/samples/subsys/usb/testusb/CMakeLists.txt +++ b/samples/subsys/usb/testusb/CMakeLists.txt @@ -4,5 +4,6 @@ cmake_minimum_required(VERSION 3.20.0) find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) project(testusb) +include(${ZEPHYR_BASE}/samples/subsys/usb/common/common.cmake) FILE(GLOB app_sources src/*.c) target_sources(app PRIVATE ${app_sources}) diff --git a/samples/subsys/usb/testusb/Kconfig b/samples/subsys/usb/testusb/Kconfig new file mode 100644 index 00000000000..96c54558948 --- /dev/null +++ b/samples/subsys/usb/testusb/Kconfig @@ -0,0 +1,9 @@ +# Copyright (c) 2023 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +# Source common USB sample options used to initialize new experimental USB +# device stack. The scope of these options is limited to USB samples in project +# tree, you cannot use them in your own application. +source "samples/subsys/usb/common/Kconfig.sample_usbd" + +source "Kconfig.zephyr" diff --git a/samples/subsys/usb/testusb/README.rst b/samples/subsys/usb/testusb/README.rst index 03e6f6c104a..52a124e05e6 100644 --- a/samples/subsys/usb/testusb/README.rst +++ b/samples/subsys/usb/testusb/README.rst @@ -1,6 +1,6 @@ .. zephyr:code-sample:: testusb-app - :name: USB testing application - :relevant-api: _usb_device_core_api + :name: USB device testing application + :relevant-api: usbd_api Test USB device drivers using a loopback function. diff --git a/samples/subsys/usb/testusb/prj.conf b/samples/subsys/usb/testusb/prj.conf index e310a67818d..fcbf19c62e8 100644 --- a/samples/subsys/usb/testusb/prj.conf +++ b/samples/subsys/usb/testusb/prj.conf @@ -1,11 +1,11 @@ -CONFIG_STDOUT_CONSOLE=y +CONFIG_USB_DEVICE_STACK_NEXT=y +CONFIG_USBD_LOOPBACK_CLASS=y +CONFIG_UDC_BUF_POOL_SIZE=4096 -#USB related configs -CONFIG_USB_DEVICE_STACK=y -CONFIG_USB_DEVICE_PRODUCT="Zephyr testusb sample" -CONFIG_USB_DEVICE_PID=0x0009 CONFIG_LOG=y -CONFIG_USB_DRIVER_LOG_LEVEL_ERR=y -CONFIG_USB_DEVICE_LOOPBACK=y -CONFIG_USB_DEVICE_LOG_LEVEL_ERR=y -CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=n +CONFIG_USBD_LOG_LEVEL_ERR=y +CONFIG_UDC_DRIVER_LOG_LEVEL_ERR=y +CONFIG_USBD_LOOPBACK_LOG_LEVEL_ERR=y + +CONFIG_SAMPLE_USBD_PID=0x0009 +CONFIG_SAMPLE_USBD_PRODUCT="Zephyr testusb sample" diff --git a/samples/subsys/usb/testusb/sample.yaml b/samples/subsys/usb/testusb/sample.yaml index 93b1313a156..7a6cb3dbb1c 100644 --- a/samples/subsys/usb/testusb/sample.yaml +++ b/samples/subsys/usb/testusb/sample.yaml @@ -1,7 +1,7 @@ sample: - name: USB loopback sample + name: USB device loopback sample tests: - sample.usb.loopback: - depends_on: usb_device + sample.usbd.loopback: + depends_on: usbd + build_only: true tags: usb - harness: button diff --git a/samples/subsys/usb/testusb/src/main.c b/samples/subsys/usb/testusb/src/main.c index 936608fc2e9..04344e97543 100644 --- a/samples/subsys/usb/testusb/src/main.c +++ b/samples/subsys/usb/testusb/src/main.c @@ -1,24 +1,37 @@ /* - * Copyright (c) 2018 Phytec Messtechnik GmbH + * Copyright (c) 2025 Nordic Semiconductor ASA * * SPDX-License-Identifier: Apache-2.0 */ -#include +#include +#include + #include -#include -LOG_MODULE_REGISTER(main); +LOG_MODULE_REGISTER(main, LOG_LEVEL_INF); int main(void) { + struct usbd_context *sample_usbd; int ret; - ret = usb_enable(NULL); - if (ret != 0) { - LOG_ERR("Failed to enable USB"); - return 0; + sample_usbd = sample_usbd_setup_device(NULL); + if (sample_usbd == NULL) { + LOG_ERR("Failed to setup USB device"); + return -ENODEV; + } + + ret = usbd_init(sample_usbd); + if (ret) { + LOG_ERR("Failed to initialize device support"); + return ret; + } + + ret = usbd_enable(sample_usbd); + if (ret) { + LOG_ERR("Failed to enable device support"); + return ret; } - LOG_INF("entered main."); return 0; }