CRLF line endings converted to LF
This commit is contained in:
@@ -1,290 +1,290 @@
|
|||||||
/* ----------------------------------------------------------------------------
|
/* ----------------------------------------------------------------------------
|
||||||
* ATMEL Microcontroller Software Support
|
* ATMEL Microcontroller Software Support
|
||||||
* ----------------------------------------------------------------------------
|
* ----------------------------------------------------------------------------
|
||||||
* Copyright (c) 2008, Atmel Corporation
|
* Copyright (c) 2008, Atmel Corporation
|
||||||
*
|
*
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
*
|
*
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
* - Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the disclaimer below.
|
* this list of conditions and the disclaimer below.
|
||||||
*
|
*
|
||||||
* Atmel's name may not be used to endorse or promote products derived from
|
* Atmel's name may not be used to endorse or promote products derived from
|
||||||
* this software without specific prior written permission.
|
* this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
|
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
|
||||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
|
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
||||||
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* ----------------------------------------------------------------------------
|
* ----------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/// \unit
|
/// \unit
|
||||||
///
|
///
|
||||||
/// !!!Purpose
|
/// !!!Purpose
|
||||||
///
|
///
|
||||||
/// Collection of methods for using the USB device controller on AT91
|
/// Collection of methods for using the USB device controller on AT91
|
||||||
/// microcontrollers.
|
/// microcontrollers.
|
||||||
///
|
///
|
||||||
/// !!!Usage
|
/// !!!Usage
|
||||||
///
|
///
|
||||||
/// Please refer to the corresponding application note.
|
/// Please refer to the corresponding application note.
|
||||||
/// - "AT91 USB device framework"
|
/// - "AT91 USB device framework"
|
||||||
/// - "USBD API" . "USBD API Methods"
|
/// - "USBD API" . "USBD API Methods"
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
#ifndef USBD_H
|
#ifndef USBD_H
|
||||||
#define USBD_H
|
#define USBD_H
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// Headers
|
// Headers
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
// #include <board.h>
|
// #include <board.h>
|
||||||
#include "../../../usb/common/core/USBEndpointDescriptor.h"
|
#include "../../../usb/common/core/USBEndpointDescriptor.h"
|
||||||
#include "../../../usb/common/core/USBGenericRequest.h"
|
#include "../../../usb/common/core/USBGenericRequest.h"
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// Compile Options
|
// Compile Options
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
/// Compile option for HS or OTG, use DMA. Remove this define for not use DMA.
|
/// Compile option for HS or OTG, use DMA. Remove this define for not use DMA.
|
||||||
#if defined(CHIP_USB_OTGHS) || defined(CHIP_USB_UDPHS)
|
#if defined(CHIP_USB_OTGHS) || defined(CHIP_USB_UDPHS)
|
||||||
#define DMA
|
#define DMA
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// Definitions
|
// Definitions
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/// \page "USB device API return values"
|
/// \page "USB device API return values"
|
||||||
///
|
///
|
||||||
/// This page lists the return values of the USB %device driver API
|
/// This page lists the return values of the USB %device driver API
|
||||||
///
|
///
|
||||||
/// !Return codes
|
/// !Return codes
|
||||||
/// - USBD_STATUS_SUCCESS
|
/// - USBD_STATUS_SUCCESS
|
||||||
/// - USBD_STATUS_LOCKED
|
/// - USBD_STATUS_LOCKED
|
||||||
/// - USBD_STATUS_ABORTED
|
/// - USBD_STATUS_ABORTED
|
||||||
/// - USBD_STATUS_RESET
|
/// - USBD_STATUS_RESET
|
||||||
|
|
||||||
/// Indicates the operation was successful.
|
/// Indicates the operation was successful.
|
||||||
#define USBD_STATUS_SUCCESS 0
|
#define USBD_STATUS_SUCCESS 0
|
||||||
/// Endpoint/device is already busy.
|
/// Endpoint/device is already busy.
|
||||||
#define USBD_STATUS_LOCKED 1
|
#define USBD_STATUS_LOCKED 1
|
||||||
/// Operation has been aborted.
|
/// Operation has been aborted.
|
||||||
#define USBD_STATUS_ABORTED 2
|
#define USBD_STATUS_ABORTED 2
|
||||||
/// Operation has been aborted because the device has been reset.
|
/// Operation has been aborted because the device has been reset.
|
||||||
#define USBD_STATUS_RESET 3
|
#define USBD_STATUS_RESET 3
|
||||||
/// Part ot operation successfully done.
|
/// Part ot operation successfully done.
|
||||||
#define USBD_STATUS_PARTIAL_DONE 4
|
#define USBD_STATUS_PARTIAL_DONE 4
|
||||||
/// Operation failed because parameter error
|
/// Operation failed because parameter error
|
||||||
#define USBD_STATUS_INVALID_PARAMETER 5
|
#define USBD_STATUS_INVALID_PARAMETER 5
|
||||||
/// Operation failed because in unexpected state
|
/// Operation failed because in unexpected state
|
||||||
#define USBD_STATUS_WRONG_STATE 6
|
#define USBD_STATUS_WRONG_STATE 6
|
||||||
/// Operation failed because HW not supported
|
/// Operation failed because HW not supported
|
||||||
#define USBD_STATUS_HW_NOT_SUPPORTED 0xFE
|
#define USBD_STATUS_HW_NOT_SUPPORTED 0xFE
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/// \page "USB device states"
|
/// \page "USB device states"
|
||||||
///
|
///
|
||||||
/// This page lists the %device states of the USB %device driver.
|
/// This page lists the %device states of the USB %device driver.
|
||||||
///
|
///
|
||||||
/// !States
|
/// !States
|
||||||
/// - USBD_STATE_SUSPENDED
|
/// - USBD_STATE_SUSPENDED
|
||||||
/// - USBD_STATE_ATTACHED
|
/// - USBD_STATE_ATTACHED
|
||||||
/// - USBD_STATE_POWERED
|
/// - USBD_STATE_POWERED
|
||||||
/// - USBD_STATE_DEFAULT
|
/// - USBD_STATE_DEFAULT
|
||||||
/// - USBD_STATE_ADDRESS
|
/// - USBD_STATE_ADDRESS
|
||||||
/// - USBD_STATE_CONFIGURED
|
/// - USBD_STATE_CONFIGURED
|
||||||
|
|
||||||
/// The device is currently suspended.
|
/// The device is currently suspended.
|
||||||
#define USBD_STATE_SUSPENDED 0
|
#define USBD_STATE_SUSPENDED 0
|
||||||
/// USB cable is plugged into the device.
|
/// USB cable is plugged into the device.
|
||||||
#define USBD_STATE_ATTACHED 1
|
#define USBD_STATE_ATTACHED 1
|
||||||
/// Host is providing +5V through the USB cable.
|
/// Host is providing +5V through the USB cable.
|
||||||
#define USBD_STATE_POWERED 2
|
#define USBD_STATE_POWERED 2
|
||||||
/// Device has been reset.
|
/// Device has been reset.
|
||||||
#define USBD_STATE_DEFAULT 3
|
#define USBD_STATE_DEFAULT 3
|
||||||
/// The device has been given an address on the bus.
|
/// The device has been given an address on the bus.
|
||||||
#define USBD_STATE_ADDRESS 4
|
#define USBD_STATE_ADDRESS 4
|
||||||
/// A valid configuration has been selected.
|
/// A valid configuration has been selected.
|
||||||
#define USBD_STATE_CONFIGURED 5
|
#define USBD_STATE_CONFIGURED 5
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/// \page "USB device LEDs"
|
/// \page "USB device LEDs"
|
||||||
///
|
///
|
||||||
/// This page lists the LEDs used in the USB %device driver.
|
/// This page lists the LEDs used in the USB %device driver.
|
||||||
///
|
///
|
||||||
/// !LEDs
|
/// !LEDs
|
||||||
/// - USBD_LEDPOWER
|
/// - USBD_LEDPOWER
|
||||||
/// - USBD_LEDUSB
|
/// - USBD_LEDUSB
|
||||||
/// - USBD_LEDOTHER
|
/// - USBD_LEDOTHER
|
||||||
|
|
||||||
/// LED for indicating that the device is powered.
|
/// LED for indicating that the device is powered.
|
||||||
#define USBD_LEDPOWER 0
|
#define USBD_LEDPOWER 0
|
||||||
/// LED for indicating USB activity.
|
/// LED for indicating USB activity.
|
||||||
#define USBD_LEDUSB 1
|
#define USBD_LEDUSB 1
|
||||||
/// LED for custom usage.
|
/// LED for custom usage.
|
||||||
#define USBD_LEDOTHER 2
|
#define USBD_LEDOTHER 2
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// Types
|
// Types
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/// Buffer struct used for multi-buffer-listed transfer.
|
/// Buffer struct used for multi-buffer-listed transfer.
|
||||||
/// The driver can process 255 bytes of buffers or buffer list window.
|
/// The driver can process 255 bytes of buffers or buffer list window.
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
typedef struct _USBDTransferBuffer {
|
typedef struct _USBDTransferBuffer {
|
||||||
/// Pointer to frame buffer
|
/// Pointer to frame buffer
|
||||||
unsigned char * pBuffer;
|
unsigned char * pBuffer;
|
||||||
/// Size of the frame (up to 64K-1)
|
/// Size of the frame (up to 64K-1)
|
||||||
unsigned short size;
|
unsigned short size;
|
||||||
/// Bytes transferred
|
/// Bytes transferred
|
||||||
unsigned short transferred;
|
unsigned short transferred;
|
||||||
/// Bytes in FIFO
|
/// Bytes in FIFO
|
||||||
unsigned short buffered;
|
unsigned short buffered;
|
||||||
/// Bytes remaining
|
/// Bytes remaining
|
||||||
unsigned short remaining;
|
unsigned short remaining;
|
||||||
} USBDTransferBuffer;
|
} USBDTransferBuffer;
|
||||||
|
|
||||||
#ifdef __ICCARM__ // IAR
|
#ifdef __ICCARM__ // IAR
|
||||||
#define __attribute__(...) // IAR
|
#define __attribute__(...) // IAR
|
||||||
#endif // IAR
|
#endif // IAR
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/// Struct used for USBD DMA Link List Transfer Descriptor, must be 16-bytes
|
/// Struct used for USBD DMA Link List Transfer Descriptor, must be 16-bytes
|
||||||
/// aligned.
|
/// aligned.
|
||||||
/// (For USB, DMA transfer is linked to EPs and FIFO address is EP defined)
|
/// (For USB, DMA transfer is linked to EPs and FIFO address is EP defined)
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
typedef struct _USBDDmaDescriptor {
|
typedef struct _USBDDmaDescriptor {
|
||||||
/// Pointer to Next Descriptor
|
/// Pointer to Next Descriptor
|
||||||
void* pNxtDesc;
|
void* pNxtDesc;
|
||||||
/// Pointer to data buffer address
|
/// Pointer to data buffer address
|
||||||
void* pDataAddr;
|
void* pDataAddr;
|
||||||
/// DMA Control setting register value
|
/// DMA Control setting register value
|
||||||
unsigned int ctrlSettings:8, /// Control settings
|
unsigned int ctrlSettings:8, /// Control settings
|
||||||
reserved:8, /// Not used
|
reserved:8, /// Not used
|
||||||
bufferLength:16; /// Length of buffer
|
bufferLength:16; /// Length of buffer
|
||||||
/// Loaded to DMA register, OK to modify
|
/// Loaded to DMA register, OK to modify
|
||||||
unsigned int used;
|
unsigned int used;
|
||||||
} __attribute__((aligned(16))) USBDDmaDescriptor;
|
} __attribute__((aligned(16))) USBDDmaDescriptor;
|
||||||
|
|
||||||
#ifdef __ICCARM__ // IAR
|
#ifdef __ICCARM__ // IAR
|
||||||
#pragma pack() // IAR
|
#pragma pack() // IAR
|
||||||
#endif // IAR
|
#endif // IAR
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/// Callback used by transfer functions (USBD_Read & USBD_Write) to notify
|
/// Callback used by transfer functions (USBD_Read & USBD_Write) to notify
|
||||||
/// that a transaction is complete.
|
/// that a transaction is complete.
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
typedef void (*TransferCallback)(void *pArg,
|
typedef void (*TransferCallback)(void *pArg,
|
||||||
unsigned char status,
|
unsigned char status,
|
||||||
unsigned int transferred,
|
unsigned int transferred,
|
||||||
unsigned int remaining);
|
unsigned int remaining);
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/// Callback used by MBL transfer functions (USBD_Read & USBD_Write) to notify
|
/// Callback used by MBL transfer functions (USBD_Read & USBD_Write) to notify
|
||||||
/// that a transaction is complete.
|
/// that a transaction is complete.
|
||||||
/// \param pArg Pointer to callback arguments.
|
/// \param pArg Pointer to callback arguments.
|
||||||
/// \param status USBD status.
|
/// \param status USBD status.
|
||||||
/// \param nbFreed Number of buffers that is freed since last callback.
|
/// \param nbFreed Number of buffers that is freed since last callback.
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
typedef void (*MblTransferCallback)(void *pArg,
|
typedef void (*MblTransferCallback)(void *pArg,
|
||||||
unsigned char status,
|
unsigned char status,
|
||||||
unsigned int nbFreed);
|
unsigned int nbFreed);
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// Exported functions
|
// Exported functions
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
extern void USBD_IrqHandler(void);
|
extern void USBD_IrqHandler(void);
|
||||||
|
|
||||||
extern void USBD_Init(void);
|
extern void USBD_Init(void);
|
||||||
|
|
||||||
extern void USBD_ConfigureSpeed(unsigned char forceFS);
|
extern void USBD_ConfigureSpeed(unsigned char forceFS);
|
||||||
|
|
||||||
extern void USBD_Connect(void);
|
extern void USBD_Connect(void);
|
||||||
|
|
||||||
extern void USBD_Disconnect(void);
|
extern void USBD_Disconnect(void);
|
||||||
|
|
||||||
extern char USBD_Write(
|
extern char USBD_Write(
|
||||||
unsigned char bEndpoint,
|
unsigned char bEndpoint,
|
||||||
const void *pData,
|
const void *pData,
|
||||||
unsigned int size,
|
unsigned int size,
|
||||||
TransferCallback callback,
|
TransferCallback callback,
|
||||||
void *pArg);
|
void *pArg);
|
||||||
|
|
||||||
extern char USBD_MblWrite(
|
extern char USBD_MblWrite(
|
||||||
unsigned char bEndpoint,
|
unsigned char bEndpoint,
|
||||||
void * pMbl,
|
void * pMbl,
|
||||||
unsigned short wListSize,
|
unsigned short wListSize,
|
||||||
unsigned char bCircList,
|
unsigned char bCircList,
|
||||||
unsigned short wStartNdx,
|
unsigned short wStartNdx,
|
||||||
MblTransferCallback fCallback,
|
MblTransferCallback fCallback,
|
||||||
void * pArgument);
|
void * pArgument);
|
||||||
|
|
||||||
extern char USBD_MblReuse(
|
extern char USBD_MblReuse(
|
||||||
unsigned char bEndpoint,
|
unsigned char bEndpoint,
|
||||||
unsigned char * pNewBuffer,
|
unsigned char * pNewBuffer,
|
||||||
unsigned short wNewSize);
|
unsigned short wNewSize);
|
||||||
|
|
||||||
extern char USBD_Read(
|
extern char USBD_Read(
|
||||||
unsigned char bEndpoint,
|
unsigned char bEndpoint,
|
||||||
void *pData,
|
void *pData,
|
||||||
unsigned int dLength,
|
unsigned int dLength,
|
||||||
TransferCallback fCallback,
|
TransferCallback fCallback,
|
||||||
void *pArg);
|
void *pArg);
|
||||||
|
|
||||||
extern unsigned char USBD_Stall(unsigned char bEndpoint);
|
extern unsigned char USBD_Stall(unsigned char bEndpoint);
|
||||||
|
|
||||||
extern void USBD_Halt(unsigned char bEndpoint);
|
extern void USBD_Halt(unsigned char bEndpoint);
|
||||||
|
|
||||||
extern void USBD_Unhalt(unsigned char bEndpoint);
|
extern void USBD_Unhalt(unsigned char bEndpoint);
|
||||||
|
|
||||||
extern void USBD_ConfigureEndpoint(const USBEndpointDescriptor *pDescriptor);
|
extern void USBD_ConfigureEndpoint(const USBEndpointDescriptor *pDescriptor);
|
||||||
|
|
||||||
extern unsigned char USBD_IsHalted(unsigned char bEndpoint);
|
extern unsigned char USBD_IsHalted(unsigned char bEndpoint);
|
||||||
|
|
||||||
extern void USBD_RemoteWakeUp(void);
|
extern void USBD_RemoteWakeUp(void);
|
||||||
|
|
||||||
extern void USBD_SetAddress(unsigned char address);
|
extern void USBD_SetAddress(unsigned char address);
|
||||||
|
|
||||||
extern void USBD_SetConfiguration(unsigned char cfgnum);
|
extern void USBD_SetConfiguration(unsigned char cfgnum);
|
||||||
|
|
||||||
extern unsigned char USBD_GetState(void);
|
extern unsigned char USBD_GetState(void);
|
||||||
|
|
||||||
extern unsigned char USBD_IsHighSpeed(void);
|
extern unsigned char USBD_IsHighSpeed(void);
|
||||||
|
|
||||||
extern void USBD_Test(unsigned char bIndex);
|
extern void USBD_Test(unsigned char bIndex);
|
||||||
|
|
||||||
/* USBD Callbacks */
|
/* USBD Callbacks */
|
||||||
|
|
||||||
#define USBDCallbacks_Reset()
|
#define USBDCallbacks_Reset()
|
||||||
|
|
||||||
#define USBDCallbacks_Suspended()
|
#define USBDCallbacks_Suspended()
|
||||||
|
|
||||||
#define USBDCallbacks_Resumed()
|
#define USBDCallbacks_Resumed()
|
||||||
|
|
||||||
extern void USBDCallbacks_RequestReceived(const USBGenericRequest *request);
|
extern void USBDCallbacks_RequestReceived(const USBGenericRequest *request);
|
||||||
|
|
||||||
extern void USBDDriverCallbacks_ConfigurationChanged(unsigned char cfgnum);
|
extern void USBDDriverCallbacks_ConfigurationChanged(unsigned char cfgnum);
|
||||||
|
|
||||||
extern void USBDDriverCallbacks_InterfaceSettingChanged(unsigned char interface,
|
extern void USBDDriverCallbacks_InterfaceSettingChanged(unsigned char interface,
|
||||||
unsigned char setting);
|
unsigned char setting);
|
||||||
|
|
||||||
#endif //#ifndef USBD_H
|
#endif //#ifndef USBD_H
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,101 +1,101 @@
|
|||||||
/* ----------------------------------------------------------------------------
|
/* ----------------------------------------------------------------------------
|
||||||
* ATMEL Microcontroller Software Support
|
* ATMEL Microcontroller Software Support
|
||||||
* ----------------------------------------------------------------------------
|
* ----------------------------------------------------------------------------
|
||||||
* Copyright (c) 2008, Atmel Corporation
|
* Copyright (c) 2008, Atmel Corporation
|
||||||
*
|
*
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
*
|
*
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
* - Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the disclaimer below.
|
* this list of conditions and the disclaimer below.
|
||||||
*
|
*
|
||||||
* Atmel's name may not be used to endorse or promote products derived from
|
* Atmel's name may not be used to endorse or promote products derived from
|
||||||
* this software without specific prior written permission.
|
* this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
|
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
|
||||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
|
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
||||||
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* ----------------------------------------------------------------------------
|
* ----------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\unit
|
\unit
|
||||||
|
|
||||||
!!!Purpose
|
!!!Purpose
|
||||||
|
|
||||||
USB Device Driver class definition.
|
USB Device Driver class definition.
|
||||||
|
|
||||||
!!!Usage
|
!!!Usage
|
||||||
|
|
||||||
-# Instanciate a USBDDriver object and initialize it using
|
-# Instanciate a USBDDriver object and initialize it using
|
||||||
USBDDriver_Initialize.
|
USBDDriver_Initialize.
|
||||||
-# When a USB SETUP request is received, forward it to the standard
|
-# When a USB SETUP request is received, forward it to the standard
|
||||||
driver using USBDDriver_RequestHandler.
|
driver using USBDDriver_RequestHandler.
|
||||||
-# Check the Remote Wakeup setting via USBDDriver_IsRemoteWakeUpEnabled.
|
-# Check the Remote Wakeup setting via USBDDriver_IsRemoteWakeUpEnabled.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef USBDDRIVER_H
|
#ifndef USBDDRIVER_H
|
||||||
#define USBDDRIVER_H
|
#define USBDDRIVER_H
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// Headers
|
// Headers
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
#include "../../../usb/common/core/USBGenericRequest.h"
|
#include "../../../usb/common/core/USBGenericRequest.h"
|
||||||
#include "../../../usb/device/core/USBDDriverDescriptors.h"
|
#include "../../../usb/device/core/USBDDriverDescriptors.h"
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// Types
|
// Types
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/// USB device driver structure, holding a list of descriptors identifying
|
/// USB device driver structure, holding a list of descriptors identifying
|
||||||
/// the device as well as the driver current state.
|
/// the device as well as the driver current state.
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
||||||
/// List of descriptors used by the device.
|
/// List of descriptors used by the device.
|
||||||
const USBDDriverDescriptors *pDescriptors;
|
const USBDDriverDescriptors *pDescriptors;
|
||||||
/// Current setting for each interface.
|
/// Current setting for each interface.
|
||||||
unsigned char *pInterfaces;
|
unsigned char *pInterfaces;
|
||||||
/// Current configuration number (0 -> device is not configured).
|
/// Current configuration number (0 -> device is not configured).
|
||||||
unsigned char cfgnum;
|
unsigned char cfgnum;
|
||||||
/// Indicates if remote wake up has been enabled by the host.
|
/// Indicates if remote wake up has been enabled by the host.
|
||||||
unsigned char isRemoteWakeUpEnabled;
|
unsigned char isRemoteWakeUpEnabled;
|
||||||
#if defined(CHIP_USB_OTGHS)
|
#if defined(CHIP_USB_OTGHS)
|
||||||
/// Features supported by OTG
|
/// Features supported by OTG
|
||||||
unsigned char otg_features_supported;
|
unsigned char otg_features_supported;
|
||||||
#endif
|
#endif
|
||||||
} USBDDriver;
|
} USBDDriver;
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// Exported functions
|
// Exported functions
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
extern void USBDDriver_Initialize(
|
extern void USBDDriver_Initialize(
|
||||||
USBDDriver *pDriver,
|
USBDDriver *pDriver,
|
||||||
const USBDDriverDescriptors *pDescriptors,
|
const USBDDriverDescriptors *pDescriptors,
|
||||||
unsigned char *pInterfaces);
|
unsigned char *pInterfaces);
|
||||||
|
|
||||||
extern void USBDDriver_RequestHandler(
|
extern void USBDDriver_RequestHandler(
|
||||||
USBDDriver *pDriver,
|
USBDDriver *pDriver,
|
||||||
const USBGenericRequest *pRequest);
|
const USBGenericRequest *pRequest);
|
||||||
|
|
||||||
extern unsigned char USBDDriver_IsRemoteWakeUpEnabled(const USBDDriver *pDriver);
|
extern unsigned char USBDDriver_IsRemoteWakeUpEnabled(const USBDDriver *pDriver);
|
||||||
|
|
||||||
#if defined(CHIP_USB_OTGHS)
|
#if defined(CHIP_USB_OTGHS)
|
||||||
extern unsigned char USBDDriver_returnOTGFeatures(void);
|
extern unsigned char USBDDriver_returnOTGFeatures(void);
|
||||||
extern void USBDDriver_clearOTGFeatures(void);
|
extern void USBDDriver_clearOTGFeatures(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif //#ifndef USBDDRIVER_H
|
#endif //#ifndef USBDDRIVER_H
|
||||||
|
|
||||||
|
|||||||
@@ -1,86 +1,86 @@
|
|||||||
/* ----------------------------------------------------------------------------
|
/* ----------------------------------------------------------------------------
|
||||||
* ATMEL Microcontroller Software Support
|
* ATMEL Microcontroller Software Support
|
||||||
* ----------------------------------------------------------------------------
|
* ----------------------------------------------------------------------------
|
||||||
* Copyright (c) 2008, Atmel Corporation
|
* Copyright (c) 2008, Atmel Corporation
|
||||||
*
|
*
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
*
|
*
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
* - Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the disclaimer below.
|
* this list of conditions and the disclaimer below.
|
||||||
*
|
*
|
||||||
* Atmel's name may not be used to endorse or promote products derived from
|
* Atmel's name may not be used to endorse or promote products derived from
|
||||||
* this software without specific prior written permission.
|
* this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
|
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
|
||||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
|
||||||
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
|
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
||||||
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* ----------------------------------------------------------------------------
|
* ----------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\unit
|
\unit
|
||||||
|
|
||||||
!!!Purpose
|
!!!Purpose
|
||||||
|
|
||||||
Definition of a class for declaring USB descriptors required by the
|
Definition of a class for declaring USB descriptors required by the
|
||||||
device driver.
|
device driver.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef USBDDRIVERDESCRIPTORS_H
|
#ifndef USBDDRIVERDESCRIPTORS_H
|
||||||
#define USBDDRIVERDESCRIPTORS_H
|
#define USBDDRIVERDESCRIPTORS_H
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// Headers
|
// Headers
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
#include "../../../usb/common/core/USBConfigurationDescriptor.h"
|
#include "../../../usb/common/core/USBConfigurationDescriptor.h"
|
||||||
#include "../../../usb/common/core/USBDeviceDescriptor.h"
|
#include "../../../usb/common/core/USBDeviceDescriptor.h"
|
||||||
#include "../../../usb/common/core/USBDeviceQualifierDescriptor.h"
|
#include "../../../usb/common/core/USBDeviceQualifierDescriptor.h"
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// Types
|
// Types
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/// List of all descriptors used by a USB device driver. Each descriptor can
|
/// List of all descriptors used by a USB device driver. Each descriptor can
|
||||||
/// be provided in two versions: full-speed and high-speed. Devices which are
|
/// be provided in two versions: full-speed and high-speed. Devices which are
|
||||||
/// not high-speed capable do not need to provided high-speed descriptors and
|
/// not high-speed capable do not need to provided high-speed descriptors and
|
||||||
/// the full-speed qualifier & other speed descriptors.
|
/// the full-speed qualifier & other speed descriptors.
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
||||||
/// Pointer to the full-speed device descriptor.
|
/// Pointer to the full-speed device descriptor.
|
||||||
const USBDeviceDescriptor *pFsDevice;
|
const USBDeviceDescriptor *pFsDevice;
|
||||||
/// Pointer to the full-speed configuration descriptor.
|
/// Pointer to the full-speed configuration descriptor.
|
||||||
const USBConfigurationDescriptor *pFsConfiguration;
|
const USBConfigurationDescriptor *pFsConfiguration;
|
||||||
/// Pointer to the full-speed qualifier descriptor.
|
/// Pointer to the full-speed qualifier descriptor.
|
||||||
const USBDeviceQualifierDescriptor *pFsQualifier;
|
const USBDeviceQualifierDescriptor *pFsQualifier;
|
||||||
/// Pointer to the full-speed other speed configuration descriptor.
|
/// Pointer to the full-speed other speed configuration descriptor.
|
||||||
const USBConfigurationDescriptor *pFsOtherSpeed;
|
const USBConfigurationDescriptor *pFsOtherSpeed;
|
||||||
/// Pointer to the high-speed device descriptor.
|
/// Pointer to the high-speed device descriptor.
|
||||||
const USBDeviceDescriptor *pHsDevice;
|
const USBDeviceDescriptor *pHsDevice;
|
||||||
/// Pointer to the high-speed configuration descriptor.
|
/// Pointer to the high-speed configuration descriptor.
|
||||||
const USBConfigurationDescriptor *pHsConfiguration;
|
const USBConfigurationDescriptor *pHsConfiguration;
|
||||||
/// Pointer to the high-speed qualifier descriptor.
|
/// Pointer to the high-speed qualifier descriptor.
|
||||||
const USBDeviceQualifierDescriptor *pHsQualifier;
|
const USBDeviceQualifierDescriptor *pHsQualifier;
|
||||||
/// Pointer to the high-speed other speed configuration descriptor.
|
/// Pointer to the high-speed other speed configuration descriptor.
|
||||||
const USBConfigurationDescriptor *pHsOtherSpeed;
|
const USBConfigurationDescriptor *pHsOtherSpeed;
|
||||||
/// Pointer to the list of string descriptors.
|
/// Pointer to the list of string descriptors.
|
||||||
const unsigned char **pStrings;
|
const unsigned char **pStrings;
|
||||||
/// Number of string descriptors in list.
|
/// Number of string descriptors in list.
|
||||||
unsigned char numStrings;
|
unsigned char numStrings;
|
||||||
|
|
||||||
} USBDDriverDescriptors;
|
} USBDDriverDescriptors;
|
||||||
|
|
||||||
#endif //#ifndef USBDDRIVERDESCRIPTORS_H
|
#endif //#ifndef USBDDRIVERDESCRIPTORS_H
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user