diff options
| author | Jack Humbert <jack.humb@gmail.com> | 2017-07-07 11:55:23 -0400 |
|---|---|---|
| committer | Jack Humbert <jack.humb@gmail.com> | 2017-07-07 11:55:23 -0400 |
| commit | 8655d4f4948b2deef7844503c8d690f23ac1a062 (patch) | |
| tree | b2c6effc9d6cd5b5b43933a1e53b8bf17e9e82cf /lib/lufa/Projects/Webserver/Lib/SCSI.h | |
| parent | 1896c76a2928c96f9ab7947bec2ef8dd37623cff (diff) | |
| parent | 60b30c036397cb5627fa374bb930794b225daa29 (diff) | |
| download | qmk_firmware-8655d4f4948b2deef7844503c8d690f23ac1a062.tar.gz qmk_firmware-8655d4f4948b2deef7844503c8d690f23ac1a062.zip | |
Merge commit '60b30c036397cb5627fa374bb930794b225daa29' as 'lib/lufa'
Diffstat (limited to 'lib/lufa/Projects/Webserver/Lib/SCSI.h')
| -rw-r--r-- | lib/lufa/Projects/Webserver/Lib/SCSI.h | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/lib/lufa/Projects/Webserver/Lib/SCSI.h b/lib/lufa/Projects/Webserver/Lib/SCSI.h new file mode 100644 index 000000000..8f41f63b4 --- /dev/null +++ b/lib/lufa/Projects/Webserver/Lib/SCSI.h | |||
| @@ -0,0 +1,87 @@ | |||
| 1 | /* | ||
| 2 | LUFA Library | ||
| 3 | Copyright (C) Dean Camera, 2017. | ||
| 4 | |||
| 5 | dean [at] fourwalledcubicle [dot] com | ||
| 6 | www.lufa-lib.org | ||
| 7 | */ | ||
| 8 | |||
| 9 | /* | ||
| 10 | Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) | ||
| 11 | |||
| 12 | Permission to use, copy, modify, distribute, and sell this | ||
| 13 | software and its documentation for any purpose is hereby granted | ||
| 14 | without fee, provided that the above copyright notice appear in | ||
| 15 | all copies and that both that the copyright notice and this | ||
| 16 | permission notice and warranty disclaimer appear in supporting | ||
| 17 | documentation, and that the name of the author not be used in | ||
| 18 | advertising or publicity pertaining to distribution of the | ||
| 19 | software without specific, written prior permission. | ||
| 20 | |||
| 21 | The author disclaims all warranties with regard to this | ||
| 22 | software, including all implied warranties of merchantability | ||
| 23 | and fitness. In no event shall the author be liable for any | ||
| 24 | special, indirect or consequential damages or any damages | ||
| 25 | whatsoever resulting from loss of use, data or profits, whether | ||
| 26 | in an action of contract, negligence or other tortious action, | ||
| 27 | arising out of or in connection with the use or performance of | ||
| 28 | this software. | ||
| 29 | */ | ||
| 30 | |||
| 31 | /** \file | ||
| 32 | * | ||
| 33 | * Header file for SCSI.c. | ||
| 34 | */ | ||
| 35 | |||
| 36 | #ifndef _SCSI_H_ | ||
| 37 | #define _SCSI_H_ | ||
| 38 | |||
| 39 | /* Includes: */ | ||
| 40 | #include <avr/io.h> | ||
| 41 | #include <avr/pgmspace.h> | ||
| 42 | |||
| 43 | #include <LUFA/Drivers/USB/USB.h> | ||
| 44 | |||
| 45 | #include "../Descriptors.h" | ||
| 46 | #include "DataflashManager.h" | ||
| 47 | |||
| 48 | /* Macros: */ | ||
| 49 | /** Macro to set the current SCSI sense data to the given key, additional sense code and additional sense qualifier. This | ||
| 50 | * is for convenience, as it allows for all three sense values (returned upon request to the host to give information about | ||
| 51 | * the last command failure) in a quick and easy manner. | ||
| 52 | * | ||
| 53 | * \param[in] Key New SCSI sense key to set the sense code to | ||
| 54 | * \param[in] Acode New SCSI additional sense key to set the additional sense code to | ||
| 55 | * \param[in] Aqual New SCSI additional sense key qualifier to set the additional sense qualifier code to | ||
| 56 | */ | ||
| 57 | #define SCSI_SET_SENSE(Key, Acode, Aqual) do { SenseData.SenseKey = (Key); \ | ||
| 58 | SenseData.AdditionalSenseCode = (Acode); \ | ||
| 59 | SenseData.AdditionalSenseQualifier = (Aqual); } while (0) | ||
| 60 | |||
| 61 | /** Macro for the \ref SCSI_Command_ReadWrite_10() function, to indicate that data is to be read from the storage medium. */ | ||
| 62 | #define DATA_READ true | ||
| 63 | |||
| 64 | /** Macro for the \ref SCSI_Command_ReadWrite_10() function, to indicate that data is to be written to the storage medium. */ | ||
| 65 | #define DATA_WRITE false | ||
| 66 | |||
| 67 | /** Value for the DeviceType entry in the SCSI_Inquiry_Response_t enum, indicating a Block Media device. */ | ||
| 68 | #define DEVICE_TYPE_BLOCK 0x00 | ||
| 69 | |||
| 70 | /** Value for the DeviceType entry in the SCSI_Inquiry_Response_t enum, indicating a CD-ROM device. */ | ||
| 71 | #define DEVICE_TYPE_CDROM 0x05 | ||
| 72 | |||
| 73 | /* Function Prototypes: */ | ||
| 74 | bool SCSI_DecodeSCSICommand(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); | ||
| 75 | |||
| 76 | #if defined(INCLUDE_FROM_SCSI_C) | ||
| 77 | static bool SCSI_Command_Inquiry(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); | ||
| 78 | static bool SCSI_Command_Request_Sense(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); | ||
| 79 | static bool SCSI_Command_Read_Capacity_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); | ||
| 80 | static bool SCSI_Command_Send_Diagnostic(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); | ||
| 81 | static bool SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo, | ||
| 82 | const bool IsDataRead); | ||
| 83 | static bool SCSI_Command_ModeSense_6(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo); | ||
| 84 | #endif | ||
| 85 | |||
| 86 | #endif | ||
| 87 | |||
