diff options
| author | sommersoft <sommersoft@gmail.com> | 2018-03-26 06:25:04 +0000 |
|---|---|---|
| committer | sommersoft <sommersoft@gmail.com> | 2018-03-26 06:25:04 +0000 |
| commit | 23009fdd6343d9536ae644faca27be5a253aa08e (patch) | |
| tree | 6ef5c0ff2f92b463a2893bf917d5d30d22391f29 | |
| parent | ef16109c5dbde3136ae901b55525eb59f1d1fb4f (diff) | |
future-proof for buffer size changes
| -rw-r--r-- | ports/atmel-samd/usb.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/ports/atmel-samd/usb.c b/ports/atmel-samd/usb.c index af70be99a..0d0a7a293 100644 --- a/ports/atmel-samd/usb.c +++ b/ports/atmel-samd/usb.c @@ -222,17 +222,17 @@ void init_usb(void) { } static bool cdc_enabled(void) { - if (mp_cdc_enabled) { - return true; - } if (!cdcdf_acm_is_enabled()) { + mp_cdc_enabled = false; return false; } - cdcdf_acm_register_callback(CDCDF_ACM_CB_READ, (FUNC_PTR)read_complete); - cdcdf_acm_register_callback(CDCDF_ACM_CB_WRITE, (FUNC_PTR)write_complete); - cdcdf_acm_register_callback(CDCDF_ACM_CB_STATE_C, (FUNC_PTR)usb_device_cb_state_c); - cdcdf_acm_register_callback(CDCDF_ACM_CB_LINE_CODING_C, (FUNC_PTR)usb_device_cb_line_coding_c); - mp_cdc_enabled = true; + if (!mp_cdc_enabled) { + cdcdf_acm_register_callback(CDCDF_ACM_CB_READ, (FUNC_PTR)read_complete); + cdcdf_acm_register_callback(CDCDF_ACM_CB_WRITE, (FUNC_PTR)write_complete); + cdcdf_acm_register_callback(CDCDF_ACM_CB_STATE_C, (FUNC_PTR)usb_device_cb_state_c); + cdcdf_acm_register_callback(CDCDF_ACM_CB_LINE_CODING_C, (FUNC_PTR)usb_device_cb_line_coding_c); + mp_cdc_enabled = true; + } return true; } @@ -240,7 +240,7 @@ static bool cdc_enabled(void) { bool usb_bytes_available(void) { // Check if the buffer has data, but not enough // space to hold another read. - if (usb_rx_count > CDC_BULKOUT_SIZE) { + if (usb_rx_count > USB_RX_BUF_SIZE - CDC_BULKOUT_SIZE) { return usb_rx_count > 0; } // Buffer has enough room @@ -319,7 +319,7 @@ bool usb_connected(void) { // also make sure we have enough room in the local buffer void usb_cdc_background() { // - if (mp_interrupt_char != -1 && cdc_enabled() && !pending_read && usb_rx_count < CDC_BULKOUT_SIZE) { + if (mp_interrupt_char != -1 && cdc_enabled() && !pending_read && (usb_rx_count < USB_RX_BUF_SIZE - CDC_BULKOUT_SIZE)) { start_read(); } } |
