summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorhathach <[email protected]>2019-11-01 18:11:14 +0700
committerhathach <[email protected]>2019-11-01 18:11:14 +0700
commitc7d7ac42d85ab70821ecdb6cb7fcb0c46694cb75 (patch)
tree9dfaeb775ef34c4fe7e9d5a720ff64d45ab9e50c /test
parentd0d87d98f6d480ebf2b3b27d85a391780f0976f3 (diff)
added first test for msc device
Diffstat (limited to 'test')
-rw-r--r--test/test/device/msc/test_msc_device.c51
1 files changed, 44 insertions, 7 deletions
diff --git a/test/test/device/msc/test_msc_device.c b/test/test/device/msc/test_msc_device.c
index 53febe961..2eb58962b 100644
--- a/test/test/device/msc/test_msc_device.c
+++ b/test/test/device/msc/test_msc_device.c
@@ -210,24 +210,61 @@ void tearDown(void)
//--------------------------------------------------------------------+
void test_msc(void)
{
+ // Read 1 LBA = 0, Block count = 1
+ msc_cbw_t cbw_read10 =
+ {
+ .signature = MSC_CBW_SIGNATURE,
+ .tag = 0xCAFECAFE,
+ .total_bytes = 512,
+ .lun = 0,
+ .dir = TUSB_DIR_IN_MASK,
+ .cmd_len = sizeof(scsi_read10_t)
+ };
+
+ scsi_read10_t cmd_read10 =
+ {
+ .cmd_code = SCSI_CMD_READ_10,
+ .lba = tu_htonl(0),
+ .block_count = tu_htons(1)
+ };
+
+ memcpy(cbw_read10.command, &cmd_read10, cbw_read10.cmd_len);
+
desc_configuration = data_desc_configuration;
+ uint8_t const* desc_ep = tu_desc_next(tu_desc_next(desc_configuration));
dcd_event_setup_received(rhport, (uint8_t*) &request_set_configuration, false);
dcd_set_config_Expect(rhport, 1);
- uint8_t const* desc_ep = tu_desc_next(tu_desc_next(desc_configuration));
-
// open endpoints
- dcd_edpt_open_ExpectAndReturn(rhport, desc_ep, true);
- dcd_edpt_open_ExpectAndReturn(rhport, tu_desc_next(desc_ep), true);
+ dcd_edpt_open_ExpectAndReturn(rhport, (tusb_desc_endpoint_t const *) desc_ep, true);
+ dcd_edpt_open_ExpectAndReturn(rhport, (tusb_desc_endpoint_t const *) tu_desc_next(desc_ep), true);
+
+ // Prepare SCSI command
+ dcd_edpt_xfer_ExpectAndReturn(rhport, EDPT_MSC_OUT, NULL, sizeof(msc_cbw_t), true);
+ dcd_edpt_xfer_IgnoreArg_buffer();
+ dcd_edpt_xfer_ReturnMemThruPtr_buffer( (uint8_t*) &cbw_read10, sizeof(msc_cbw_t));
- // queue endpoint out
- dcd_edpt_xfer_ExpectAndReturn(rhport, EDPT_MSC_OUT, NULL, 31, true);
- dcd_edpt_xfer_IgnoreArg_buffer(); // don't care buffer since it is msc device interal
+ // command received
+ dcd_event_xfer_complete(rhport, EDPT_MSC_OUT, sizeof(msc_cbw_t), 0, true);
// control status
dcd_edpt_xfer_ExpectAndReturn(rhport, EDPT_CTRL_IN, NULL, 0, true);
+ // SCSI Data transfer
+ dcd_edpt_xfer_ExpectAndReturn(rhport, EDPT_MSC_IN, NULL, 512, true);
+ dcd_edpt_xfer_IgnoreArg_buffer();
+ dcd_event_xfer_complete(rhport, EDPT_MSC_IN, 512, 0, true); // complete
+
+ // SCSI Status
+ dcd_edpt_xfer_ExpectAndReturn(rhport, EDPT_MSC_IN, NULL, 13, true);
+ dcd_edpt_xfer_IgnoreArg_buffer();
+ dcd_event_xfer_complete(rhport, EDPT_MSC_IN, 13, 0, true);
+
+ // Prepare for next command
+ dcd_edpt_xfer_ExpectAndReturn(rhport, EDPT_MSC_OUT, NULL, sizeof(msc_cbw_t), true);
+ dcd_edpt_xfer_IgnoreArg_buffer();
+
tud_task();
}