Skip to content

Commit 8f72f31

Browse files
committed
Tests: USB: Use DTR to make Serial tests reliable
Update the serial host test to set DTR low before opening a serial port. Set DTR high once the serial object is ready. This ensures that no data is sent by the device until the host is ready.
1 parent 31fe3ee commit 8f72f31

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

TESTS/host_tests/usb_device_serial.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ def __init__(self):
129129
def port_open_wait(self):
130130
"""Open the serial and wait until it's closed by the device."""
131131
mbed_serial = serial.Serial()
132+
mbed_serial.dtr = False
132133
try:
133134
mbed_serial.port = retry_fun_call(
134135
fun=functools.partial(self.get_usb_serial_name, self.dut_usb_dev_sn), # pylint: disable=not-callable
@@ -138,6 +139,7 @@ def port_open_wait(self):
138139
fun=mbed_serial.open,
139140
num_retries=10,
140141
retry_delay=0.05)
142+
mbed_serial.dtr = True
141143
try:
142144
mbed_serial.read() # wait until closed
143145
except (serial.portNotOpenError, serial.SerialException):
@@ -160,6 +162,7 @@ def port_open_close(self):
160162
num_retries=10,
161163
retry_delay=0.05)
162164
mbed_serial.reset_output_buffer()
165+
mbed_serial.dtr = True
163166
time.sleep(TERM_REOPEN_DELAY)
164167
mbed_serial.close()
165168
except RetryError as exc:
@@ -188,6 +191,7 @@ def send_data_sequence(self, chunk_size=1):
188191
self.notify_complete(False)
189192
return
190193
mbed_serial.reset_output_buffer()
194+
mbed_serial.dtr = True
191195
for byteval in itertools.chain(reversed(range(0x100)), range(0x100)):
192196
try:
193197
payload = bytearray(chunk_size * (byteval,))
@@ -208,6 +212,7 @@ def send_data_sequence(self, chunk_size=1):
208212
def loopback(self):
209213
"""Open the serial and send back every byte received."""
210214
mbed_serial = serial.Serial(timeout=0.5, write_timeout=0.1)
215+
mbed_serial.dtr = False
211216
try:
212217
mbed_serial.port = retry_fun_call(
213218
fun=functools.partial(self.get_usb_serial_name, self.dut_usb_dev_sn), # pylint: disable=not-callable
@@ -222,6 +227,7 @@ def loopback(self):
222227
self.notify_complete(False)
223228
return
224229
mbed_serial.reset_output_buffer()
230+
mbed_serial.dtr = True
225231
try:
226232
payload = mbed_serial.read(1)
227233
while len(payload) == 1:
@@ -243,6 +249,7 @@ def change_line_coding(self):
243249
New line coding params are read from the device serial data.
244250
"""
245251
mbed_serial = serial.Serial(timeout=0.5)
252+
mbed_serial.dtr = False
246253
try:
247254
mbed_serial.port = retry_fun_call(
248255
fun=functools.partial(self.get_usb_serial_name, self.dut_usb_dev_sn), # pylint: disable=not-callable
@@ -257,6 +264,7 @@ def change_line_coding(self):
257264
self.notify_complete(False)
258265
return
259266
mbed_serial.reset_output_buffer()
267+
mbed_serial.dtr = True
260268
try:
261269
payload = mbed_serial.read(LINE_CODING_STRLEN)
262270
while len(payload) == LINE_CODING_STRLEN:

0 commit comments

Comments
 (0)