Skip to content

Commit 0975237

Browse files
jfischer-nocarlescufi
authored andcommitted
usb: device_next: rework CDC ACM serial for flash usage
Allow optimization if high speed is not supported. Unify strings for error logging. Allow the application to enable/disable the USB device. Signed-off-by: Johann Fischer <[email protected]>
1 parent 56047f4 commit 0975237

File tree

2 files changed

+21
-11
lines changed

2 files changed

+21
-11
lines changed

subsys/usb/device_next/app/Kconfig.cdc_acm_serial

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@ menuconfig CDC_ACM_SERIAL_INITIALIZE_AT_BOOT
1616

1717
if CDC_ACM_SERIAL_INITIALIZE_AT_BOOT
1818

19+
config CDC_ACM_SERIAL_ENABLE_AT_BOOT
20+
bool "USB device will be enabled at boot"
21+
default y
22+
help
23+
When disabled, the application is responsible for enabling/disabling
24+
the USB device.
25+
1926
config CDC_ACM_SERIAL_MANUFACTURER_STRING
2027
string "USB device manufacturer string descriptor"
2128
default "Zephyr Project"

subsys/usb/device_next/app/cdc_acm_serial.c

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
#include <zephyr/usb/usbd.h>
1313

1414
#include <zephyr/logging/log.h>
15-
LOG_MODULE_REGISTER(cdc_acm_serial, LOG_LEVEL_DBG);
15+
LOG_MODULE_REGISTER(cdc_acm_serial, CONFIG_USBD_LOG_LEVEL);
1616

1717
/*
1818
* This is intended for use with cdc-acm-snippet or as a default serial backend
@@ -79,31 +79,32 @@ static int cdc_acm_serial_init_device(void)
7979

8080
err = usbd_add_descriptor(&cdc_acm_serial, &cdc_acm_serial_lang);
8181
if (err) {
82-
LOG_ERR("Failed to initialize language descriptor (%d)", err);
82+
LOG_ERR("Failed to initialize %s (%d)", "language descriptor", err);
8383
return err;
8484
}
8585

8686
err = usbd_add_descriptor(&cdc_acm_serial, &cdc_acm_serial_mfr);
8787
if (err) {
88-
LOG_ERR("Failed to initialize manufacturer descriptor (%d)", err);
88+
LOG_ERR("Failed to initialize %s (%d)", "manufacturer descriptor", err);
8989
return err;
9090
}
9191

9292
err = usbd_add_descriptor(&cdc_acm_serial, &cdc_acm_serial_product);
9393
if (err) {
94-
LOG_ERR("Failed to initialize product descriptor (%d)", err);
94+
LOG_ERR("Failed to initialize %s (%d)", "product descriptor", err);
9595
return err;
9696
}
9797

9898
IF_ENABLED(CONFIG_HWINFO, (
9999
err = usbd_add_descriptor(&cdc_acm_serial, &cdc_acm_serial_sn);
100100
))
101101
if (err) {
102-
LOG_ERR("Failed to initialize SN descriptor (%d)", err);
102+
LOG_ERR("Failed to initialize %s (%d)", "SN descriptor", err);
103103
return err;
104104
}
105105

106-
if (usbd_caps_speed(&cdc_acm_serial) == USBD_SPEED_HS) {
106+
if (USBD_SUPPORTS_HIGH_SPEED &&
107+
usbd_caps_speed(&cdc_acm_serial) == USBD_SPEED_HS) {
107108
err = register_cdc_acm_0(&cdc_acm_serial, USBD_SPEED_HS);
108109
if (err) {
109110
return err;
@@ -117,14 +118,16 @@ static int cdc_acm_serial_init_device(void)
117118

118119
err = usbd_init(&cdc_acm_serial);
119120
if (err) {
120-
LOG_ERR("Failed to initialize device support");
121+
LOG_ERR("Failed to initialize %s (%d)", "device support", err);
121122
return err;
122123
}
123124

124-
err = usbd_enable(&cdc_acm_serial);
125-
if (err) {
126-
LOG_ERR("Failed to enable device support");
127-
return err;
125+
if (IS_ENABLED(CONFIG_CDC_ACM_SERIAL_ENABLE_AT_BOOT)) {
126+
err = usbd_enable(&cdc_acm_serial);
127+
if (err) {
128+
LOG_ERR("Failed to enable %s (%d)", "device support", err);
129+
return err;
130+
}
128131
}
129132

130133
return 0;

0 commit comments

Comments
 (0)