USB device stack
Dependents: mbed-mX-USB-TEST1 USBMSD_SD_HID_HelloWorld HidTest MIDI_usb_bridge ... more
Legacy Warning
This is an mbed 2 library. To learn more about mbed OS 5, visit the docs.
Pull requests against this repository are no longer supported. Please raise against mbed OS 5 as documented above.
Diff: USBDevice/TARGET_Silicon_Labs/inc/em_usbd.h
- Revision:
- 71:53949e6131f6
- Parent:
- 70:2c525a50f1b6
--- a/USBDevice/TARGET_Silicon_Labs/inc/em_usbd.h Thu Jul 20 10:14:36 2017 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,206 +0,0 @@ -/***************************************************************************//** - * @file em_usbd.h - * @brief USB protocol stack library API for EFM32. - * @version 3.20.14 - ******************************************************************************* - * @section License - * <b>(C) Copyright 2014 Silicon Labs, http://www.silabs.com</b> - ******************************************************************************* - * - * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - * - * 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. - * - ******************************************************************************/ - -#ifndef __EM_USBD_H -#define __EM_USBD_H - -#include "em_device.h" -#if defined( USB_PRESENT ) && ( USB_COUNT == 1 ) -#include "em_usb.h" -#if defined( USB_DEVICE ) - -#ifdef __cplusplus -extern "C" { -#endif - -/** @cond DO_NOT_INCLUDE_WITH_DOXYGEN */ - -#if defined( DEBUG_USB_API ) -#define DEBUG_TRACE_ABORT( x ) \ -{ \ - if ( x == USB_STATUS_EP_STALLED ) \ - { DEBUG_USB_API_PUTS( "\nEP cb(), EP stalled" ); } \ - else if ( x == USB_STATUS_EP_ABORTED ) \ - { DEBUG_USB_API_PUTS( "\nEP cb(), EP aborted" ); } \ - else if ( x == USB_STATUS_DEVICE_UNCONFIGURED ) \ - { DEBUG_USB_API_PUTS( "\nEP cb(), device unconfigured" ); } \ - else if ( x == USB_STATUS_DEVICE_SUSPENDED ) \ - { DEBUG_USB_API_PUTS( "\nEP cb(), device suspended" ); } \ - else /* ( x == USB_STATUS_DEVICE_RESET ) */ \ - { DEBUG_USB_API_PUTS( "\nEP cb(), device reset" ); } \ -} -#else -#define DEBUG_TRACE_ABORT( x ) -#endif - -extern USBD_Device_TypeDef *dev; -extern volatile bool USBD_poweredDown; - -__STATIC_INLINE void USBD_ArmEp0( USBD_Ep_TypeDef *ep ); -__STATIC_INLINE void USBD_ArmEpN( USBD_Ep_TypeDef *ep ); -__STATIC_INLINE void USBD_AbortEp( USBD_Ep_TypeDef *ep ); - -void USBD_SetUsbState( USBD_State_TypeDef newState ); - -int USBDCH9_SetupCmd( USBD_Device_TypeDef *device ); - -void USBDEP_Ep0Handler( USBD_Device_TypeDef *device ); -void USBDEP_EpHandler( uint8_t epAddr ); - -__STATIC_INLINE void USBD_ActivateAllEps( bool forceIdle ) -{ - int i; - - for ( i = 1; i <= NUM_EP_USED; i++ ) - { - USBDHAL_ActivateEp( &dev->ep[ i ], forceIdle ); - } -} - -__STATIC_INLINE void USBD_ArmEp( USBD_Ep_TypeDef *ep ) -{ - if ( ep->num == 0 ) - { - USBD_ArmEp0( ep ); - } - else - { - USBD_ArmEpN( ep ); - } -} - -__STATIC_INLINE void USBD_ArmEp0( USBD_Ep_TypeDef *ep ) -{ - if ( ep->in ) - { - if ( ep->remaining == 0 ) /* Zero Length Packet? */ - { - ep->zlp = 1; - } - - USBDHAL_SetEp0InDmaPtr( ep->buf ); - USBDHAL_StartEp0In( EFM32_MIN( ep->remaining, ep->packetSize ), - dev->ep0MpsCode ); - } - else - { - USBDHAL_SetEp0OutDmaPtr( ep->buf ); - USBDHAL_StartEp0Out( ep->packetSize, dev->ep0MpsCode ); - } -} - -__STATIC_INLINE void USBD_ArmEpN( USBD_Ep_TypeDef *ep ) -{ - if ( ep->in ) - { - USBDHAL_StartEpIn( ep ); - } - else - { - USBDHAL_StartEpOut( ep ); - } -} - -__STATIC_INLINE void USBD_DeactivateAllEps( USB_Status_TypeDef reason ) -{ - int i; - USBD_Ep_TypeDef *ep; - - for ( i = 1; i <= NUM_EP_USED; i++ ) - { - ep = &dev->ep[ i ]; - - if ( ep->state == D_EP_IDLE ) - { - USBDHAL_DeactivateEp( ep ); - } - } - - USBDHAL_AbortAllTransfers( reason ); -} - -__STATIC_INLINE USBD_Ep_TypeDef *USBD_GetEpFromAddr( uint8_t epAddr ) -{ - int epIndex; - USBD_Ep_TypeDef *ep = NULL; - - if ( epAddr & USB_SETUP_DIR_MASK ) - { - epIndex = dev->inEpAddr2EpIndex[ epAddr & USB_EPNUM_MASK ]; - } - else - { - epIndex = dev->outEpAddr2EpIndex[ epAddr & USB_EPNUM_MASK ]; - } - - if ( epIndex ) - { - ep = &dev->ep[ epIndex ]; - } - else if ( ( epAddr & USB_EPNUM_MASK ) == 0 ) - { - ep = &dev->ep[ 0 ]; - } - - return ep; -} - -__STATIC_INLINE void USBD_ReArmEp0( USBD_Ep_TypeDef *ep ) -{ - if ( ep->in ) - { - USBDHAL_StartEp0In( EFM32_MIN( ep->remaining, ep->packetSize ), - dev->ep0MpsCode ); - } - else - { - USBDHAL_StartEp0Out( ep->packetSize, dev->ep0MpsCode ); - } -} - -__STATIC_INLINE void USBD_AbortEp( USBD_Ep_TypeDef *ep ) -{ - if ( ep->state == D_EP_IDLE ) - { - return; - } - - if ( ep->in ) - { - USBDHAL_AbortEpIn( ep ); - } - else - { - USBDHAL_AbortEpOut( ep ); - } -} - -/** @endcond */ - -#ifdef __cplusplus -} -#endif - -#endif /* defined( USB_DEVICE ) */ -#endif /* defined( USB_PRESENT ) && ( USB_COUNT == 1 ) */ -#endif /* __EM_USBD_H */