Add FatFS library to the Webserver project, extend the HTTP server so that it now...
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Device / MassStorage.h
index 16e09dc..7091dca 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
 \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 +87,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
                         *  \ref EVENT_USB_Device_ConfigurationChanged() event so that the endpoints are configured when the configuration\r
                         *  containing the given Mass Storage interface is selected.\r
                         *\r
                         *  \ref EVENT_USB_Device_ConfigurationChanged() event so that the endpoints are configured when the configuration\r
                         *  containing the given Mass Storage interface is selected.\r
                         *\r
-                        *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a Mass Storage Class configuration and state.\r
+                        *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a Mass Storage Class configuration and state\r
                         *\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
                         *  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
+                        *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a Mass Storage Class configuration and state\r
                         */             \r
                        void MS_Device_ProcessControlRequest(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);\r
 \r
                        /** General management task for a given Mass Storage class interface, required for the correct operation of the interface. This should\r
                         *  be called frequently in the main program loop, before the master USB management task \ref USB_USBTask().\r
                         *\r
                         */             \r
                        void MS_Device_ProcessControlRequest(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);\r
 \r
                        /** General management task for a given Mass Storage class interface, required for the correct operation of the interface. This should\r
                         *  be called frequently in the main program loop, before the master USB management task \ref USB_USBTask().\r
                         *\r
-                        *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a Mass Storage configuration and state.\r
+                        *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a Mass Storage configuration and state\r
                         */\r
                        void MS_Device_USBTask(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);\r
                        \r
                         */\r
                        void MS_Device_USBTask(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);\r
                        \r
                         *  for the processing of the received SCSI command from the host. The SCSI command is available in the CommandBlock structure\r
                         *  inside the Mass Storage class state structure passed as a parameter to the callback function.\r
                         *\r
                         *  for the processing of the received SCSI command from the host. The SCSI command is available in the CommandBlock structure\r
                         *  inside the Mass Storage class state structure passed as a parameter to the callback function.\r
                         *\r
-                        *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a Mass Storage Class configuration and state.\r
+                        *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a Mass Storage Class configuration and state\r
                         *\r
                         *  \return Boolean true if the SCSI command was successfully processed, false otherwise\r
                         */\r
                         *\r
                         *  \return Boolean true if the SCSI command was successfully processed, false otherwise\r
                         */\r