Commit Graph

22788 Commits (17b61daf21a2a66c97dfe7442948caf1dfb8c2cc)

Author SHA1 Message Date
Russ Butler 17b61daf21 Remove unnecessary USB receive buffer
Remove receive buffer from USBPhy_STM32 and instead passed buffers in
directly.
2019-02-22 10:53:16 -06:00
Russ Butler 57fa607432 Remove ep0_write from set_address
The USBDevice stack automatically sends control endpoint status
so this does not and should not be done from the call to set_address.
2019-02-22 10:53:16 -06:00
Russ Butler a47c383233 Update the STM32 USB driver to the new API
Take the code from
mbed-os\features\unsupported\USBDevice\targets\TARGET_STM
as a starting point and use it to fill in the USBPhy template for STM32
devices.
2019-02-22 10:53:16 -06:00
Russ Butler 67498e384a Implement LPC1768 USB abort function
Implement the USB abort function so interrupts wont fire for a
transfer that has been aborted. The transfer may still take place
but the buffer passed into endpoint_write or endpoint_read will not
be used.
2019-02-22 10:53:16 -06:00
Russ Butler 044804200b Fix LPC1768 test failures
Reset endpoints when they are removed. This ensures buffers and the
data toggle bit get reset back to zero.
2019-02-22 10:53:16 -06:00
Russ Butler 9efccb20eb Add default values to USBCDC constructor
Add reasonable defaults to the USBCDC constructor so it is easier to
use.
2019-02-22 10:53:16 -06:00
Russ Butler 3dcd345efe Update the USBMIDI class
Update the USB class USBMIDI from the unsupported folder.
2019-02-22 10:53:16 -06:00
Russ Butler 9f94e4651a Require USB classes to implement descriptor
Make the function configuration_desc pure virtual inside USBDevice.
This should be a compile time error since no subclass will work
without a configuration descriptor.
2019-02-22 10:53:16 -06:00
Russ Butler 5ffe123973 Update USBHID and USBCDC for new AsyncOp
Update USB classes to use the new AsyncOp API.
2019-02-22 10:53:15 -06:00
Russ Butler c709f68434 Refactor AsyncOp class
Add the OperationList class to simplify managing async operations.
Add a callback to the AsyncOp class so completion can be signaled with
another mechanism. Finally rework the lock handling so AsyncOp::wait
is passed the lock to use rather than taking it in a constructor.
2019-02-22 10:53:15 -06:00
Maciej Bocianski d66e576227 USB basic test documentation update 2019-02-22 10:53:15 -06:00
Maciej Bocianski fee14771e9 USB basic test update
disable suspend/resume test
disable sync frame test
improve reset test
2019-02-22 10:53:15 -06:00
jeromecoutant 21606569da STM32F4: replace CLOCK_SOURCE_USB by DEVICE_USBDEVICE 2019-02-22 10:53:15 -06:00
jeromecoutant 9b16d4fb5b NUCLEO_F103RB: replace CLOCK_SOURCE_USB by DEVICE_USBDEVICE 2019-02-22 10:53:15 -06:00
Maciej Bocianski bcfe96b83c Update usb test to connect and block itself
Update the basic usb test so it does blocking itself since blocking
connect was removed from USBDevice.
2019-02-22 10:53:15 -06:00
Russ Butler 3d429cf43f Update the USBHID classes
Update the USB classes USBHID, USBKeyboard, USBMouse and
USBMouseKeyboard from the unsupported folder.
2019-02-22 10:53:15 -06:00
Russ Butler 9f94a5fc56 Fix typo in USBTester.h
Fix the spelling of product_release.
2019-02-22 10:53:15 -06:00
Russ Butler 7e5e64bfdf Cleanup USBSerial
Make the following changes
-Make blocking the first parameter in the constructor
-Add destructor and proper cleanup
-Add ready and wait_ready functions
2019-02-22 10:53:15 -06:00
Russ Butler 11e2ba1f92 Add USBDevice destructor
Add a destructor to USBDevice to ensure that resources have been
properly released. Additionally add an assert in the destructor that
deinit has already been called. If it has not been called then
interrupts can still occur which may cause a crash.
2019-02-22 10:53:14 -06:00
Russ Butler ced82dd16b Remove extra USBDevice constructor
Remove the second USBDevice constructor since it does not provide
any new functionality.
2019-02-22 10:53:14 -06:00
Russ Butler e3219cd016 Remove blocking option from USB connect
Remove the option to block in USBDevice::connect since this
should be handled at a higher level. Also call init to ensure that
the USBDevice has been initalized.
2019-02-22 10:53:14 -06:00
Maciej Bocianski 12c91c3b7e pyusb_basic test update
test code refactoring
align test to use device multiconfiguration
2019-02-22 10:53:14 -06:00
Maciej Bocianski e85d5a33cd pyusb_basic test add helper functions 2019-02-22 10:53:14 -06:00
Maciej Bocianski 972fee6143 pyusb_basic test formatting fixes 2019-02-22 10:53:14 -06:00
Maciej Bocianski 9b4970342b Extend USB test class configuration 2019-02-22 10:53:14 -06:00
Russ Butler 6bb6d6fb42 Explicitly specify USBPhy used for testing
Add a parameter to the USBPhy class so mock or wrapper USBPhy classes
can be used.
2019-02-22 10:53:14 -06:00
Russ Butler a341a7c258 Make USB disconnect + connect time explicit
Create the define MIN_DISCONNECT_TIME_US to be used as the amount of
time that must pass between connect and disconnect for the host to
reliably detect reconnection. Replace the wait calls delaying for this
value to wait_us to indicate the precision required. Finally, remove
the unnecessary calls to wait_ms in
repeated_construction_destruction_test.
2019-02-22 10:53:14 -06:00
Russ Butler 7245a33164 Fix Kinetis USB disconnect
When disconnecting in the middle of a setup packet USB stops working
even after being re-connected. This is because the setup packet
suspended endpoint events but nothing resumed endpoint events.
This patch adds code to resume endpoint events in the reset handler.
2019-02-22 10:53:14 -06:00
Russ Butler 630e6292c9 Prevent Kinetis USB setup packets at wrong time
When disconnecting USB clear all pending interrupts. This ensures that
pending setup packets are dropped rather than being triggered after
disconnect.
2019-02-22 10:53:14 -06:00
Maciej Bocianski 561a2407f4 USBDevice: endpoint_add/read_start functions return value fix 2019-02-22 10:53:13 -06:00
Russ Butler ca4a68649d Add endpoint_remove_all helper function
Add the helper function endpoint_remove_all which removes all added
endpoints. This is useful for class drivers switching between
different USB configurations.
2019-02-22 10:53:13 -06:00
Maciej Bocianski ff3b0c1623 code formatting fixes 2019-02-22 10:53:13 -06:00
Maciej Bocianski 69a095cf3e USBDevice - add multiconfiguration support 2019-02-22 10:53:13 -06:00
Maciej Bocianski c2c3e01c36 USBDevice - add support for deconfiguration 2019-02-22 10:53:13 -06:00
Maciej Bocianski e4ffc6dea0 USB reset test fix 2019-02-22 10:53:13 -06:00
Maciej Bocianski b79705813c target: arch_pro enable USBDEVICE support 2019-02-22 10:53:13 -06:00
Russ Butler 50adb03f88 Fix USB tests
Change the direction used in set interface to match the USB
specification. This allows USB tests to pass on OSX.
2019-02-22 10:53:13 -06:00
Russ Butler 0a787e7fe9 Skip USB reset tests on OSX
OSX machines don't allow you to reset USB devices. Skip this test on
OSX so testing can still be used.
2019-02-22 10:53:13 -06:00
Maciej Bocianski 49504d66ca Fix for USB set_clear_feature_test for OSX 2019-02-22 10:53:13 -06:00
Russ Butler f31eb68ec5 Update USBTester product name
Change the name reported by USBTester from CDC DEVICE to
MBED TEST DEVICE.
2019-02-22 10:53:12 -06:00
Russ Butler 754134c6a2 Add pyusb to requirements
Add pyusb to requirements so the greentea USB tests work.
2019-02-22 10:53:11 -06:00
Russ Butler dc29fdefcc Add USBPhy template
Add a template for implementing a USBPhy.
2019-02-22 10:52:35 -06:00
Russ Butler 76aa7e0b6d Move USBPhy and related files to USB directory
Move the USBPhy header files into usb/device/USBPhy. Also move hal
and target USB files since mbed 2 does not compile when these files
are present without the USBPhy headers.

