diff options
| author | Jeff Epler <jepler@gmail.com> | 2020-09-03 13:36:15 -0500 |
|---|---|---|
| committer | Jeff Epler <jepler@gmail.com> | 2020-09-17 18:32:06 -0500 |
| commit | 28043c94b5ea5f3cce11fa57afa9f3f0141b8dce (patch) | |
| tree | 5754029d2c5dfda23066264fba16942db4eb1809 /shared-bindings/sharpdisplay/SharpMemoryFramebuffer.h | |
| parent | 7f60ebd6c76841b338a4566c28c7cbfe28bee797 (diff) | |
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)
Diffstat (limited to 'shared-bindings/sharpdisplay/SharpMemoryFramebuffer.h')
0 files changed, 0 insertions, 0 deletions
