Open FFBoard
Open source force feedback firmware
msc_device.c File Reference

Go to the source code of this file.

Classes

struct  mscd_interface_t
 

Enumerations

enum  {
  MSC_STAGE_CMD = 0 , MSC_STAGE_DATA , MSC_STAGE_STATUS , MSC_STAGE_STATUS_SENT ,
  MSC_STAGE_NEED_RESET
}
 

Functions

static int32_t proc_builtin_scsi (uint8_t lun, uint8_t const scsi_cmd[16], uint8_t *buffer, uint32_t bufsize)
 
static void proc_read10_cmd (uint8_t rhport, mscd_interface_t *p_msc)
 
static void proc_write10_cmd (uint8_t rhport, mscd_interface_t *p_msc)
 
static void proc_write10_new_data (uint8_t rhport, mscd_interface_t *p_msc, uint32_t xferred_bytes)
 
static TU_ATTR_ALWAYS_INLINE bool is_data_in (uint8_t dir)
 
static bool send_csw (uint8_t rhport, mscd_interface_t *p_msc)
 
static bool prepare_cbw (uint8_t rhport, mscd_interface_t *p_msc)
 
static void fail_scsi_op (uint8_t rhport, mscd_interface_t *p_msc, uint8_t status)
 
static uint32_t rdwr10_get_lba (uint8_t const command[])
 
static uint16_t rdwr10_get_blockcount (msc_cbw_t const *cbw)
 
static uint16_t rdwr10_get_blocksize (msc_cbw_t const *cbw)
 
uint8_t rdwr10_validate_cmd (msc_cbw_t const *cbw)
 
bool tud_msc_set_sense (uint8_t lun, uint8_t sense_key, uint8_t add_sense_code, uint8_t add_sense_qualifier)
 
static void set_sense_medium_not_present (uint8_t lun)
 
void mscd_init (void)
 
bool mscd_deinit (void)
 
void mscd_reset (uint8_t rhport)
 
uint16_t mscd_open (uint8_t rhport, tusb_desc_interface_t const *itf_desc, uint16_t max_len)
 
static void proc_bot_reset (mscd_interface_t *p_msc)
 
bool mscd_control_xfer_cb (uint8_t rhport, uint8_t stage, tusb_control_request_t const *request)
 
bool mscd_xfer_cb (uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes)
 

Variables

CFG_TUD_MEM_SECTION CFG_TUSB_MEM_ALIGN tu_static mscd_interface_t _mscd_itf
 
CFG_TUD_MEM_SECTION CFG_TUSB_MEM_ALIGN tu_static uint8_t _mscd_buf [CFG_TUD_MSC_EP_BUFSIZE]
 
TU_ATTR_UNUSED tu_static tu_lookup_entry_t const _msc_scsi_cmd_lookup []
 
TU_ATTR_UNUSED tu_static tu_lookup_table_t const _msc_scsi_cmd_table
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
MSC_STAGE_CMD 
MSC_STAGE_DATA 
MSC_STAGE_STATUS 
MSC_STAGE_STATUS_SENT 
MSC_STAGE_NEED_RESET 

Definition at line 47 of file msc_device.c.

Function Documentation

◆ fail_scsi_op()

static void fail_scsi_op ( uint8_t  rhport,
mscd_interface_t p_msc,
uint8_t  status 
)
static

Definition at line 109 of file msc_device.c.

◆ is_data_in()

static TU_ATTR_ALWAYS_INLINE bool is_data_in ( uint8_t  dir)
inlinestatic

Definition at line 89 of file msc_device.c.

◆ mscd_control_xfer_cb()

bool mscd_control_xfer_cb ( uint8_t  rhport,
uint8_t  stage,
tusb_control_request_t const *  request 
)

Definition at line 308 of file msc_device.c.

◆ mscd_deinit()

bool mscd_deinit ( void  )

Definition at line 258 of file msc_device.c.

◆ mscd_init()

void mscd_init ( void  )

Definition at line 254 of file msc_device.c.

◆ mscd_open()

uint16_t mscd_open ( uint8_t  rhport,
tusb_desc_interface_t const *  itf_desc,
uint16_t  max_len 
)

Definition at line 269 of file msc_device.c.

◆ mscd_reset()

void mscd_reset ( uint8_t  rhport)

Definition at line 263 of file msc_device.c.

◆ mscd_xfer_cb()

bool mscd_xfer_cb ( uint8_t  rhport,
uint8_t  ep_addr,
xfer_result_t  event,
uint32_t  xferred_bytes 
)

Definition at line 393 of file msc_device.c.

◆ prepare_cbw()

static bool prepare_cbw ( uint8_t  rhport,
mscd_interface_t p_msc 
)
inlinestatic

Definition at line 103 of file msc_device.c.

◆ proc_bot_reset()

static void proc_bot_reset ( mscd_interface_t p_msc)
static

Definition at line 294 of file msc_device.c.

◆ proc_builtin_scsi()

static int32_t proc_builtin_scsi ( uint8_t  lun,
uint8_t const  scsi_cmd[16],
uint8_t *  buffer,
uint32_t  bufsize 
)
static

Definition at line 654 of file msc_device.c.

◆ proc_read10_cmd()

static void proc_read10_cmd ( uint8_t  rhport,
mscd_interface_t p_msc 
)
static

Definition at line 853 of file msc_device.c.

◆ proc_write10_cmd()

