summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsommersoft <sommersoft@gmail.com>2018-03-26 06:25:04 +0000
committersommersoft <sommersoft@gmail.com>2018-03-26 06:25:04 +0000
commit23009fdd6343d9536ae644faca27be5a253aa08e (patch)
tree6ef5c0ff2f92b463a2893bf917d5d30d22391f29
parentef16109c5dbde3136ae901b55525eb59f1d1fb4f (diff)
future-proof for buffer size changes
-rw-r--r--ports/atmel-samd/usb.c20
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();
}
}