Split out the RFCOMM Control Channel command processing code into a seperate set...
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Host / MassStorage.h
index e4f7415..6c1f7f6 100644 (file)
@@ -69,7 +69,7 @@
 
        /* Public Interface - May be used in end-application: */
                /* Macros: */
-                       /** Error code for some Mass Storage Host functions, indicating a logical (and not hardware) error */
+                       /** Error code for some Mass Storage Host functions, indicating a logical (and not hardware) error. */
                        #define MS_ERROR_LOGICAL_CMD_FAILED              0x80
        
                /* Type Defines: */
                                const struct
                                {
                                        uint8_t  DataINPipeNumber; /**< Pipe number of the Mass Storage interface's IN data pipe */
-                                       bool     DataINPipeDoubleBank; /** Indicates if the Mass Storage interface's IN data pipe should use double banking */
+                                       bool     DataINPipeDoubleBank; /**< Indicates if the Mass Storage interface's IN data pipe should use double banking */
 
                                        uint8_t  DataOUTPipeNumber; /**< Pipe number of the Mass Storage interface's OUT data pipe */
-                                       bool     DataOUTPipeDoubleBank; /** Indicates if the Mass Storage interface's OUT data pipe should use double banking */
+                                       bool     DataOUTPipeDoubleBank; /**< Indicates if the Mass Storage interface's OUT data pipe should use double banking */
                                } Config; /**< Config data for the USB class interface within the device. All elements in this section
                                           *   <b>must</b> be set or the interface will fail to enumerate and operate correctly.
                                           */
                         *
                         *  SCSI capacity structure, to hold the total capacity of the device in both the number
                         *  of blocks in the current LUN, and the size of each block. This structure is filled by
