diff --git a/pkg/tinyusb/cdc_acm_stdio/cdc_acm_stdio.c b/pkg/tinyusb/cdc_acm_stdio/cdc_acm_stdio.c index 00c75404ce..fa3775ea8f 100644 --- a/pkg/tinyusb/cdc_acm_stdio/cdc_acm_stdio.c +++ b/pkg/tinyusb/cdc_acm_stdio/cdc_acm_stdio.c @@ -20,6 +20,8 @@ * @} */ +#define USB_H_USER_IS_RIOT_INTERNAL + #include #include @@ -32,6 +34,7 @@ #ifdef MODULE_USB_BOARD_RESET #include "usb_board_reset_internal.h" +#include "class/cdc/cdc.h" #endif static mutex_t data_lock = MUTEX_INIT_LOCKED; @@ -78,3 +81,21 @@ void tud_cdc_rx_cb(uint8_t itf) mutex_unlock(&data_lock); } + +#ifdef MODULE_USB_BOARD_RESET + +void tud_cdc_line_coding_cb(uint8_t itf, cdc_line_coding_t const* p_line_coding) +{ + (void)itf; + assert(p_line_coding != NULL); + + /* The first parameter is the USBUS CDC ACM device, but this is + * not used in `usb_board_reset_coding_cb`. Therefore we can simply + * reuse this callback function in tinyUSB without any problems. */ + usb_board_reset_coding_cb(NULL, + p_line_coding->bit_rate, + p_line_coding->data_bits, + p_line_coding->parity, + p_line_coding->stop_bits); +} +#endif diff --git a/pkg/tinyusb/contrib/include/tusb_os_custom.h b/pkg/tinyusb/contrib/include/tusb_os_custom.h index 930170aade..901dcac784 100644 --- a/pkg/tinyusb/contrib/include/tusb_os_custom.h +++ b/pkg/tinyusb/contrib/include/tusb_os_custom.h @@ -110,6 +110,7 @@ static inline bool osal_mutex_lock(osal_mutex_t mutex_hdl, uint32_t msec) return mutex_lock_cancelable(&_mc) == 0; #else + (void)msec; assert(msec == OSAL_TIMEOUT_WAIT_FOREVER); mutex_lock(mutex_hdl); return true; diff --git a/pkg/tinyusb/contrib/tinyusb_descriptors.c b/pkg/tinyusb/contrib/tinyusb_descriptors.c index 41eb72d3c6..22d503011d 100644 --- a/pkg/tinyusb/contrib/tinyusb_descriptors.c +++ b/pkg/tinyusb/contrib/tinyusb_descriptors.c @@ -23,6 +23,8 @@ * THE SOFTWARE. */ +#define USB_H_USER_IS_RIOT_INTERNAL + #include "fmt.h" #include "luid.h" #include "tusb.h" diff --git a/sys/usb_board_reset/Kconfig b/sys/usb_board_reset/Kconfig index 9962368c0e..a3de925222 100644 --- a/sys/usb_board_reset/Kconfig +++ b/sys/usb_board_reset/Kconfig @@ -8,4 +8,4 @@ config MODULE_USB_BOARD_RESET bool "Trigger a board reset via USB CDC ACM" depends on TEST_KCONFIG - depends on MODULE_USBUS_CDC_ACM + depends on MODULE_USBUS_CDC_ACM || MODULE_STDIO_TINYUSB_CDC_ACM diff --git a/sys/usb_board_reset/usb_board_reset.c b/sys/usb_board_reset/usb_board_reset.c index 44e4af4dec..8d39f5cb30 100644 --- a/sys/usb_board_reset/usb_board_reset.c +++ b/sys/usb_board_reset/usb_board_reset.c @@ -36,7 +36,12 @@ int usb_board_reset_coding_cb(usbus_cdcacm_device_t *cdcacm, uint32_t baud, uint8_t bits, uint8_t parity, uint8_t stop) { + /* Note: This function is also used by tinyUSB if module `usb_board_reset` + * is used. In this case no USBUS CDC ACM device is defined and parameter + * `cdcacm` is NULL. Please keep this in mind if `cdcacm` is to be used + * in future versions. */ (void)cdcacm; + (void)bits; (void)parity; (void)stop; diff --git a/tests/pkg_tinyusb_cdc_msc/app.config.test b/tests/pkg_tinyusb_cdc_msc/app.config.test index efd8b538ab..e005a5990d 100644 --- a/tests/pkg_tinyusb_cdc_msc/app.config.test +++ b/tests/pkg_tinyusb_cdc_msc/app.config.test @@ -1,5 +1,3 @@ CONFIG_PACKAGE_TINYUSB=y CONFIG_MODULE_TINYUSB_CLASS_CDC=y CONFIG_MODULE_TINYUSB_CLASS_MSC=y -CONFIG_MODULE_TINYUSB_COMMON=y -CONFIG_MODULE_TINYUSB_DEVICE=y