summaryrefslogtreecommitdiff
path: root/src/class/msc
diff options
context:
space:
mode:
authorHa Thach <[email protected]>2021-05-22 22:56:17 +0700
committerGitHub <[email protected]>2021-05-22 22:56:17 +0700
commit56577d9fcab58680b22d86be6ecac0a16f96f659 (patch)
tree445278bc5e2aba1e9fbdc8cd064c5e4f09ee8ac2 /src/class/msc
parentcdb063f007f16f5cfad7b4c05fc117da5f251b26 (diff)
parentf13a3c04f790a865472a7ed0b57182f401189977 (diff)
Merge pull request #834 from hathach/host-hid
Rework Host hid
Diffstat (limited to 'src/class/msc')
-rw-r--r--src/class/msc/msc_host.c21
-rw-r--r--src/class/msc/msc_host.h6
2 files changed, 14 insertions, 13 deletions
diff --git a/src/class/msc/msc_host.c b/src/class/msc/msc_host.c
index 34dbec2e3..08b4db9e1 100644
--- a/src/class/msc/msc_host.c
+++ b/src/class/msc/msc_host.c
@@ -287,7 +287,7 @@ bool tuh_msc_reset(uint8_t dev_addr)
#endif
//--------------------------------------------------------------------+
-// CLASS-USBH API (don't require to verify parameters)
+// CLASS-USBH API
//--------------------------------------------------------------------+
void msch_init(void)
{
@@ -298,7 +298,9 @@ void msch_close(uint8_t dev_addr)
{
msch_interface_t* p_msc = get_itf(dev_addr);
tu_memclr(p_msc, sizeof(msch_interface_t));
- tuh_msc_unmount_cb(dev_addr); // invoke Application Callback
+
+ // invoke Application Callback
+ if (tuh_msc_umount_cb) tuh_msc_umount_cb(dev_addr);
}
bool msch_xfer_cb(uint8_t dev_addr, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes)
@@ -357,15 +359,13 @@ static bool config_test_unit_ready_complete(uint8_t dev_addr, msc_cbw_t const* c
static bool config_request_sense_complete(uint8_t dev_addr, msc_cbw_t const* cbw, msc_csw_t const* csw);
static bool config_read_capacity_complete(uint8_t dev_addr, msc_cbw_t const* cbw, msc_csw_t const* csw);
-bool msch_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const *itf_desc, uint16_t *p_length)
+bool msch_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const *desc_itf, uint16_t *p_length)
{
- TU_VERIFY (MSC_SUBCLASS_SCSI == itf_desc->bInterfaceSubClass &&
- MSC_PROTOCOL_BOT == itf_desc->bInterfaceProtocol);
+ TU_VERIFY (MSC_SUBCLASS_SCSI == desc_itf->bInterfaceSubClass &&
+ MSC_PROTOCOL_BOT == desc_itf->bInterfaceProtocol);
msch_interface_t* p_msc = get_itf(dev_addr);
-
- //------------- Open Data Pipe -------------//
- tusb_desc_endpoint_t const * ep_desc = (tusb_desc_endpoint_t const *) tu_desc_next(itf_desc);
+ tusb_desc_endpoint_t const * ep_desc = (tusb_desc_endpoint_t const *) tu_desc_next(desc_itf);
for(uint32_t i=0; i<2; i++)
{
@@ -383,7 +383,7 @@ bool msch_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const *it
ep_desc = (tusb_desc_endpoint_t const *) tu_desc_next(ep_desc);
}
- p_msc->itf_num = itf_desc->bInterfaceNumber;
+ p_msc->itf_num = desc_itf->bInterfaceNumber;
(*p_length) += sizeof(tusb_desc_interface_t) + 2*sizeof(tusb_desc_endpoint_t);
return true;
@@ -473,8 +473,9 @@ static bool config_read_capacity_complete(uint8_t dev_addr, msc_cbw_t const* cbw
// Mark enumeration is complete
p_msc->mounted = true;
- tuh_msc_mount_cb(dev_addr);
+ if (tuh_msc_mount_cb) tuh_msc_mount_cb(dev_addr);
+ // notify usbh that driver enumeration is complete
usbh_driver_set_config_complete(dev_addr, p_msc->itf_num);
return true;
diff --git a/src/class/msc/msc_host.h b/src/class/msc/msc_host.h
index 8116e729f..b5ffcd401 100644
--- a/src/class/msc/msc_host.h
+++ b/src/class/msc/msc_host.h
@@ -106,17 +106,17 @@ bool tuh_msc_read_capacity(uint8_t dev_addr, uint8_t lun, scsi_read_capacity10_r
//------------- Application Callback -------------//
// Invoked when a device with MassStorage interface is mounted
-void tuh_msc_mount_cb(uint8_t dev_addr);
+TU_ATTR_WEAK void tuh_msc_mount_cb(uint8_t dev_addr);
// Invoked when a device with MassStorage interface is unmounted
-void tuh_msc_unmount_cb(uint8_t dev_addr);
+TU_ATTR_WEAK void tuh_msc_umount_cb(uint8_t dev_addr);
//--------------------------------------------------------------------+
// Internal Class Driver API
//--------------------------------------------------------------------+
void msch_init(void);
-bool msch_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const *itf_desc, uint16_t *p_length);
+bool msch_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const *desc_itf, uint16_t *p_length);
bool msch_set_config(uint8_t dev_addr, uint8_t itf_num);
bool msch_xfer_cb(uint8_t dev_addr, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes);
void msch_close(uint8_t dev_addr);