summaryrefslogtreecommitdiff
path: root/src/class/msc/msc_device.c
diff options
context:
space:
mode:
authorhathach <[email protected]>2019-05-02 20:30:44 +0700
committerGitHub <[email protected]>2019-05-02 20:30:44 +0700
commit867e69ed9d1ef44a7574ccf6543c8a46ef8d8e6c (patch)
tree59b0e0aad89d7735585737be52fd2daffdbab5c0 /src/class/msc/msc_device.c
parent2341ecb4188b1998e1e682a09e9b04570929a5a4 (diff)
parent7e2088765daf15f59f43c9e7cffb46b9ae997e19 (diff)
Merge pull request #61 from hathach/develop
enhance HID, add HID out endpoint support
Diffstat (limited to 'src/class/msc/msc_device.c')
-rw-r--r--src/class/msc/msc_device.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/src/class/msc/msc_device.c b/src/class/msc/msc_device.c
index e2cf92324..f980e941e 100644
--- a/src/class/msc/msc_device.c
+++ b/src/class/msc/msc_device.c
@@ -42,13 +42,9 @@ enum
MSC_STAGE_STATUS
};
-typedef struct {
- CFG_TUSB_MEM_ALIGN msc_cbw_t cbw;
-
-//#if defined (__ICCARM__) && (CFG_TUSB_MCU == OPT_MCU_LPC11UXX || CFG_TUSB_MCU == OPT_MCU_LPC13XX)
-// uint8_t padding1[64-sizeof(msc_cbw_t)]; // IAR cannot align struct's member
-//#endif
-
+typedef struct
+{
+ CFG_TUSB_MEM_ALIGN msc_cbw_t cbw;
CFG_TUSB_MEM_ALIGN msc_csw_t csw;
uint8_t itf_num;
@@ -66,7 +62,7 @@ typedef struct {
uint8_t add_sense_qualifier;
}mscd_interface_t;
-CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static mscd_interface_t _mscd_itf = { 0 };
+CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static mscd_interface_t _mscd_itf;
CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static uint8_t _mscd_buf[CFG_TUD_MSC_BUFSIZE];
//--------------------------------------------------------------------+
@@ -135,9 +131,8 @@ bool mscd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16_t
mscd_interface_t * p_msc = &_mscd_itf;
- // Open endpoint pair with usbd helper
- tusb_desc_endpoint_t const *p_desc_ep = (tusb_desc_endpoint_t const *) tu_desc_next( itf_desc );
- TU_ASSERT( usbd_open_edpt_pair(rhport, p_desc_ep, TUSB_XFER_BULK, &p_msc->ep_out, &p_msc->ep_in) );
+ // Open endpoint pair
+ TU_ASSERT( usbd_open_edpt_pair(rhport, tu_desc_next(itf_desc), 2, TUSB_XFER_BULK, &p_msc->ep_out, &p_msc->ep_in) );
p_msc->itf_num = itf_desc->bInterfaceNumber;
(*p_len) = sizeof(tusb_desc_interface_t) + 2*sizeof(tusb_desc_endpoint_t);
@@ -163,9 +158,12 @@ bool mscd_control_request(uint8_t rhport, tusb_control_request_t const * p_reque
case MSC_REQ_GET_MAX_LUN:
{
+ uint8_t maxlun = 1;
+ if (tud_msc_maxlun_cb) maxlun = tud_msc_maxlun_cb();
+ TU_VERIFY(maxlun);
+
// MAX LUN is minus 1 by specs
- uint8_t maxlun = 0;
- if (tud_msc_maxlun_cb) maxlun = tud_msc_maxlun_cb() -1;
+ maxlun--;
usbd_control_xfer(rhport, p_request, &maxlun, 1);
}