Skip to content

improve USB CDC disconnect/reconnect checking #3624

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 31, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion supervisor/serial.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,4 @@ char serial_read(void);
bool serial_bytes_available(void);
bool serial_connected(void);

extern volatile bool _serial_connected;
#endif // MICROPY_INCLUDED_SUPERVISOR_SERIAL_H
6 changes: 3 additions & 3 deletions supervisor/shared/serial.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,6 @@ busio_uart_obj_t debug_uart;
byte buf_array[64];
#endif

volatile bool _serial_connected;

void serial_early_init(void) {
#if defined(DEBUG_UART_TX) && defined(DEBUG_UART_RX)
debug_uart.base.type = &busio_uart_type;
Expand All @@ -71,7 +69,9 @@ bool serial_connected(void) {
#if defined(DEBUG_UART_TX) && defined(DEBUG_UART_RX)
return true;
#else
return _serial_connected;
// True if DTR is asserted, and the USB connection is up.
// tud_cdc_get_line_state(): bit 0 is DTR, bit 1 is RTS
return (tud_cdc_get_line_state() & 1) && tud_ready();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks - I'll use this in the alarm PR. I have to change stuff there anyway.

#endif
}

Expand Down
3 changes: 0 additions & 3 deletions supervisor/shared/usb/usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,6 @@ void tud_umount_cb(void) {
// remote_wakeup_en : if host allows us to perform remote wakeup
// USB Specs: Within 7ms, device must draw an average current less than 2.5 mA from bus
void tud_suspend_cb(bool remote_wakeup_en) {
_serial_connected = false;
}

// Invoked when usb bus is resumed
Expand All @@ -128,8 +127,6 @@ void tud_resume_cb(void) {
void tud_cdc_line_state_cb(uint8_t itf, bool dtr, bool rts) {
(void) itf; // interface ID, not used

_serial_connected = dtr;

// DTR = false is counted as disconnected
if ( !dtr )
{
Expand Down