Skip to content

Commit

Permalink
Update USBCDC.cpp to support ZLP
Browse files Browse the repository at this point in the history
  • Loading branch information
cyliangtw authored Dec 1, 2023
1 parent 794ee97 commit 1cccc7e
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions drivers/usb/source/USBCDC.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ void USBCDC::_init()
_rx_in_progress = false;
_rx_buf = _rx_buffer;
_rx_size = 0;
_trans_zlp = false;
}

void USBCDC::callback_reset()
Expand Down Expand Up @@ -387,6 +388,9 @@ void USBCDC::send_nb(uint8_t *buffer, uint32_t size, uint32_t *actual, bool now)
}
_tx_size += write_size;
*actual = write_size;
if((CDC_MAX_PACKET_SIZE == size) && (CDC_MAX_PACKET_SIZE == write_size)) {
_trans_zlp = true;
}
if (now) {
_send_isr_start();
}
Expand All @@ -403,6 +407,11 @@ void USBCDC::_send_isr_start()
if (USBDevice::write_start(_bulk_in, _tx_buffer, _tx_size)) {
_tx_in_progress = true;
}
} else if(!_tx_in_progress && _trans_zlp) {
if (USBDevice::write_start(_bulk_in, _tx_buffer, 0)) {
_tx_in_progress = true;
_trans_zlp = false;
}
}
}

Expand Down

0 comments on commit 1cccc7e

Please sign in to comment.