Only assert if disabled endpoints are used when USBDevice is configured. USBDevice can leave the configured state due to a reset at any time, which disables all endpoints. Because this can happen at any time, thread processing could be performing any endpoint operation. The endpoint operation should return failure and do nothing in this case, rather than asserting as this is not an application error. An assert should only be triggered when an invalid endpoint is used after the use of USBDevice acknoledges the switch to configured mode by complete_set_configuration. In specific this PR fixes the assert caused with the following sequence: -ISR: OUT event sent -ISR: USB reset event -ISR: USB configure request start -Thread: OUT event processed on thread and next read starts ***endpoint is used while disabled causing an invalid assert*** -Thread: reset event processed -Thread: configure event processed This patch fixes this problem by making the following changes: 1. Operations done on disabled endpoints only assert when in the configured state 2. Adding and removing endpoints is only allowed when the flag _endpoint_add_remove_allowed is set 3. The flag _endpoint_add_remove_allowed is set on the set configuration request and cleared if the request is aborted or fails |
||
---|---|---|
.github | ||
TESTS | ||
TEST_APPS | ||
UNITTESTS | ||
cmsis | ||
components | ||
docs | ||
drivers | ||
events | ||
features | ||
hal | ||
platform | ||
rtos | ||
targets | ||
tools | ||
usb/device | ||
.astyleignore | ||
.astylerc | ||
.coveragerc | ||
.gitattributes | ||
.gitignore | ||
.pylintrc | ||
.travis.yml | ||
CONTRIBUTING.md | ||
DOXYGEN_FRONTPAGE.md | ||
Jenkinsfile | ||
LICENSE | ||
README.md | ||
doxyfile_options | ||
doxygen_options.json | ||
logo.png | ||
mbed.h | ||
requirements.txt |
README.md
Arm Mbed OS is an open source embedded operating system designed specifically for the "things" in the Internet of Things. It includes all the features you need to develop a connected product based on an Arm Cortex-M microcontroller, including security, connectivity, an RTOS and drivers for sensors and I/O devices.
Mbed OS provides a platform that includes:
- Security foundations.
- Cloud management services.
- Drivers for sensors, I/O devices and connectivity.
Release notes
The release notes detail the current release. You can also find information about previous versions.
License and contributions
The software is provided under Apache-2.0 license. Contributions to this project are accepted under the same license. Please see contributing.md for more info.
This project contains code from other projects. The original license text is included in those source files. They must comply with our license guide
Getting started for developers
We have a developer website for asking questions, engaging with others, finding information on boards and components, using an online IDE and compiler, reading the documentation and learning about what's new and what's coming next in Mbed OS.
Getting started for contributors
We also have a contributing and publishing guide that covers licensing, contributor agreements and style guidelines.
Documentation
For more information about Mbed OS, please see our published documentation. It includes Doxygen for our APIs, step-by-step tutorials, porting information and background reference materials about our architecture and tools.
To contribute to this documentation, please see the mbed-os-5-docs repository.