summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/atmel-samd/usb.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/ports/atmel-samd/usb.c b/ports/atmel-samd/usb.c
index 740486aa1..6ce8aeea7 100644
--- a/ports/atmel-samd/usb.c
+++ b/ports/atmel-samd/usb.c
@@ -227,17 +227,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;
}