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

Go to the source code of this file.

Functions

bool tud_msc_set_sense (uint8_t lun, uint8_t sense_key, uint8_t add_sense_code, uint8_t add_sense_qualifier)
 
int32_t tud_msc_read10_cb (uint8_t lun, uint32_t lba, uint32_t offset, void *buffer, uint32_t bufsize)
 
int32_t tud_msc_write10_cb (uint8_t lun, uint32_t lba, uint32_t offset, uint8_t *buffer, uint32_t bufsize)
 
void tud_msc_inquiry_cb (uint8_t lun, uint8_t vendor_id[8], uint8_t product_id[16], uint8_t product_rev[4])
 
bool tud_msc_test_unit_ready_cb (uint8_t lun)
 
void tud_msc_capacity_cb (uint8_t lun, uint32_t *block_count, uint16_t *block_size)
 
int32_t tud_msc_scsi_cb (uint8_t lun, uint8_t const scsi_cmd[16], void *buffer, uint16_t bufsize)
 
TU_ATTR_WEAK uint8_t tud_msc_get_maxlun_cb (void)
 
TU_ATTR_WEAK bool tud_msc_start_stop_cb (uint8_t lun, uint8_t power_condition, bool start, bool load_eject)
 
TU_ATTR_WEAK bool tud_msc_prevent_allow_medium_removal_cb (uint8_t lun, uint8_t prohibit_removal, uint8_t control)
 
TU_ATTR_WEAK int32_t tud_msc_request_sense_cb (uint8_t lun, void *buffer, uint16_t bufsize)
 
TU_ATTR_WEAK void tud_msc_read10_complete_cb (uint8_t lun)
 
TU_ATTR_WEAK void tud_msc_write10_complete_cb (uint8_t lun)
 
TU_ATTR_WEAK void tud_msc_scsi_complete_cb (uint8_t lun, uint8_t const scsi_cmd[16])
 
TU_ATTR_WEAK bool tud_msc_is_writable_cb (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)
 
bool mscd_control_xfer_cb (uint8_t rhport, uint8_t stage, tusb_control_request_t const *p_request)
 
bool mscd_xfer_cb (uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes)
 

Variables

 C
 

Function Documentation

◆ mscd_control_xfer_cb()

bool mscd_control_xfer_cb ( uint8_t  rhport,
uint8_t  stage,
tusb_control_request_t const *  p_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.

◆ tud_msc_capacity_cb()

void tud_msc_capacity_cb ( uint8_t  lun,
uint32_t *  block_count,
uint16_t *  block_size 
)

◆ tud_msc_get_maxlun_cb()

TU_ATTR_WEAK uint8_t tud_msc_get_maxlun_cb ( void  )

◆ tud_msc_inquiry_cb()

void tud_msc_inquiry_cb ( uint8_t  lun,
uint8_t  vendor_id[8],
uint8_t  product_id[16],
uint8_t  product_rev[4] 
)

◆ tud_msc_is_writable_cb()

TU_ATTR_WEAK bool tud_msc_is_writable_cb ( uint8_t  lun)

◆ tud_msc_prevent_allow_medium_removal_cb()

TU_ATTR_WEAK bool tud_msc_prevent_allow_medium_removal_cb ( uint8_t  lun,
uint8_t  prohibit_removal,
uint8_t  control 
)

◆ tud_msc_read10_cb()

int32_t tud_msc_read10_cb ( uint8_t  lun,
uint32_t  lba,
uint32_t  offset,
void *  buffer,
uint32_t  bufsize 
)

◆ tud_msc_read10_complete_cb()

TU_ATTR_WEAK void tud_msc_read10_complete_cb ( uint8_t  lun)

◆ tud_msc_request_sense_cb()

TU_ATTR_WEAK int32_t tud_msc_request_sense_cb ( uint8_t  lun,
void *  buffer,
uint16_t  bufsize 
)

◆ tud_msc_scsi_cb()

int32_t tud_msc_scsi_cb ( uint8_t  lun,
uint8_t const  scsi_cmd[16],
void *  buffer,
uint16_t  bufsize 
)

Invoked when received an SCSI command not in built-in list below.

  • READ_CAPACITY10, READ_FORMAT_CAPACITY, INQUIRY, TEST_UNIT_READY, START_STOP_UNIT, MODE_SENSE6, REQUEST_SENSE
  • READ10 and WRITE10 has their own callbacks
Parameters
[in]lunLogical unit number
[in]scsi_cmdSCSI command contents which application must examine to response accordingly
[out]bufferBuffer for SCSI Data Stage.
  • For INPUT: application must fill this with response.
  • For OUTPUT it holds the Data from host
[in]bufsizeBuffer's length.
Returns
Actual bytes processed, can be zero for no-data command.
Return values
negativeIndicate error e.g unsupported command, tinyusb will STALL the corresponding endpoint and return failed status in command status wrapper phase.

◆ tud_msc_scsi_complete_cb()

TU_ATTR_WEAK void tud_msc_scsi_complete_cb ( uint8_t  lun,
uint8_t const  scsi_cmd[16] 
)

◆ 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.

◆ tud_msc_start_stop_cb()

TU_ATTR_WEAK bool tud_msc_start_stop_cb ( uint8_t  lun,
uint8_t  power_condition,
bool  start,
bool  load_eject 
)

◆ tud_msc_test_unit_ready_cb()

bool tud_msc_test_unit_ready_cb ( uint8_t  lun)

◆ tud_msc_write10_cb()

int32_t tud_msc_write10_cb ( uint8_t  lun,
uint32_t  lba,
uint32_t  offset,
uint8_t *  buffer,
uint32_t  bufsize 
)

◆ tud_msc_write10_complete_cb()

TU_ATTR_WEAK void tud_msc_write10_complete_cb ( uint8_t  lun)

Variable Documentation

◆ C

C
extern
Initial value:
{
#endif
#if !defined(CFG_TUD_MSC_EP_BUFSIZE) & defined(CFG_TUD_MSC_BUFSIZE)
#define CFG_TUD_MSC_EP_BUFSIZE CFG_TUD_MSC_BUFSIZE
#endif
#ifndef CFG_TUD_MSC_EP_BUFSIZE
#error CFG_TUD_MSC_EP_BUFSIZE must be defined, value of a block size should work well, the more the better
#endif
TU_VERIFY_STATIC(CFG_TUD_MSC_EP_BUFSIZE < UINT16_MAX, "Size is not correct")
TU_VERIFY_STATIC(sizeof(cdc_acm_capability_t)==1, "mostly problem with compiler")