libopencm3
A free/libre/open-source firmware library for various ARM Cortex-M3 microcontrollers.
Usb_msc

Functions

usbd_mass_storageusb_msc_init (usbd_device *usbd_dev, uint8_t ep_in, uint8_t ep_in_size, uint8_t ep_out, uint8_t ep_out_size, const char *vendor_id, const char *product_id, const char *product_revision_level, const uint32_t block_count, int(*read_block)(uint32_t lba, uint8_t *copy_to), int(*write_block)(uint32_t lba, const uint8_t *copy_from))
 Initializes the USB Mass Storage subsystem. More...
 

Detailed Description

Function Documentation

◆ usb_msc_init()

usbd_mass_storage * usb_msc_init ( usbd_device usbd_dev,
uint8_t  ep_in,
uint8_t  ep_in_size,
uint8_t  ep_out,
uint8_t  ep_out_size,
const char *  vendor_id,
const char *  product_id,
const char *  product_revision_level,
const uint32_t  block_count,
int(*)(uint32_t lba, uint8_t *copy_to)  read_block,
int(*)(uint32_t lba, const uint8_t *copy_from)  write_block 
)

Initializes the USB Mass Storage subsystem.

Note
Currently you can only have this profile active.
Parameters
[in]usbd_devThe USB device to associate the Mass Storage with.
[in]ep_inThe USB 'IN' endpoint.
[in]ep_in_sizeThe maximum endpoint size. Valid values: 8, 16, 32 or 64
[in]ep_outThe USB 'OUT' endpoint.
[in]ep_out_sizeThe maximum endpoint size. Valid values: 8, 16, 32 or 64
[in]vendor_idThe SCSI vendor ID to return. Maximum used length is 8.
[in]product_idThe SCSI product ID to return. Maximum used length is 16.
[in]product_revision_levelThe SCSI product revision level to return. Maximum used length is 4.
[in]block_countThe number of 512-byte blocks available.
[in]read_blockThe function called when the host requests to read a LBA block. Must NOT be NULL.
[in]write_blockThe function called when the host requests to write a LBA block. Must NOT be NULL.
Returns
Pointer to the usbd_mass_storage struct.

Definition at line 801 of file usb_msc.c.

References _mass_storage, usb_msc_trans::block_count, _usbd_mass_storage::block_count, usb_msc_trans::byte_count, usb_msc_trans::bytes_to_read, usb_msc_trans::bytes_to_write, usb_msc_trans::cbw_cnt, usb_msc_trans::csw_sent, usb_msc_trans::csw_valid, usb_msc_trans::current_block, _usbd_mass_storage::ep_in, _usbd_mass_storage::ep_in_size, _usbd_mass_storage::ep_out, _usbd_mass_storage::ep_out_size, usb_msc_trans::lba_start, _usbd_mass_storage::lock, msc_set_config(), _usbd_mass_storage::product_id, _usbd_mass_storage::product_revision_level, _usbd_mass_storage::read_block, set_sbc_status_good(), _usbd_mass_storage::trans, _usbd_mass_storage::unlock, usbd_dev, _usbd_mass_storage::usbd_dev, usbd_register_set_config_callback(), _usbd_mass_storage::vendor_id, and _usbd_mass_storage::write_block.

Here is the call graph for this function: