X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/f896c00c48f04fb9273555ab8d9b1af99f865d25..86819ba9d8e30e7eeefd79ece41094a42e521d78:/LUFA/Drivers/USB/Class/Device/MassStorage.h
diff --git a/LUFA/Drivers/USB/Class/Device/MassStorage.h b/LUFA/Drivers/USB/Class/Device/MassStorage.h
index 2616bd871..22f7160b5 100644
--- a/LUFA/Drivers/USB/Class/Device/MassStorage.h
+++ b/LUFA/Drivers/USB/Class/Device/MassStorage.h
@@ -31,6 +31,10 @@
 /** \ingroup Group_USBClassMS
  *  @defgroup Group_USBClassMSDevice Mass Storage Class Device Mode Driver
  *
+ *  \section Sec_Dependencies Module Source Dependencies
+ *  The following files must be built with any user project that uses this module:
+ *    - LUFA/Drivers/USB/Class/Device/MassStorage.c
+ *
  *  \section Module Description
  *  Device Mode USB Class driver framework interface, for the Mass Storage USB Class driver.
  *
@@ -52,54 +56,42 @@
 		#endif
 
 	/* Public Interface - May be used in end-application: */
-		/* Type Defines: */
-			/** Configuration information structure for \ref USB_ClassInfo_MS_Device_t Mass Storage device interface structures. */
-			typedef struct
-			{
-				uint8_t  InterfaceNumber; /**< Interface number of the Mass Storage interface within the device */
-
-				uint8_t  DataINEndpointNumber; /**< Endpoint number of the Mass Storage interface's IN data endpoint */
-				uint16_t DataINEndpointSize; /**< Size in bytes of the Mass Storage interface's IN data endpoint */
-
-				uint8_t  DataOUTEndpointNumber; /**< Endpoint number of the Mass Storage interface's OUT data endpoint */
-				uint16_t DataOUTEndpointSize;  /**< Size in bytes of the Mass Storage interface's OUT data endpoint */
-
-				uint8_t  TotalLUNs; /**< Total number of logical drives in the Mass Storage interface */
-			} USB_ClassInfo_MS_Device_Config_t;
-			
-			/** Current State information structure for \ref USB_ClassInfo_MS_Device_t Mass Storage device interface structures. */
-			typedef struct
-			{
-				CommandBlockWrapper_t  CommandBlock; /**< Mass Storage class command block structure, used internally
-													  *   by the class driver
-													  */
-				CommandStatusWrapper_t CommandStatus; /**< Mass Storage class command status structure, used internally
-													   *   by the class driver
-													   */
-
-				bool IsMassStoreReset; /**< Flag indicating that the host has requested that the Mass Storage interface be reset
-										*   and that all current Mass Storage operations should immediately abort
-										*/
-			} USB_ClassInfo_MS_Device_State_t;
-										
+		/* Type Defines: */										
 			/** Class state structure. An instance of this structure should be made for each Mass Storage interface
 			 *  within the user application, and passed to each of the Mass Storage class driver functions as the
 			 *  MSInterfaceInfo parameter. This stores each Mass Storage interface's configuration and state information.
 			 */
 			typedef struct
 			{
-				const USB_ClassInfo_MS_Device_Config_t Config; /**< Config data for the USB class interface within
-				                                                *   the device. All elements in this section
-				                                                *   must be set or the interface will fail
-				                                                *   to enumerate and operate correctly.
-				                                                */
-															 
-				USB_ClassInfo_MS_Device_State_t State; /**< State data for the USB class interface within
-				                                        *   the device. All elements in this section
-				                                        *   may be set to initial values, but may
-				                                        *   also be ignored to default to sane values when
-				                                        *   the interface is enumerated.
-				                                        */
+				const struct
+				{
+					uint8_t  InterfaceNumber; /**< Interface number of the Mass Storage interface within the device */
+
+					uint8_t  DataINEndpointNumber; /**< Endpoint number of the Mass Storage interface's IN data endpoint */
+					uint16_t DataINEndpointSize; /**< Size in bytes of the Mass Storage interface's IN data endpoint */
+
+					uint8_t  DataOUTEndpointNumber; /**< Endpoint number of the Mass Storage interface's OUT data endpoint */
+					uint16_t DataOUTEndpointSize;  /**< Size in bytes of the Mass Storage interface's OUT data endpoint */
+
+					uint8_t  TotalLUNs; /**< Total number of logical drives in the Mass Storage interface */
+				} Config; /**< Config data for the USB class interface within the device. All elements in this section
+				           *   must be set or the interface will fail to enumerate and operate correctly.
+				           */
+				struct
+				{
+					MS_CommandBlockWrapper_t  CommandBlock; /**< Mass Storage class command block structure, stores the received SCSI
+															 *   command from the host which is to be processed
+															 */
+					MS_CommandStatusWrapper_t CommandStatus; /**< Mass Storage class command status structure, set elements to indicate
+															  *   the issued command's success or failure to the host
+															  */
+					bool IsMassStoreReset; /**< Flag indicating that the host has requested that the Mass Storage interface be reset
+											*   and that all current Mass Storage operations should immediately abort
+											*/
+				} State; /**< State data for the USB class interface within the device. All elements in this section
+				          *   may be set to initial values, but may also be ignored to default to sane values when
+				          *   the interface is enumerated.
+				          */
 			} USB_ClassInfo_MS_Device_t;
 
 		/* Function Prototypes: */
