circuitpython/supervisor/shared/usb
Jeff Epler 28043c94b5 supervisor: Improve serial connection detection
These changes remove the caveat from supervisor.runtime.serial_connected.

It appears that _tud_cdc_connected() only tracks explicit changes to the
"DTR" bit, which leads to disconnects not being registered.

Instead:
 * when line state is changed explicitly, track the dtr value in
   _serial_connected
 * when the USB bus is suspended, set _serial_connected to False

Testing performed (using sam e54 xplained):  Run a program to show
the state of `serial_connected` on the LED:
```
import digitalio
import supervisor
import board

led = digitalio.DigitalInOut(board.LED)
while True:
    led.switch_to_output(not supervisor.runtime.serial_connected)
```

Try all the following:
 * open, close serial terminal program
    - LED status tracks whether terminal is open
 * turn on/off data lines using the switchable charge-only cable
    - LED turns off when switch is in "charger" position
    - LED turns back on when switch is in Data position and terminal is
      opened (but doesn't turn back on just because switch position is
      changed)
2020-09-17 18:32:06 -05:00
..
tusb_config.h move CFG_TUSB_RHPORT0_MODE into generated header 2020-07-29 16:05:31 +07:00
usb.c supervisor: Improve serial connection detection 2020-09-17 18:32:06 -05:00
usb_desc.c Update TinyUSB and add interrupt hooks. 2020-04-17 14:16:49 -07:00
usb_msc_flash.c Fix Mac crash when waking up with an ejected CIRCUITPY 2020-02-24 15:40:52 -08:00