static void proc_write10_cmd ( uint8_t  rhport,
mscd_interface_t p_msc 
)
static

Definition at line 891 of file msc_device.c.

◆ proc_write10_new_data()

static void proc_write10_new_data ( uint8_t  rhport,
mscd_interface_t p_msc,
uint32_t  xferred_bytes 
)
static

Definition at line 918 of file msc_device.c.

◆ rdwr10_get_blockcount()

static uint16_t rdwr10_get_blockcount ( msc_cbw_t const *  cbw)
inlinestatic

Definition at line 144 of file msc_device.c.

◆ rdwr10_get_blocksize()

static uint16_t rdwr10_get_blocksize ( msc_cbw_t const *  cbw)
inlinestatic

Definition at line 150 of file msc_device.c.

◆ rdwr10_get_lba()

static uint32_t rdwr10_get_lba ( uint8_t const  command[])
inlinestatic

Definition at line 135 of file msc_device.c.

◆ rdwr10_validate_cmd()

uint8_t rdwr10_validate_cmd ( msc_cbw_t const *  cbw)

Definition at line 161 of file msc_device.c.

◆ send_csw()

static bool send_csw ( uint8_t  rhport,
mscd_interface_t p_msc 
)
inlinestatic

Definition at line 94 of file msc_device.c.

◆ set_sense_medium_not_present()

static void set_sense_medium_not_present ( uint8_t  lun)
inlinestatic

Definition at line 245 of file msc_device.c.

◆ tud_msc_set_sense()

bool tud_msc_set_sense ( uint8_t  lun,
uint8_t  sense_key,
uint8_t  add_sense_code,
uint8_t  add_sense_qualifier 
)

Definition at line 234 of file msc_device.c.

Variable Documentation

◆ _msc_scsi_cmd_lookup

TU_ATTR_UNUSED tu_static tu_lookup_entry_t const _msc_scsi_cmd_lookup[]
Initial value:
=
{
{ .key = SCSI_CMD_TEST_UNIT_READY , .data = "Test Unit Ready" },
{ .key = SCSI_CMD_INQUIRY , .data = "Inquiry" },
{ .key = SCSI_CMD_MODE_SELECT_6 , .data = "Mode_Select 6" },
{ .key = SCSI_CMD_MODE_SENSE_6 , .data = "Mode_Sense 6" },
{ .key = SCSI_CMD_START_STOP_UNIT , .data = "Start Stop Unit" },
{ .key = SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL , .data = "Prevent/Allow Medium Removal" },
{ .key = SCSI_CMD_READ_CAPACITY_10 , .data = "Read Capacity10" },
{ .key = SCSI_CMD_REQUEST_SENSE , .data = "Request Sense" },
{ .key = SCSI_CMD_READ_FORMAT_CAPACITY , .data = "Read Format Capacity" },
{ .key = SCSI_CMD_READ_10 , .data = "Read10" },
{ .key = SCSI_CMD_WRITE_10 , .data = "Write10" }
}
@ SCSI_CMD_TEST_UNIT_READY
The SCSI Test Unit Ready command is used to determine if a device is ready to transfer data (read/wri...
Definition: msc.h:113
@ SCSI_CMD_READ_FORMAT_CAPACITY
The command allows the Host to request a list of the possible format capacities for an installed writ...
Definition: msc.h:121
@ SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL
Definition: msc.h:118
@ SCSI_CMD_REQUEST_SENSE
The SCSI Request Sense command is part of the SCSI computer protocol standard. This command is used t...
Definition: msc.h:120
@ SCSI_CMD_WRITE_10
The WRITE (10) command requests that the device server transfer the specified logical block(s) from t...
Definition: msc.h:123
@ SCSI_CMD_MODE_SELECT_6
provides a means for the application client to specify medium, logical unit, or peripheral device par...
Definition: msc.h:115
@ SCSI_CMD_READ_CAPACITY_10
The SCSI Read Capacity command is used to obtain data capacity information from a target device.
Definition: msc.h:119
@ SCSI_CMD_START_STOP_UNIT
Definition: msc.h:117
@ SCSI_CMD_READ_10
The READ (10) command requests that the device server read the specified logical block(s) and transfe...
Definition: msc.h:122
@ SCSI_CMD_MODE_SENSE_6
provides a means for a device server to report parameters to an application client....
Definition: msc.h:116
@ SCSI_CMD_INQUIRY
The SCSI Inquiry command is used to obtain basic information from a target device.
Definition: msc.h:114

Definition at line 208 of file msc_device.c.

◆ _msc_scsi_cmd_table

TU_ATTR_UNUSED tu_static tu_lookup_table_t const _msc_scsi_cmd_table
Initial value:
=
{
.count = TU_ARRAY_SIZE(_msc_scsi_cmd_lookup),
}
TU_ATTR_UNUSED tu_static tu_lookup_entry_t const _msc_scsi_cmd_lookup[]
Definition: msc_device.c:208

Definition at line 223 of file msc_device.c.

◆ _mscd_buf

CFG_TUD_MEM_SECTION CFG_TUSB_MEM_ALIGN tu_static uint8_t _mscd_buf[CFG_TUD_MSC_EP_BUFSIZE]

Definition at line 78 of file msc_device.c.

◆ _mscd_itf

CFG_TUD_MEM_SECTION CFG_TUSB_MEM_ALIGN tu_static mscd_interface_t _mscd_itf

Definition at line 77 of file msc_device.c.