Skip to content

Commit 79b175a

Browse files
committed
Do not block writes to USBSerial if CDC interface is not connected.
1 parent e07c02a commit 79b175a

File tree

3 files changed

+8
-0
lines changed

3 files changed

+8
-0
lines changed

cores/arduino/USBSerial.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ size_t USBSerial::write(const uint8_t *buffer, size_t size)
8383
buffer += portion;
8484
// After storing data, start transmitting process
8585
CDC_continue_transmit();
86+
} else if (!CDC_connected()) {
87+
return size;
8688
}
8789
}
8890
return size;

cores/arduino/stm32/usb/cdc/usbd_cdc_if.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,11 @@ void CDC_deInit(void)
245245
}
246246
}
247247

248+
uint8_t CDC_connected()
249+
{
250+
return hUSBD_Device_CDC.dev_state == USBD_STATE_CONFIGURED;
251+
}
252+
248253
void CDC_continue_transmit(void)
249254
{
250255
uint16_t size;

cores/arduino/stm32/usb/cdc/usbd_cdc_if.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ void CDC_continue_transmit(void);
5050
void CDC_resume_receive(void);
5151
void CDC_init(void);
5252
void CDC_deInit(void);
53+
uint8_t CDC_connected();
5354

5455
#ifdef __cplusplus
5556
}

0 commit comments

Comments
 (0)