Spell check code and manual pages. Remove custom Doxygen CSS stylesheet, as the new 1.7 Doxygen's default stylesheet is much better.

pull/1469/head
Dean Camera 14 years ago
parent 13ea700b35
commit 711542ee89

File diff suppressed because one or more lines are too long

@ -115,7 +115,7 @@
/** Forces the compiler to not automatically zero the given global variable on startup, so that the
* current RAM contents is retained. Under most conditions this value will be random due to the
* behaviour of volatile memory once power is removed, but may be used in some specific circumstances,
* behavior of volatile memory once power is removed, but may be used in some specific circumstances,
* like the passing of values back after a system watchdog reset.
*/
#define ATTR_NO_INIT __attribute__ ((section (".noinit")))

@ -811,7 +811,7 @@ HTML_FOOTER =
# the style sheet file to the HTML output directory, so don't put your own
# stylesheet in the HTML output directory as well, or it will be erased!
HTML_STYLESHEET = Doxygen.css
HTML_STYLESHEET =
# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
# page will contain the date and time when the page was generated. Setting

@ -1,547 +0,0 @@
/* The standard CSS for doxygen */
body, table, div, p, dl {
font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
font-size: 12px;
}
/* @group Heading Levels */
h1 {
text-align: center;
font-size: 150%;
}
h2 {
font-size: 120%;
}
h3 {
font-size: 100%;
}
dt {
font-weight: bold;
}
div.multicol {
-moz-column-gap: 1em;
-webkit-column-gap: 1em;
-moz-column-count: 3;
-webkit-column-count: 3;
}
p.startli, p.startdd, p.starttd {
margin-top: 2px;
}
p.endli {
margin-bottom: 0px;
}
p.enddd {
margin-bottom: 4px;
}
p.endtd {
margin-bottom: 2px;
}
/* @end */
caption {
font-weight: bold;
}
span.legend {
font-size: 70%;
text-align: center;
}
h3.version {
font-size: 90%;
text-align: center;
}
div.qindex, div.navtab{
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
padding: 2px;
}
div.qindex, div.navpath {
width: 100%;
line-height: 140%;
}
div.navtab {
margin-right: 15px;
}
/* @group Link Styling */
a {
color: #153788;
font-weight: normal;
text-decoration: none;
}
.contents a:visited {
color: #1b77c5;
}
a:hover {
text-decoration: underline;
}
a.qindex {
font-weight: bold;
}
a.qindexHL {
font-weight: bold;
background-color: #6666cc;
color: #ffffff;
border: 1px double #9295C2;
}
.contents a.qindexHL:visited {
color: #ffffff;
}
a.el {
font-weight: bold;
}
a.elRef {
}
a.code {
color: #3030f0;
}
a.codeRef {
color: #3030f0;
}
/* @end */
dl.el {
margin-left: -1cm;
}
.fragment {
font-family: monospace, fixed;
font-size: 105%;
}
pre.fragment {
border: 1px solid #CCCCCC;
background-color: #f5f5f5;
padding: 4px 6px;
margin: 4px 8px 4px 2px;
overflow: auto;
word-wrap: break-word;
font-size: 9pt;
line-height: 125%;
}
div.ah {
background-color: black;
font-weight: bold;
color: #ffffff;
margin-bottom: 3px;
margin-top: 3px
}
div.groupHeader {
margin-left: 16px;
margin-top: 12px;
margin-bottom: 6px;
font-weight: bold;
}
div.groupText {
margin-left: 16px;
font-style: italic;
}
body {
background: white;
color: black;
margin-right: 20px;
margin-left: 20px;
}
td.indexkey {
background-color: #e8eef2;
font-weight: bold;
border: 1px solid #CCCCCC;
margin: 2px 0px 2px 0;
padding: 2px 10px;
}
td.indexvalue {
background-color: #e8eef2;
border: 1px solid #CCCCCC;
padding: 2px 10px;
margin: 2px 0px;
}
tr.memlist {
background-color: #f0f0f0;
}
p.formulaDsp {
text-align: center;
}
img.formulaDsp {
}
img.formulaInl {
vertical-align: middle;
}
div.center {
text-align: center;
margin-top: 0px;
margin-bottom: 0px;
padding: 0px;
}
div.center img {
border: 0px;
}
img.footer {
border: 0px;
vertical-align: middle;
}
/* @group Code Colorization */
span.keyword {
color: #008000
}
span.keywordtype {
color: #604020
}
span.keywordflow {
color: #e08000
}
span.comment {
color: #800000
}
span.preprocessor {
color: #806020
}
span.stringliteral {
color: #002080
}
span.charliteral {
color: #008080
}
span.vhdldigit {
color: #ff00ff
}
span.vhdlchar {
color: #000000
}
span.vhdlkeyword {
color: #700070
}
span.vhdllogic {
color: #ff0000
}
/* @end */
.search {
color: #003399;
font-weight: bold;
}
form.search {
margin-bottom: 0px;
margin-top: 0px;
}
input.search {
font-size: 75%;
color: #000080;
font-weight: normal;
background-color: #e8eef2;
}
td.tiny {
font-size: 75%;
}
.dirtab {
padding: 4px;
border-collapse: collapse;
border: 1px solid #84b0c7;
}
th.dirtab {
background: #e8eef2;
font-weight: bold;
}
hr {
height: 0px;
border: none;
border-top: 1px solid #666;
}
hr.footer {
height: 1px;
}
/* @group Member Descriptions */
.mdescLeft, .mdescRight,
.memItemLeft, .memItemRight,
.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
background-color: #FAFAFA;
border: none;
margin: 4px;
padding: 1px 0 0 8px;
}
.mdescLeft, .mdescRight {
padding: 0px 8px 4px 8px;
color: #555;
}
.memItemLeft, .memItemRight, .memTemplParams {
border-top: 1px solid #ccc;
}
.memItemLeft, .memTemplItemLeft {
white-space: nowrap;
}
.memTemplParams {
color: #606060;
white-space: nowrap;
}
/* @end */
/* @group Member Details */
/* Styles for detailed member documentation */
.memtemplate {
font-size: 80%;
color: #606060;
font-weight: normal;
margin-left: 3px;
}
.memnav {
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
margin-right: 15px;
padding: 2px;
}
.memitem {
padding: 0;
margin-bottom: 10px;
}
.memname {
white-space: nowrap;
font-weight: bold;
margin-left: 6px;
}
.memproto {
border-top: 1px solid #84b0c7;
border-left: 1px solid #84b0c7;
border-right: 1px solid #84b0c7;
padding: 0;
background-color: #d5e1e8;
font-weight: bold;
/* firefox specific markup */
background-image: -moz-linear-gradient(rgba(228, 233, 245, 1.0) 0%, rgba(193, 205, 232, 1.0) 100%);
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-moz-border-radius-topright: 8px;
-moz-border-radius-topleft: 8px;
/* webkit specific markup */
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(228, 233, 245, 1.0)), to(rgba(193, 205, 232, 1.0)));
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-webkit-border-top-right-radius: 8px;
-webkit-border-top-left-radius: 8px;
}
.memdoc {
border-bottom: 1px solid #84b0c7;
border-left: 1px solid #84b0c7;
border-right: 1px solid #84b0c7;
padding: 2px 5px;
background-color: #eef3f5;
border-top-width: 0;
/* firefox specific markup */
-moz-border-radius-bottomleft: 8px;
-moz-border-radius-bottomright: 8px;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
/* webkit specific markup */
-webkit-border-bottom-left-radius: 8px;
-webkit-border-bottom-right-radius: 8px;
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
}
.paramkey {
text-align: right;
}
.paramtype {
white-space: nowrap;
}
.paramname {
color: #602020;
white-space: nowrap;
}
.paramname em {
font-style: normal;
}
/* @end */
/* @group Directory (tree) */
/* for the tree view */
.ftvtree {
font-family: sans-serif;
margin: 0.5em;
}
/* these are for tree view when used as main index */
.directory {
font-size: 9pt;
font-weight: bold;
}
.directory h3 {
margin: 0px;
margin-top: 1em;
font-size: 11pt;
}
/*
The following two styles can be used to replace the root node title
with an image of your choice. Simply uncomment the next two styles,
specify the name of your image and be sure to set 'height' to the
proper pixel height of your image.
*/
/*
.directory h3.swap {
height: 61px;
background-repeat: no-repeat;
background-image: url("yourimage.gif");
}
.directory h3.swap span {
display: none;
}
*/
.directory > h3 {
margin-top: 0;
}
.directory p {
margin: 0px;
white-space: nowrap;
}
.directory div {
display: none;
margin: 0px;
}
.directory img {
vertical-align: -30%;
}
/* these are for tree view when not used as main index */
.directory-alt {
font-size: 100%;
font-weight: bold;
}
.directory-alt h3 {
margin: 0px;
margin-top: 1em;
font-size: 11pt;
}
.directory-alt > h3 {
margin-top: 0;
}
.directory-alt p {
margin: 0px;
white-space: nowrap;
}
.directory-alt div {
display: none;
margin: 0px;
}
.directory-alt img {
vertical-align: -30%;
}
/* @end */
address {
font-style: normal;
color: #333;
}
table.doxtable {
border-collapse:collapse;
}
table.doxtable td, table.doxtable th {
border: 1px solid #153788;
padding: 3px 7px 2px;
}
table.doxtable th {
background-color: #254798;
color: #FFFFFF;
font-size: 110%;
padding-bottom: 4px;
padding-top: 5px;
text-align:left;
}
p {padding-left: 20px;}

