28043c94b5
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) |
||
---|---|---|
.. | ||
external_flash | ||
usb | ||
autoreload.c | ||
autoreload.h | ||
background_callback.c | ||
bluetooth.c | ||
bluetooth.h | ||
board.c | ||
board.h | ||
display.c | ||
display.h | ||
filesystem.c | ||
flash.c | ||
internal_flash.h | ||
memory.c | ||
micropython.c | ||
rgb_led_colors.h | ||
rgb_led_status.c | ||
rgb_led_status.h | ||
safe_mode.c | ||
safe_mode.h | ||
serial.c | ||
stack.c | ||
stack.h | ||
status_leds.c | ||
status_leds.h | ||
tick.c | ||
tick.h | ||
translate.c | ||
translate.h |