this software.\r
*/\r
\r
+/** \file\r
+ * \brief Host mode driver for the library USB Mass Storage Class driver.\r
+ *\r
+ * Host mode driver for the library USB Mass Storage Class driver.\r
+ *\r
+ * \note This file should not be included directly. It is automatically included as needed by the class driver\r
+ * dispatch header located in LUFA/Drivers/USB/Class/MassStorage.h.\r
+ */\r
+\r
/** \ingroup Group_USBClassMS\r
* @defgroup Group_USBClassMassStorageHost Mass Storage Class Host Mode Driver\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
/* Macros: */\r
/** Error code for some Mass Storage Host functions, indicating a logical (and not hardware) error */\r
#define MS_ERROR_LOGICAL_CMD_FAILED 0x80\r
\r
/* Type Defines: */\r
- /** Class state structure. An instance of this structure should be made within the user application,\r
+ /** \brief Mass Storage Class Host Mode Configuration and State Structure.\r
+ *\r
+ * Class state structure. An instance of this structure should be made within the user application,\r
* and passed to each of the Mass Storage class driver functions as the MSInterfaceInfo parameter. This\r
* stores each Mass Storage interface's configuration and state information.\r
*/\r
*/\r
} USB_ClassInfo_MS_Host_t;\r
\r
- /** SCSI capacity structure, to hold the total capacity of the device in both the number\r
+ /** \brief SCSI Device LUN Capacity Structure.\r
+ *\r
+ * SCSI capacity structure, to hold the total capacity of the device in both the number\r
* of blocks in the current LUN, and the size of each block. This structure is filled by\r
* the device when the MassStore_ReadCapacity() function is called.\r
*/\r
};\r
\r
/* Function Prototypes: */\r
- /** General management task for a given Mass Storage host class interface, required for the correct operation of\r
- * the interface. This should be called frequently in the main program loop, before the master USB management task\r
- * \ref USB_USBTask().\r
- *\r
- * \param[in,out] MSInterfaceInfo Pointer to a structure containing an MS Class host configuration and state\r
- */\r
- void MS_Host_USBTask(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);\r
- \r
/** Host interface configuration routine, to configure a given Mass Storage host interface instance using the\r
* Configuration Descriptor read from an attached USB device. This function automatically updates the given Mass\r
* Storage Host instance's state values and configures the pipes required to communicate with the interface if it\r
*/\r
uint8_t MS_Host_WriteDeviceBlocks(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, const uint8_t LUNIndex,\r
const uint32_t BlockAddress, const uint8_t Blocks, const uint16_t BlockSize,\r
- void* BlockBuffer) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(6);\r
+ const void* BlockBuffer) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(6);\r
+\r
+ /* Inline Functions: */\r
+ /** General management task for a given Mass Storage host class interface, required for the correct operation of\r
+ * the interface. This should be called frequently in the main program loop, before the master USB management task\r
+ * \ref USB_USBTask().\r
+ *\r
+ * \param[in,out] MSInterfaceInfo Pointer to a structure containing an MS Class host configuration and state\r
+ */\r
+ static inline void MS_Host_USBTask(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo);\r
+ static inline void MS_Host_USBTask(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo)\r
+ {\r
+ (void)MSInterfaceInfo;\r
+ }\r
\r
/* Private Interface - For use in library only: */\r
#if !defined(__DOXYGEN__)\r
#define MS_FOUND_DATAPIPE_OUT (1 << 1)\r
\r
/* Function Prototypes: */\r
- #if defined(INCLUDE_FROM_MS_CLASS_HOST_C) \r
+ #if defined(__INCLUDE_FROM_MS_CLASS_HOST_C) \r
static uint8_t DComp_NextMSInterface(void* const CurrentDescriptor);\r
static uint8_t DComp_NextMSInterfaceEndpoint(void* const CurrentDescriptor);\r
\r
static uint8_t MS_Host_SendCommand(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,\r
MS_CommandBlockWrapper_t* const SCSICommandBlock,\r
- void* BufferPtr);\r
+ const void* const BufferPtr);\r
static uint8_t MS_Host_WaitForDataReceived(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo);\r
static uint8_t MS_Host_SendReceiveData(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, \r
MS_CommandBlockWrapper_t* const SCSICommandBlock, void* BufferPtr);\r