Class internal implementation.
Macros | |
#define | UDI_MSC_BLOCK_SIZE 512L |
Static block size for all memories. More... | |
Variables to manage SCSI requests | |
UDC_BSS (4) | |
Structure to receive a CBW packet. More... | |
#define UDI_MSC_BLOCK_SIZE 512L |
Static block size for all memories.
Referenced by udi_msc_sbc_read_capacity(), and udi_msc_sbc_trans().
UDC_BSS | ( | 4 | ) |
Structure to receive a CBW packet.
Structure to send a CSW packet
References CPU_TO_BE32, usb_msc_csw::dCSWSignature, and USB_CSW_SIGNATURE.
Referenced by udi_msc_sbc_read_capacity(), and udi_msc_spc_mode_sense().
|
static |
References UDI_MSC_EP_OUT.
Referenced by udi_msc_cbw_received().
|
static |
References CPU_TO_BE32, le32_to_cpu, SBC_READ10, SBC_READ_CAPACITY10, SBC_START_STOP_UNIT, SBC_VERIFY10, SBC_WRITE10, SPC_INQUIRY, SPC_MODE_SENSE10, SPC_MODE_SENSE6, SPC_PREVENT_ALLOW_MEDIUM_REMOVAL, SPC_REQUEST_SENSE, SPC_TEST_UNIT_READY, UDD_EP_TRANSFER_OK, udi_msc_cbw_invalid(), udi_msc_csw_invalid(), udi_msc_csw_process(), udi_msc_sbc_read_capacity(), udi_msc_sbc_start_stop(), udi_msc_sbc_trans(), udi_msc_sense_command_invalid(), udi_msc_sense_fail_cdb_invalid(), udi_msc_sense_pass(), udi_msc_spc_inquiry(), udi_msc_spc_mode_sense(), udi_msc_spc_prevent_allow_medium_removal(), udi_msc_spc_requestsense(), udi_msc_spc_testunitready(), UNUSED, USB_CBW_LUN_MASK, and USB_CBW_SIGNATURE.
Referenced by udi_msc_cbw_wait().
|
static |
References udi_msc_csw_process(), udi_msc_sense_fail_cdb_invalid(), and USB_CBW_DIRECTION_IN.
Referenced by udi_msc_sbc_read_capacity(), udi_msc_sbc_trans(), udi_msc_spc_inquiry(), udi_msc_spc_mode_sense(), and udi_msc_spc_requestsense().
|
static |
References udi_msc_cbw_received(), and UDI_MSC_EP_OUT.
Referenced by udi_msc_csw_sent(), and udi_msc_setup().
|
static |
References SCSI_SENSE_ADDL_LEN, SCSI_SENSE_CURRENT, and SCSI_SENSE_VALID.
Referenced by udi_msc_sense_fail(), and udi_msc_sense_pass().
|
static |
References UDI_MSC_EP_IN.
Referenced by udi_msc_cbw_received().
|
static |
References cpu_to_le32, udi_msc_csw_send(), UDI_MSC_EP_IN, UDI_MSC_EP_OUT, and USB_CBW_DIRECTION_IN.
Referenced by udi_msc_cbw_received(), udi_msc_cbw_validate(), udi_msc_data_send(), udi_msc_data_sent(), udi_msc_process_trans(), udi_msc_sbc_read_capacity(), udi_msc_sbc_start_stop(), udi_msc_sbc_trans(), udi_msc_spc_inquiry(), udi_msc_spc_prevent_allow_medium_removal(), and udi_msc_spc_testunitready().
void udi_msc_csw_send | ( | void | ) |
References udi_msc_csw_sent(), and UDI_MSC_EP_IN.
Referenced by udi_msc_csw_process().
|
static |
References udi_msc_cbw_wait(), and UNUSED.
Referenced by udi_msc_csw_send().
|
static |
References udi_msc_csw_process(), udi_msc_data_sent(), UDI_MSC_EP_IN, and udi_msc_sense_fail_hardware().
Referenced by udi_msc_sbc_read_capacity(), udi_msc_spc_inquiry(), udi_msc_spc_mode_sense(), and udi_msc_spc_requestsense().
|
static |
References UDD_EP_TRANSFER_OK, udi_msc_csw_process(), udi_msc_sense_pass(), and UNUSED.
Referenced by udi_msc_data_send().
bool udi_msc_process_trans | ( | void | ) |
Process the background read/write commands.
Routine called by the main loop
References CTRL_BUSY, CTRL_FAIL, CTRL_GOOD, CTRL_NO_PRESENT, memory_2_usb(), status, udi_msc_csw_process(), udi_msc_sense_fail_busy_or_change(), udi_msc_sense_fail_hardware(), udi_msc_sense_fail_not_present(), udi_msc_sense_pass(), and usb_2_memory().
Referenced by main(), main_memories_trans_task(), and run_usb_msc_test().
|
static |
References sbc_read_capacity10_data::block_len, cpu_to_be32, CPU_TO_BE32, CTRL_BUSY, CTRL_GOOD, CTRL_NO_PRESENT, sbc_read_capacity10_data::max_lba, mem_read_capacity(), UDC_BSS(), UDI_MSC_BLOCK_SIZE, udi_msc_cbw_validate(), udi_msc_csw_process(), udi_msc_data_send(), udi_msc_sense_fail_busy_or_change(), udi_msc_sense_fail_hardware(), udi_msc_sense_fail_not_present(), and USB_CBW_DIRECTION_IN.
Referenced by udi_msc_cbw_received().
|
static |
References mem_unload(), udi_msc_csw_process(), and udi_msc_sense_pass().
Referenced by udi_msc_cbw_received().
|
static |
References LSB, mem_wr_protect(), MSB, MSB0, MSB1, MSB2, MSB3, UDI_MSC_BLOCK_SIZE, udi_msc_cbw_validate(), udi_msc_csw_process(), UDI_MSC_NOTIFY_TRANS_EXT, udi_msc_sense_fail_protected(), USB_CBW_DIRECTION_IN, and USB_CBW_DIRECTION_OUT.
Referenced by udi_msc_cbw_received().
|
static |
References SCSI_ASC_INVALID_COMMAND_OPERATION_CODE, SCSI_SK_ILLEGAL_REQUEST, and udi_msc_sense_fail().
Referenced by udi_msc_cbw_received().
|
static |
|
static |
References SCSI_ASC_NOT_READY_TO_READY_CHANGE, SCSI_SK_UNIT_ATTENTION, and udi_msc_sense_fail().
Referenced by udi_msc_process_trans(), udi_msc_sbc_read_capacity(), and udi_msc_spc_testunitready_global().
|
static |
References SCSI_ASC_INVALID_FIELD_IN_CDB, SCSI_SK_ILLEGAL_REQUEST, and udi_msc_sense_fail().
Referenced by udi_msc_cbw_received(), udi_msc_cbw_validate(), udi_msc_spc_inquiry(), and udi_msc_spc_prevent_allow_medium_removal().
|
static |
References SCSI_ASC_NO_ADDITIONAL_SENSE_INFO, SCSI_SK_HARDWARE_ERROR, and udi_msc_sense_fail().
Referenced by udi_msc_data_send(), udi_msc_process_trans(), udi_msc_sbc_read_capacity(), and udi_msc_spc_testunitready_global().
|
static |
References SCSI_ASC_MEDIUM_NOT_PRESENT, SCSI_SK_NOT_READY, and udi_msc_sense_fail().
Referenced by udi_msc_process_trans(), udi_msc_sbc_read_capacity(), and udi_msc_spc_testunitready_global().
|
static |
References SCSI_ASC_WRITE_PROTECTED, SCSI_SK_DATA_PROTECT, and udi_msc_sense_fail().
Referenced by udi_msc_sbc_trans().
|
static |
|
static |
References scsi_inquiry_data::flags1, mem_name(), mem_removal(), scsi_inquiry_data::pq_pdt, scsi_inquiry_data::product_id, SCSI_INQ_ADDL_LEN, SCSI_INQ_DT_DIR_ACCESS, SCSI_INQ_PQ_CONNECTED, SCSI_INQ_REQ_CMDT, SCSI_INQ_REQ_EVPD, SCSI_INQ_RMB, SCSI_INQ_RSP_SPC2, SCSI_INQ_VER_SPC, UDC_DATA, udi_msc_cbw_validate(), udi_msc_csw_process(), udi_msc_data_send(), UDI_MSC_GLOBAL_PRODUCT_VERSION, UDI_MSC_GLOBAL_VENDOR_ID, udi_msc_sense_fail_cdb_invalid(), and USB_CBW_DIRECTION_IN.
Referenced by udi_msc_cbw_received().
|
static |
References cpu_to_be16, mem_wr_protect(), spc_control_page_info_execpt::mrie, spc_control_page_info_execpt::page_code, spc_control_page_info_execpt::page_length, SCSI_MS_MODE_ALL, SCSI_MS_MODE_INFEXP, SCSI_MS_SBC_WP, SPC_MP_INFEXP_MRIE_NO_SENSE, SPC_MP_INFEXP_PAGE_LENGTH, UDC_BSS(), udi_msc_cbw_validate(), udi_msc_data_send(), and USB_CBW_DIRECTION_IN.
Referenced by udi_msc_cbw_received().
|
static |
References udi_msc_csw_process(), udi_msc_sense_fail_cdb_invalid(), and udi_msc_sense_pass().
Referenced by udi_msc_cbw_received().
|
static |
References udi_msc_cbw_validate(), udi_msc_data_send(), and USB_CBW_DIRECTION_IN.
Referenced by udi_msc_cbw_received().
|
static |
References udi_msc_csw_process(), udi_msc_sense_pass(), and udi_msc_spc_testunitready_global().
Referenced by udi_msc_cbw_received().
|
static |
|
static |
References status, UDD_EP_TRANSFER_OK, and UNUSED.
Referenced by udi_msc_trans_block().
bool udi_msc_trans_block | ( | bool | b_read, |
uint8_t * | block, | ||
iram_size_t | block_size, | ||
void(*)(udd_ep_status_t status, iram_size_t n, udd_ep_id_t ep) | callback | ||
) |
Transfers data to/from USB MSC endpoints.
b_read | Memory to USB, if true |
block | Buffer on Internal RAM to send or fill |
block_size | Buffer size to send or fill |
callback | Function to call at the end of transfer. If NULL then the routine exit when transfer is finish. |
1
if function was successfully done, otherwise 0
. References callback, NULL, UDI_MSC_EP_IN, UDI_MSC_EP_OUT, and udi_msc_trans_ack().
Referenced by at45dbx_usb_read_10(), at45dbx_usb_write_10(), sd_mmc_usb_read_10(), sd_mmc_usb_write_10(), and virtual_usb_trans().