@ -29,7 +29,7 @@
*/
/** \file
* \brief Board specific Buttons driver header for the Bentio.
* \brief Board specific Buttons driver header for the Benito.
*
* Board specific Buttons driver header for the Benito (http://dorkbotpdx.org/wiki/benito).
*
@ -40,7 +40,7 @@
/** \ingroup Group_Buttons
* @defgroup Group_Buttons_BENITO BENITO
*
* Board specific Buttons driver header for the Bentio (http://dorkbotpdx.org/wiki/benito).
* Board specific Buttons driver header for the Benito (http://dorkbotpdx.org/wiki/benito).
*
* \note This file should not be included directly. It is automatically included as needed by the Buttons driver
* dispatch header located in LUFA/Drivers/Board/Buttons.h.

@ -58,7 +58,7 @@
*
* \note To make code as compatible as possible, it is assumed that all boards carry a minimum of four LEDs. If
* a board contains less than four LEDs, the remaining LED masks are defined to 0 so as to have no effect.
* If other behaviour is desired, either alias the remaining LED masks to existing LED masks via the -D
* If other behavior is desired, either alias the remaining LED masks to existing LED masks via the -D
* switch in the project makefile, or alias them to nothing in the makefile to cause compilation errors when
* a non-existing LED is referenced in application code. Note that this means that it is possible to make
* compatible code for a board with no LEDs by making a board LED driver (see \ref Page_WritingBoardDrivers)

@ -287,7 +287,7 @@
#endif
}
/** Deconfigures the given ADC channel, re-enabling digital I/O mode instead of analog. This
/** De-configures the given ADC channel, re-enabling digital I/O mode instead of analog. This
* function sets the associated port pin as an input and re-enabled the digital portion of
* the I/O.
*

@ -113,7 +113,7 @@
* \param[in] Byte Location where the read byte is to be stored
* \param[in] LastByte Indicates if the byte should be ACKed if false, NAKed if true
*
* \return Boolean true if the byte reception sucessfully completed, false otherwise
* \return Boolean true if the byte reception successfully completed, false otherwise
*/
static inline bool TWI_ReceiveByte(uint8_t* Byte, bool LastByte)
{

@ -54,7 +54,7 @@
* One major issue with CDC-ACM is that it requires two Interface descriptors,
* which will upset most hosts when part of a multi-function "Composite" USB
* device, as each interface will be loaded into a separate driver instance. To
* conbat this, you should use the "Interface Association Descriptor" addendum to
* combat this, you should use the "Interface Association Descriptor" addendum to
* the USB standard which is available on most OSes when creating Composite devices.
*
* Another major oversight is that there is no mechanism for the host to notify the
@ -190,7 +190,7 @@
*/
void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
/** CDC class driver event for a send break request sent to the device from the host. This is generally used to seperate
/** CDC class driver event for a send break request sent to the device from the host. This is generally used to separate
* data or to indicate a special condition to the receiving device.
*
* \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state
@ -277,7 +277,7 @@
*/
void CDC_Device_SendControlLineStateChange(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
/** Creates a standard characer stream for the given CDC Device instance so that it can be used with all the regular
/** Creates a standard character stream for the given CDC Device instance so that it can be used with all the regular
* functions in the avr-libc <stdio.h> library that accept a FILE stream as a destination (e.g. fprintf). The created
* stream is bidirectional and can be used for both input and output functions.
*

@ -129,7 +129,7 @@
/** Flushes the MIDI send buffer, sending any queued MIDI events to the host. This should be called to override the
* \ref MIDI_Device_SendEventPacket() function's packing behaviour, to flush queued events.
* \ref MIDI_Device_SendEventPacket() function's packing behavior, to flush queued events.
*
* \param[in,out] MIDIInterfaceInfo Pointer to a structure containing a MIDI Class configuration and state
*

@ -190,7 +190,7 @@
*/
uint8_t CDC_Host_SendControlLineStateChange(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
/** Sends a Send Break request to the device. This is generally used to seperate data data or to indicate a special condition
/** Sends a Send Break request to the device. This is generally used to separate data data or to indicate a special condition
* to the receiving device.
*
* \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class host configuration and state
@ -267,7 +267,7 @@
*/
uint8_t CDC_Host_Flush(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
/** Creates a standard characer stream for the given CDC Device instance so that it can be used with all the regular
/** Creates a standard character stream for the given CDC Device instance so that it can be used with all the regular
* functions in the avr-libc <stdio.h> library that accept a FILE stream as a destination (e.g. fprintf). The created
* stream is bidirectional and can be used for both input and output functions.
*

@ -136,7 +136,7 @@
* \param[in] reportitem HID Report Item whose retrieved value is to be aligned
* \param[in] type Data type to align the HID report item's value to
*
* \return Left-aligned data of the given report item's pre-retrived value for the given datatype
* \return Left-aligned data of the given report item's pre-retrieved value for the given datatype
*/
#define HID_ALIGN_DATA(reportitem, type) ((type)(reportitem->Value << ((8 * sizeof(type)) - reportitem->Attributes.BitSize)))

@ -142,7 +142,7 @@
MIDI_EventPacket_t* const Event) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
/** Flushes the MIDI send buffer, sending any queued MIDI events to the device. This should be called to override the
* \ref MIDI_Host_SendEventPacket() function's packing behaviour, to flush queued events. Events are queued into the
* \ref MIDI_Host_SendEventPacket() function's packing behavior, to flush queued events. Events are queued into the
* pipe bank until either the pipe bank is full, or \ref MIDI_Host_Flush() is called. This allows for multiple MIDI
* events to be packed into a single pipe packet, increasing data throughput.
*

@ -294,7 +294,7 @@ uint8_t RNDIS_Host_SetRNDISProperty(USB_ClassInfo_RNDIS_Host_t* const RNDISInter
struct
{
RNDIS_Set_Message_t SetMessage;
uint8_t ContigiousBuffer[Length];
uint8_t ContiguousBuffer[Length];
} SetMessageData;
RNDIS_Set_Complete_t SetMessageResponse;
@ -308,7 +308,7 @@ uint8_t RNDIS_Host_SetRNDISProperty(USB_ClassInfo_RNDIS_Host_t* const RNDISInter
SetMessageData.SetMessage.InformationBufferOffset = (sizeof(RNDIS_Set_Message_t) - sizeof(RNDIS_Message_Header_t));
SetMessageData.SetMessage.DeviceVcHandle = 0;
memcpy(&SetMessageData.ContigiousBuffer, Buffer, Length);
memcpy(&SetMessageData.ContiguousBuffer, Buffer, Length);
if ((ErrorCode = RNDIS_SendEncapsulatedCommand(RNDISInterfaceInfo, &SetMessageData,
SetMessageData.SetMessage.MessageLength)) != HOST_SENDCONTROL_Successful)
@ -337,7 +337,7 @@ uint8_t RNDIS_Host_QueryRNDISProperty(USB_ClassInfo_RNDIS_Host_t* const RNDISInt
struct
{
RNDIS_Query_Complete_t QueryMessageResponse;
uint8_t ContigiousBuffer[MaxLength];
uint8_t ContiguousBuffer[MaxLength];
} QueryMessageResponseData;
QueryMessage.MessageType = REMOTE_NDIS_QUERY_MSG;
@ -364,7 +364,7 @@ uint8_t RNDIS_Host_QueryRNDISProperty(USB_ClassInfo_RNDIS_Host_t* const RNDISInt
if (QueryMessageResponseData.QueryMessageResponse.Status != REMOTE_NDIS_STATUS_SUCCESS)
return RNDIS_COMMAND_FAILED;
memcpy(Buffer, &QueryMessageResponseData.ContigiousBuffer, MaxLength);
memcpy(Buffer, &QueryMessageResponseData.ContiguousBuffer, MaxLength);
return HOST_SENDCONTROL_Successful;
}

@ -214,11 +214,11 @@
const uint8_t AfterType)
ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
/** Searches for the next descriptor in the given configuration descriptor using a premade comparator
/** Searches for the next descriptor in the given configuration descriptor using a pre-made comparator
* function. The routine updates the position and remaining configuration descriptor bytes values
* automatically. If a comparator routine fails a search, the descriptor pointer is retreated back
* so that the next descriptor search invocation will start from the descriptor which first caused the
* original search to fail. This behaviour allows for one comparator to be used immediately after another
* original search to fail. This behavior allows for one comparator to be used immediately after another
* has failed, starting the second search from the descriptor which failed the first.
*
* Comparator functions should be standard functions which accept a pointer to the header of the current

@ -188,7 +188,7 @@
* \note For the smaller series 2 USB AVRs with limited USB controllers, VBUS is not available to the USB controller.
* this means that the current connection state is derived from the bus suspension and wake up events by default,
* which is not always accurate (host may suspend the bus while still connected). If the actual connection state
* needs to be determined, VBUS should be routed to an external pin, and the auto-detect behaviour turned off by
* needs to be determined, VBUS should be routed to an external pin, and the auto-detect behavior turned off by
* passing the NO_LIMITED_CONTROLLER_CONNECT token to the compiler via the -D switch at compile time. The connection
* and disconnection events may be manually fired, and the \ref USB_DeviceState global changed manually.
* \n\n
@ -206,7 +206,7 @@
* \note For the smaller series 2 USB AVRs with limited USB controllers, VBUS is not available to the USB controller.
* this means that the current connection state is derived from the bus suspension and wake up events by default,
* which is not always accurate (host may suspend the bus while still connected). If the actual connection state
* needs to be determined, VBUS should be routed to an external pin, and the auto-detect behaviour turned off by
* needs to be determined, VBUS should be routed to an external pin, and the auto-detect behavior turned off by
* passing the NO_LIMITED_CONTROLLER_CONNECT token to the compiler via the -D switch at compile time. The connection
* and disconnection events may be manually fired, and the \ref USB_DeviceState global changed manually.
* \n\n
@ -226,7 +226,7 @@
* This event is time-critical; each packet within the request transaction must be acknowledged or
* sent within 50ms or the host will abort the transfer.
*
* The library interally handles all standard control requests with the exceptions of SYNC FRAME,
* The library internally handles all standard control requests with the exceptions of SYNC FRAME,
* SET DESCRIPTOR and SET INTERFACE. These and all other non-standard control requests will be left
* for the user to process via this event if desired. If not handled in the user application, requests
* are automatically STALLed.
@ -307,7 +307,7 @@
* millisecond timer source when the USB bus is enumerated in device mode to a USB host.
*
* This event is time-critical; it is run once per millisecond and thus long handlers will significantly
* degrade device performance. This event should only be enabled when needed to reduce device wakeups.
* degrade device performance. This event should only be enabled when needed to reduce device wake-ups.
*
* \note This event is not normally active - it must be manually enabled and disabled via the
* \ref USB_Device_EnableSOFEvents() and \ref USB_Device_DisableSOFEvents() commands after enumeration.

@ -31,7 +31,7 @@
/** \file
* \brief USB device standard request management.
*
* This file contains the function prototypes neccesary for the processing of incomming standard control requests
* This file contains the function prototypes necessary for the processing of incoming standard control requests
* when the library is in USB device mode.
*
* \note This file should not be included directly. It is automatically included as needed by the USB driver

@ -223,7 +223,7 @@
* \note After this routine returns, the control pipe will be selected.
*
* \param[in] Index Index of the string index to retrieve
* \param[out] Buffer Pointer to the destination buffer where the retrieved string decriptor is
* \param[out] Buffer Pointer to the destination buffer where the retrieved string descriptor is
* to be stored
* \param[in] BufferLength Maximum size of the string descriptor which can be stored into the buffer
*

@ -31,7 +31,7 @@
/** \file
* \brief USB host standard request management.
*
* This file contains the function prototypes neccesary for the issuing of outgoing standard control requests
* This file contains the function prototypes necessary for the issuing of outgoing standard control requests
* when the library is in USB host mode.
*
* \note This file should not be included directly. It is automatically included as needed by the USB driver

@ -31,7 +31,7 @@
/** \file
* \brief USB low level USB controller definitions.
*
* This file contains structures, function prototypes and macros related to the low level configutation of the
* This file contains structures, function prototypes and macros related to the low level configuration of the
* USB controller, to start, stop and reset the USB library core.
*
* \note This file should not be included directly. It is automatically included as needed by the USB driver
@ -250,7 +250,7 @@
* Valid mode masks are \ref USB_MODE_DEVICE, \ref USB_MODE_HOST or \ref USB_MODE_UID.
*
* \param[in] Options Mask indicating the options which should be used when initializing the USB
* interface to control the USB interface's behaviour. This should be comprised of
* interface to control the USB interface's behavior. This should be comprised of
* a USB_OPT_REG_* mask to control the regulator, a USB_OPT_*_PLL mask to control the
* PLL, and a USB_DEVICE_OPT_* mask (when the device mode is enabled) to set the device
* mode speed.

@ -11,10 +11,10 @@
* past and planned changes, and links to other projects incorporating LUFA.
*
* <b>Subsections:</b>
* - \subpage Page_DeviceSupport Current Device and Hardware Support
* - \subpage Page_Resources LUFA and USB Related Resources
* - \subpage Page_ChangeLog Project Changelog
* - \subpage Page_FutureChanges Planned Changes to the Library
* - \subpage Page_LUFAPoweredProjects Other Projects Using LUFA
* \li \subpage Page_DeviceSupport - Current Device and Hardware Support
* \li \subpage Page_Resources - LUFA and USB Related Resources
* \li \subpage Page_ChangeLog - Project Changelog
* \li \subpage Page_FutureChanges - Planned Changes to the Library
* \li \subpage Page_LUFAPoweredProjects - Other Projects Using LUFA
*/

@ -19,7 +19,7 @@
* <b>License:</b> Atmel Limited License (see Atmel download for details) \n
* <b>Website:</b> http://atmel.com/dyn/products/app_notes.asp?family_id=607#USB \n
* <b>Description:</b> This is the official Atmel USB AVR stack, for their 8-bit USB AVR lineup. Each series of
* USB AVR is seperated into a seperate download stack, which is both AVR-GCC and IAR compatible.
* USB AVR is separated into a separate download stack, which is both AVR-GCC and IAR compatible.
*
* - <b>Name:</b> Dr. Stefan Salewski's AT90USB1287 Stack (<i>Dr. Stefan Salewski</i>) \n
* <b>Cost:</b> Free \n
@ -59,4 +59,4 @@
* Used in many commercial and non-commercial designs, with user-submitted projects available for viewing
* on the company's website. Uses C language code mixed with assembly for time-critical sections.
*/

@ -66,7 +66,7 @@
* - Removed the cast to uint16_t on the set baud rate in the USBtoSerial project, so that the higher >1M baud rates can be
* selected (thanks to Steffan Woltjer)
* - Removed software PDI and TPI emulation from the AVRISP-MKII clone project as it was very buggy and slow - PDI and TPI must
* now be implemented via seperate programming headers
* now be implemented via separate programming headers
* - The CDC class bootloader now uses a watchdog reset rather than a soft-reset when exited to ensure that all hardware is
* properly reset to their defaults
* - Device mode class driver callbacks are now fired before the control request status stage is sent to prevent the host from
@ -79,7 +79,7 @@
* - Fixed possible device lockup when INTERRUPT_CONTROL_ENDPOINT is enabled and the control endpoint is not properly
* selected when the ISR completes
* - Fixed AVRISP-MKII clone project not correctly issuing LOAD EXTENDED ADDRESS commands when the extended address
* boundary is crossed during programming or readback (thanks to Gerard Sexton)
* boundary is crossed during programming or read back (thanks to Gerard Sexton)
* - Fixed warnings when building the AVRISP-MKII clone project with the ENABLE_XPROG_PROTOCOL compile time option disabled
* - Fixed software PDI/TPI programming mode in the AVRISP project not correctly toggling just the clock pin
* - Fixed TWI_StartTransmission() corrupting the contents of the GPIOR0 register
@ -104,7 +104,7 @@
* - Fixed Set Configuration requests not being stalled until the host has set the device's address
* - Fixed Host mode HID class driver not sending the correct report type when HID_Host_SendReportByID() was called and the
* HID_HOST_BOOT_PROTOCOL_ONLY compile time option is set
* - Fixed INTERRUPT_CONTROL_ENDPOINT compile time option preventing other interrupts from occuring while the control endpoint
* - Fixed INTERRUPT_CONTROL_ENDPOINT compile time option preventing other interrupts from occurring while the control endpoint
* request is being processed, causing possible lockups if a USB interrupt occurs during a transfer
* - Remove incorrect Abstract Call Management class specific descriptor from the CDC demos, bootloaders and projects
*
@ -123,7 +123,7 @@
* - Added ADC MUX masks for the standard ADC input channels on all AVR models with an ADC, altered demos to use these masks
* as on some models, the channel number is not identical to its single-ended ADC MUX mask
* - New Webserver project, a RNDIS host USB webserver using the open source uIP TCP/IP network stack and FatFS library
* - New BOARD value option BOARD_NONE (equivelent to not specifying BOARD) which will remove all board hardware drivers which
* - New BOARD value option BOARD_NONE (equivalent to not specifying BOARD) which will remove all board hardware drivers which
* do not adversely affect the code operation (currently only the LEDs driver)
* - Added keyboard modifier masks (HID_KEYBOARD_MODIFER_*) and LED report masks (KEYBOARD_LED_*) to the HID class driver and
* Keyboard demos
@ -154,7 +154,7 @@
* - Fixed Benito project not resetting the target AVR automatically when programming has completed
* - Fixed DFU bootloader programming not discarding the correct number of filler bytes from the host when non-aligned programming
* ranges are specified (thanks to Thomas Bleeker)
* - Fixed CDC and RNDIS host demos and class drivers - bidirectional endpoints should use two seperate pipes, not one half-duplex pipe
* - Fixed CDC and RNDIS host demos and class drivers - bidirectional endpoints should use two separate pipes, not one half-duplex pipe
* - Fixed Pipe_IsEndpointBound() not taking the endpoint's direction into account
* - Fixed EEPROM and FLASH ISP programming in the AVRISP project
* - Fixed incorrect values of USB_CONFIG_ATTR_SELFPOWERED and USB_CONFIG_ATTR_REMOTEWAKEUP tokens (thanks to Claus Christensen)
@ -162,7 +162,7 @@
* - Fixed SerialStream driver not setting stdin to the created serial stream (thanks to Mike Alexander)
* - Fixed USB_GetHIDReportSize() returning the number of bits in the specified report instead of bytes
* - Fixed AVRISP project not extending the command delay after each successful page/word/byte program
* - Fixed accuracy of the SERIAL_UBBRVAL() and SERIAL_2X_UBBRVAL() macros for higher baudrates (thanks to Renaud Cerrato)
* - Fixed accuracy of the SERIAL_UBBRVAL() and SERIAL_2X_UBBRVAL() macros for higher baud rates (thanks to Renaud Cerrato)
*
* \section Sec_ChangeLog091223 Version 091223
*
@ -186,8 +186,8 @@
* - Added new NO_DEVICE_REMOTE_WAKEUP and NO_DEVICE_SELF_POWER compile time options
*
* <b>Changed:</b>
* - Removed code in the Keyboard demos to send zeroed reports between two reports with differing numbers of keycodes
* as this relied on non-standard OS driver behaviour to repeat key groups
* - Removed code in the Keyboard demos to send zeroed reports between two reports with differing numbers of key codes
* as this relied on non-standard OS driver behavior to repeat key groups
* - The SCSI_Request_Sense_Response_t and SCSI_Inquiry_Response_t type defines are now part of the Mass Storage Class
* driver common defines, rather than being defined in the Host mode Class driver section only
* - The USB_MODE_HOST token is now defined even when host mode is not available
@ -196,7 +196,7 @@
* - All Class Drivers now return false or the "DeviceDisconnected" error code of their respective error enums when a function
* is called when no host/device is connected where possible
* - The HOST_SENDCONTROL_DeviceDisconnect enum value has been renamed to HOST_SENDCONTROL_DeviceDisconnected to be in line
* with the rest of the library errorcodes
* with the rest of the library error codes
* - Make MIDI device demos also turn off the on board LEDs if MIDI Note On messages are sent with a velocity of zero,
* which some devices use instead of Note Off messages (thanks to Robin Green)
* - The CDC demos are now named "VirtualSerial" instead to indicate the demos' function rather than its implemented USB class,
@ -244,7 +244,7 @@
* - Added new stream creation function to the CDC Class drivers, to easily make standard I/O streams from CDC Class driver instances
*
* <b>Changed:</b>
* - Removed mostly useless "TestApp" demo, as it was mainly useful only for checking for sytax errors in the library
* - Removed mostly useless "TestApp" demo, as it was mainly useful only for checking for syntax errors in the library
* - MIDI device demos now receive MIDI events from the host and display note ON messages via the board LEDs
* - Cleanups to the Device mode Mass Storage demo application SCSI routines
* - Changed Audio Class driver sample read/write functions to be inline, to reduce the number of cycles needed to transfer
@ -257,12 +257,12 @@
* - Changed MouseHostWithParser demos to check that the report items have a Mouse usage collection as a parent at some point,
* to prevent Joysticks from enumerating with the demo
* - Corrected the name of the misnamed USB_GetDeviceConfigDescriptor() function to USB_Host_GetDeviceConfigDescriptor().
* - Keyboard LowLevel/ClassDriver demos now support multiple simultaneous keypresses (up to 6) per report
* - Keyboard LowLevel/ClassDriver demos now support multiple simultaneous key presses (up to 6) per report
*
* <b>Fixed:</b>
* - Fixed PrinterHost demo returning invalid Device ID data when the attached device does not have a
* device ID (thanks to Andrei Krainev)
* - Changed LUFA_VERSION_INTEGER define to use BCD values, to make comparisons eaiser
* - Changed LUFA_VERSION_INTEGER define to use BCD values, to make comparisons easier
* - Fixed issue in the HID Host class driver's HID_Host_SendReportByID() routine using the incorrect mode (control/pipe)
* to send report to the attached device
* - Fixed ClassDriver AudioOutput device demo not selecting an audio output mode
@ -282,7 +282,7 @@
* - Added new host mode class drivers and matching demos to the library for rapid application development
* - Added flag to the HID report parser to indicate if a device has multiple reports
* - Added new EVENT_USB_Device_StartOfFrame() event, controlled by the new USB_Device_EnableSOFEvents() and
* USB_Device_DisableSOFEvents() macros to give bus-synchronised millisecond interrupts when in USB device mode
* USB_Device_DisableSOFEvents() macros to give bus-synchronized millisecond interrupts when in USB device mode
* - Added new Endpoint_SetEndpointDirection() macro for bidirectional endpoints
* - Added new AVRISP project, a LUFA powered clone of the Atmel AVRISP-MKII programmer
* - Added ShutDown() functions for all hardware peripheral drivers, so that peripherals can be turned off after use
@ -302,10 +302,10 @@
* - Added return values to the CDC and MIDI class driver transmit functions
* - Optimized Endpoint_Read_Word_* and Pipe_Read_Word_* macros to reduce compiled size
* - Added non-null function parameter pointer restrictions to USB Class drivers to improve user code reliability
* - Added new "Common" section to the class drivers, to hold all mode-independant definitions for clarity
* - Added new "Common" section to the class drivers, to hold all mode-independent definitions for clarity
* - Moved SCSI command/sense constants into the Mass Storage Class driver, instead of the user-code
* - Altered the SCSI commands in the LowLevel Mass Storage Host to save on FLASH space by reducing function calls
* - Changed the parameters and behaviour of the USB_GetDeviceConfigDescriptor() function so that it now performs size checks
* - Changed the parameters and behavior of the USB_GetDeviceConfigDescriptor() function so that it now performs size checks
* and data validations internally, to simplify user code
* - Changed HIDParser to only zero out important values in the Parsed HID Report Item Information structure to save cycles
* - The HID report parser now always processed FEATURE items - HID_ENABLE_FEATURE_PROCESSING token now has no effect
@ -314,7 +314,7 @@
* - Add in new invalid event hook check targets to project makefiles to produce compilation errors when invalid event names
* are used in a project
* - The HID Report Parser now gives information on the total length of each report within a HID interface
* - The USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now seperate USB_Descriptor_* and
* - The USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now separate USB_Descriptor_* and
* USB_StdDescriptor_* structures for both the LUFA and standardized element naming conventions so both may be used
*
* <b>Fixed:</b>
@ -325,7 +325,7 @@
* - Fixed HID report parser not resetting the FEATURE item count when a REPORT ID item is encountered
* - Fixed USBtoSerial demos not reading in UDR1 when the USART receives data but the USB interface is not enumerated,
* causing continuous USART receive interrupts
* - Fixed misspelt event name in the Class driver USBtoSerial demo, preventing correct operation
* - Fixed misspelled event name in the Class driver USBtoSerial demo, preventing correct operation
* - Fixed invalid data being returned when a GetStatus request is issued in Device mode with an unhandled data recipient
* - Added hardware USART receive interrupt and software buffering to the Benito project to ensure received data is not
* missed or corrupted
@ -348,7 +348,7 @@
* <b>New:</b>
* - Added new device class drivers and matching demos to the library for rapid application development
* - Added new PrinterHost demo (thanks to John Andrews)
* - Added USB Missle Launcher project, submitted by Dave Fletcher
* - Added USB Missile Launcher project, submitted by Dave Fletcher
* - Added new Benito Arduino Programmer project
* - Added incomplete device and host mode demos for later enhancement
* - Updated MassStorage device block write routines to use ping-pong Dataflash buffering to increase throughput by around 30%
@ -375,7 +375,7 @@
* - Added 404 Not Found errors to the webserver in the RNDIS demos to indicate invalid URLs
*
* <b>Changed:</b>
* - Deprecated psuedo-scheduler and removed dynamic memory allocator from the library (first no longer needed and second unused)
* - Deprecated pseudo-scheduler and removed dynamic memory allocator from the library (first no longer needed and second unused)
* - The device-mode CALLBACK_USB_GetDescriptor() function now has an extra parameter so that the memory space in which the requested
* descriptor is located can be specified. This means that descriptors can now be located in multiple memory spaces within a device.
* - Removed vague USB_IsConnected global - test USB_DeviceState or USB_HostState explicitly to gain previous functionality
@ -390,7 +390,7 @@
* the existing Pipe_SetFiniteINRequests() function
* - Changed F_CLOCK entries in project makefiles to alias to F_CPU by default, as this is the most common case
* - Host mode demos now use sane terminal escape codes, so that text is always readable and events/program output is visually distinguished
* from oneanother using foreground colours
* from one another using foreground colours
* - Internal per-device preprocessing conditions changed to per-device series rather than per-controller group for finer-grain
* internal control
* - Interrupts are no longer disabled during the processing of Control Requests on the default endpoint while in device mode
@ -398,13 +398,13 @@
* - Removed SINGLE_DEVICE_CONFIGURATION compile time option in favour of the new FIXED_NUM_CONFIGURATIONS option so that the exact number
* of device configurations can be defined statically
* - Removed VBUS events, as they are already exposed to the user application via the regular device connection and disconnection events
* - Renamed and altered existing events to properly seperate out Host and Device mode events
* - Renamed and altered existing events to properly separate out Host and Device mode events
*
* <b>Fixed:</b>
* - Changed bootloaders to use FLASHEND rather than the existence of RAMPZ to determine if far FLASH pointers are needed to fix
* bootloaders on some of the USB AVR devices where avr-libc erronously defines RAMPZ
* bootloaders on some of the USB AVR devices where avr-libc erroneously defines RAMPZ
* - Fixes to MassStorageHost for better device compatibility (increase command timeout, change MassStore_WaitForDataReceived()
* to only unfreeze and check one data pipe at a time) to prevent incorrect device enumerations and freezes while trasferring data
* to only unfreeze and check one data pipe at a time) to prevent incorrect device enumerations and freezes while transferring data
* - Make Pipe_ConfigurePipe() mask the given endpoint number against PIPE_EPNUM_MASK to ensure the endpoint IN direction bit is
* cleared to prevent endpoint type corruption
* - Fixed issue opening CDC-ACM ports on hosts when the CDC device tries to send data before the host has set the line encoding
@ -423,7 +423,7 @@
* - Fixed HID Report Descriptor Parser not correctly resetting internal states when a REPORT ID element is encountered
* - Fixed incorrect BUTTONS_BUTTON1 for the STK526 target
* - Fixed RNDIS demos freezing when more than one connection was attempted simultaneously, causing memory corruption
* - Fixed USBtoSerial demo receiving noise from the USART due to pullup not being enabled
* - Fixed USBtoSerial demo receiving noise from the USART due to pull-up not being enabled
*
*
* \section Sec_ChangeLog090605 Version 090605
@ -439,7 +439,7 @@
* interface is skipped
* - Clarified the size of library tokens which accept integer values in the Compile Time Tokens page, values now use the smallest datatype
* inside the library that is able to hold their defined value to save space
* - Removed DESCRIPTOR_ADDRESS() macro as it was largely supurflous and only served to obfuscate code
* - Removed DESCRIPTOR_ADDRESS() macro as it was largely superfluous and only served to obfuscate code
* - Rewritten event system to remove all macros, to make user code clearer
* - Fixed incorrect ENDPOINT_EPNUM_MASK mask preventing endpoints above EP3 from being selected (thanks to Jonathan Oakley)
* - Removed STREAM_CALLBACK() macro - callbacks now use regular function definitions to clarify user code
@ -447,10 +447,10 @@
* - USB_IsConnected is now cleared before the USB_Disconnect() event is fired in response to VBUS being removed
* - Fixed incorrect PID value being used in the USBtoSerial project (thanks to Phill)
* - Deleted StdDescriptors.c, renamed USB_GetDescriptor() to CALLBACK_USB_GetDescriptor, moved ConfigDescriptor.c/.h from the
* LUFA/Drivers/USB/Class/ directory to LUFA/Drivers/USB/HighLevel/ in preperation for the new USB class APIs
* LUFA/Drivers/USB/Class/ directory to LUFA/Drivers/USB/HighLevel/ in preparation for the new USB class APIs
* - Moved out each demos' functionality library files (e.g. Ring Buffer library) to /Lib directories for a better directory structure
* - Removed Tx interrupt from the USBtoSerial demo; now sends characters via polling to ensure more time for the Rx interrupt
* - Fixed possible enumeration errors from spinloops which may fail to exit if the USB connection is severed before the exit condition
* - Fixed possible enumeration errors from spin-loops which may fail to exit if the USB connection is severed before the exit condition
* becomes true
*
*
@ -500,7 +500,7 @@
* device descriptor
* - Renamed functions in the HID parser to have a "USB_" prefix and the acronym "HID" in the name
* - Fixed incorrect HID interface class and subclass values in the Mouse and KeyboardMouse demos (thanks to Brian Dickman)
* - Capitalised the "Descriptor_Search" and "Descriptor_Search_Comp" prefixes of the values in the DSearch_Return_ErrorCodes_t and
* - Capitalized the "Descriptor_Search" and "Descriptor_Search_Comp" prefixes of the values in the DSearch_Return_ErrorCodes_t and
* DSearch_Comp_Return_ErrorCodes_t enums
* - Removed "ERROR" from the enum names in the endpoint and pipe stream error code enums
* - Renamed the USB_PowerOnErrorCodes_t enum to USB_InitErrorCodes_t, renamed the POWERON_ERROR_NoUSBModeSpecified enum value to
@ -607,7 +607,7 @@
* - Added new "dfu" and "flip" programming targets to project makefiles
* - HID_PARSE_Sucessful enum member typo corrected to HID_PARSE_Successful
* - Changed COLLECTION item structures in the HID descriptor parser to include the collection's Usage Page value
* - Serial driver now sets Tx line as output, enables pullup on Rx line
* - Serial driver now sets Tx line as output, enables pull-up on Rx line
* - Fixed smaller USB AVRs raising multiple connection and disconnection events when NO_LIMITED_CONTROLLER_CONNECT is disabled
* - Added HOST_DEVICE_SETTLE_DELAY_MS to give the host delay after a device is connected before it is enumerated
* - Fixed KeyboardHostWithParser demo linking against the wrong global variables
@ -724,7 +724,7 @@
* - Fixed DFU bootloader EEPROM programming mode wiping first flash page
* - Fixed Clear/Set Feature device standard request processing code (fixing MassStorage demo in the process)
* - Added support for the ATMEGA16U4 AVR microcontroller
* - Library licence changed from LGPLv3 to MIT license
* - Library license changed from LGPLv3 to MIT license
*
*
* \section Sec_ChangeLog151 Version 1.5.1 - Released 31st July, 2008
@ -786,7 +786,7 @@
* - Corrected OTG.h is now included when the AVR supports both Host and Device modes, for creating OTG products
* - USB_DeviceEnumerationComplete event is now also fired when in device mode and the host has finished its enumeration
* - Interrupt driven demos now properly restore previously selected endpoint when ISR is complete
* - USB_HOST_TIMEOUT_MS is now overridable in the user project makefile to a custom fixed timeout value
* - The value of USB_HOST_TIMEOUT_MS can now be overridden in the user project makefile to a custom fixed timeout value
* - Renamed USB_Host_SOFGeneration_* macros to more friendly USB_Host_SuspendBus(), USB_Host_ResumeBus()
* and USB_Host_IsBusSuspended()
* - Renamed *_*_Is* macros to *_Is* to make all flag checking macros consistent, Pipe_SetInterruptFreq() is now
@ -916,7 +916,7 @@
* \section Sec_ChangeLog120 Version 1.2.0 - Released February 4th, 2008
*
* - Added USB_DeviceEnumerationComplete event for host mode
* - Added new Scheduler_Init routine to preprepare the scheduler, so that tasks can be started and
* - Added new Scheduler_Init routine to prepare the scheduler, so that tasks can be started and
* stopped before the scheduler has been started (via Scheduler_Start)
* - Connection events in both Device and Host mode are now interrupt-driven, allowing the USB management
* task to be stopped when the USB is not connected to a host or device
@ -935,7 +935,7 @@
*
* - Fixed DCONNI interrupt being enabled accidentally after a USB reset
* - Fixed DDISCI interrupt not being disabled when a device is not connected
* - Added workaround for powerless pullup devices causing false disconnect interrupts
* - Added workaround for powerless pull-up devices causing false disconnect interrupts
* - Added USB_DeviceEnumerationFailed event for Host mode
* - AVR_HOST_GetDeviceConfigDescriptor routine no longer modifies ConfigSizePtr if a valid buffer
* pointer is passed
@ -947,8 +947,8 @@
* started/stopped, as well as USB_InitTaskPointer(), which was breaking dual device/host USB projects
* - Changed scheduler to use the task name rather than IDs for setting the task mode, eliminating the
* need to have a task ID list
* - ID transistion interrupt now raises the appropriate device/host disconnect event if device attached
* - Fixed double VBUS change (and VBUS -) event when detatching in device mode
* - ID transition interrupt now raises the appropriate device/host disconnect event if device attached
* - Fixed double VBUS change (and VBUS -) event when detaching in device mode
* - Added ability to disable ANSI terminal codes by the defining of DISABLE_TERMINAL_CODES in makefile
* - Removed return from ConfigurePipe and ConfigureEndpoint functions - use Pipe_IsConfigured() and
* Endpoint_IsConfigured() after calling the config functions to determine success

@ -7,7 +7,7 @@
/** \page Page_TokenSummary Summary of Compile Tokens
*
* The following lists all the possible tokens which can be defined in a project makefile, and passed to the
* compiler via the -D switch, to alter the LUFA library code. These tokens may alter the library behaviour,
* compiler via the -D switch, to alter the LUFA library code. These tokens may alter the library behavior,
* or remove features unused by a given application in order to save flash space.
*
*
@ -28,7 +28,7 @@
* By default, the USB HID Host class driver is designed to work with HID devices using either the Boot or Report HID
* communication protocols. On devices where the Report protocol is not used (i.e. in applications where only basic
* Mouse or Keyboard operation is desired, using boot compatible devices), the code responsible for the Report protocol
* mode can be removed to save space in the compiled application by defining this token. When defined, it is still neccesary
* mode can be removed to save space in the compiled application by defining this token. When defined, it is still necessary
* to explicitly put the attached device into Boot protocol mode via a call to \ref HID_Host_SetBootProtocol().
*
* <b>HID_STATETABLE_STACK_DEPTH</b>=<i>x</i> - ( \ref Group_HIDParser ) \n
@ -61,7 +61,7 @@
*
* <b>HID_MAX_REPORT_IDS</b>=<i>x</i> - ( \ref Group_HIDParser ) \n
* HID reports may contain several report IDs, to logically distinguish grouped device data from one another - for example, a combination
* keyboard and mouse might use report IDs to seperate the keyboard reports from the mouse reports. In order to determine the size of each
* keyboard and mouse might use report IDs to separate the keyboard reports from the mouse reports. In order to determine the size of each
* report, and thus know how many bytes must be read or written, the size of each report (IN, OUT and FEATURE) must be calculated and
* stored. This token may be defined to a non-zero 8-bit value to set the maximum number of report IDs in a device which can be processed
* and their sizes calculated/stored into the resultant processed report structure. If not defined, this defaults to the value indicated in
@ -83,11 +83,11 @@
* By default, streams are transferred internally via a loop, sending or receiving one byte per iteration before checking for a bank full
* or empty condition. This allows for multiple stream functions to be chained together easily, as there are no alignment issues. However,
* this can lead to heavy performance penalties in applications where large streams are used frequently. When this compile time option is
* used, bytes are sent or recevied in groups of 8 bytes at a time increasing performance at the expense of a larger flash memory consumption
* used, bytes are sent or received in groups of 8 bytes at a time increasing performance at the expense of a larger flash memory consumption
* due to the extra code required to deal with byte alignment.
*
* <b>USE_STATIC_OPTIONS</b>=<i>x</i> - ( \ref Group_USBManagement ) \n
* By default, the USB_Init() function accepts dynamic options at runtime to alter the library behaviour, including whether the USB pad
* By default, the USB_Init() function accepts dynamic options at runtime to alter the library behavior, including whether the USB pad
* voltage regulator is enabled, and the device speed when in device mode. By defining this token to a mask comprised of the USB options
* mask defines usually passed as the Options parameter to USB_Init(), the resulting compiled binary can be decreased in size by removing
* the dynamic options code, and replacing it with the statically set options. When defined, the USB_Init() function no longer accepts an
@ -143,7 +143,7 @@
* binary.
*
* <b>DEVICE_STATE_AS_GPIOR</b> - ( \ref Group_Device ) \n
* One of the most frequenty used global variables in the stack is the USB_DeviceState global, which indicates the current state of
* One of the most frequently used global variables in the stack is the USB_DeviceState global, which indicates the current state of
* the Device State Machine. To reduce the amount of code and time required to access and modify this global in an application, this token
* may be defined to a value between 0 and 2 to fix the state variable into one of the three general purpose IO registers inside the AVR
* reserved for application use. When defined, the corresponding GPIOR register should not be used within the user application except
@ -161,7 +161,7 @@
* endpoints internally, saving space. Generally, this is usually only useful in (some) bootloaders and is best avoided.
*
* <b>INTERRUPT_CONTROL_ENDPOINT</b> - ( \ref Group_USBManagement ) \n
* Some applications prefer to not call the USB_USBTask() management task reguarly while in device mode, as it can complicate code significantly.
* Some applications prefer to not call the USB_USBTask() management task regularly while in device mode, as it can complicate code significantly.
* Instead, when device mode is used this token can be passed to the library via the -D switch to allow the library to manage the USB control
* endpoint entirely via USB controller interrupts asynchronously to the user application. When defined, USB_USBTask() does not need to be called
* when in USB device mode.
@ -181,7 +181,7 @@
* This section describes compile tokens which affect USB driver stack of the LUFA library when used in Host mode.
*
* <b>HOST_STATE_AS_GPIOR</b> - ( \ref Group_Host ) \n
* One of the most frequenty used global variables in the stack is the USB_HostState global, which indicates the current state of
* One of the most frequently used global variables in the stack is the USB_HostState global, which indicates the current state of
* the Host State Machine. To reduce the amount of code and time required to access and modify this global in an application, this token
* may be defined to a value between 0 and 2 to fix the state variable into one of the three general purpose IO registers inside the AVR
* reserved for application use. When defined, the corresponding GPIOR register should not be used within the user application except

@ -11,12 +11,12 @@
* information on compile-time tuning of the library and other developer-related sections.
*
* <b>Subsections:</b>
* - \subpage Page_TokenSummary Summary of Compile Time Tokens
* - \subpage Page_Migration Migrating from an Older LUFA Version
* - \subpage Page_VIDPID Allocated USB VID and PID Values
* - \subpage Page_BuildLibrary Building as a Linkable Library
* - \subpage Page_WritingBoardDrivers How to Write Custom Board Drivers
* - \subpage Page_SoftwareBootloaderStart How to jump to the bootloader in software
* - \subpage Page_SchedulerOverview Overview of the Simple LUFA Scheduler (DEPRECATED)
* \li \subpage Page_TokenSummary - Summary of Compile Time Tokens
* \li \subpage Page_Migration - Migrating from an Older LUFA Version
* \li \subpage Page_VIDPID - Allocated USB VID and PID Values
* \li \subpage Page_BuildLibrary - Building as a Linkable Library
* \li \subpage Page_WritingBoardDrivers - How to Write Custom Board Drivers
* \li \subpage Page_SoftwareBootloaderStart - How to jump to the bootloader in software
* \li \subpage Page_SchedulerOverview - Overview of the Simple LUFA Scheduler (DEPRECATED)
*/

@ -14,11 +14,11 @@
* and supporter. Please consider donating a small amount to support this and my future Open Source projects - All
* donations are <i>greatly</i> appreciated.
*
* Note that commercial entities can remove the attribution portion of the LUFA licence by a one-time fee - see
* Note that commercial entities can remove the attribution portion of the LUFA license by a one-time fee - see
* \ref Page_LicenceInfo for more details (<b>Note: Please do NOT pay this in advance through the donation link below -
* contact author for payment details.</b>).
*
* \image html "http://www.pledgie.com/campaigns/6927.png?skin_name=chrome"
* <a href='http://www.pledgie.com/campaigns/6927'>Donate to this project via PayPal</a> - Thanks in Advance!
*/

@ -14,13 +14,13 @@
* LUFA applications using different settings, see the subsections below.
*
* Most of the included demos in the /Demos/ folder come in both ClassDriver and LowLevel varieties. If you are new
* to LUFA, it is highly recommended that you look at the ClassDriver versions first, which use the premade USB
* to LUFA, it is highly recommended that you look at the ClassDriver versions first, which use the pre-made USB
* Class Drivers (\ref Group_USBClassDrivers) to simplify the use of the standard USB classes in user applications.
*
* For an overview of the included library applications, bootloaders and demos, see \ref Page_LibraryApps.
*
* <b>Subsections:</b>
* - \subpage Page_ConfiguringApps How to Configure the Included Demos, Projects and Bootloaders
* - \subpage Page_CompilingApps How to Compile the Included Demos, Projects and Bootloaders
* - \subpage Page_ProgrammingApps How to Program an AVR with the Included Demos, Projects and Bootloaders
* \li \subpage Page_ConfiguringApps - How to Configure the Included Demos, Projects and Bootloaders
* \li \subpage Page_CompilingApps - How to Compile the Included Demos, Projects and Bootloaders
* \li \subpage Page_ProgrammingApps - How to Program an AVR with the Included Demos, Projects and Bootloaders
*/

@ -30,7 +30,7 @@
*
* - <b>Clean API:</b>
* One of the main design goals of LUFA is to make the API easy to use. While LUFA is a fluid project which has undergone many
* API improvements, the API is arguably much nicer to use and easier to understand than the equivelent Atmel stack code. LUFA's
* API improvements, the API is arguably much nicer to use and easier to understand than the equivalent Atmel stack code. LUFA's
* API is also more complete than the Atmel stack, and contains many features to speed up application development.
*
* - <b>Full Hardware Support:</b>
@ -43,4 +43,4 @@
* As many people are now using LUFA, there is a community being built around it. You can get answers to your LUFA related questions
* quickly by either emailing the library author (subject to author's schedule) or by posting to the official LUFA support mailing list.
*/

@ -7,7 +7,7 @@
/** \page Page_LibraryApps Included Library Applications
*
* The LUFA library ships with several different host and device demos, located in the /Demos/ subdirectory. Within this
* directory the demos are seperated by USB mode (Device, Host, OTG) and further seperated by the use or non-use of the
* directory the demos are separated by USB mode (Device, Host, OTG) and further separated by the use or non-use of the
* library USB Class drivers (which abstract out the actual implementation of the USB classes to simplify development even
* further at the expense of a loss of flexibility).
*
@ -111,4 +111,4 @@
* - <b>StandaloneProgrammer</b> - Incomplete Standalone AVR Programmer application, to program AVRs directly from a Mass Storage disk
*
* </small>
*/
*/

@ -11,7 +11,7 @@
* Project Homepage: http://www.fourwalledcubicle.com/LUFA.php \n
* Author's Website: http://www.fourwalledcubicle.com \n
* Development Blog: http://www.fourwalledcubicle.com/blog \n
* Commercial Licences: http://fourwalledcubicle.com/PurchaseLUFA.php \n
* Commercial Licenses: http://fourwalledcubicle.com/PurchaseLUFA.php \n
*
* \section Sec_ProjectHelp Assistance With LUFA
* Discussion Group: http://groups.google.com/group/myusb-support-list \n
@ -32,4 +32,4 @@
* \section Sec_USBResources USB Resources
* USB-IF Website: http://www.usb.org \n
*/

@ -5,14 +5,14 @@
*/
/**
* \page Page_LicenceInfo Source Code Licence
* \page Page_LicenseInfo Source Code License
*
* The LUFA library is currently released under the MIT licence, included below.
* The LUFA library is currently released under the MIT license, included below.
*
* Commercial entities can opt out of the public disclosure clause in this license
* for a one-time US$1500 payment. This provides a non-exclusive modified MIT licensed which
* allows for the free use of the LUFA library, bootloaders and (where the sole copyright
* is attributed to Dean Camera) demos without public disclosure within an organisation, in
* is attributed to Dean Camera) demos without public disclosure within an organization, in
* addition to three free hours of consultation with the library author, and priority support.
* Please contact the author for more information via the address shown on on \ref Page_Resources.
*

@ -36,10 +36,10 @@
* and open source LUFA powered projects.
*
* <b>Subsections:</b>
* - \subpage Page_WhyUseLUFA What are the advantages of using LUFA?
* - \subpage Page_LUFAvsAtmelStack How does LUFA compare to the Atmel USB AVR stack?
* - \subpage Page_AlternativeStacks Alternative USB AVR Stacks
* - \subpage Page_LicenceInfo Project source licence and commercial use information
* - \subpage Page_Donating Donating to support this project
* - \subpage Page_LibraryApps Overview of included Demos, Bootloaders and Projects
* \li \subpage Page_WhyUseLUFA - What are the advantages of using LUFA?
* \li \subpage Page_LUFAvsAtmelStack - How does LUFA compare to the Atmel USB AVR stack?
* \li \subpage Page_AlternativeStacks - Alternative USB AVR Stacks
* \li \subpage Page_LicenceInfo - Project source license and commercial use information
* \li \subpage Page_Donating - Donating to support this project
* \li \subpage Page_LibraryApps - Overview of included Demos, Bootloaders and Projects
*/

@ -28,7 +28,7 @@
* Projects must update their makefile SRC values accordingly.
* - The HID Device Class driver's function signature for the CALLBACK_HID_Device_ProcessHIDReport() function has been changed, to
* allow for a new ReportType parameter. This new parameter must be added in all user applications using the Device mode HID Class
* Driver, but may be ingnored unless Host-to-Device FEATURE HID reports are used.
* Driver, but may be ignored unless Host-to-Device FEATURE HID reports are used.
*
* <b>Host Mode</b>
* - The \ref USB_Init() function no longer calls sei() to enable global interrupts, as the user application may need
@ -51,7 +51,7 @@
* <b>Host Mode</b>
* - The MIDI Host Class driver send and receive routines now operate on packed events, where multiple MIDI events may be
* packed into a single USB packet. This means that the sending of MIDI events will now be delayed until the MIDI send
* pipe bank is full. To override this new behaviour and revert to the previous behaviour, the user application may manually
* pipe bank is full. To override this new behavior and revert to the previous behavior, the user application may manually
* flush the queued event(s) to the device by calling \ref MIDI_Host_Flush().
* - The Pipe_IsEndpointBound() function now takes the endpoint's direction into account, by checking if the MSB of the endpoint's address
* is set to denote IN endpoints. If the previous functionality where the direction is to be discounted is required, mask the endpoint
@ -60,7 +60,7 @@
* <b>Device Mode</b>
* - The MIDI Device Class driver send and receive routines now operate on packed events, where multiple MIDI events may be
* packed into a single USB packet. This means that the sending of MIDI events will now be delayed until the MIDI send
* endpoint bank is full. To override this new behaviour and revert to the previous behaviour, the user application may manually
* endpoint bank is full. To override this new behavior and revert to the previous behavior, the user application may manually
* flush the queued event(s) to the host by calling \ref MIDI_Device_Flush().
*
* \section Sec_Migration091223 Migrating from 091122 to 091223
@ -70,9 +70,9 @@
* now named \ref SImage_Host_USBTask() and \ref SImage_Host_ConfigurePipes() respectively.
* - The HOST_SENDCONTROL_DeviceDisconnect enum value has been renamed to \ref HOST_SENDCONTROL_DeviceDisconnected to be in
* line with the rest of the library error codes.
* - The HID Parser item usages no longer contain seperate minimum and maximum values, as this was a violation of the HID
* - The HID Parser item usages no longer contain separate minimum and maximum values, as this was a violation of the HID
* specification. Instead, the values are distributed evenly across each item as its usage value, to ensure that all items
* can be distinguished from oneanother.
* can be distinguished from one-another.
*
* <b>Device Mode</b>
* - The CALLBACK_HID_Device_CreateHIDReport() HID Device Class driver callback now has a new ReportType parameter to
@ -96,27 +96,27 @@
* call to SPI_Init() before using the Dataflash driver
*
* <b>Host Mode</b>
* - The USB_GetDeviceConfigDescriptor() function's parameters and behaviour has changed; the user is required to
* - The USB_GetDeviceConfigDescriptor() function's parameters and behavior has changed; the user is required to
* preallocate the largest allowable buffer, and pass the size of the buffer to the function. This allows for a single
* call to the function to retrieve, size check and validate the Configuration Descriptor rather than having the user
* application perform these intermediatary steps.
* application perform these intermediary steps.
* - The HID report parser now requires a mandatory callback in the user code, to filter only the items the application
* is interested in into the processed HID report item structure to save RAM. See \ref CALLBACK_HIDParser_FilterHIDReportItem().
* - The HID report parser now always parses FEATURE and always ignores constant-data items - the HID_ENABLE_FEATURE_PROCESSING
* and HID_INCLUDE_CONSTANT_DATA_ITEMS compile time tokens now have no effect.
* - The USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now seperate USB_Descriptor_*
* - The USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now separate USB_Descriptor_*
* and USB_StdDescriptor_* structures for both the LUFA and standardized element naming conventions so that both may be used in
* the one project. For existing projects using the standardized names, change all code to use the USB_StdDescriptor_* variants.
*
* <b>Device Mode</b>
* - The USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now seperate USB_Descriptor_*
* - The USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now separate USB_Descriptor_*
* and USB_StdDescriptor_* structures for both the LUFA and standardized element naming conventions so that both may be used in
* the one project. For existing projects using the standardized names, change all code to use the USB_StdDescriptor_* variants.
*
* \section Sec_Migration090810 Migrating from 090605 to 090810
*
* <b>All</b>
* - The "Simple Scheduler" has been <i>deprecated</i>, as it was little more than an abtracted loop and caused much confusion.
* - The "Simple Scheduler" has been <i>deprecated</i>, as it was little more than an abstracted loop and caused much confusion.
* User applications using the scheduler should switch to regular loops instead. The scheduler code will be removed in a future
* release.
* - The "Dynamic Memory Block Allocator" has been removed, as it was unused in (and unrelated to) the LUFA library and never
@ -142,7 +142,7 @@
* state.
* - The USB_IsConnected global has been removed, as it is too vague for general use. Test \ref USB_HostState explicitly to ensure the host is
* in the desired state instead.
* - The USB event names have been changed and their firing conditions changed to properly seperate out Host mode events from Device mode
* - The USB event names have been changed and their firing conditions changed to properly separate out Host mode events from Device mode
* events. See the \ref Group_Events page for details on the new event names and firing conditions.
*
* <b>Device Mode</b>
@ -153,7 +153,7 @@
* - The USB_IsConnected global has been removed, as it is too vague for general use. Test \ref USB_DeviceState explicitly to ensure the device
* is in the desired state instead.
* - The VBUS events have been removed, as they are already exposed to the user via the USB_Connect and USB_Disconnect events.
* - The USB event names have been changed and their firing conditions changed to properly seperate out Host mode events from Device mode
* - The USB event names have been changed and their firing conditions changed to properly separate out Host mode events from Device mode
* events. See the \ref Group_Events page for details on the new event names and firing conditions. *
*
* \section Sec_Migration090605 Migrating from 090510 to 090605
@ -300,7 +300,7 @@
* - The previous SPI_SendByte() functionality is now located in SPI_TransferByte(). SPI_SendByte() now discards the return byte
* for speed, to compliment the new SPI_ReceiveByte() function. If two-way SPI transfers are required, calls to SPI_SendByte()
* should be changed to SPI_TransferByte().
* - The serial driver now sets the Tx line as an output explicitly, and enables the pullup of the Rx line.
* - The serial driver now sets the Tx line as an output explicitly, and enables the pull-up of the Rx line.
* - The Serial_Init() and SerialStream_Init() functions now take a second DoubleSpeed parameter, which indicates if the USART
* should be initialized in double speed mode - useful in some circumstances for attaining baud rates not usually possible at
* the given AVR clock speed.
@ -405,7 +405,7 @@
*
* <b>Library Demos</b>
* - The RNDIS demo application has been updated so that it is functional on Linux under earlier implementations
* of the RNDIS specification, which had non-standard behaviour. Projects built upon the demo should upgrade
* of the RNDIS specification, which had non-standard behavior. Projects built upon the demo should upgrade
* to the latest code.
* - The DFU class bootloader has had several bugs corrected in this release. It is recommended that where
* possible any existing devices upgrade to the latest bootloader code.
@ -462,7 +462,7 @@
* appropriate. It fires in an identical manner to the previously named event, thus the only change to be made
* is the event name itself in the user project.
* - The USB_Descriptor_Language_t structure no longer exists in StdDescriptors.h, as this was a
* pseudo-descriptor modelled on the string descriptor. It is replaced by the true USB_Descriptor_String_t type
* pseudo-descriptor modeled on the string descriptor. It is replaced by the true USB_Descriptor_String_t type
* descriptor as indicated in the USB specification, thus all device code must be updated accordingly.
* - The names of several Endpoint macros have been changed to be more consistent with the rest of the library,
* with no implementation changes. This means that existing code can be altered to use the new macro names

@ -29,7 +29,7 @@
* uint32_t Boot_Key ATTR_NO_INIT;
*
* #define MAGIC_BOOT_KEY 0xDC42ACCA
* #define BOOTLOADER_START_ADDRESS ({FLASH_SIZE_BYTES} - {BOOTLOADER_SEC_SIZE_BYTES})
* #define BOOTLOADER_START_ADDRESS (FLASH_SIZE_BYTES - BOOTLOADER_SEC_SIZE_BYTES)
*
* void Bootloader_Jump_Check(void) ATTR_INIT_SECTION(3);
* void Bootloader_Jump_Check(void)
@ -50,7 +50,7 @@
* // Disable all interrupts
* cli();
*
* // Wait two seconds for the USB detatchment to register on the host
* // Wait two seconds for the USB detachment to register on the host
* for (uint8_t i = 0; i < 128; i++)
* _delay_ms(16);
*
@ -61,8 +61,8 @@
* }
* \endcode
*
* Note that the bootloader magic key can be any arbitrary value. The {FLASH_SIZE_BYTES} and
* {BOOTLOADER_SEC_SIZE_BYTES} tokens should be replaced with the total flash size of the AVR
* Note that the bootloader magic key can be any arbitrary value. The <em>FLASH_SIZE_BYTES</em> and
* <em>BOOTLOADER_SEC_SIZE_BYTES</em> tokens should be replaced with the total flash size of the AVR
* in bytes, and the allocated size of the bootloader section for the target AVR.
*
*/
*/

@ -36,11 +36,11 @@
* requires less FLASH space than Atmel's stack, meaning more space for the user application*.
*
* - <b>Support:</b>
* Since many people are now using LUFA in their own projects, you can take advantage of other's knowedge when you run
* into difficulties or need some advice. In addition, you can also email the library author to recieve personalised
* Since many people are now using LUFA in their own projects, you can take advantage of other's knowledge when you run
* into difficulties or need some advice. In addition, you can also email the library author to receive personalized
* support when you need it (subject to author's schedule).
*
* <small>* Atmel Stack Mouse Device Demo 4292 bytes, LUFA Mouse Low Level Device Demo 3296 bytes, under identical build
* environments</small>
*/

@ -199,7 +199,7 @@ bool XMEGANVM_ReadMemory(const uint32_t ReadAddress, uint8_t* ReadBuffer, uint16
XPROGTarget_SendByte(PDI_CMD_REPEAT | PDI_DATSIZE_1BYTE);
XPROGTarget_SendByte(ReadSize - 1);
/* Send a LD command with indirect access and postincrement to read out the bytes */
/* Send a LD command with indirect access and post-increment to read out the bytes */
XPROGTarget_SendByte(PDI_CMD_LD | (PDI_POINTER_INDIRECT_PI << 2) | PDI_DATSIZE_1BYTE);
while (ReadSize-- && TimeoutMSRemaining)
*(ReadBuffer++) = XPROGTarget_ReceiveByte();
@ -286,7 +286,7 @@ bool XMEGANVM_WritePageMemory(const uint8_t WriteBuffCommand, const uint8_t Eras
XPROGTarget_SendByte(PDI_CMD_REPEAT | PDI_DATSIZE_1BYTE);
XPROGTarget_SendByte(WriteSize - 1);
/* Send a ST command with indirect access and postincrement to write the bytes */
/* Send a ST command with indirect access and post-increment to write the bytes */
XPROGTarget_SendByte(PDI_CMD_ST | (PDI_POINTER_INDIRECT_PI << 2) | PDI_DATSIZE_1BYTE);
while (WriteSize--)
XPROGTarget_SendByte(*(WriteBuffer++));

@ -256,7 +256,7 @@ static void XPROGProtocol_Erase(void)
break;
}
/* Erase the target memory, indicate timeout if ocurred */
/* Erase the target memory, indicate timeout if occurred */
if (!(XMEGANVM_EraseMemory(EraseCommand, Erase_XPROG_Params.Address)))
ReturnStatus = XPRG_ERR_TIMEOUT;
}
@ -267,7 +267,7 @@ static void XPROGProtocol_Erase(void)
else
EraseCommand = TINY_NVM_CMD_SECTIONERASE;
/* Erase the target memory, indicate timeout if ocurred */
/* Erase the target memory, indicate timeout if occurred */
if (!(TINYNVM_EraseMemory(EraseCommand, Erase_XPROG_Params.Address)))
ReturnStatus = XPRG_ERR_TIMEOUT;
}

@ -54,12 +54,12 @@ static uint8_t RX_Data;
/** Initializes the software UART, ready for data transmission and reception into the global ring buffers. */
void SoftUART_Init(void)
{
/* Set TX pin to output high, enable RX pullup */
/* Set TX pin to output high, enable RX pull-up */
STXPORT |= (1 << STX);
STXDDR |= (1 << STX);
SRXPORT |= (1 << SRX);
/* Enable INT0 for the detection of incomming start bits that signal the start of a byte */
/* Enable INT0 for the detection of incoming start bits that signal the start of a byte */
EICRA = (1 << ISC01);
EIMSK = (1 << INT0);

@ -218,7 +218,7 @@ USB_Descriptor_String_t PROGMEM USART_ProductString =
.UnicodeString = L"LUFA XPLAIN Bridge"
};
/** Descriptior retrieval function for the USART Bridge descriptors. This function is in turn called by the GetDescriptor
/** Descriptor retrieval function for the USART Bridge descriptors. This function is in turn called by the GetDescriptor
* callback function in the main source file, to retrieve the device's descriptors when in USART bridge mode.
*/
uint16_t USART_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)

@ -156,7 +156,7 @@ void SetupHardware(void)
MCUCR |= (1 << JTD);
MCUCR |= (1 << JTD);
/* Enable pullup on the JTAG TDI pin so we can use it to select the mode */
/* Enable pull-up on the JTAG TDI pin so we can use it to select the mode */
PORTF |= (1 << 7);
_delay_ms(10);

Loading…
Cancel
Save