-                        *  the device when the MassStore_ReadCapacity() function is called.
+                        *  the device when the \ref MS_Host_ReadDeviceCapacity() function is called.
                         */
                        typedef struct
                        {
                         *  is found within the device. This should be called once after the stack has enumerated the attached device, while
                         *  the host state machine is in the Addressed state.
                         *
-                        *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing an MS Class host configuration and state
-                        *  \param[in] ConfigDescriptorSize  Length of the attached device's Configuration Descriptor
-                        *  \param[in] DeviceConfigDescriptor  Pointer to a buffer containing the attached device's Configuration Descriptor
+                        *  \param[in,out] MSInterfaceInfo         Pointer to a structure containing an MS Class host configuration and state
+                        *  \param[in]     ConfigDescriptorSize    Length of the attached device's Configuration Descriptor
+                        *  \param[in]     DeviceConfigDescriptor  Pointer to a buffer containing the attached device's Configuration Descriptor
                         *
                         *  \return A value from the \ref MSHost_EnumerationFailure_ErrorCodes_t enum
                         */
                         *        if the device STALLs the request.
                         *
                         *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a MS Class host configuration and state
-                        *  \param[out] MaxLUNIndex  Pointer to a location where the highest LUN index value should be stored
+                        *  \param[out]    MaxLUNIndex      Pointer to a location where the highest LUN index value should be stored
                         *
                         *  \return A value from the \ref USB_Host_SendControlErrorCodes_t enum
                         */
                         *        call will fail.
                         *
                         *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a MS Class host configuration and state
-                        *  \param[in] LUNIndex  LUN index within the device the command is being issued to
-                        *  \param[out] InquiryData  Location where the read inquiry data should be stored
+                        *  \param[in]     LUNIndex         LUN index within the device the command is being issued to
+                        *  \param[out]    InquiryData      Location where the read inquiry data should be stored
                         *
                         *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum or MS_ERROR_LOGICAL_CMD_FAILED
                         */
                        /** Sends a TEST UNIT READY command to the device, to determine if it is ready to accept other SCSI commands.
                         *
                         *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a MS Class host configuration and state
-                        *  \param[in] LUNIndex  LUN index within the device the command is being issued to
+                        *  \param[in]     LUNIndex         LUN index within the device the command is being issued to
                         *
                         *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum or MS_ERROR_LOGICAL_CMD_FAILED if not ready
                         */
                         *        call will fail.
                         *
                         *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a MS Class host configuration and state
-                        *  \param[in] LUNIndex  LUN index within the device the command is being issued to
-                        *  \param[out] DeviceCapacity  Pointer to the location where the capacity information should be stored
+                        *  \param[in]     LUNIndex         LUN index within the device the command is being issued to
+                        *  \param[out]    DeviceCapacity   Pointer to the location where the capacity information should be stored
                         *
                         *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum or MS_ERROR_LOGICAL_CMD_FAILED if not ready
                         */
                         *        call will fail.
                         *
                         *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a MS Class host configuration and state
-                        *  \param[in] LUNIndex  LUN index within the device the command is being issued to
-                        *  \param[out] SenseData  Pointer to the location where the sense information should be stored
+                        *  \param[in]     LUNIndex         LUN index within the device the command is being issued to
+                        *  \param[out]    SenseData        Pointer to the location where the sense information should be stored
                         *
                         *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum or MS_ERROR_LOGICAL_CMD_FAILED if not ready
                         */
                         *        call will fail.
                         *
                         *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a MS Class host configuration and state
-                        *  \param[in] LUNIndex  LUN index within the device the command is being issued to
-                        *  \param[in] PreventRemoval  Boolean true if the device should be locked from removal, false otherwise
+                        *  \param[in]     LUNIndex         LUN index within the device the command is being issued to
+                        *  \param[in]     PreventRemoval   Boolean true if the device should be locked from removal, false otherwise
                         *
                         *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum or MS_ERROR_LOGICAL_CMD_FAILED if not ready
                         */
                         *        call will fail.
                         *
                         *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a MS Class host configuration and state
-                        *  \param[in] LUNIndex  LUN index within the device the command is being issued to
-                        *  \param[in] BlockAddress  Starting block address within the device to read from
-                        *  \param[in] Blocks  Total number of blocks to read
-                        *  \param[in] BlockSize  Size in bytes of each block within the device
-                        *  \param[out] BlockBuffer  Pointer to where the read data from the device should be stored
+                        *  \param[in]     LUNIndex         LUN index within the device the command is being issued to
+                        *  \param[in]     BlockAddress     Starting block address within the device to read from
+                        *  \param[in]     Blocks           Total number of blocks to read
+                        *  \param[in]     BlockSize        Size in bytes of each block within the device
+                        *  \param[out]    BlockBuffer      Pointer to where the read data from the device should be stored
                         *
                         *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum or MS_ERROR_LOGICAL_CMD_FAILED if not ready
                         */
                         *        call will fail.
                         *
                         *  \param[in,out] MSInterfaceInfo  Pointer to a structure containing a MS Class host configuration and state
-                        *  \param[in] LUNIndex  LUN index within the device the command is being issued to
-                        *  \param[in] BlockAddress  Starting block address within the device to write to
-                        *  \param[in] Blocks  Total number of blocks to read
-                        *  \param[in] BlockSize  Size in bytes of each block within the device
-                        *  \param[in] BlockBuffer  Pointer to where the data to write should be sourced from
+                        *  \param[in]     LUNIndex         LUN index within the device the command is being issued to
+                        *  \param[in]     BlockAddress     Starting block address within the device to write to
+                        *  \param[in]     Blocks           Total number of blocks to read
+                        *  \param[in]     BlockSize        Size in bytes of each block within the device
+                        *  \param[in]     BlockBuffer      Pointer to where the data to write should be sourced from
                         *
                         *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum or MS_ERROR_LOGICAL_CMD_FAILED if not ready
                         */
                        
                /* Function Prototypes: */
                        #if defined(__INCLUDE_FROM_MS_CLASS_HOST_C)             
-                               static uint8_t DCOMP_MS_NextMSInterface(void* const CurrentDescriptor);
-                               static uint8_t DCOMP_MS_NextMSInterfaceEndpoint(void* const CurrentDescriptor);
+                               static uint8_t DCOMP_MS_NextMSInterface(void* const CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
+                               static uint8_t DCOMP_MS_NextMSInterfaceEndpoint(void* const CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
                                
                                static uint8_t MS_Host_SendCommand(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
                                                                   MS_CommandBlockWrapper_t* const SCSICommandBlock,
-                                                                  const void* const BufferPtr);
-                               static uint8_t MS_Host_WaitForDataReceived(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo);
+                                                                  const void* const BufferPtr) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
+                               static uint8_t MS_Host_WaitForDataReceived(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
                                static uint8_t MS_Host_SendReceiveData(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, 
-                                                       MS_CommandBlockWrapper_t* const SCSICommandBlock, void* BufferPtr);
+                                                       MS_CommandBlockWrapper_t* const SCSICommandBlock, void* BufferPtr)
+                                                                       ATTR_NON_NULL_PTR_ARG(1)  ATTR_NON_NULL_PTR_ARG(2);
                                static uint8_t MS_Host_GetReturnedStatus(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
-                                                                        MS_CommandStatusWrapper_t* const SCSICommandStatus);
+                                                                        MS_CommandStatusWrapper_t* const SCSICommandStatus)
+                                                                        ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
                        #endif
        #endif