summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Conrad <[email protected]>2019-10-02 00:31:47 -0400
committerNathan Conrad <[email protected]>2019-10-02 00:31:47 -0400
commit1e193212d7f93a55e7ec857d0ad8dc4eaea517de (patch)
tree49a97856a7b3d2d730ad7e8e3ba454879e39f400
parente5f38e3e861cb20046a81e666e8de9a7fdc3919d (diff)
Add testcase for EP0 stall recovery to USBTMC test script.
-rw-r--r--examples/device/usbtmc/visaQuery.py18
-rw-r--r--src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c2
2 files changed, 18 insertions, 2 deletions
diff --git a/examples/device/usbtmc/visaQuery.py b/examples/device/usbtmc/visaQuery.py
index 44b5fd875..b5bf8d482 100644
--- a/examples/device/usbtmc/visaQuery.py
+++ b/examples/device/usbtmc/visaQuery.py
@@ -1,9 +1,10 @@
+#!/usr/bin/env python3
+
import visa
import time
import sys
-
def test_idn():
idn = inst.query("*idn?");
assert (idn == "TinyUSB,ModelNumber,SerialNumber,FirmwareVer123456\r\n")
@@ -129,6 +130,18 @@ def test_multi_read():
assert (x + "\r\n" == y)
#inst.chunk_size = old_chunk_size
+def test_stall_ep0():
+ usb_iface = inst.get_visa_attribute(visa.constants.VI_ATTR_USB_INTFC_NUM)
+ inst.read_stb()
+ # This is an invalid request, should create stall.
+ try:
+ retv = inst.control_in(request_type_bitmap_field=0xA1, request_id=60, request_value=0x0000, index=usb_iface, length=0x0001)
+ assert false
+ except visa.VisaIOError:
+ pass
+
+ assert (inst.read_stb() == 0)
+
rm = visa.ResourceManager("/c/Windows/system32/visa64.dll")
reslist = rm.list_resources("USB?::?*::INSTR")
@@ -171,6 +184,9 @@ test_echo(165,170)
print("+ Read timeout (no MAV)")
test_read_timeout()
+print("+ Test EP0 stall recovery")
+test_stall_ep0()
+
print("+ MAV")
test_mav()
diff --git a/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c b/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
index 1fd3e8bae..c33f9b865 100644
--- a/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
+++ b/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
@@ -418,7 +418,7 @@ static uint16_t dcd_ep_ctr_handler(void)
uint8_t userMemBuf[8];
/* Get SETUP Packet*/
count = pcd_get_ep_rx_cnt(USB, EPindex);
- if(count == 8) // Setup packet should always be 8 bits. If not, ignore it, and try again.
+ if(count == 8) // Setup packet should always be 8 bytes. If not, ignore it, and try again.
{
// Must reset EP to NAK (in case it had been stalling) (though, maybe too late here)
pcd_set_ep_rx_status(USB,0u,USB_EP_RX_NAK);