summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhathach <[email protected]>2020-10-13 14:00:25 +0700
committerhathach <[email protected]>2020-10-13 14:11:17 +0700
commit3623f578a4b9c75b61b1c7a7d0c0c3ff2440e690 (patch)
tree3050df8ff9b2fe7d09e04c3fde53818912df949b /src
parentd92d1a03ca2df69856f02c64ae88d805d60ad088 (diff)
more clean up
Diffstat (limited to 'src')
-rw-r--r--src/class/msc/msc_host.c5
-rw-r--r--src/class/msc/msc_host.h60
-rw-r--r--src/host/usbh.c5
3 files changed, 22 insertions, 48 deletions
diff --git a/src/class/msc/msc_host.c b/src/class/msc/msc_host.c
index 8bf240ac7..83423cfc7 100644
--- a/src/class/msc/msc_host.c
+++ b/src/class/msc/msc_host.c
@@ -109,7 +109,7 @@ static inline void msc_cbw_add_signature(msc_cbw_t *p_cbw, uint8_t lun)
bool tuh_msc_scsi_command(uint8_t dev_addr, msc_cbw_t const* cbw, void* data, tuh_msc_complete_cb_t complete_cb)
{
msch_interface_t* p_msc = get_itf(dev_addr);
- TU_VERIFY(p_msc->mounted);
+ // TU_VERIFY(p_msc->mounted); // TODO part of the enumeration also use scsi command
// TODO claim endpoint
@@ -278,7 +278,8 @@ void msch_init(void)
void msch_close(uint8_t dev_addr)
{
- tu_memclr(&msch_data[dev_addr-1], sizeof(msch_interface_t));
+ msch_interface_t* p_msc = get_itf(dev_addr);
+ tu_memclr(p_msc, sizeof(msch_interface_t));
tuh_msc_unmounted_cb(dev_addr); // invoke Application Callback
}
diff --git a/src/class/msc/msc_host.h b/src/class/msc/msc_host.h
index 827311063..06b1067cc 100644
--- a/src/class/msc/msc_host.h
+++ b/src/class/msc/msc_host.h
@@ -44,13 +44,8 @@
typedef bool (*tuh_msc_complete_cb_t)(uint8_t dev_addr, msc_cbw_t const* cbw, msc_csw_t const* csw);
//--------------------------------------------------------------------+
-// MASS STORAGE Application API
+// Application API
//--------------------------------------------------------------------+
-/** \brief Check if device supports MassStorage interface or not
- * \param[in] dev_addr device address
- * \retval true if device supports
- * \retval false if device does not support or is not mounted
- */
// Check if device supports MassStorage interface.
// This function true after tuh_msc_mounted_cb() and false after tuh_msc_unmounted_cb()
@@ -66,22 +61,24 @@ bool tuh_msc_mounted(uint8_t dev_addr);
*/
bool tuh_msc_is_busy(uint8_t dev_addr);
+// Get Max Lun
uint8_t tuh_msc_get_maxlun(uint8_t dev_addr);
+// Carry out a full SCSI command (cbw, data, csw) in non-blocking manner.
+// `complete_cb` callback is invoked when SCSI op is complete.
+// return true if success, false if there is already pending operation.
bool tuh_msc_scsi_command(uint8_t dev_addr, msc_cbw_t const* cbw, void* data, tuh_msc_complete_cb_t complete_cb);
+// Carry out SCSI INQUIRY command in non-blocking manner.
bool tuh_msc_scsi_inquiry(uint8_t dev_addr, uint8_t lun, scsi_inquiry_resp_t* response, tuh_msc_complete_cb_t complete_cb);
-/** \brief Get SCSI Capacity of MassStorage device
- * \param[in] dev_addr device address
- * \param[out] p_last_lba Last Logical Block Address of device
- * \param[out] p_block_size Block Size of device in bytes
- * \retval pointer to product's name or NULL if specified device does not support MassStorage
- * \note MassStorage's capacity can be computed by last LBA x block size (in bytes). During enumeration, the stack has already
- * retrieved (via SCSI READ CAPACITY 10) and store this information internally. There is no need for application
- * to re-send SCSI READ CAPACITY 10 command
- */
+// Carry out SCSI REQUEST SENSE (10) command in non-blocking manner.
+bool tuh_msc_test_unit_ready(uint8_t dev_addr, uint8_t lun, tuh_msc_complete_cb_t complete_cb);
+
+// Carry out SCSI REQUEST SENSE (10) command in non-blocking manner.
+bool tuh_msc_request_sense(uint8_t dev_addr, uint8_t lun, void *resposne, tuh_msc_complete_cb_t complete_cb);
+// Carry out SCSI READ CAPACITY (10) command in non-blocking manner.
bool tuh_msc_read_capacity(uint8_t dev_addr, uint8_t lun, scsi_read_capacity10_resp_t* response, tuh_msc_complete_cb_t complete_cb);
#if 0
@@ -114,39 +111,12 @@ tusb_error_t tuh_msc_read10 (uint8_t dev_addr, uint8_t lun, void * p_buffer, uin
tusb_error_t tuh_msc_write10(uint8_t dev_addr, uint8_t lun, void const * p_buffer, uint32_t lba, uint16_t block_count);
#endif
-/** \brief Perform SCSI REQUEST SENSE command, used to retrieve sense data from MassStorage device
- * \param[in] dev_addr device address
- * \param[in] lun Targeted Logical Unit
- * \param[in] p_data Buffer to store response's data from device. Must be accessible by USB controller (see \ref CFG_TUSB_MEM_SECTION)
- * \note This function is non-blocking and returns immediately.
- * Callback is invoked when command is complete
- */
-bool tuh_msc_request_sense(uint8_t dev_addr, uint8_t lun, void *resposne, tuh_msc_complete_cb_t complete_cb);
-
-/** \brief Perform SCSI TEST UNIT READY command to test if MassStorage device is ready
- * \param[in] dev_addr device address
- * \param[in] lun Targeted Logical Unit
- * \note This function is non-blocking and returns immediately.
- * Callback is invoked when command is complete
- */
-bool tuh_msc_test_unit_ready(uint8_t dev_addr, uint8_t lun, tuh_msc_complete_cb_t complete_cb);
-
-
-//tusb_error_t tusbh_msc_scsi_send(uint8_t dev_addr, uint8_t lun, bool is_direction_in,
-// uint8_t const * p_command, uint8_t cmd_len,
-// uint8_t * p_response, uint32_t resp_len);
-
//------------- Application Callback -------------//
-/** \brief Callback function that will be invoked when a device with MassStorage interface is mounted
- * \param[in] dev_addr Address of newly mounted device
- * \note This callback should be used by Application to set-up interface-related data
- */
+
+// Invoked when a device with MassStorage interface is mounted
void tuh_msc_mounted_cb(uint8_t dev_addr);
-/** \brief Callback function that will be invoked when a device with MassStorage interface is unmounted
- * \param[in] dev_addr Address of newly unmounted device
- * \note This callback should be used by Application to tear-down interface-related data
- */
+// Invoked when a device with MassStorage interface is unmounted
void tuh_msc_unmounted_cb(uint8_t dev_addr);
//--------------------------------------------------------------------+
diff --git a/src/host/usbh.c b/src/host/usbh.c
index 595024b9c..7d1201aa4 100644
--- a/src/host/usbh.c
+++ b/src/host/usbh.c
@@ -880,9 +880,12 @@ static bool parse_configuration_descriptor(uint8_t dev_addr, tusb_desc_configura
}
else
{
+ TU_LOG2("%s open\r\n", driver->name);
+
uint16_t itf_len = 0;
- TU_LOG2("%s open\r\n", driver->name);
+ // TODO class driver can perform control transfer when opening which is
+ // non-blocking --> need a way to coordinate composite device
TU_ASSERT( driver->open(dev->rhport, dev_addr, desc_itf, &itf_len) );
TU_ASSERT( itf_len >= sizeof(tusb_desc_interface_t) );
p_desc += itf_len;