@@ -530,6 +530,7 @@ static void ep0_handle_rx(void)
530
530
531
531
transferred = rx_fifo_read (0 , xfer -> buffer + xfer -> transferred );
532
532
xfer -> transferred += transferred ;
533
+ TU_ASSERT (xfer -> transferred <= xfer -> total_len ,);
533
534
if (transferred < xfer -> max_packet_size || xfer -> transferred == xfer -> total_len )
534
535
{
535
536
ep0_set_stage (EP0_STAGE_DATA_OUT_COMPLETE );
@@ -560,8 +561,10 @@ static void epn_handle_rx_int(uint8_t epnum)
560
561
transferred = rx_fifo_read (epnum , xfer -> buffer + xfer -> transferred );
561
562
USB_REGS -> EPCSR [epnum ].RXCSRL_HOSTbits .RXPKTRDY = 0 ;
562
563
xfer -> transferred += transferred ;
564
+ TU_ASSERT (xfer -> transferred <= xfer -> total_len ,);
563
565
if (transferred < xfer -> max_packet_size || xfer -> transferred == xfer -> total_len )
564
566
{
567
+ USB_REGS -> INTRRXEbits .w &= ~(1u << epnum );
565
568
xfer_complete (xfer , XFER_RESULT_SUCCESS , true);
566
569
}
567
570
}
@@ -579,6 +582,7 @@ static void epn_handle_tx_int(uint8_t epnum)
579
582
else
580
583
{
581
584
xfer -> transferred += xfer -> last_packet_size ;
585
+ TU_ASSERT (xfer -> transferred <= xfer -> total_len ,);
582
586
if (xfer -> last_packet_size < xfer -> max_packet_size || xfer -> transferred == xfer -> total_len )
583
587
{
584
588
xfer -> last_packet_size = 0 ;
@@ -689,7 +693,7 @@ void dcd_int_handler(uint8_t rhport)
689
693
int i ;
690
694
uint8_t mask ;
691
695
__USBCSR2bits_t csr2_bits ;
692
- uint16_t rxints = USB_REGS -> INTRRX ;
696
+ uint16_t rxints = USB_REGS -> INTRRX & USB_REGS -> INTRRXEbits . w ;
693
697
uint16_t txints = USB_REGS -> INTRTX ;
694
698
csr2_bits = USBCSR2bits ;
695
699
(void ) rhport ;
0 commit comments