| /* |
| * Certain structures and defines in this file are from mbed's implementation. |
| * |
| * Copyright (c) 2010-2011 mbed.org, MIT License |
| * Copyright (c) 2016 Intel Corporation. |
| * |
| * Permission is hereby granted, free of charge, to any person obtaining a copy |
| * of this software and associated documentation files (the "Software"), to deal |
| * in the Software without restriction, including without limitation the rights |
| * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
| * copies of the Software, and to permit persons to whom the Software is |
| * furnished to do so, subject to the following conditions: |
| * |
| * The above copyright notice and this permission notice shall be included in |
| * all copies or substantial portions of the Software. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
| * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| * SOFTWARE. |
| */ |
| |
| /** |
| * @file |
| * @brief Mass Storage device class driver header file |
| * |
| * Header file for USB Mass Storage device class driver |
| */ |
| |
| #ifndef __MASS_STORAGE_H__ |
| #define __MASS_STORAGE_H__ |
| |
| /* Bulk-only Command Block Wrapper (CBW) */ |
| struct CBW { |
| u32_t Signature; |
| u32_t Tag; |
| u32_t DataLength; |
| u8_t Flags; |
| u8_t LUN; |
| u8_t CBLength; |
| u8_t CB[16]; |
| } __packed; |
| |
| /* Bulk-only Command Status Wrapper (CSW) */ |
| struct CSW { |
| u32_t Signature; |
| u32_t Tag; |
| u32_t DataResidue; |
| u8_t Status; |
| } __packed; |
| |
| /* Intel vendor ID */ |
| #define MASS_STORAGE_VENDOR_ID 0x8086 |
| |
| /* Product Id, random value */ |
| #define MASS_STORAGE_PRODUCT_ID 0xF8A1 |
| |
| /* Max packet size for Bulk endpoints */ |
| #define MASS_STORAGE_BULK_EP_MPS 64 |
| |
| /* Number of configurations for the USB Device */ |
| #define MASS_NUM_CONF 0x01 |
| /* Number of interfaces in the configuration */ |
| #define MASS_NUM_ITF 0x01 |
| |
| #define EPBULK_OUT 0x03 |
| #define EPBULK_IN 0x84 |
| |
| /* Size in bytes of the configuration sent to |
| * the Host on GetConfiguration() request |
| * For Mass Storage Device: CONF + (1 x ITF) + (2 x EP) |
| */ |
| #define MASS_CONF_SIZE (USB_CONFIGURATION_DESC_SIZE + \ |
| (1 * USB_INTERFACE_DESC_SIZE) + (2 * USB_ENDPOINT_DESC_SIZE)) |
| |
| #define CBW_Signature 0x43425355 |
| #define CSW_Signature 0x53425355 |
| |
| /*SCSI Commands*/ |
| #define TEST_UNIT_READY 0x00 |
| #define REQUEST_SENSE 0x03 |
| #define FORMAT_UNIT 0x04 |
| #define INQUIRY 0x12 |
| #define MODE_SELECT6 0x15 |
| #define MODE_SENSE6 0x1A |
| #define START_STOP_UNIT 0x1B |
| #define MEDIA_REMOVAL 0x1E |
| #define READ_FORMAT_CAPACITIES 0x23 |
| #define READ_CAPACITY 0x25 |
| #define READ10 0x28 |
| #define WRITE10 0x2A |
| #define VERIFY10 0x2F |
| #define READ12 0xA8 |
| #define WRITE12 0xAA |
| #define MODE_SELECT10 0x55 |
| #define MODE_SENSE10 0x5A |
| |
| /*MSC class specific requests*/ |
| #define MSC_REQUEST_RESET 0xFF |
| #define MSC_REQUEST_GET_MAX_LUN 0xFE |
| |
| #define THREAD_OP_READ_QUEUED 1 |
| #define THREAD_OP_WRITE_QUEUED 3 |
| #define THREAD_OP_WRITE_DONE 4 |
| |
| #endif /* __MASS_STORAGE_H__ */ |