omap3530/beagle_drivers/wb/api/include/cyasusb.h
changeset 27 117faf51deac
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/omap3530/beagle_drivers/wb/api/include/cyasusb.h	Wed Mar 03 13:10:32 2010 +0000
@@ -0,0 +1,1407 @@
+/* Cypress West Bridge API header file (cyasusb.h)
+ ## ===========================
+ ##
+ ##  Copyright Cypress Semiconductor Corporation, 2006-2009,
+ ##  All Rights Reserved
+ ##  UNPUBLISHED, LICENSED SOFTWARE.
+ ##
+ ##  CONFIDENTIAL AND PROPRIETARY INFORMATION
+ ##  WHICH IS THE PROPERTY OF CYPRESS.
+ ##
+ ##  Use of this file is governed
+ ##  by the license agreement included in the file
+ ##
+ ##     <install>/license/license.txt
+ ##
+ ##  where <install> is the Cypress software
+ ##  installation root directory path.
+ ##
+ ## ===========================
+*/
+
+#ifndef _INCLUDED_CYASUSB_H_
+#define _INCLUDED_CYASUSB_H_
+
+#include "cyasmisc.h"
+
+#include "cyas_cplus_start.h"
+
+/*@@Enumeration Model
+  Summary
+  The USB enumeration process is the process of communicating to the USB host information
+  about the capabilities of the connected device.  This process is completed by servicing       
+  requests for various types of descriptors.  In the software APIs described below, this        
+  process is controlled in one of two ways.
+
+  Description
+  There are advantages to either type of enumeration and this is why both models are supported.  
+  P Port processor based enumeraton gives the P port processor maximum control and flexibility 
+  for providing USB configuration information.  However, this does require (near) real time data 
+  responses from the P port processor during the enumeration process.  West Bridge based enumeration  
+  requires no real time information from the P port processor, ensuring the fastest possible 
+  enumeration times.
+
+  * P Port Based Enumeration *
+  The first method for handling USB enumeration is for the processor client to handle all 
+  endpoint zero requests for descriptors.  This mode is configured by indicating to the API 
+  that the processor wants to handle all endpoint zero requests.  This is done by setting 
+  bit 0 in the end_point_mask to a 1.  The processor uses CyAsUsbReadDataAsync() to read 
+  the request and CyAsUsbWriteDataAsync() to write the response.
+
+  * West Bridge Based Enumeration *
+  The second method for handling USB enumeration is the configuration information method.  
+  Before enabling a connection from the West Bridge device to the USB connector, the P Port 
+  processor sends information about the USB configuration to West Bridge through the configuration 
+  APIs.  This information is stored within the West Bridge device.  When a USB cable is attached, 
+  the West Bridge device then handles all descriptor requests based on the stored information.  
+  Note that this method of enumeration only supports a single USB configuration.
+
+  In either model of enumeration, the processor client is responsible for ensuring that
+  the system meets USB Chapter 9 compliance requirements. This can be done by providing spec
+  compliant descriptors, and handling any setup packets that are sent to the client
+  appropriately.
+  
+  Mass storage class compliance will be ensured by the West Bridge firmware when the mass
+  storage functionality is enabled.
+*/
+
+/*@@Endpoint Configuration
+  Summary
+  The West Bridge device has one 64-byte control endpoint, one 64-byte low bandwidth endpoint, four bulk
+  endpoints dedicated for mass storage usage, and up to ten bulk/interrupt/isochronous
+  endpoints that can be used for USB-to-Processor communication.
+
+  Description
+  The four storage endpoints (Endpoints 2, 4, 6 and 8) are reserved for accessing storage
+  devices attached to West Bridge and are not available for use by the processor.  These are
+  used implicitly when using the storage API to read/write to the storage media.
+
+  Endpoint 0 is the standard USB control pipe used for all enumeration activity.  Though
+  the endpoint buffer is not directly accessible from the processor, read/write activity
+  can be performed on this endpoint through the API layers.  This endpoint is always
+  configured as a bi-directional control endpoint.
+
+  Endpoint 1 is a 64-byte endpoint that can be used for low bandwidth bulk/interrupt
+  activity.  The physical buffer is not accessible from the processor, but can be read/written
+  through the API.  As the data coming to this endpoint is being handled through the
+  software layers, there can be loss of data if a read call is not waiting when an OUT
+  packet arrives.
+
+  Endpoints 3, 5, 7, 9, 10, 11, 12, 13, 14 and 15 are ten configurable endpoints
+  mapped to parts of a total 4 KB FIFO buffer space on the West Bridge device.  This 4 KB
+  physical buffer space is divided into up to four endpoints called PEP1, PEP2, PEP3 and PEP4
+  in this software document.  There are multiple configurations in which this buffer space
+  can be used, and the size and number of buffers available to each physical endpoint
+  vary between these configurations.  See the West Bridge PDD for details on the buffer
+  orientation corresponding to each configuration.
+
+  * Note *
+  PEPs 1, 2, 3 and 4 are called Physical EP 3, 5, 7 and 9 in the West Bridge PDD.  The
+  sequential number scheme is used in the software to disambiguate these from the logical
+  endpoint numbers, and also for convenience of array indexing.
+*/
+
+#if !defined(__doxygen__)
+
+
+#endif
+
+/* Summary
+   This constants defines the maximum size of a USB descriptor when referenced via the
+   CyAsUsbSetDescriptor or CyAsUsbGetDescriptor functions.
+
+   See Also
+   * CyAsUsbSetDescriptor
+   * CyAsUsbGetDescriptor
+*/
+#define CY_AS_MAX_USB_DESCRIPTOR_SIZE				(128)
+
+/*****************************************************************************
+ * West Bridge Types
+ ****************************************************************************/
+
+
+/* Summary
+   This data structure is the data passed via the evdata paramater on a usb event
+   callback for the inquiry request.
+
+   Description
+   When a SCSI inquiry request arrives via the USB connection and the P Port has asked
+   to receive inquiry requests, this request is forwarded to the client via the USB
+   callback.  This callback is called twice, once before the inquiry data is forwarded
+   to the host (CyAsEventUsbInquiryBefore) and once after the inquiry has been sent to the
+   USB host (CyAsEventUsbInquiryAfter).  The evdata parameter is a pointer to this data 
+   structure.  
+   
+   *CyAsEventUsbInquiryBefore*
+   If the client just wishes to see the inquiry request and associated data, then a simple 
+   return from the callback will forward the inquiry response to the USB host.  If the 
+   client wishes to change the data returned to the USB host, the updated parameter must 
+   be set to CyTrue and the memory area address by the data parameter should be updated.  
+   The data pointer can be changed to point to a new memory area and the length field 
+   changed to change the amount of data returned from the inquiry request.  Note that the 
+   data area pointed to by the data parameter must remain valid and the contents must
+   remain consistent until after the CyAsEventUsbInquiryAfter event has occurred.  THE LENGTH
+   MUST BE LESS THAN 192 BYTES OR THE CUSTOM INQUIRY RESPONSE WILL NOT BE RETURNED.  If the
+   length is too long, the default inquiry response will be returned.
+
+   *CyAsEventUsbInquiryAfter*
+   If the client needs to free any data, this event signals that the data associated with
+   the inquiry is no longer needed.
+
+   See Also
+   * CyAsUsbEventCallback
+   * CyAsUsbRegisterCallback
+*/
+typedef struct CyAsUsbInquiryData
+{
+    CyAsBusNumber_t bus ;	/* The bus for the event */
+    uint32_t device ;		/* The device the event */
+    uint8_t evpd ;		/* The EVPD bit from the SCSI INQUIRY request */
+    uint8_t codepage ;		/* The codepage in the inquiry request */
+    CyBool updated ;		/* This bool must be set to CyTrue indicate that the inquiry
+				   data was changed */
+    uint16_t length ;		/* The length of the data */
+    void *data ;		/* The inquiry data */
+} CyAsUsbInquiryData ;
+
+
+/* Summary
+   This data structure is the data passed via the evdata parameter on a usb event
+   callback for the unknown mass storage request.
+
+   Description
+   When a SCSI request is made that the mass storage firmware in West Bridge does not 
+   know how to process, this request is passed to the processor for handling via 
+   the usb callback.  This data structure is used to pass the request and the 
+   associated response.  The user may set the status to indicate the status of the
+   request.  The status value is the bCSWStatus value from the USB mass storage
+   Command Status Wrapper (0 = command passed, 1 = command failed).  If the status
+   is set to command failed (1), the sense information should be set as well.  For
+   more information about sense information, see the USB mass storage specification
+   as well as the SCSI specifications for block devices.  By default the status is
+   initialized to 1 (failure) with a sense information of 05h/20h/00h which
+   indicates INVALID COMMAND.
+*/
+typedef struct CyAsUsbUnknownCommandData
+{
+    CyAsBusNumber_t bus ;	/* The bus for the event */
+    uint32_t device ;		/* The device for the event */
+    uint16_t reqlen ;		/* The length of the requst (should be 16 bytes) */
+    void *request ;		/* The request */
+
+    uint8_t status ;		/* The returned status value for the command */
+    uint8_t key ;		/* If status is failed, the sense key */
+    uint8_t asc ;		/* If status is failed, the additional sense code */
+    uint8_t ascq ;		/* If status if failed, the additional sense code qualifier */
+} CyAsUsbUnknownCommandData ;
+
+
+/* Summary
+   This data structure is the data passed via the evdata paramater on a usb event
+   callback for the start/stop request.
+
+   Description
+   When a SCSI start stop request arrives via the USB connection and the P Port has asked
+
+   See Also
+   * CyAsUsbEventCallback
+   * CyAsUsbRegisterCallback
+*/
+typedef struct CyAsUsbStartStopData
+{
+    CyAsBusNumber_t bus ;	/* The bus for the event */
+    uint32_t device ;		/* The device for the event */
+    CyBool start ;		/* CyTrue means start request, CyFalse means stop request */
+    CyBool loej ;		/* CyTrue means LoEj bit set, otherwise false */
+} CyAsUsbStartStopData ;
+
+/* Summary
+   This data type is used to indicate which mass storage devices are enumerated.
+
+   Description
+
+   See Also
+   * CyAsUsbEnumControl
+   * CyAsUsbSetEnumConfig
+*/
+typedef enum CyAsUsbMassStorageEnum
+{
+    CyAsUsbNandEnum = 0x01,
+    CyAsUsbSDEnum = 0x02,
+    CyAsUsbMMCEnum = 0x04,
+    CyAsUsbCEATAEnum = 0x08
+} CyAsUsbMassStorageEnum ;
+
+/* Summary
+   This data type specifies the type of descriptor to transfer to the West Bridge device
+
+   Description
+   During enumeration, if West Bridge is handling enumeration, the West Bridge device needs to USB descriptors
+   to complete the enumeration.  The function CyAsUsbSetDescriptor() is used to transfer the descriptors
+   to the West Bridge device.  This type is an argument to that function and specifies which descriptor
+   is being transferred.
+
+   See Also
+   * CyAsUsbSetDescriptor
+   * CyAsUsbGetDescriptor
+*/
+typedef enum CyAsUsbDescType
+{
+    CyAsUsbDescDevice = 1,				/* A device descriptor - See USB 2.0 specification Chapter 9 */
+    CyAsUsbDescDeviceQual = 2,				/* A device descriptor qualifier - See USB 2.0 specification Chapter 9 */
+    CyAsUsbDescFSConfiguration = 3,			/* A configuration descriptor for FS operation - See USB 2.0 specification Chapter 9 */
+    CyAsUsbDescHSConfiguration = 4,			/* A configuration descriptor for HS operation - See USB 2.0 specification Chapter 9 */
+    CyAsUsbDescString = 5
+} CyAsUsbDescType ;
+
+/* Summary
+   This type specifies the direction of an endpoint
+
+   Description
+   This type is used when configuring the endpoint hardware to specify the direction
+   of the endpoint.
+
+   See Also
+   * CyAsUsbEndPointConfig
+   * CyAsUsbSetEndPointConfig
+   * CyAsUsbGetEndPointConfig
+*/
+typedef enum CyAsUsbEndPointDir
+{
+	CyAsUsbIn = 0,						/* The endpoint direction is IN (West Bridge -> USB Host) */
+	CyAsUsbOut = 1,						/* The endpoint direction is OUT (USB Host -> West Bridge) */
+	CyAsUsbInOut = 2					/* The endpoint direction is IN/OUT (valid only for EP 0 & 1) */
+} CyAsUsbEndPointDir ;
+
+/* Summary
+   This type specifies the type of an endpoint
+
+   Description
+   This type is used when configuring the endpoint hardware to specify the type of
+   endpoint.
+
+   See Also
+   * CyAsUsbEndPointConfig
+   * CyAsUsbSetEndPointConfig
+   * CyAsUsbGetEndPointConfig
+*/
+typedef enum CyAsUsbEndPointType
+{
+    CyAsUsbControl,
+    CyAsUsbIso,
+    CyAsUsbBulk,
+    CyAsUsbInt
+} CyAsUsbEndPointType ;
+
+/* Summary
+   This type is a structure used to indicate the top level configuration of the USB stack
+
+   Description
+   In order to configure the USB stack, the CyAsUsbSetEnumConfig() function is called to indicate
+   how mass storage is to be handled, the specific number of interfaces to be supported if
+   West Bridge is handling enumeration, and the end points of specifi interest.  This structure
+   contains this information.
+
+   See Also
+   * CyAsUsbSetConfig
+   * CyAsUsbGetConfig
+   * <LINK Enumeration Model>
+*/
+typedef struct CyAsUsbEnumControl
+{
+    CyBool devices_to_enumerate[CY_AS_MAX_BUSES][CY_AS_MAX_STORAGE_DEVICES];
+                                                        /* Designate which devices on which buses to enumerate */
+    CyBool antioch_enumeration ;			/* If true, West Bridge will control enumeration.  If this is false the
+							   P port controls enumeration.  If the P Port is controlling 
+							   enumeration, traffic will be received via endpoint zero. */
+    uint8_t mass_storage_interface ;			/* This is the interface # to use for the mass storage interface, 
+							   if mass storage is enumerated.  If mass storage is not enumerated 
+							   this value should be zero. */
+    uint8_t mtp_interface ;			        /* This is the interface # to use for the MTP interface, 
+							   if MTP is enumerated.  If MTP is not enumerated 
+							   this value should be zero. */
+    CyBool mass_storage_callbacks ;			/* If true, Inquiry, START/STOP, and unknown mass storage
+							   requests cause a callback to occur for handling by the
+							   baseband processor. */
+} CyAsUsbEnumControl ;
+
+
+/* Summary
+   This structure is used to configure a single endpoint
+
+   Description
+   This data structure contains all of the information required to configure the West Bridge hardware
+   associated with a given endpoint.
+
+   See Also
+   * CyAsUsbSetEndPointConfig
+   * CyAsUsbGetEndPointConfig
+*/
+typedef struct CyAsUsbEndPointConfig
+{
+    CyBool enabled ;					/* If true, this endpoint is enabled */
+    CyAsUsbEndPointDir dir ;				/* The direction of this endpoint */
+    CyAsUsbEndPointType type ;				/* The type of endpoint */
+    CyAsEndPointNumber_t physical ;			/* The physical endpoint #, 1, 2, 3, 4 */
+    uint16_t size ;					/* The size of the endpoint in bytes */
+} CyAsUsbEndPointConfig ;
+
+/* Summary
+   List of partition enumeration combinations that can be selected on a partitioned
+   storage device.
+ 
+   Description
+   West Bridge firmware supports creating upto two partitions on mass storage
+   devices connected to West Bridge.  When there are two partitions on a device,
+   the user can choose which of these partitions should be made visible to a USB
+   host through the mass storage interface.  This enumeration lists the various
+   enumeration selections that can be made.
+
+   See Also
+   * CyAsStorageCreatePPartition
+   * CyAsStorageRemovePPartition
+   * CyAsUsbSelectMSPartitions
+ */
+typedef enum CyAsUsbMSType_t {
+    CyAsUsbMSUnit0 = 0,                 /* Enumerate only partition 0 as CD (autorun) device */
+    CyAsUsbMSUnit1,                     /* Enumerate only partition 1 as MS device (default setting) */
+    CyAsUsbMSBoth                       /* Enumerate both units */
+} CyAsUsbMSType_t ;
+
+/* Summary
+   This type specifies the type of USB event that has occurred
+
+   Description
+   This type is used in the USB event callback function to indicate the type of USB event
+   that has occurred.  The callback function includes both this reasons for the callback
+   and a data parameter associated with the reason.  The data parameter is used in a reason
+   specific way and is documented below with each reason.
+
+   See Also
+   * CyAsUsbIoCallback
+*/
+typedef enum CyAsUsbEvent
+{
+    CyAsEventUsbSuspend,				/* This event is sent when West Bridge is put into the suspend
+							   state by the USB host.  The data parameter is not used and
+							   will be zero. */
+    CyAsEventUsbResume,					/* This event is sent when West Bridge is taken out of the
+							   suspend state by the USB host.  The data parameter is not
+							   used and will be zero. */
+    CyAsEventUsbReset,					/* This event is sent when a USB reset request is received
+							   by the West Bridge device.  The data parameter is not used and
+							   will be zero. */
+    CyAsEventUsbSetConfig,				/* This event is sent when a USB set configuration request is made.
+							   The data parameter is a pointer to a uint16_t that contains the 
+							   configuration number.  The configuration number may be zero to 
+							   indicate an unconfigure operation. */
+    CyAsEventUsbSpeedChange,				/* This event is sent when the USB connection changes speed.  This is
+							   generally a transition from full speed to high speed.  The parameter
+							   to this event is a pointer to uint16_t that gives the speed of the
+							   USB connection.  Zero indicates full speed, one indicates high speed */
+    CyAsEventUsbSetupPacket,				/* This event is sent when a setup packet is received.  The data parameter
+							   is a pointer to the eight bytes of setup data. */
+    CyAsEventUsbStatusPacket,				/* This event is sent when a status packet is received.  The data
+							   parameter is not used. */
+    CyAsEventUsbInquiryBefore,				/* This event is sent when mass storage receives an inquiry
+							   request and we have asked to see these requests. */
+    CyAsEventUsbInquiryAfter,				/* This event is sent when mass storage has finished processing an
+							   inquiry request and any data associated with the request is no longer
+							   required. */
+    CyAsEventUsbStartStop,				    /* This event is sent when mass storage receives a start/stop request and
+							   we have asked to see these requests */
+    CyAsEventUsbClearFeature,               /* This event is sent when a Clear Feature request is received.  The data
+							   parameter is the endpoint number. */
+    CyAsEventUsbUnknownStorage,			    /* This event is sent when mass storage receives a request that is not known
+							   and we have asked to see these requests */
+    CyAsEventUsbMSCProgress                 /* This event is sent when the read/write activity on the USB mass
+                                                           storage has crossed a pre-set level */
+} CyAsUsbEvent;
+
+/* Summary
+   This type is the type of a callback function that is called when a USB event occurs
+
+   Description
+   At times West Bridge needs to inform the P port processor of events that have
+   occurred.  These events are asynchronous to the thread of control on the P
+   port processor and as such are generally delivered via a callback function that
+   is called as part of an interrupt handler.  This type defines the type of function
+   that must be provided as a callback function for USB events.
+
+   See Also
+   * CyAsUsbEvent
+*/
+typedef void (*CyAsUsbEventCallback)(
+    CyAsDeviceHandle			handle,		/* Handle to the device to configure */
+    CyAsUsbEvent			ev,		/* The event type being reported */
+    void *				evdata		/* The data assocaited with the event being reported */
+) ;
+
+
+/* Summary
+   This type is the callback function called after an asynchronous USB read/write operation
+
+   Description
+   This function type defines a callback function that is called at the completion of any
+   asynchronous read or write operation.
+
+   See Also
+   * CyAsUsbReadDataAsync
+   * CyAsUsbWriteDataAsync
+   * CY_AS_ERROR_CANCELED
+*/
+typedef void (*CyAsUsbIoCallback)(
+    CyAsDeviceHandle			handle,		/* Handle to the device to configure */
+    CyAsEndPointNumber_t		ep,		/* The endpoint that has completed an operation */
+    uint32_t				count,		/* THe amount of data transferred to/from USB */
+    void *				buffer,		/* The data buffer for the operation */
+    CyAsReturnStatus_t			status		/* The error status of the operation */
+) ;
+
+/* Summary
+   This type is the callback function called after asynchronous API functions have completed.
+
+   Description
+   When calling API functions from callback routines (interrupt handlers usually) the async version of
+   these functions must be used.  This callback is called when an asynchronous API function has completed.
+*/
+typedef void (*CyAsUsbFunctionCallback)(
+    CyAsDeviceHandle			handle,		/* Handle to the device to configure */
+    CyAsReturnStatus_t			status,		/* The error status of the operation */
+    uint32_t				client		/* A client supplied 32 bit tag */
+) ;
+
+
+/*****************************************************************************
+ * West Bridge Functions
+ ****************************************************************************/
+
+/* Summary
+   This function starts the USB stack
+
+   Description
+   This function initializes the West Bridge USB software stack if it has not yet been stared.  
+   This initializes any required data structures and powers up any USB specific portions of 
+   the West Bridge hardware.  If the stack had already been started, the USB stack reference count 
+   is incremented.
+
+   * Valid In Asynchronous Callback: YES (if cb supplied)
+   * Nestable: YES
+
+   Notes
+   This function cannot be called from any type of West Bridge callback.
+
+   Returns
+   * CY_AS_ERROR_NOT_CONFIGURED - the West Bridge device has not been configured
+   * CY_AS_ERROR_NO_FIRMWARE - the firmware has not been loaded into West Bridge
+   * CY_AS_ERROR_SUCCESS - the stack initialized and is ready for use
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+
+   See Also
+   * CyAsUsbStop
+*/
+EXTERN CyAsReturnStatus_t 
+CyAsUsbStart(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsFunctionCallback		cb,             /* The callback if async call */
+	uint32_t			client          /* Client supplied data */
+	) ;
+
+/* Summary
+   This function stops the USB stack
+
+   Description
+   This function decrements the reference count for the USB stack and if this count
+   is zero, the USB stack is shut down.  The shutdown frees all resources associated
+   with the USB stack.
+
+   * Valid In Asynchronous Callback: NO
+
+   Notes
+   While all resources associated with the USB stack will be freed is a shutdown occurs,
+   resources associated with underlying layers of the software will not be freed if they
+   are shared by the storage stack and the storage stack is active.  Specifically the DMA manager,
+   the interrupt manager, and the West Bridge communications module are all shared by both the
+   USB stack and the storage stack.
+
+   Returns
+   * CY_AS_ERROR_NOT_CONFIGURED - the West Bridge device has not been configured
+   * CY_AS_ERROR_NO_FIRMWARE - the firmware has not been loaded into West Bridge
+   * CY_AS_ERROR_SUCCESS - this module was shut down sucessfully
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+
+   See Also
+   * CyAsUsbStart
+*/
+EXTERN CyAsReturnStatus_t
+CyAsUsbStop(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsFunctionCallback		cb,     /* The callback if async call */
+	uint32_t			client          /* Client supplied data */
+	) ;
+
+/* Summary
+   This function registers a callback function to be called when an asynchronous USB event occurs
+
+   Description
+   When asynchronous USB events occur, a callback function can be called to alert the calling program.  This
+   functions allows the calling program to register a callback.
+
+   * Valid In Asynchronous Callback: YES
+*/
+EXTERN CyAsReturnStatus_t
+CyAsUsbRegisterCallback(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsUsbEventCallback	callback	/* The function to call */
+	) ;
+
+
+/* Summary
+   This function connects the West Bridge device D+ and D- signals physically to the USB host.
+
+   Description
+   The West Bridge device has the ability to programmatically disconnect the USB pins on the device
+   from the USB host.  This feature allows for re-enumeration of the West Bridge device as a different
+   device when necessary.  This function connects the D+ and D- signal physically to the USB host
+   if they have been previously disconnnected.
+
+   * Valid In Asynchronous Callback: YES (if cb supplied)
+   * Nestable: YES
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - this module was shut down sucessfully
+   * CY_AS_ERROR_NOT_CONFIGURED - the West Bridge device has not been configured
+   * CY_AS_ERROR_NO_FIRMWARE - the firmware has not been loaded into West Bridge
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+
+   See Also
+   * CyAsUsbDisconnect
+*/
+EXTERN CyAsReturnStatus_t
+CyAsUsbConnect(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsFunctionCallback	cb,         /* The callback if async call */
+	uint32_t			    client      /* Client supplied data */
+	) ;
+
+/* Summary
+   This function disconnects the West Bridge device D+ and D- signals physically from the USB host.
+
+   Description
+   The West Bridge device has the ability to programmatically disconnect the USB pins on the device
+   from the USB host.  This feature allows for re-enumeration of the West Bridge device as a different
+   device when necessary.  This function disconnects the D+ and D- signal physically from the USB host
+   if they have been previously connected.
+
+   * Valid In Asynchronous Callback: YES (if cb supplied)
+   * Nestable: YES
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - this module was shut down sucessfully
+   * CY_AS_ERROR_NOT_CONFIGURED - the West Bridge device has not been configured
+   * CY_AS_ERROR_NO_FIRMWARE - the firmware has not been loaded into West Bridge
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+
+   See Also
+   * CyAsUsbConnect
+*/
+EXTERN CyAsReturnStatus_t
+CyAsUsbDisconnect(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsFunctionCallback	cb,         /* The callback if async call */
+	uint32_t			    client      /* Client supplied data */
+	) ;
+
+/* Summary
+   This function configures the USB stack
+
+   Description
+   This function is used to configure the USB stack.  It is used to indicate which endpoints are going to
+   be used, and how to deal with the mass storage USB device within West Bridge.
+
+   * Valid In Asynchronous Callback: Yes (if cb supplied)
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - this module was shut down sucessfully
+   * CY_AS_ERROR_NOT_CONFIGURED - the West Bridge device has not been configured
+   * CY_AS_ERROR_NO_FIRMWARE - the firmware has not been loaded into West Bridge
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+
+   See Also
+   * CyAsUsbGetEnumConfig
+   * CyAsUsbEnumControl
+ */
+EXTERN CyAsReturnStatus_t
+CyAsUsbSetEnumConfig(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsUsbEnumControl *	config_p,	/* The USB configuration information */
+	CyAsFunctionCallback	cb,         /* The callback if async call */
+	uint32_t			    client      /* Client supplied data */
+	) ;
+
+/* Summary
+   This function retreives the current configuration of the USB stack
+
+   Description
+   This function sends a request to West Bridge to retreive the current configuration
+
+   * Valid In Asynchronous Callback: Yes (if cb supplied)
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - this module was shut down sucessfully
+   * CY_AS_ERROR_NOT_CONFIGURED - the West Bridge device has not been configured
+   * CY_AS_ERROR_NO_FIRMWARE - the firmware has not been loaded into West Bridge
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+
+   See Also
+   * CyAsUsbSetConfig
+   * CyAsUsbConfig
+ */
+EXTERN CyAsReturnStatus_t
+CyAsUsbGetEnumConfig(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsUsbEnumControl*		config_p,	/* The return value for USB congifuration information */
+	CyAsFunctionCallback		cb,     /* The callback if async call */
+	uint32_t			client          /* Client supplied data */
+	) ;
+
+/* Summary
+   This function sets the USB descriptor
+
+   Description
+   This function is used to set the various descriptors assocaited with the USB enumeration
+   process.  This function should only be called when the West Bridge enumeration model is selected.
+   Descriptors set using this function can be cleared by stopping the USB stack, or by calling
+   the CyAsUsbClearDescriptors function.
+
+   * Valid In Asynchronous Callback: YES (if cb supplied)
+   * Nestable: YES
+
+   Notes
+   These descriptors are described in the USB 2.0 specification, Chapter 9.
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - this module was shut down sucessfully
+   * CY_AS_ERROR_NOT_CONFIGURED - the West Bridge device has not been configured
+   * CY_AS_ERROR_NO_FIRMWARE - the firmware has not been loaded into West Bridge
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+   * CY_AS_ERROR_INVALID_DESCRIPTOR - the descriptor passed is not valid
+   * CY_AS_ERROR_BAD_INDEX - a bad index was given for the type of descriptor given
+   * CY_AS_ERROR_BAD_ENUMERATION_MODE - this function cannot be called if the P port processor doing enumeration
+
+   See Also
+   * CyAsUsbGetDescriptor
+   * CyAsUsbClearDescriptors
+   * <LINK Enumeration Model>
+*/
+EXTERN CyAsReturnStatus_t
+CyAsUsbSetDescriptor(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsUsbDescType			type,		/* The type of descriptor */
+	uint8_t				index,		/* Only valid for string descriptors */
+	void *				desc_p,		/* The descriptor to be transferred */
+	uint16_t			length,		/* The length of the descriptor in bytes */
+	CyAsFunctionCallback		cb,             /* The callback if async call */
+	uint32_t			client          /* Client supplied data */
+	) ;
+
+/* Summary
+   This function clears all user descriptors stored on the West Bridge.
+
+   Description
+   This function is used to clear all descriptors that were previously
+   stored on the West Bridge through CyAsUsbSetDescriptor calls, and go back
+   to the default descriptor setup in the firmware.  This function should
+   only be called when the Antioch enumeration model is selected.
+
+   * Valid In Asynchronous Callback: Yes (if cb supplied)
+   * Nestable: Yes
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - all descriptors cleared successfully
+   * CY_AS_ERROR_NOT_CONFIGURED - the West Bridge device has not been configured
+   * CY_AS_ERROR_NO_FIRMWARE - the firmware has not been loaded into West Bridge
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+   * CY_AS_ERROR_BAD_ENUMERATION_MODE - this function cannot be called if the P port processor is doing enumeration
+
+   See Also
+   * CyAsUsbSetDescriptor
+   * <LINK Enumeration Model>
+*/
+EXTERN CyAsReturnStatus_t
+CyAsUsbClearDescriptors(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+        CyAsFunctionCallback            cb,             /* The callback if async call */
+        uint32_t                        client          /* Client supplied data */
+	) ;
+/* Summary
+   This structure contains the descriptor buffer to be filled by CyAsUsbGetDescriptor API.
+
+   Description
+   This data structure the buffer to hold the descriptor data, and an in/out parameter ti indicate the
+   lenght of the buffer and descriptor data in bytes.
+
+   See Also
+   * CyAsUsbGetDescriptor
+*/
+typedef struct CyAsGetDescriptorData
+{
+    void *	desc_p;		/* The buffer to hold the returned descriptor */
+    uint32_t 	length;	/* This is an input and output parameter.  Before the code this pointer
+				           points to a uint32_t that contains the length of the buffer.  After
+				           the call, this value contains the amount of data actually returned. */
+
+} CyAsGetDescriptorData ;
+
+/* Summary
+   This function retreives a given descriptor from the West Bridge device
+
+   Description
+   This function retreives a USB descriptor from the West Bridge device.  This function should only be called when the
+   West Bridge enumeration model is selected.
+
+   * Valid In Asynchronous Callback: YES (if cb supplied)
+   * Nestable: YES
+
+   Notes
+   These descriptors are described in the USB 2.0 specification, Chapter 9.
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - this module was shut down sucessfully
+   * CY_AS_ERROR_NOT_CONFIGURED - the West Bridge device has not been configured
+   * CY_AS_ERROR_NO_FIRMWARE - the firmware has not been loaded into West Bridge
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+   * CY_AS_ERROR_BAD_INDEX - a bad index was given for the type of descriptor given
+   * CY_AS_ERROR_BAD_ENUMERATION_MODE - this function cannot be called if the P port processor doing enumeration
+
+   See Also
+   * CyAsUsbSetDescriptor
+   * <LINK Enumeration Model>
+*/
+
+EXTERN CyAsReturnStatus_t
+CyAsUsbGetDescriptor(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsUsbDescType			type,		/* The type of descriptor */
+	uint8_t				index,		/* Index for string descriptor */
+	CyAsGetDescriptorData *		data,           /* Parameters and return value for the get descriptor call */
+	CyAsFunctionCallback		cb,             /* The callback if async call */
+	uint32_t			client          /* Client supplied data */
+	) ;
+
+/* Summary
+   This function sets the configuration of the physical endpoints into one of the
+   twelve supported configuration
+
+   Description
+   USB endpoints are mapped onto one of four physical endpoints in the device.  Therefore
+   USB endpoints are known as logical endpoints and these logical endpoints are mapped to
+   one of four physical endpoints.  In support of these four physical endpoints there is
+   four kilo-bytes of buffer spaces that can be used as buffers for these physical endpoints.
+   This 4K of buffer space can be configured in one of twelve ways.  This function sets the
+   buffer configuration for the physical endpoints.
+
+   * Config  1: PEP1 (2 * 512), PEP2 (2 * 512), PEP3 (2 * 512), PEP4 (2 * 512)
+   * Config  2: PEP1 (2 * 512), PEP2 (2 * 512), PEP3 (4 * 512), PEP4 (N/A)
+   * Config  3: PEP1 (2 * 512), PEP2 (2 * 512), PEP3 (2 * 1024), PEP4(N/A)
+   * Config  4: PEP1 (4 * 512), PEP2 (N/A), PEP3 (2 * 512), PEP4 (2 * 512)
+   * Config  5: PEP1 (4 * 512), PEP2 (N/A), PEP3 (4 * 512), PEP4 (N/A)
+   * Config  6: PEP1 (4 * 512), PEP2 (N/A), PEP3 (2 * 1024), PEP4 (N/A)
+   * Config  7: PEP1 (2 * 1024), PEP2 (N/A), PEP3 (2 * 512), PEP4 (2 * 512)
+   * Config  8: PEP1 (2 * 1024), PEP2 (N/A), PEP3 (4 * 512), PEP4 (N/A)
+   * Config  9: PEP1 (2 * 1024), PEP2 (N/A), PEP3 (2 * 1024), PEP4 (N/A)
+   * Config 10: PEP1 (3 * 512), PEP2 (N/A), PEP3 (3 * 512), PEP4 (2 * 512)
+   * Config 11: PEP1 (3 * 1024), PEP2 (N/A), PEP3 (N/A), PEP4 (2 * 512)
+   * Config 12: PEP1 (4 * 1024), PEP2 (N/A), PEP3 (N/A), PEP4 (N/A)
+
+   * Valid In Asynchronous Callback: NO
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - this module was shut down sucessfully
+   * CY_AS_ERROR_NOT_CONFIGURED - the West Bridge device has not been configured
+   * CY_AS_ERROR_NO_FIRMWARE - the firmware has not been loaded into West Bridge
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+   * CY_AS_ERROR_INVALID_CONFIGURATION - the configuration given is not between 1 and 12
+*/
+EXTERN CyAsReturnStatus_t
+CyAsUsbSetPhysicalConfiguration(
+    CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+    uint8_t			config		/* The physical endpoint configuration number */
+    ) ;
+
+/* Summary
+   This function sets the hardware configuration for a given endpoint
+
+   Description
+   This function sets the hardware configuration for a given endpoint.  This is the method to set the
+   direction of the endpoint, the type of endpoint, the size of the endpoint buffer, and the buffering
+   style for the endpoint.
+
+   * Valid In Asynchronous Callback: NO
+
+   Notes
+   Add documentation about endpoint configuration limitations
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - this module was shut down sucessfully
+   * CY_AS_ERROR_NOT_CONFIGURED - the West Bridge device has not been configured
+   * CY_AS_ERROR_NO_FIRMWARE - the firmware has not been loaded into West Bridge
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+   * CY_AS_ERROR_INVALID_ENDPOINT - the endpoint parameter is invalid
+   * CY_AS_ERROR_INVALID_CONFIGURATION - the endpoint configuration given is not valid
+   * CY_AS_ERROR_ENDPOINT_CONFIG_NOT_SET - the physical endpoint configuration is not set
+
+   See Also
+   * CyAsUsbGetEndPointConfig
+   * CyAsUsbEndPointConfig
+*/
+EXTERN CyAsReturnStatus_t
+CyAsUsbSetEndPointConfig(
+    CyAsDeviceHandle			handle,		/* Handle to the West Bridge device */
+    CyAsEndPointNumber_t		ep,		/* The endpoint of interest */
+    CyAsUsbEndPointConfig *		config_p	/* The configuration information for the endpoint */
+	) ;
+
+/* Summary
+   This function retreives the hardware configuration for a given endpoint
+
+   Description
+   This function gets the hardware configuration for the given endpoint.  This include information about
+   the direction of the endpoint, the type of endpoint, the size of the endpoint buffer, and the buffering
+   style for the endpoint.
+
+   * Valid In Asynchronous Callback: NO
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - this module was shut down sucessfully
+   * CY_AS_ERROR_NOT_CONFIGURED - the West Bridge device has not been configured
+   * CY_AS_ERROR_NO_FIRMWARE - the firmware has not been loaded into West Bridge
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+   * CY_AS_ERROR_INVALID_ENDPOINT - the endpoint parameter is invalid
+
+   See Also
+   * CyAsUsbSetEndPointConfig
+   * CyAsUsbEndPointConfig
+*/
+EXTERN CyAsReturnStatus_t
+CyAsUsbGetEndPointConfig(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsEndPointNumber_t		ep,			/* The endpoint of interest*/
+	CyAsUsbEndPointConfig *		config_p	/* The return value containing the endpoint config information */
+	) ;
+
+/* Summary
+   This function commits the configuration information that has previously been set.
+
+   Description
+   The initialization process involves calling CyAsUsbSetEnumConfig() and CyAsUsbSetEndPointConfig(). These
+   functions do not actually send the configuration information to the West Bridge device.  Instead, these
+   functions store away the configuration information and this CyAsUsbCommitConfig() actually finds the
+   best hardware configuration based on the requested endpoint configuration and sends thsi optimal
+   confiuration down to the West Bridge device.
+
+   * Valid In Asynchronous Callback: YES (if cb supplied)
+   * Nestable: YES
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - a configuration was found and sent to West Bridge
+   * CY_AS_ERROR_NOT_CONFIGURED - the West Bridge device has not been configured
+   * CY_AS_ERROR_NO_FIRMWARE - the firmware has not been loaded into West Bridge
+   * CY_AS_ERROR_INVALID_CONFIGURATION - the configuration requested is not possible
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+
+   See Also
+   * CyAsUsbSetEndPointConfig
+   * CyAsUsbSetEnumConfig
+*/
+
+EXTERN CyAsReturnStatus_t
+CyAsUsbCommitConfig(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsFunctionCallback		cb,             /* The callback if async call */
+	uint32_t			client          /* Client supplied data */
+	) ;
+
+/* Summary
+   This function reads data from a USB endpoint.
+
+   Description
+   This function reads data from an OUT.  This function blocks until the read is complete.
+   If this is a packet read, a single received USB packet will complete the read.  If this 
+   is not a packet read, this function will block until all of the data requested has been
+   recevied.
+
+   * Valid In Asynchronous Callback: NO
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - this module was shut down sucessfully
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+   * CY_AS_ERROR_INVALID_ENDPOINT - the endpoint parameter is invalid
+
+   See Also
+   * CyAsUsbReadDataAsync
+   * CyAsUsbWriteData
+   * CyAsUsbWriteDataAsync
+*/
+EXTERN CyAsReturnStatus_t 
+CyAsUsbReadData(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsEndPointNumber_t		ep,		/* The endpoint of interest */
+	CyBool				pktread,	/* If CyTrue, this is a packet read */
+	uint32_t			dsize,		/* The amount of data to read */
+	uint32_t *			dataread,	/* The amount of data read */
+	void *				data		/* The buffer to hold the data read */
+	) ;
+
+/* Summary
+   This function reads data from a USB endpoint
+
+   Description
+   This function reads data from an OUT endpoint.  This function will return immediately and
+   the callback provided will be called when the read is complete.  If this is a packet read,
+   then the callback will be called on the next received packet.  If this is not a packet read,
+   the callback will be called when the requested data is received.
+
+   * Valid In Asynchronous Callback: YES
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - this module was shut down sucessfully
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+   * CY_AS_ERROR_INVALID_ENDPOINT - the endpoint parameter is invalid
+
+   See Also
+   * CyAsUsbReadData
+   * CyAsUsbWriteData
+   * CyAsUsbWriteDataAsync
+*/
+EXTERN CyAsReturnStatus_t 
+CyAsUsbReadDataAsync(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsEndPointNumber_t		ep,		/* The endpoint of interest */
+	CyBool				pktread,	/* If CyTrue, this is a packet read */
+	uint32_t			dsize,		/* The amount of data to read */
+	void *				data,		/* The buffer for storing the data */
+	CyAsUsbIoCallback		callback	/* The callback function to call when the data is read */
+	) ;
+
+/* Summary
+   This function writes data to a USB endpoint
+
+   Description
+   This function writes data to an IN endpoint data buffer.  Multiple USB packets may be sent 
+   until all data requested has been sent.  This function blocks until all of the data has been sent.
+
+   * Valid In Asynchronous Callback: NO
+
+   Notes
+   Calling this function with a dsize of zero will result in a zero length packet transmitted to the
+   USB host.
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - this module was shut down sucessfully
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+   * CY_AS_ERROR_INVALID_ENDPOINT - the endpoint parameter is invalid
+
+   See Also
+   * CyAsUsbReadData
+   * CyAsUsbReadDataAsync
+   * CyAsUsbWriteDataAsync
+*/
+EXTERN CyAsReturnStatus_t 
+CyAsUsbWriteData(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsEndPointNumber_t		ep,		/* The endpoint to write data to */
+	uint32_t			dsize,		/* The size of the data to write */
+	void *				data		/* The data buffer */
+	) ;
+
+/* Summary
+   This function writes data to a USB endpoint
+
+   Description
+   This function writes data to an IN endpoint data buffer.  This function returns immediately 
+   and when the write completes, or if an error occurs, the callback function is called to indicate 
+   completion of the write operation.
+
+   * Valid In Asynchronous Callback: YES
+
+   Notes
+   Calling this function with a dsize of zero will result in a zero length packet transmitted to the
+   USB host.
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - this module was shut down sucessfully
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+   * CY_AS_ERROR_INVALID_ENDPOINT - the endpoint parameter is invalid
+
+   See Also
+   * CyAsUsbReadData
+   * CyAsUsbReadDataAsync
+   * CyAsUsbWriteData
+*/
+EXTERN CyAsReturnStatus_t 
+CyAsUsbWriteDataAsync(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsEndPointNumber_t		ep,		/* The endpoint to write data to */
+	uint32_t			dsize,		/* The size of the data */
+	void *				data,		/* The buffer containing the data */
+	CyBool				spacket,	/* If true, send a short packet to terminate data */
+	CyAsUsbIoCallback		callback	/* The callback to call when the data is written */
+	) ;
+
+/* Summary
+   This function aborts an outstanding asynchronous operation on a given endpoint
+
+   Description
+   This function aborts any outstanding operation that is pending on the given
+   endpoint.
+
+   * Valid In Asynchronous Callback: YES
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - this module was shut down sucessfully
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+   * CY_AS_ERROR_ASYNC_NOT_PENDING - no asynchronous USB operation was pending
+
+   See Also
+   * CyAsUsbReadData
+   * CyAsUsbReadDataAsync
+   * CyAsUsbWriteData
+   * CyAsUsbWriteDataAsync
+*/
+EXTERN CyAsReturnStatus_t 
+CyAsUsbCancelAsync(
+	CyAsDeviceHandle		handle,			/* Handle to the West Bridge device */
+	CyAsEndPointNumber_t		ep			/* The endpoint of interest */
+	) ;
+
+/* Summary
+   This function sets a stall condition on a given endpoint
+
+   Description
+   This function sets a stall condition on the given endpoint.  If the callback function
+   is not zero, the function is executed asynchronously and the callback is called when
+   the function is completed.  If the callback function is zero, this function executes
+   synchronously and will not return until the function has completed.
+
+   * Valid In Asynchronous Callback: YES (if cb supplied)
+   * Nestable: YES
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the function succeeded
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+   * CY_AS_ERROR_INVALID_ENDPOINT - the endpoint given was invalid, or was not configured as an OUT endpoint
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_INVALID_IN_CALLBACK (only if no cb supplied)
+   * CY_AS_ERROR_OUT_OF_MEMORY
+   * CY_AS_ERROR_INVALID_RESPONSE
+
+   See Also
+   * CyAsUsbGetStall
+   * CyAsUsbClearStall
+*/
+EXTERN CyAsReturnStatus_t
+CyAsUsbSetStall(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsEndPointNumber_t		ep,		/* The endpoint of interest */
+	CyAsFunctionCallback		cb,		/* The callback if async call */
+	uint32_t			client		/* Client supplied data */
+) ;
+
+/* Summary
+   This function clears a stall condition on a given endpoint
+
+   Description
+   This function clears a stall condition on the given endpoint. If the callback function
+   is not zero, the function is executed asynchronously and the callback is called when
+   the function is completed.  If the callback function is zero, this function executes
+   synchronously and will not return until the function has completed.
+
+   * Valid In Asynchronous Callback: YES (if cb supplied)
+   * Nestable: YES
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the function succeeded
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+   * CY_AS_ERROR_INVALID_ENDPOINT - the endpoint given was invalid, or was not configured as an OUT endpoint
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_INVALID_IN_CALLBACK (only if no cb supplied)
+   * CY_AS_ERROR_OUT_OF_MEMORY
+   * CY_AS_ERROR_INVALID_RESPONSE
+
+   See Also
+   * CyAsUsbGetStall
+   * CyAsUsbSetStall
+*/
+
+EXTERN CyAsReturnStatus_t 
+CyAsUsbClearStall(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsEndPointNumber_t		ep,		/* The endpoint of interest */
+	CyAsFunctionCallback		cb,		/* The callback if async call */
+	uint32_t			    client		/* Client supplied data */
+	) ;
+
+
+/* Summary
+   This function returns the stall status for a given endpoint
+
+   Description
+   This function returns the stall status for a given endpoint
+
+   * Valid In Asynchronous Callback: YES (if cb supplied)
+   * Nestable: YES
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the function succeeded
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+   * CY_AS_ERROR_INVALID_ENDPOINT - the endpoint given was invalid, or was not configured as an OUT endpoint
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_INVALID_IN_CALLBACK
+   * CY_AS_ERROR_OUT_OF_MEMORY
+   * CY_AS_ERROR_INVALID_RESPONSE
+
+   See Also
+   * CyAsUsbGetStall
+   * CyAsUsbSetStall
+   * CyAsUsbClearStall
+*/
+
+EXTERN CyAsReturnStatus_t
+CyAsUsbGetStall(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsEndPointNumber_t		ep,		/* The endpoint of interest */
+	CyBool *			    stall_p,	/* The return value for the stall state */
+	CyAsFunctionCallback		cb,     /* The callback if async call */
+	uint32_t			    client      /* Client supplied data */
+	) ;
+
+/* Summary
+   This function sets a NAK condition on a given endpoint
+
+   Description
+   This function sets a NAK condition on the given endpoint.  If the callback function
+   is not zero, the function is executed asynchronously and the callback is called when
+   the function is completed.  If the callback function is zero, this function executes
+   synchronously and will not return until the function has completed.
+
+   * Valid In Asynchronous Callback: YES (if cb supplied)
+   * Nestable: YES
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the function succeeded
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+   * CY_AS_ERROR_INVALID_ENDPOINT - the endpoint given was invalid, or was not configured as an OUT endpoint
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_INVALID_IN_CALLBACK (only if no cb supplied)
+   * CY_AS_ERROR_OUT_OF_MEMORY
+   * CY_AS_ERROR_INVALID_RESPONSE
+
+   See Also
+   * CyAsUsbGetNak
+   * CyAsUsbClearNak
+*/
+EXTERN CyAsReturnStatus_t
+CyAsUsbSetNak(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsEndPointNumber_t		ep,		/* The endpoint of interest */
+	CyAsFunctionCallback		cb,		/* The callback if async call */
+	uint32_t			client		/* Client supplied data */
+) ;
+
+/* Summary
+   This function clears a NAK condition on a given endpoint
+
+   Description
+   This function clears a NAK condition on the given endpoint. If the callback function
+   is not zero, the function is executed asynchronously and the callback is called when
+   the function is completed.  If the callback function is zero, this function executes
+   synchronously and will not return until the function has completed.
+
+   * Valid In Asynchronous Callback: YES (if cb supplied)
+   * Nestable: YES
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the function succeeded
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+   * CY_AS_ERROR_INVALID_ENDPOINT - the endpoint given was invalid, or was not configured as an OUT endpoint
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_INVALID_IN_CALLBACK (only if no cb supplied)
+   * CY_AS_ERROR_OUT_OF_MEMORY
+   * CY_AS_ERROR_INVALID_RESPONSE
+
+   See Also
+   * CyAsUsbGetNak
+   * CyAsUsbSetNak
+*/
+EXTERN CyAsReturnStatus_t 
+CyAsUsbClearNak(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsEndPointNumber_t		ep,		/* The endpoint of interest */
+	CyAsFunctionCallback		cb,		/* The callback if async call */
+	uint32_t			client		/* Client supplied data */
+	) ;
+
+/* Summary
+   This function returns the NAK status for a given endpoint
+
+   Description
+   This function returns the NAK status for a given endpoint
+
+   * Valid In Asynchronous Callback: YES (if cb supplied)
+   * Nestable: YES
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the function succeeded
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+   * CY_AS_ERROR_INVALID_ENDPOINT - the endpoint given was invalid, or was not configured as an OUT endpoint
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_INVALID_IN_CALLBACK
+   * CY_AS_ERROR_OUT_OF_MEMORY
+   * CY_AS_ERROR_INVALID_RESPONSE
+
+   See Also
+   * CyAsUsbSetNak
+   * CyAsUsbClearNak
+*/
+EXTERN CyAsReturnStatus_t
+CyAsUsbGetNak(
+    CyAsDeviceHandle		    handle,	    /* Handle to the West Bridge device */
+    CyAsEndPointNumber_t	    ep,		    /* The endpoint of interest */
+    CyBool *			        nak_p,	    /* The return value for the stall state */
+    CyAsFunctionCallback	    cb,         /* The callback if async call */
+    uint32_t			        client      /* Client supplied data */
+) ;
+
+/* Summary
+   This function triggers a USB remote wakeup from the Processor API
+
+   Description
+   When there is a Suspend condition on the USB bus, this function programmatically takes the USB bus out of thi suspend state.
+
+  * Valid In Asynchronous Callback: YES (if cb supplied)
+   * Nestable: YES
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the function succeeded
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_INVALID_IN_CALLBACK
+   * CY_AS_ERROR_OUT_OF_MEMORY
+   * CY_AS_ERROR_INVALID_RESPONSE
+   * CY_AS_ERROR_NOT_IN_SUSPEND
+
+*/
+EXTERN CyAsReturnStatus_t
+CyAsUsbSignalRemoteWakeup(
+        CyAsDeviceHandle            handle,         /* Handle to the West Bridge device */
+        CyAsFunctionCallback        cb,             /* The callback if async call */
+        uint32_t                    client          /* Client supplied data */
+        ) ;
+
+/* Summary
+   This function sets the threshold levels for mass storage progress reports from the West Bridge.
+
+   Description
+   The West Bridge firmware can be configured to track the amount of read/write activity on
+   the mass storage device, and send progress reports when the activity level has crossed a
+   threshold level.  This function sets the threshold levels for the progress reports.
+   Set wr_sectors and rd_sectors to 0, if the progress reports are to be turned off.
+
+   * Valid In Asynchronous Callback: Yes (if cb supplied)
+   * Nestable: Yes
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the function succeeded
+   * CY_AS_ERROR_NOT_RUNNING - the USB stack is not running
+   * CY_AS_ERROR_TIMEOUT - a timeout occurred communicating with the West Bridge device
+   * CY_AS_ERROR_INVALID_HANDLE - Bad handle
+   * CY_AS_ERROR_INVALID_IN_CALLBACK - Synchronous call made while in callback
+   * CY_AS_ERROR_OUT_OF_MEMORY - Failed allocating memory for request processing
+   * CY_AS_ERROR_NOT_SUPPORTED - Firmware version does not support mass storage progress tracking
+   * CY_AS_ERROR_INVALID_RESPONSE - Unexpected response from Firmware
+
+   See Also
+   * CyAsUsbMSCProgressData
+   * CyAsEventUsbMSCProgress
+*/
+EXTERN CyAsReturnStatus_t
+CyAsUsbSetMSReportThreshold(
+        CyAsDeviceHandle            handle,         /* Handle to the West Bridge device */
+        uint32_t                    wr_sectors,     /* Number of sectors written before report is sent */
+        uint32_t                    rd_sectors,     /* Number of sectors read before report is sent */
+        CyAsFunctionCallback        cb,             /* The callback if async call */
+        uint32_t                    client          /* Client supplied data */
+        ) ;
+
+/* Summary
+   Specify which of the partitions on a partitioned mass storage device should be made visible to
+   USB.
+
+   Description
+   West Bridge firmware supports the creation of upto two partitions on mass storage devices
+   connected to the West Bridge device.  When there are two partitions on a device, the user
+   can choose which of these partitions should be made visible to the USB host through the
+   USB mass storage interface.  This function allows the user to configure the partitions that
+   should be enumerated.  At least one partition should be selected through this API.  If neither
+   partition needs to be enumerated, use CyAsUsbSetEnumConfig to control this.
+
+   * Valid in Asynchronous callback: Yes (if cb supplied)
+   * Nestable: Yes
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - operation completed successfully
+   * CY_AS_ERROR_INVALID_HANDLE - invalid handle to the West Bridge device
+   * CY_AS_ERROR_NOT_CONFIGURED - West Bridge device has not been configured
+   * CY_AS_ERROR_NO_FIRMWARE - no firmware running on West Bridge device
+   * CY_AS_ERROR_NOT_RUNNING - USB stack has not been started
+   * CY_AS_ERROR_IN_SUSPEND - West Bridge device is in suspend mode
+   * CY_AS_ERROR_INVALID_CALL_SEQUENCE - this API has to be called before CyAsUsbSetEnumConfig
+   * CY_AS_ERROR_OUT_OF_MEMORY - failed to get memory to process the request
+   * CY_AS_ERROR_NO_SUCH_UNIT - Storage device addressed has not been partitioned
+   * CY_AS_ERROR_NOT_SUPPORTED - operation is not supported by active device/firmware.
+ 
+   See Also
+   * CyAsStorageCreatePPartition
+   * CyAsStorageRemovePPartition
+   * CyAsUsbMsType_t
+ */
+EXTERN CyAsReturnStatus_t
+CyAsUsbSelectMSPartitions (
+        CyAsDeviceHandle            handle,         /* Handle to the West Bridge device */
+        CyAsBusNumber_t             bus,            /* Bus index of the device being addressed */
+        uint32_t                    device,         /* Device id of the device being addressed */
+        CyAsUsbMSType_t             type,           /* Selection of partitions to be enumerated */
+        CyAsFunctionCallback        cb,             /* The callback, if async call */
+        uint32_t                    client          /* Client supplied data */
+        );
+
+/* For supporting deprecated functions */
+#include "cyasusb_dep.h"    
+
+#include "cyas_cplus_end.h"
+
+#endif				/* _INCLUDED_CYASUSB_H_ */