house keeping
This commit is contained in:
@@ -84,7 +84,7 @@ enum {
|
||||
HID_REQUEST_CONTROL_SET_PROTOCOL = 0x0b
|
||||
};
|
||||
|
||||
typedef ATTR_PREPACKED struct ATTR_PACKED {
|
||||
typedef ATTR_PACKED_STRUCT(struct) {
|
||||
uint8_t bLength; /**< Numeric expression that is the total size of the HID descriptor */
|
||||
uint8_t bDescriptorType; /**< Constant name specifying type of HID descriptor. */
|
||||
|
||||
|
||||
@@ -74,19 +74,33 @@ bool tusbh_msc_is_mounted(uint8_t dev_addr)
|
||||
msch_data[dev_addr-1].is_initialized;
|
||||
}
|
||||
|
||||
bool tusbh_msc_is_busy(uint8_t dev_addr)
|
||||
{
|
||||
return msch_data[dev_addr-1].is_initialized &&
|
||||
hcd_pipe_is_busy(msch_data[dev_addr-1].bulk_in);
|
||||
}
|
||||
|
||||
bool tusbh_msc_is_failed(uint8_t dev_addr)
|
||||
{
|
||||
return msch_data[dev_addr-1].is_initialized &&
|
||||
hcd_pipe_is_error(msch_data[dev_addr-1].bulk_in);
|
||||
}
|
||||
|
||||
// TODO tusbh_msc_is_stalled
|
||||
|
||||
uint8_t const* tusbh_msc_get_vendor_name(uint8_t dev_addr)
|
||||
{
|
||||
return tusbh_msc_is_mounted(dev_addr) ? msch_data[dev_addr-1].vendor_id : NULL;
|
||||
return msch_data[dev_addr-1].is_initialized ? msch_data[dev_addr-1].vendor_id : NULL;
|
||||
}
|
||||
|
||||
uint8_t const* tusbh_msc_get_product_name(uint8_t dev_addr)
|
||||
{
|
||||
return tusbh_msc_is_mounted(dev_addr) ? msch_data[dev_addr-1].product_id : NULL;
|
||||
return msch_data[dev_addr-1].is_initialized ? msch_data[dev_addr-1].product_id : NULL;
|
||||
}
|
||||
|
||||
tusb_error_t tusbh_msc_get_capacity(uint8_t dev_addr, uint32_t* p_last_lba, uint32_t* p_block_size)
|
||||
{
|
||||
if ( !tusbh_msc_is_mounted(dev_addr) ) return TUSB_ERROR_MSCH_DEVICE_NOT_MOUNTED;
|
||||
if ( !msch_data[dev_addr-1].is_initialized ) return TUSB_ERROR_MSCH_DEVICE_NOT_MOUNTED;
|
||||
ASSERT(p_last_lba != NULL && p_block_size != NULL, TUSB_ERROR_INVALID_PARA);
|
||||
|
||||
(*p_last_lba) = msch_data[dev_addr-1].last_lba;
|
||||
@@ -95,16 +109,6 @@ tusb_error_t tusbh_msc_get_capacity(uint8_t dev_addr, uint32_t* p_last_lba, uint
|
||||
return TUSB_ERROR_NONE;
|
||||
}
|
||||
|
||||
tusb_interface_status_t tusbh_msc_status(uint8_t dev_addr)
|
||||
{
|
||||
if ( !tusbh_msc_is_mounted(dev_addr) ) return TUSB_INTERFACE_STATUS_INVALID_PARA;
|
||||
|
||||
if ( hcd_pipe_is_busy(msch_data[dev_addr-1].bulk_in) ) return TUSB_INTERFACE_STATUS_BUSY;
|
||||
if ( hcd_pipe_is_stalled(msch_data[dev_addr-1].bulk_in) ) return TUSB_INTERFACE_STATUS_ERROR;
|
||||
|
||||
return TUSB_INTERFACE_STATUS_READY;
|
||||
}
|
||||
|
||||
static inline void msc_cbw_add_signature(msc_cmd_block_wrapper_t *p_cbw, uint8_t lun) ATTR_ALWAYS_INLINE;
|
||||
static inline void msc_cbw_add_signature(msc_cmd_block_wrapper_t *p_cbw, uint8_t lun)
|
||||
{
|
||||
|
||||
@@ -59,7 +59,9 @@
|
||||
// MASS STORAGE Application API
|
||||
//--------------------------------------------------------------------+
|
||||
bool tusbh_msc_is_mounted(uint8_t dev_addr) ATTR_PURE ATTR_WARN_UNUSED_RESULT;
|
||||
tusb_interface_status_t tusbh_msc_status(uint8_t dev_addr) ATTR_WARN_UNUSED_RESULT;
|
||||
bool tusbh_msc_is_busy(uint8_t dev_addr) ATTR_PURE ATTR_WARN_UNUSED_RESULT;
|
||||
bool tusbh_msc_is_failed(uint8_t dev_addr) ATTR_PURE ATTR_WARN_UNUSED_RESULT;
|
||||
|
||||
uint8_t const* tusbh_msc_get_vendor_name(uint8_t dev_addr);
|
||||
uint8_t const* tusbh_msc_get_product_name(uint8_t dev_addr);
|
||||
tusb_error_t tusbh_msc_get_capacity(uint8_t dev_addr, uint32_t* p_last_lba, uint32_t* p_block_size);
|
||||
@@ -95,7 +97,7 @@ typedef struct {
|
||||
uint16_t block_size;
|
||||
uint32_t last_lba; // last logical block address
|
||||
|
||||
bool is_initialized;
|
||||
volatile bool is_initialized;
|
||||
uint8_t vendor_id[8];
|
||||
uint8_t product_id[16];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user