Fix Windows USB issues
- Device will not reset if previous baudrate was not 9600 - CDC Device is not recognized if WebUSB is enabled
This commit is contained in:
parent
268595c743
commit
4ada3f5804
@ -227,7 +227,8 @@ void USBCDC::_onLineState(bool _dtr, bool _rts){
|
|||||||
|
|
||||||
void USBCDC::_onLineCoding(uint32_t _bit_rate, uint8_t _stop_bits, uint8_t _parity, uint8_t _data_bits){
|
void USBCDC::_onLineCoding(uint32_t _bit_rate, uint8_t _stop_bits, uint8_t _parity, uint8_t _data_bits){
|
||||||
if(bit_rate != _bit_rate || data_bits != _data_bits || stop_bits != _stop_bits || parity != _parity){
|
if(bit_rate != _bit_rate || data_bits != _data_bits || stop_bits != _stop_bits || parity != _parity){
|
||||||
if(bit_rate == 9600 && _bit_rate == 1200){
|
// ArduinoIDE sends LineCoding with 1200bps baud to reset the device
|
||||||
|
if(_bit_rate == 1200){
|
||||||
usb_persist_restart(RESTART_BOOTLOADER);
|
usb_persist_restart(RESTART_BOOTLOADER);
|
||||||
} else {
|
} else {
|
||||||
bit_rate = _bit_rate;
|
bit_rate = _bit_rate;
|
||||||
|
@ -502,6 +502,15 @@ static void tinyusb_apply_device_config(tinyusb_device_config_t *config){
|
|||||||
snprintf(WEBUSB_URL, 126, "%s", config->webusb_url);
|
snprintf(WEBUSB_URL, 126, "%s", config->webusb_url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Windows 10 will not recognize the CDC device if WebUSB is enabled and USB Class is not 2 (CDC)
|
||||||
|
if(
|
||||||
|
(tinyusb_loaded_interfaces_mask & BIT(USB_INTERFACE_CDC))
|
||||||
|
&& config->webusb_enabled
|
||||||
|
&& (config->usb_class != TUSB_CLASS_CDC)
|
||||||
|
){
|
||||||
|
config->usb_class = TUSB_CLASS_CDC;
|
||||||
|
}
|
||||||
|
|
||||||
WEBUSB_ENABLED = config->webusb_enabled;
|
WEBUSB_ENABLED = config->webusb_enabled;
|
||||||
USB_DEVICE_ATTRIBUTES = config->usb_attributes;
|
USB_DEVICE_ATTRIBUTES = config->usb_attributes;
|
||||||
USB_DEVICE_POWER = config->usb_power_ma;
|
USB_DEVICE_POWER = config->usb_power_ma;
|
||||||
|
Loading…
Reference in New Issue
Block a user