Changed all Device mode LowLevel demos and Device Class drivers so that the control...
[pub/USBasp.git] / Demos / Device / ClassDriver / MassStorageKeyboard / Lib / SCSI.c
index 0dac650..fed57f7 100644 (file)
@@ -85,6 +85,8 @@ SCSI_Request_Sense_Response_t SenseData =
  *  a command failure due to a ILLEGAL REQUEST.
  *
  *  \param[in] MSInterfaceInfo  Pointer to the Mass Storage class interface structure that the command is associated with
+ *
+ *  \return Boolean true if the command completed successfully, false otherwise
  */
 bool SCSI_DecodeSCSICommand(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo)
 {
@@ -236,8 +238,6 @@ static bool SCSI_Command_Read_Capacity_10(USB_ClassInfo_MS_Device_t* const MSInt
  */
 static bool SCSI_Command_Send_Diagnostic(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo)
 {
-       uint8_t ReturnByte;
-
        /* Check to see if the SELF TEST bit is not set */
        if (!(MSInterfaceInfo->State.CommandBlock.SCSICommandData[1] & (1 << 2)))
        {
@@ -249,32 +249,8 @@ static bool SCSI_Command_Send_Diagnostic(USB_ClassInfo_MS_Device_t* const MSInte
                return false;
        }
        
-       /* Test first Dataflash IC is present and responding to commands */
-       Dataflash_SelectChip(DATAFLASH_CHIP1);
-       Dataflash_SendByte(DF_CMD_READMANUFACTURERDEVICEINFO);
-       ReturnByte = Dataflash_ReceiveByte();
-       Dataflash_DeselectChip();
-
-       /* If returned data is invalid, fail the command */
-       if (ReturnByte != DF_MANUFACTURER_ATMEL)
-       {
-               /* Update SENSE key with a hardware error condition and return command fail */
-               SCSI_SET_SENSE(SCSI_SENSE_KEY_HARDWARE_ERROR,
-                              SCSI_ASENSE_NO_ADDITIONAL_INFORMATION,
-                              SCSI_ASENSEQ_NO_QUALIFIER);      
-       
-               return false;
-       }
-
-       #if (DATAFLASH_TOTALCHIPS == 2)
-       /* Test second Dataflash IC is present and responding to commands */
-       Dataflash_SelectChip(DATAFLASH_CHIP2);
-       Dataflash_SendByte(DF_CMD_READMANUFACTURERDEVICEINFO);
-       ReturnByte = Dataflash_ReceiveByte();
-       Dataflash_DeselectChip();
-
-       /* If returned data is invalid, fail the command */
-       if (ReturnByte != DF_MANUFACTURER_ATMEL)
+       /* Check to see if all attached Dataflash ICs are functional */
+       if (!(DataflashManager_CheckDataflashOperation()))
        {
                /* Update SENSE key with a hardware error condition and return command fail */
                SCSI_SET_SENSE(SCSI_SENSE_KEY_HARDWARE_ERROR,
@@ -283,7 +259,6 @@ static bool SCSI_Command_Send_Diagnostic(USB_ClassInfo_MS_Device_t* const MSInte
        
                return false;
        }
-       #endif
        
        /* Succeed the command and update the bytes transferred counter */
        MSInterfaceInfo->State.CommandBlock.DataTransferLength = 0;