mirror of
https://github.com/hathach/tinyusb.git
synced 2025-02-21 03:40:52 +00:00
adding lookup table for debugging
add msc scsi command list
This commit is contained in:
parent
94e70f9b01
commit
bbada1d3e6
@ -97,6 +97,34 @@ static inline uint16_t rdwr10_get_blockcount(uint8_t const command[])
|
|||||||
return tu_ntohs(block_count);
|
return tu_ntohs(block_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// Debug
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
#if CFG_TUSB_DEBUG >= 2
|
||||||
|
|
||||||
|
static lookup_entry_t const _msc_scsi_cmd_lookup[] =
|
||||||
|
{
|
||||||
|
{ .key = SCSI_CMD_TEST_UNIT_READY , .data = "Test Unit Ready" },
|
||||||
|
{ .key = SCSI_CMD_INQUIRY , .data = "Inquiry" },
|
||||||
|
{ .key = SCSI_CMD_MODE_SELECT_6 , .data = "Mode_Select 6" },
|
||||||
|
{ .key = SCSI_CMD_MODE_SENSE_6 , .data = "Mode_Sense 6" },
|
||||||
|
{ .key = SCSI_CMD_START_STOP_UNIT , .data = "Start Stop Unit" },
|
||||||
|
{ .key = SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL , .data = "Prevent Allow Medium Removal" },
|
||||||
|
{ .key = SCSI_CMD_READ_CAPACITY_10 , .data = "Read Capacity10" },
|
||||||
|
{ .key = SCSI_CMD_REQUEST_SENSE , .data = "Request Sense" },
|
||||||
|
{ .key = SCSI_CMD_READ_FORMAT_CAPACITY , .data = "Read Format Capacity" },
|
||||||
|
{ .key = SCSI_CMD_READ_10 , .data = "Read10" },
|
||||||
|
{ .key = SCSI_CMD_WRITE_10 , .data = "Write10" }
|
||||||
|
};
|
||||||
|
|
||||||
|
static lookup_table_t const _msc_scsi_cmd_table =
|
||||||
|
{
|
||||||
|
.count = TU_ARRAY_SIZE(_msc_scsi_cmd_lookup),
|
||||||
|
.items = _msc_scsi_cmd_lookup
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// APPLICATION API
|
// APPLICATION API
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
@ -378,7 +406,7 @@ bool mscd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t
|
|||||||
TU_ASSERT( event == XFER_RESULT_SUCCESS &&
|
TU_ASSERT( event == XFER_RESULT_SUCCESS &&
|
||||||
xferred_bytes == sizeof(msc_cbw_t) && p_cbw->signature == MSC_CBW_SIGNATURE );
|
xferred_bytes == sizeof(msc_cbw_t) && p_cbw->signature == MSC_CBW_SIGNATURE );
|
||||||
|
|
||||||
TU_LOG2(" Command Block Wrapper\n");
|
TU_LOG2(" SCSI Command: %s\n", lookup_find(&_msc_scsi_cmd_table, p_cbw->command[0]));
|
||||||
// TU_LOG2_MEM(p_cbw, xferred_bytes, 2);
|
// TU_LOG2_MEM(p_cbw, xferred_bytes, 2);
|
||||||
|
|
||||||
p_csw->signature = MSC_CSW_SIGNATURE;
|
p_csw->signature = MSC_CSW_SIGNATURE;
|
||||||
@ -544,7 +572,7 @@ bool mscd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t
|
|||||||
// Wait for the command status wrapper complete event
|
// Wait for the command status wrapper complete event
|
||||||
if( (ep_addr == p_msc->ep_in) && (xferred_bytes == sizeof(msc_csw_t)) )
|
if( (ep_addr == p_msc->ep_in) && (xferred_bytes == sizeof(msc_csw_t)) )
|
||||||
{
|
{
|
||||||
TU_LOG2(" Command Status Wrapper\n");
|
TU_LOG2(" SCSI Status: %u\n", p_csw->status);
|
||||||
// TU_LOG2_MEM(p_csw, xferred_bytes, 2);
|
// TU_LOG2_MEM(p_csw, xferred_bytes, 2);
|
||||||
|
|
||||||
// Move to default CMD stage
|
// Move to default CMD stage
|
||||||
|
@ -231,6 +231,29 @@ void tu_print_mem(void const *buf, uint16_t count, uint8_t indent);
|
|||||||
#define TU_LOG2_LOCATION() TU_LOG1_LOCATION()
|
#define TU_LOG2_LOCATION() TU_LOG1_LOCATION()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint32_t key;
|
||||||
|
char const * data;
|
||||||
|
}lookup_entry_t;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint16_t count;
|
||||||
|
lookup_entry_t const* items;
|
||||||
|
} lookup_table_t;
|
||||||
|
|
||||||
|
static inline char const* lookup_find(lookup_table_t const* p_table, uint32_t key)
|
||||||
|
{
|
||||||
|
for(uint16_t i=0; i<p_table->count; i++)
|
||||||
|
{
|
||||||
|
if (p_table->items[i].key == key) return p_table->items[i].data;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
#endif // CFG_TUSB_DEBUG
|
#endif // CFG_TUSB_DEBUG
|
||||||
|
|
||||||
#ifndef TU_LOG1
|
#ifndef TU_LOG1
|
||||||
|
@ -211,7 +211,7 @@ bool usbd_control_xfer_cb (uint8_t rhport, uint8_t ep_addr, xfer_result_t event,
|
|||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// Debugging
|
// Debugging
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
#if CFG_TUSB_DEBUG > 1
|
#if CFG_TUSB_DEBUG >= 2
|
||||||
static char const* const _usbd_event_str[DCD_EVENT_COUNT] =
|
static char const* const _usbd_event_str[DCD_EVENT_COUNT] =
|
||||||
{
|
{
|
||||||
"INVALID" ,
|
"INVALID" ,
|
||||||
|
@ -267,9 +267,9 @@ bool dcd_edpt_xfer (uint8_t rhport, uint8_t ep_addr, uint8_t * buffer, uint16_t
|
|||||||
// Read it as 1st packet then continue with transfer if needed
|
// Read it as 1st packet then continue with transfer if needed
|
||||||
if ( UDP->UDP_CSR[epnum] & (UDP_CSR_RX_DATA_BK0_Msk | UDP_CSR_RX_DATA_BK1_Msk) )
|
if ( UDP->UDP_CSR[epnum] & (UDP_CSR_RX_DATA_BK0_Msk | UDP_CSR_RX_DATA_BK1_Msk) )
|
||||||
{
|
{
|
||||||
uint16_t const xact_len = (uint16_t) ((UDP->UDP_CSR[epnum] & UDP_CSR_RXBYTECNT_Msk) >> UDP_CSR_RXBYTECNT_Pos);
|
// uint16_t const xact_len = (uint16_t) ((UDP->UDP_CSR[epnum] & UDP_CSR_RXBYTECNT_Msk) >> UDP_CSR_RXBYTECNT_Pos);
|
||||||
|
|
||||||
TU_LOG2("xact_len = %d\r", xact_len);
|
// TU_LOG2("xact_len = %d\r", xact_len);
|
||||||
|
|
||||||
// // Read from EP fifo
|
// // Read from EP fifo
|
||||||
// xact_ep_read(epnum, xfer->buffer, xact_len);
|
// xact_ep_read(epnum, xfer->buffer, xact_len);
|
||||||
@ -406,6 +406,7 @@ void dcd_isr(uint8_t rhport)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Endpoint OUT
|
// Endpoint OUT
|
||||||
|
// Ping-Pong is a must for Bulk/Iso
|
||||||
// When both Bank0 and Bank1 are both set, there is not way to know which one comes first
|
// When both Bank0 and Bank1 are both set, there is not way to know which one comes first
|
||||||
if (UDP->UDP_CSR[epnum] & (UDP_CSR_RX_DATA_BK0_Msk | UDP_CSR_RX_DATA_BK1_Msk))
|
if (UDP->UDP_CSR[epnum] & (UDP_CSR_RX_DATA_BK0_Msk | UDP_CSR_RX_DATA_BK1_Msk))
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user