5555
5656typedef struct
5757{
58- // TODO optimize alignment
59- CFG_TUSB_MEM_ALIGN msc_cbw_t cbw ;
60- CFG_TUSB_MEM_ALIGN msc_csw_t csw ;
61-
6258 uint8_t itf_num ;
6359 uint8_t ep_in ;
6460 uint8_t ep_out ;
@@ -75,6 +71,8 @@ typedef struct
7571}mscd_interface_t ;
7672
7773CFG_TUD_MEM_SECTION CFG_TUSB_MEM_ALIGN tu_static mscd_interface_t _mscd_itf ;
74+ CFG_TUD_MEM_SECTION CFG_TUSB_MEM_ALIGN tu_static msc_cbw_t _mscd_cbw ;
75+ CFG_TUD_MEM_SECTION CFG_TUSB_MEM_ALIGN tu_static msc_csw_t _mscd_csw ;
7876CFG_TUD_MEM_SECTION CFG_TUSB_MEM_ALIGN tu_static uint8_t _mscd_buf [CFG_TUD_MSC_EP_BUFSIZE ];
7977
8078//--------------------------------------------------------------------+
@@ -94,25 +92,25 @@ TU_ATTR_ALWAYS_INLINE static inline bool is_data_in(uint8_t dir)
9492static inline bool send_csw (uint8_t rhport , mscd_interface_t * p_msc )
9593{
9694 // Data residue is always = host expect - actual transferred
97- p_msc -> csw .data_residue = p_msc -> cbw .total_bytes - p_msc -> xferred_len ;
95+ _mscd_csw .data_residue = _mscd_cbw .total_bytes - p_msc -> xferred_len ;
9896
9997 p_msc -> stage = MSC_STAGE_STATUS_SENT ;
100- return usbd_edpt_xfer (rhport , p_msc -> ep_in , (uint8_t * ) & p_msc -> csw , sizeof (msc_csw_t ));
98+ return usbd_edpt_xfer (rhport , p_msc -> ep_in , (uint8_t * ) & _mscd_csw , sizeof (msc_csw_t ));
10199}
102100
103101static inline bool prepare_cbw (uint8_t rhport , mscd_interface_t * p_msc )
104102{
105103 p_msc -> stage = MSC_STAGE_CMD ;
106- return usbd_edpt_xfer (rhport , p_msc -> ep_out , (uint8_t * ) & p_msc -> cbw , sizeof (msc_cbw_t ));
104+ return usbd_edpt_xfer (rhport , p_msc -> ep_out , (uint8_t * ) & _mscd_cbw , sizeof (msc_cbw_t ));
107105}
108106
109107static void fail_scsi_op (uint8_t rhport , mscd_interface_t * p_msc , uint8_t status )
110108{
111- msc_cbw_t const * p_cbw = & p_msc -> cbw ;
112- msc_csw_t * p_csw = & p_msc -> csw ;
109+ msc_cbw_t const * p_cbw = & _mscd_cbw ;
110+ msc_csw_t * p_csw = & _mscd_csw ;
113111
114112 p_csw -> status = status ;
115- p_csw -> data_residue = p_msc -> cbw . total_bytes - p_msc -> xferred_len ;
113+ p_csw -> data_residue = p_cbw -> total_bytes - p_msc -> xferred_len ;
116114 p_msc -> stage = MSC_STAGE_STATUS ;
117115
118116 // failed but sense key is not set: default to Illegal Request
@@ -395,8 +393,8 @@ bool mscd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t
395393 (void ) event ;
396394
397395 mscd_interface_t * p_msc = & _mscd_itf ;
398- msc_cbw_t const * p_cbw = & p_msc -> cbw ;
399- msc_csw_t * p_csw = & p_msc -> csw ;
396+ msc_cbw_t const * p_cbw = & _mscd_cbw ;
397+ msc_csw_t * p_csw = & _mscd_csw ;
400398
401399 switch (p_msc -> stage )
402400 {
@@ -852,7 +850,7 @@ static int32_t proc_builtin_scsi(uint8_t lun, uint8_t const scsi_cmd[16], uint8_
852850
853851static void proc_read10_cmd (uint8_t rhport , mscd_interface_t * p_msc )
854852{
855- msc_cbw_t const * p_cbw = & p_msc -> cbw ;
853+ msc_cbw_t const * p_cbw = & _mscd_cbw ;
856854
857855 // block size already verified not zero
858856 uint16_t const block_sz = rdwr10_get_blocksize (p_cbw );
@@ -890,7 +888,7 @@ static void proc_read10_cmd(uint8_t rhport, mscd_interface_t* p_msc)
890888
891889static void proc_write10_cmd (uint8_t rhport , mscd_interface_t * p_msc )
892890{
893- msc_cbw_t const * p_cbw = & p_msc -> cbw ;
891+ msc_cbw_t const * p_cbw = & _mscd_cbw ;
894892 bool writable = true;
895893
896894 if ( tud_msc_is_writable_cb )
@@ -917,7 +915,7 @@ static void proc_write10_cmd(uint8_t rhport, mscd_interface_t* p_msc)
917915// process new data arrived from WRITE10
918916static void proc_write10_new_data (uint8_t rhport , mscd_interface_t * p_msc , uint32_t xferred_bytes )
919917{
920- msc_cbw_t const * p_cbw = & p_msc -> cbw ;
918+ msc_cbw_t const * p_cbw = & _mscd_cbw ;
921919
922920 // block size already verified not zero
923921 uint16_t const block_sz = rdwr10_get_blocksize (p_cbw );
0 commit comments