mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-01-17 02:52:12 +01:00
Stacey Sheldon
c22daec1b0
usb cdc: avoid need for ZLP by using tx buffers smaller than max
USB CDC uses BULK endpoints to send/receive data. Typically, a USB host will enqueue large buffers on its IN (device-to-host) URBs. These buffers are larger than the max packet size for the bulk endpoint. The USB standard requires that an IN transfer ends when one of these is true: * a short packet (ie. less than max packet size) is sent by the device * a zero length packet (ZLP) * enough packets that the entire host buffer is filled Our device implementation never sends ZLPs. We sometimes send packets that are exactly max-packet-size bytes long. This would result in partially filling a host buffer without signalling (via ZLP) that the transmission had finished. The host would then wait until the next transfer had taken place before processing the first data, thus delaying the first data. This change simply forces all of our transfers to be short packets and avoids the need to worry about zero length packets. This is at the cost of some efficiency on the host side since its large buffers will only ever be partially filled. Conflicts: flight/PiOS/STM32F30x/pios_usb_cdc.c
What is OpenPilot all about? ---------------------------- The project aims at implementing the best features of all existing similar systems developed by enthusiasts and combines them into a single, easy-to-use software/hardware package. The ease-of-use in this case does not imply functional simplicity or compromises. There are no rigidly defined constraints and settings, but a full-fledged programming language configuration loaded via a Ground Control Station and other advanced features. OpenPilot is developed as a powerful platform for all types of vehicles. This is a non-profit project of the OpenPilot Foundation -------------------------------------------------------- This is a project using only volunteer personnel who have donated enormous amounts of time, money and effort. Please respect the people that are part of the project and their generosity. OpenPilot is funded entirely at the expense of those who spend their time and money in the development of the public project which helps it grow. Giving complete and correct references to all their work is not only a legal requirement of the CC-BY-SA license, but also simple respect for their work. The people who create this project, really deserve it for their very hard work. The OpenPilot project web sites ------------------------------- The project provides feature-rich development and collaboration environment using advanced tools such as GCC compilers, git, Atlassian JIRA, Confluence, FishEye, Crucible, Bamboo, Crowd, forums and blogs. Main project web site: http://www.openpilot.org/ Project forums: http://forums.openpilot.org/ Wiki, docs and manuals: http://wiki.openpilot.org/ Bug and issue tracker: http://progress.openpilot.org/ Source code repository: http://git.openpilot.org/ Crucible code reviews: http://reviews.openpilot.org/cru Project build server: http://bamboo.openpilot.org/ Community blogs: http://forums.openpilot.org/blogs/ Software downloads: http://wiki.openpilot.org/display/BUILDS/OpenPilot+Software+Downloads How to build from source? ------------------------- make all_sdk_install make all The project supports Windows, Linux and Mac OS X platforms as well as Android. Check the wiki for more details: http://wiki.openpilot.org/display/Doc/OpenPilot+Developer+Manual
Description
The LibrePilot open source project was founded in July 2015. It focuses on research and development of software and hardware to be used in a variety of applications including vehicle control and stabilization, unmanned autonomous vehicles and robotics.
Languages
C
60.6%
C++
30.8%
Fortran
2.6%
Rich Text Format
1.3%
Assembly
1.2%
Other
3.1%