1
0
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
2013-05-11 22:41:01 +02:00
2013-03-28 18:32:25 +02:00
2012-10-16 22:52:45 +11:00
2013-04-07 09:49:13 +03:00
2013-04-25 13:13:34 +03:00
2013-04-07 18:28:25 +02:00
2013-04-07 09:49:13 +03:00
2013-04-07 09:49:13 +03:00

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.
Readme 266 MiB
Languages
C 60.6%
C++ 30.8%
Fortran 2.6%
Rich Text Format 1.3%
Assembly 1.2%
Other 3.1%