Directory restructure summary:
platform/USBPhy*
    to usb/device/USBPhy/USBPhy*
hal/*
    to usb/device/hal/*
targets/TARGET_Freescale/usb/*
    to usb/device/targets/TARGET_Freescale/*
targets/TARGET_NXP/TARGET_LPC176X/usb/*
    to usb/device/targets/TARGET_NXP/*
2019-02-22 10:52:35 -06:00
Maciej Bocianski 33bef331e6 USB generic tests 2019-02-22 10:52:35 -06:00
Russ Butler 7673ccd1c9 Improve LPC1768 USB stability
Make the following changes to improve stability:
-When disconnecting set address to disabled to prevent nacks
-Clear EP_SLOW one and only once for every interrupt where it is set_address
-Disable and clear control endpoint interrupts when disconnecting
2019-02-22 10:52:35 -06:00
Russ Butler aa76c776c9 Disable endpoints when disconnecting on Kinetis
Even thought the USB phy is disabled during disconnect, endpoints
still nack packets sent. This patch disables all endpoints so after
disconnect no USB traffic will be sent. This allows brief disconnects
of ~200us (or more) to be reliably detected by the host PC.
2019-02-22 10:52:35 -06:00
Russ Butler 0653799b5a Limit USB control transfer size
Limit the size of control reads to the max packet size of endpoint
zero. This fixes the handling of large transfers.
2019-02-22 10:52:35 -06:00
Russ Butler 2a84e3a4f6 Correct Kinetis 256 byte ctrl transfers
Correctly handle control transfers which are a multiple of 256 bytes
by checking for a non-zero value in the upper byte of size.
2019-02-22 10:52:35 -06:00
Russ Butler 08428f8300 Fix Kinetis endpoint initialization
Fully setup endpoint before enabling it in endpoint_add. This prevents
undefined behavior due to previous configuration.
2019-02-22 10:52:34 -06:00
Russ Butler b7eb7820e3 Remove the USB directory from mbed 2 travis
Don't include the USB directory when testing mbed 2 on travis.
2019-02-22 10:52:34 -06:00