@@ -107,43 +99,43 @@
 			 *  \ref EVENT_USB_ConfigurationChanged() event so that the endpoints are configured when the configuration
 			 *  containing the given Mass Storage interface is selected.
 			 *
-			 *  \param MSInterfaceInfo  Pointer to a structure containing a Mass Storage Class configuration and state.
+			 *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a Mass Storage Class configuration and state.
 			 *
 			 *  \return Boolean true if the endpoints were sucessfully configured, false otherwise
 			 */
-			bool MS_Device_ConfigureEndpoints(USB_ClassInfo_MS_Device_t* MSInterfaceInfo);
+			bool MS_Device_ConfigureEndpoints(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
 			
 			/** Processes incomming control requests from the host, that are directed to the given Mass Storage class interface. This should be
 			 *  linked to the library \ref EVENT_USB_UnhandledControlPacket() event.
 			 *
-			 *  \param MSInterfaceInfo  Pointer to a structure containing a Mass Storage Class configuration and state.
+			 *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a Mass Storage Class configuration and state.
 			 */		
-			void MS_Device_ProcessControlPacket(USB_ClassInfo_MS_Device_t* MSInterfaceInfo);
+			void MS_Device_ProcessControlPacket(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
 
 			/** General management task for a given Mass Storage class interface, required for the correct operation of the interface. This should
 			 *  be called frequently in the main program loop, before the master USB management task \ref USB_USBTask().
 			 *
-			 *  \param MSInterfaceInfo  Pointer to a structure containing a Mass Storage configuration and state.
+			 *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a Mass Storage configuration and state.
 			 */
-			void MS_Device_USBTask(USB_ClassInfo_MS_Device_t* MSInterfaceInfo);
+			void MS_Device_USBTask(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
 			
 			/** Mass Storage class driver callback for the user processing of a received SCSI command. This callback will fire each time the
 			 *  host sends a SCSI command which requires processing by the user application. Inside this callback the user is responsible
 			 *  for the processing of the received SCSI command from the host. The SCSI command is available in the CommandBlock structure
 			 *  inside the Mass Storage class state structure passed as a parameter to the callback function.
 			 *
-			 *  \param MSInterfaceInfo  Pointer to a structure containing a Mass Storage Class configuration and state.
+			 *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a Mass Storage Class configuration and state.
 			 *
 			 *  \return Boolean true if the SCSI command was successfully processed, false otherwise
 			 */
-			bool CALLBACK_MS_Device_SCSICommandReceived(USB_ClassInfo_MS_Device_t* MSInterfaceInfo);
+			bool CALLBACK_MS_Device_SCSICommandReceived(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
 		
 	/* Private Interface - For use in library only: */
 	#if !defined(__DOXYGEN__)
 		/* Function Prototypes: */
 			#if defined(INCLUDE_FROM_MS_CLASS_DEVICE_C)
-				static void    MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* MSInterfaceInfo);
-				static bool    MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* MSInterfaceInfo);
+				static void    MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
+				static bool    MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo);
 				static uint8_t StreamCallback_MS_Device_AbortOnMassStoreReset(void);
 			#endif