Update Temperature board driver to be AVR32 compatible when the ADC peripheral driver...
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Device / MassStorage.h
index 4dca793..87dcfb2 100644 (file)
@@ -1,21 +1,21 @@
 /*\r
              LUFA Library\r
 /*\r
              LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
+     Copyright (C) Dean Camera, 2010.\r
               \r
   dean [at] fourwalledcubicle [dot] com\r
       www.fourwalledcubicle.com\r
 */\r
 \r
 /*\r
               \r
   dean [at] fourwalledcubicle [dot] com\r
       www.fourwalledcubicle.com\r
 */\r
 \r
 /*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
 \r
 \r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
+  Permission to use, copy, modify, distribute, and sell this \r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in \r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting \r
+  documentation, and that the name of the author not be used in \r
+  advertising or publicity pertaining to distribution of the \r
   software without specific, written prior permission.\r
 \r
   The author disclaim all warranties with regard to this\r
   software without specific, written prior permission.\r
 \r
   The author disclaim all warranties with regard to this\r
                        extern "C" {\r
                #endif\r
 \r
                        extern "C" {\r
                #endif\r
 \r
+       /* Preprocessor Checks: */\r
+               #if !defined(__INCLUDE_FROM_MS_DRIVER)\r
+                       #error Do not include this file directly. Include LUFA/Drivers/Class/MassStorage.h instead.\r
+               #endif\r
+\r
        /* Public Interface - May be used in end-application: */\r
                /* Type Defines: */                                                                             \r
                        /** Class state structure. An instance of this structure should be made for each Mass Storage interface\r
        /* Public Interface - May be used in end-application: */\r
                /* Type Defines: */                                                                             \r
                        /** Class state structure. An instance of this structure should be made for each Mass Storage interface\r
 \r
                                        uint8_t  DataINEndpointNumber; /**< Endpoint number of the Mass Storage interface's IN data endpoint */\r
                                        uint16_t DataINEndpointSize; /**< Size in bytes of the Mass Storage interface's IN data endpoint */\r
 \r
                                        uint8_t  DataINEndpointNumber; /**< Endpoint number of the Mass Storage interface's IN data endpoint */\r
                                        uint16_t DataINEndpointSize; /**< Size in bytes of the Mass Storage interface's IN data endpoint */\r
+                                       bool     DataINEndpointDoubleBank; /** Indicates if the Mass Storage interface's IN data endpoint should use double banking */\r
 \r
                                        uint8_t  DataOUTEndpointNumber; /**< Endpoint number of the Mass Storage interface's OUT data endpoint */\r
                                        uint16_t DataOUTEndpointSize;  /**< Size in bytes of the Mass Storage interface's OUT data endpoint */\r
 \r
                                        uint8_t  DataOUTEndpointNumber; /**< Endpoint number of the Mass Storage interface's OUT data endpoint */\r
                                        uint16_t DataOUTEndpointSize;  /**< Size in bytes of the Mass Storage interface's OUT data endpoint */\r
+                                       bool     DataOUTEndpointDoubleBank; /** Indicates if the Mass Storage interface's OUT data endpoint should use double banking */\r
 \r
                                        uint8_t  TotalLUNs; /**< Total number of logical drives in the Mass Storage interface */\r
                                } Config; /**< Config data for the USB class interface within the device. All elements in this section\r
 \r
                                        uint8_t  TotalLUNs; /**< Total number of logical drives in the Mass Storage interface */\r
                                } Config; /**< Config data for the USB class interface within the device. All elements in this section\r
@@ -85,9 +92,9 @@
                                        MS_CommandStatusWrapper_t CommandStatus; /**< Mass Storage class command status structure, set elements to indicate\r
                                                                                                                          *   the issued command's success or failure to the host\r
                                                                                                                          */\r
                                        MS_CommandStatusWrapper_t CommandStatus; /**< Mass Storage class command status structure, set elements to indicate\r
                                                                                                                          *   the issued command's success or failure to the host\r
                                                                                                                          */\r
-                                       bool IsMassStoreReset; /**< Flag indicating that the host has requested that the Mass Storage interface be reset\r
-                                                                                       *   and that all current Mass Storage operations should immediately abort\r
-                                                                                       */\r
+                                       volatile bool IsMassStoreReset; /**< Flag indicating that the host has requested that the Mass Storage interface be reset\r
+                                                                                                *   and that all current Mass Storage operations should immediately abort\r
+                                                                                                */\r
                                } State; /**< State data for the USB class interface within the device. All elements in this section\r
                                          *   are reset to their defaults when the interface is enumerated.\r
                                          */\r
                                } State; /**< State data for the USB class interface within the device. All elements in this section\r
                                          *   are reset to their defaults when the interface is enumerated.\r
                                          */\r
                         *\r
                         *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a Mass Storage Class configuration and state\r
                         *\r
                         *\r
                         *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a Mass Storage Class configuration and state\r
                         *\r
-                        *  \return Boolean true if the endpoints were sucessfully configured, false otherwise\r
+                        *  \return Boolean true if the endpoints were successfully configured, false otherwise\r
                         */\r
                        bool MS_Device_ConfigureEndpoints(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);\r
                        \r
                         */\r
                        bool MS_Device_ConfigureEndpoints(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);\r
                        \r
-                       /** Processes incomming control requests from the host, that are directed to the given Mass Storage class interface. This should be\r
+                       /** Processes incoming control requests from the host, that are directed to the given Mass Storage class interface. This should be\r
                         *  linked to the library \ref EVENT_USB_Device_UnhandledControlRequest() event.\r
                         *\r
                         *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a Mass Storage Class configuration and state\r
                         *  linked to the library \ref EVENT_USB_Device_UnhandledControlRequest() event.\r
                         *\r
                         *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a Mass Storage Class configuration and state\r
        /* Private Interface - For use in library only: */\r
        #if !defined(__DOXYGEN__)\r
                /* Function Prototypes: */\r
        /* Private Interface - For use in library only: */\r
        #if !defined(__DOXYGEN__)\r
                /* Function Prototypes: */\r
-                       #if defined(INCLUDE_FROM_MS_CLASS_DEVICE_C)\r
+                       #if defined(__INCLUDE_FROM_MS_CLASS_DEVICE_C)\r
                                static void    MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);\r
                                static bool    MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);\r
                                static uint8_t StreamCallback_MS_Device_AbortOnMassStoreReset(void);\r
                                static void    MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);\r
                                static bool    MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);\r
                                static uint8_t StreamCallback_MS_Device_AbortOnMassStoreReset(void);\r