From dd38d907244bc0e483c3d760f2ba464a394ec229 Mon Sep 17 00:00:00 2001 From: Dave Hylands Date: Tue, 11 Mar 2014 23:55:41 -0700 Subject: Initial checkin with STM HAL This compiles and links, but hasn't been tested on a board yet and even if it was run, it doesn't currently do anything. --- stmhal/usbdev/Class/Template/Src/usbd_template.c | 398 +++++++++++++++++++++++ 1 file changed, 398 insertions(+) create mode 100644 stmhal/usbdev/Class/Template/Src/usbd_template.c (limited to 'stmhal/usbdev/Class/Template/Src/usbd_template.c') diff --git a/stmhal/usbdev/Class/Template/Src/usbd_template.c b/stmhal/usbdev/Class/Template/Src/usbd_template.c new file mode 100644 index 000000000..144faa217 --- /dev/null +++ b/stmhal/usbdev/Class/Template/Src/usbd_template.c @@ -0,0 +1,398 @@ +/** + ****************************************************************************** + * @file usbd_template.c + * @author MCD Application Team + * @version V2.0.0 + * @date 18-February-2014 + * @brief This file provides the HID core functions. + * + * @verbatim + * + * =================================================================== + * TEMPLATE Class Description + * =================================================================== + * + * + * + * + * + * + * @note In HS mode and when the DMA is used, all variables and data structures + * dealing with the DMA during the transaction process should be 32-bit aligned. + * + * + * @endverbatim + * + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2014 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_template.h" +#include "usbd_desc.h" +#include "usbd_ctlreq.h" + + +/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY + * @{ + */ + + +/** @defgroup USBD_TEMPLATE + * @brief usbd core module + * @{ + */ + +/** @defgroup USBD_TEMPLATE_Private_TypesDefinitions + * @{ + */ +/** + * @} + */ + + +/** @defgroup USBD_TEMPLATE_Private_Defines + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_TEMPLATE_Private_Macros + * @{ + */ + +/** + * @} + */ + + + + +/** @defgroup USBD_TEMPLATE_Private_FunctionPrototypes + * @{ + */ + + +static uint8_t USBD_TEMPLATE_Init (USBD_HandleTypeDef *pdev, + uint8_t cfgidx); + +static uint8_t USBD_TEMPLATE_DeInit (USBD_HandleTypeDef *pdev, + uint8_t cfgidx); + +static uint8_t USBD_TEMPLATE_Setup (USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req); + +static uint8_t *USBD_TEMPLATE_GetCfgDesc (uint16_t *length); + +static uint8_t *USBD_TEMPLATE_GetDeviceQualifierDesc (uint16_t *length); + +static uint8_t USBD_TEMPLATE_DataIn (USBD_HandleTypeDef *pdev, uint8_t epnum); + +static uint8_t USBD_TEMPLATE_DataOut (USBD_HandleTypeDef *pdev, uint8_t epnum); + +static uint8_t USBD_TEMPLATE_EP0_RxReady (USBD_HandleTypeDef *pdev); + +static uint8_t USBD_TEMPLATE_EP0_TxReady (USBD_HandleTypeDef *pdev); + +static uint8_t USBD_TEMPLATE_SOF (USBD_HandleTypeDef *pdev); + +static uint8_t USBD_TEMPLATE_IsoINIncomplete (USBD_HandleTypeDef *pdev, uint8_t epnum); + +static uint8_t USBD_TEMPLATE_IsoOutIncomplete (USBD_HandleTypeDef *pdev, uint8_t epnum); + +/** + * @} + */ + +/** @defgroup USBD_TEMPLATE_Private_Variables + * @{ + */ + +USBD_ClassTypeDef USBD_TEMPLATE_ClassDriver = +{ + USBD_TEMPLATE_Init, + USBD_TEMPLATE_DeInit, + USBD_TEMPLATE_Setup, + USBD_TEMPLATE_EP0_TxReady, + USBD_TEMPLATE_EP0_RxReady, + USBD_TEMPLATE_DataIn, + USBD_TEMPLATE_DataOut, + USBD_TEMPLATE_SOF, + USBD_TEMPLATE_IsoINIncomplete, + USBD_TEMPLATE_IsoOutIncomplete, + USBD_TEMPLATE_GetCfgDesc, + USBD_TEMPLATE_GetCfgDesc, + USBD_TEMPLATE_GetCfgDesc, + USBD_TEMPLATE_GetDeviceQualifierDesc, +}; + +#if defined ( __ICCARM__ ) /*!< IAR Compiler */ + #pragma data_alignment=4 +#endif +/* USB TEMPLATE device Configuration Descriptor */ +static uint8_t USBD_TEMPLATE_CfgDesc[USB_TEMPLATE_CONFIG_DESC_SIZ] = +{ + 0x09, /* bLength: Configuation Descriptor size */ + USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION, /* bDescriptorType: Configuration */ + USB_TEMPLATE_CONFIG_DESC_SIZ, + /* wTotalLength: Bytes returned */ + 0x00, + 0x01, /*bNumInterfaces: 1 interface*/ + 0x01, /*bConfigurationValue: Configuration value*/ + 0x02, /*iConfiguration: Index of string descriptor describing the configuration*/ + 0xC0, /*bmAttributes: bus powered and Supprts Remote Wakeup */ + 0x32, /*MaxPower 100 mA: this current is used for detecting Vbus*/ + /* 09 */ + + /********** Descriptor of TEMPLATE interface 0 Alternate setting 0 **************/ + +}; + +#if defined ( __ICCARM__ ) /*!< IAR Compiler */ + #pragma data_alignment=4 +#endif +/* USB Standard Device Descriptor */ +static uint8_t USBD_TEMPLATE_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] = +{ + USB_LEN_DEV_QUALIFIER_DESC, + USB_DESC_TYPE_DEVICE_QUALIFIER, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x40, + 0x01, + 0x00, +}; + +/** + * @} + */ + +/** @defgroup USBD_TEMPLATE_Private_Functions + * @{ + */ + +/** + * @brief USBD_TEMPLATE_Init + * Initialize the TEMPLATE interface + * @param pdev: device instance + * @param cfgidx: Configuration index + * @retval status + */ +static uint8_t USBD_TEMPLATE_Init (USBD_HandleTypeDef *pdev, + uint8_t cfgidx) +{ + uint8_t ret = 0; + + + return ret; +} + +/** + * @brief USBD_TEMPLATE_Init + * DeInitialize the TEMPLATE layer + * @param pdev: device instance + * @param cfgidx: Configuration index + * @retval status + */ +static uint8_t USBD_TEMPLATE_DeInit (USBD_HandleTypeDef *pdev, + uint8_t cfgidx) +{ + + return USBD_OK; +} + +/** + * @brief USBD_TEMPLATE_Setup + * Handle the TEMPLATE specific requests + * @param pdev: instance + * @param req: usb requests + * @retval status + */ +static uint8_t USBD_TEMPLATE_Setup (USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + { + case USB_REQ_TYPE_CLASS : + switch (req->bRequest) + { + + default: + USBD_CtlError (pdev, req); + return USBD_FAIL; + } + break; + + case USB_REQ_TYPE_STANDARD: + switch (req->bRequest) + { + + default: + USBD_CtlError (pdev, req); + return USBD_FAIL; + } + } + return USBD_OK; +} + + +/** + * @brief USBD_TEMPLATE_GetCfgDesc + * return configuration descriptor + * @param length : pointer data length + * @retval pointer to descriptor buffer + */ +static uint8_t *USBD_TEMPLATE_GetCfgDesc (uint16_t *length) +{ + *length = sizeof (USBD_TEMPLATE_CfgDesc); + return USBD_TEMPLATE_CfgDesc; +} + +/** +* @brief DeviceQualifierDescriptor +* return Device Qualifier descriptor +* @param length : pointer data length +* @retval pointer to descriptor buffer +*/ +uint8_t *USBD_TEMPLATE_DeviceQualifierDescriptor (uint16_t *length) +{ + *length = sizeof (USBD_TEMPLATE_DeviceQualifierDesc); + return USBD_TEMPLATE_DeviceQualifierDesc; +} + + +/** + * @brief USBD_TEMPLATE_DataIn + * handle data IN Stage + * @param pdev: device instance + * @param epnum: endpoint index + * @retval status + */ +static uint8_t USBD_TEMPLATE_DataIn (USBD_HandleTypeDef *pdev, + uint8_t epnum) +{ + + return USBD_OK; +} + +/** + * @brief USBD_TEMPLATE_EP0_RxReady + * handle EP0 Rx Ready event + * @param pdev: device instance + * @retval status + */ +static uint8_t USBD_TEMPLATE_EP0_RxReady (USBD_HandleTypeDef *pdev) +{ + + return USBD_OK; +} +/** + * @brief USBD_TEMPLATE_EP0_TxReady + * handle EP0 TRx Ready event + * @param pdev: device instance + * @retval status + */ +static uint8_t USBD_TEMPLATE_EP0_TxReady (USBD_HandleTypeDef *pdev) +{ + + return USBD_OK; +} +/** + * @brief USBD_TEMPLATE_SOF + * handle SOF event + * @param pdev: device instance + * @retval status + */ +static uint8_t USBD_TEMPLATE_SOF (USBD_HandleTypeDef *pdev) +{ + + return USBD_OK; +} +/** + * @brief USBD_TEMPLATE_IsoINIncomplete + * handle data ISO IN Incomplete event + * @param pdev: device instance + * @param epnum: endpoint index + * @retval status + */ +static uint8_t USBD_TEMPLATE_IsoINIncomplete (USBD_HandleTypeDef *pdev, uint8_t epnum) +{ + + return USBD_OK; +} +/** + * @brief USBD_TEMPLATE_IsoOutIncomplete + * handle data ISO OUT Incomplete event + * @param pdev: device instance + * @param epnum: endpoint index + * @retval status + */ +static uint8_t USBD_TEMPLATE_IsoOutIncomplete (USBD_HandleTypeDef *pdev, uint8_t epnum) +{ + + return USBD_OK; +} +/** + * @brief USBD_TEMPLATE_DataOut + * handle data OUT Stage + * @param pdev: device instance + * @param epnum: endpoint index + * @retval status + */ +static uint8_t USBD_TEMPLATE_DataOut (USBD_HandleTypeDef *pdev, + uint8_t epnum) +{ + + return USBD_OK; +} + +/** +* @brief DeviceQualifierDescriptor +* return Device Qualifier descriptor +* @param length : pointer data length +* @retval pointer to descriptor buffer +*/ +uint8_t *USBD_TEMPLATE_GetDeviceQualifierDesc (uint16_t *length) +{ + *length = sizeof (USBD_TEMPLATE_DeviceQualifierDesc); + return USBD_TEMPLATE_DeviceQualifierDesc; +} + +/** + * @} + */ + + +/** + * @} + */ + + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ -- cgit v1.2.3