diff options
Diffstat (limited to 'software/avr.lib/anyio.c')
-rw-r--r-- | software/avr.lib/anyio.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/software/avr.lib/anyio.c b/software/avr.lib/anyio.c index 1ad4e96..aaa5f47 100644 --- a/software/avr.lib/anyio.c +++ b/software/avr.lib/anyio.c @@ -83,8 +83,13 @@ void anyio_init(const uint32_t baudrate, const uint8_t doublespeed) void anyio_task(void) { - CDC_Device_USBTask(&VirtualSerial_CDC_Interface); - USB_USBTask(); + if(USB_DeviceState == DEVICE_STATE_Unattached && USB_VBUS_GetStatus()) { + USB_Disable(); + USB_Init(); + } + + CDC_Device_USBTask(&VirtualSerial_CDC_Interface); + USB_USBTask(); } int16_t anyio_bytes_received(void) @@ -95,7 +100,7 @@ int16_t anyio_bytes_received(void) return (int16_t)Serial_IsCharReceived(); } -void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) +void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) { if(CDCInterfaceInfo->State.ControlLineStates.HostToDevice & CDC_CONTROL_LINE_OUT_DTR) stdin = stdout = stderr = &usb_stream; |