From a787875cf848626e852bc44fe21248e8fbabb04c Mon Sep 17 00:00:00 2001 From: chrysn Date: Wed, 1 Jul 2020 10:31:46 +0200 Subject: [PATCH] usb_board_reset: Split headers into public and private The private parts need USB definitions (and are thus preferably used from USB_H_USER_IS_RIOT_INTERNAL compilation units). Functions like usb_board_reset_in_bootloader do not depend on USB headers for their definitions and are fair game throughout the application even for generic RIOT USB devices. --- boards/adafruit-clue/reset.c | 1 + boards/arduino-nano-33-ble/reset.c | 1 + .../common/samd21-arduino-bootloader/reset.c | 1 + sys/include/usb_board_reset.h | 19 ------- sys/include/usb_board_reset_internal.h | 51 +++++++++++++++++++ sys/shell/commands/sc_sys.c | 1 - sys/usb/usbus/cdc/acm/cdc_acm_stdio.c | 2 +- 7 files changed, 55 insertions(+), 21 deletions(-) create mode 100644 sys/include/usb_board_reset_internal.h diff --git a/boards/adafruit-clue/reset.c b/boards/adafruit-clue/reset.c index f73da298a5..29b4b3b673 100644 --- a/boards/adafruit-clue/reset.c +++ b/boards/adafruit-clue/reset.c @@ -21,6 +21,7 @@ #define USB_H_USER_IS_RIOT_INTERNAL +#include "cpu.h" #include "usb_board_reset.h" /* Set the value used by the bootloader to select between boot in diff --git a/boards/arduino-nano-33-ble/reset.c b/boards/arduino-nano-33-ble/reset.c index 4773410c0c..a4f3468459 100644 --- a/boards/arduino-nano-33-ble/reset.c +++ b/boards/arduino-nano-33-ble/reset.c @@ -21,6 +21,7 @@ #define USB_H_USER_IS_RIOT_INTERNAL +#include "cpu.h" #include "usb_board_reset.h" /* Set the value used by the bootloader to select between boot in diff --git a/boards/common/samd21-arduino-bootloader/reset.c b/boards/common/samd21-arduino-bootloader/reset.c index 8ea026e6dd..4a751de25b 100644 --- a/boards/common/samd21-arduino-bootloader/reset.c +++ b/boards/common/samd21-arduino-bootloader/reset.c @@ -23,6 +23,7 @@ #define USB_H_USER_IS_RIOT_INTERNAL +#include "cpu.h" #include "usb_board_reset.h" #ifdef HMCRAMC0_ADDR diff --git a/sys/include/usb_board_reset.h b/sys/include/usb_board_reset.h index 9eaeff6953..d189ae816c 100644 --- a/sys/include/usb_board_reset.h +++ b/sys/include/usb_board_reset.h @@ -24,25 +24,6 @@ extern "C" { #endif -#include - -#include "usb/usbus/cdc/acm.h" - -/** - * @brief USB coding callback used to trigger the board reset - * - * @param[in] cdcacm Pointer to the cdcacm device - * @param[in] baud Baudrate used by the client. Only 1200 baud is taken into account - * @param[in] bits Number of bit mode used by the client - * @param[in] parity Parity mode used by the client - * @param[in] stop Stop bit mode used by the client - * - * @return Always return 0 - */ -int usb_board_reset_coding_cb(usbus_cdcacm_device_t *cdcacm, - uint32_t baud, uint8_t bits, - uint8_t parity, uint8_t stop); - /** * @brief Trigger a simple reset, back to the application */ diff --git a/sys/include/usb_board_reset_internal.h b/sys/include/usb_board_reset_internal.h new file mode 100644 index 0000000000..70e1e832b3 --- /dev/null +++ b/sys/include/usb_board_reset_internal.h @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2020 Inria + * + * This file is subject to the terms and conditions of the GNU Lesser + * General Public License v2.1. See the file LICENSE in the top level + * directory for more details. + */ + +/** + * @defgroup sys_usb_board_reset_internal Board reset via USB CDC ACM internals + * @ingroup sys_usb_board_reset + * @brief Callbacks provided by the USB_BOARD_RESET to the ACM subsystem + * + * @{ + * + * @file + * @author Alexandre Abadie + */ + +#ifndef USB_BOARD_RESET_INTERNAL_H +#define USB_BOARD_RESET_INTERNAL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include "usb/usbus/cdc/acm.h" + +/** + * @brief USB coding callback used to trigger the board reset + * + * @param[in] cdcacm Pointer to the cdcacm device + * @param[in] baud Baudrate used by the client. Only 1200 baud is taken into account + * @param[in] bits Number of bit mode used by the client + * @param[in] parity Parity mode used by the client + * @param[in] stop Stop bit mode used by the client + * + * @return Always return 0 + */ +int usb_board_reset_coding_cb(usbus_cdcacm_device_t *cdcacm, + uint32_t baud, uint8_t bits, + uint8_t parity, uint8_t stop); + +#ifdef __cplusplus +} +#endif + +#endif /* USB_BOARD_RESET_INTERNAL_H */ +/** @} */ diff --git a/sys/shell/commands/sc_sys.c b/sys/shell/commands/sc_sys.c index 5defa731ec..a79df983f4 100644 --- a/sys/shell/commands/sc_sys.c +++ b/sys/shell/commands/sc_sys.c @@ -23,7 +23,6 @@ #include "periph/pm.h" #ifdef MODULE_USB_BOARD_RESET -#define USB_H_USER_IS_RIOT_INTERNAL #include "usb_board_reset.h" #endif diff --git a/sys/usb/usbus/cdc/acm/cdc_acm_stdio.c b/sys/usb/usbus/cdc/acm/cdc_acm_stdio.c index ceb4768b53..c3e1075b58 100644 --- a/sys/usb/usbus/cdc/acm/cdc_acm_stdio.c +++ b/sys/usb/usbus/cdc/acm/cdc_acm_stdio.c @@ -34,7 +34,7 @@ #endif #ifdef MODULE_USB_BOARD_RESET -#include "usb_board_reset.h" +#include "usb_board_reset_internal.h" #endif static usbus_cdcacm_device_t cdcacm;