summary refs log tree commit diff
path: root/lib/lufa/LUFA/StudioIntegration
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2017-07-07 11:55:23 -0400
committerJack Humbert <jack.humb@gmail.com>2017-07-07 11:55:23 -0400
commit8655d4f4948b2deef7844503c8d690f23ac1a062 (patch)
treeb2c6effc9d6cd5b5b43933a1e53b8bf17e9e82cf /lib/lufa/LUFA/StudioIntegration
parent1896c76a2928c96f9ab7947bec2ef8dd37623cff (diff)
parent60b30c036397cb5627fa374bb930794b225daa29 (diff)
Merge commit '60b30c036397cb5627fa374bb930794b225daa29' as 'lib/lufa'
Diffstat (limited to 'lib/lufa/LUFA/StudioIntegration')
-rw-r--r--lib/lufa/LUFA/StudioIntegration/Docbook/mshelp/README.txt13
-rw-r--r--lib/lufa/LUFA/StudioIntegration/Docbook/mshelp/docbook.xsl58
-rw-r--r--lib/lufa/LUFA/StudioIntegration/Docbook/mshelp/hv1-common.xsl664
-rw-r--r--lib/lufa/LUFA/StudioIntegration/Docbook/placeholder.txt1
-rw-r--r--lib/lufa/LUFA/StudioIntegration/HV1/helpcontentsetup.msha27
-rw-r--r--lib/lufa/LUFA/StudioIntegration/HV1/lufa_docbook_transform.xslt806
-rw-r--r--lib/lufa/LUFA/StudioIntegration/HV1/lufa_helpcontentsetup_transform.xslt47
-rw-r--r--lib/lufa/LUFA/StudioIntegration/HV1/lufa_hv1_transform.xslt45
-rw-r--r--lib/lufa/LUFA/StudioIntegration/HV1/lufa_studio_help_styling.css53
-rw-r--r--lib/lufa/LUFA/StudioIntegration/VSIX/LUFA.dllbin0 -> 785920 bytes
-rw-r--r--lib/lufa/LUFA/StudioIntegration/VSIX/LUFA.pkgdefbin0 -> 2242 bytes
-rw-r--r--lib/lufa/LUFA/StudioIntegration/VSIX/[Content_Types].xml13
-rw-r--r--lib/lufa/LUFA/StudioIntegration/VSIX/asf-manifest.xml18
-rw-r--r--lib/lufa/LUFA/StudioIntegration/VSIX/extension.vsixmanifest32
-rw-r--r--lib/lufa/LUFA/StudioIntegration/VSIX/generate_caches.py38
-rw-r--r--lib/lufa/LUFA/StudioIntegration/VSIX/lufa_asfmanifest_transform.xslt36
-rw-r--r--lib/lufa/LUFA/StudioIntegration/VSIX/lufa_vsmanifest_transform.xslt33
-rw-r--r--lib/lufa/LUFA/StudioIntegration/XDK/lufa_extension_transform.xslt68
-rw-r--r--lib/lufa/LUFA/StudioIntegration/XDK/lufa_filelist_transform.xslt35
-rw-r--r--lib/lufa/LUFA/StudioIntegration/XDK/lufa_indent_transform.xslt23
-rw-r--r--lib/lufa/LUFA/StudioIntegration/XDK/lufa_module_transform.xslt66
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa.xml96
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_common.xml34
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_drivers_board.xml114
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_drivers_board_names.xml853
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_drivers_misc.xml57
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_drivers_peripheral.xml198
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb.xml32
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class.xml32
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_android.xml54
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_audio.xml109
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_cdc.xml99
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_hid.xml99
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_midi.xml99
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_ms.xml99
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_printer.xml99
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_rndis.xml99
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_si.xml56
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core.xml85
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core_avr8.xml43
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core_uc3.xml42
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core_xmega.xml36
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_platform.xml60
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_platform_uc3.xml26
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_platform_xmega.xml23
-rw-r--r--lib/lufa/LUFA/StudioIntegration/lufa_toolchain.xml45
-rw-r--r--lib/lufa/LUFA/StudioIntegration/makefile142
47 files changed, 4807 insertions, 0 deletions
diff --git a/lib/lufa/LUFA/StudioIntegration/Docbook/mshelp/README.txt b/lib/lufa/LUFA/StudioIntegration/Docbook/mshelp/README.txt
new file mode 100644
index 0000000000..4f251cc0b8
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/Docbook/mshelp/README.txt
@@ -0,0 +1,13 @@
+This is a modified/updated version of the Microsoft HV1 Docbook transform, written by Morten Engelhardt Olsen,
+
+Originally posted at http://sourceforge.net/p/docbook/feature-requests/461/, this has been further updated by Morten to make it compatible with more recent DocBook versions.
+
+ ---------------------------
+/ This documentation system \
+\   is udderly ridiculous!  /
+ ---------------------------
+        \   ^__^
+         \  (oo)\_______
+            (__)\       )\/\
+                ||----w |
+                ||     ||
diff --git a/lib/lufa/LUFA/StudioIntegration/Docbook/mshelp/docbook.xsl b/lib/lufa/LUFA/StudioIntegration/Docbook/mshelp/docbook.xsl
new file mode 100644
index 0000000000..03b81feafc
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/Docbook/mshelp/docbook.xsl
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet 
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:d="http://docbook.org/ns/docbook"
+	xmlns="http://www.w3.org/1999/xhtml"
+    exclude-result-prefixes="xsl d"   
+    version="1.0">
+
+	<xsl:import href="../xhtml/chunk.xsl"/>
+	<xsl:import href="../xhtml/highlight.xsl"/>
+	
+	<!-- 
+		Based on the normal xhtml templates, all overrides applicable to 
+		xhtml is applicable to HV1.
+	-->
+	
+	<xsl:import href="hv1-common.xsl"/>
+
+	<!-- 
+		Choose if links should be generated using ms-xhelp (default) or 
+		the more verbose ms.help type. The latter requires product.name, 
+		product.version and product.locale to be set
+	-->
+	<xsl:param name="use.mshelp.links" select="0"/>
+	
+	<!-- 
+		Name of target product. If specified then each page is 
+		marked with this product. This is usualy set during 
+		install time.
+	-->
+	<xsl:param name="product.name" select="''" />
+	
+	<!-- 
+		Name of target version. If specified then each page is 
+		marked with this version. This is usualy set during 
+		install time.
+	-->
+	<xsl:param name="product.version" select="''" />
+	
+	<!-- 
+		Locale for the help. Should always be set
+	-->
+	<xsl:param name="product.locale" select="'en-US'" />
+	
+	<!-- 
+		Self branding. Gives access for chunks to load 
+		it's own branding package during runtime
+	-->
+	<xsl:param name="topic.selfbrand" select="1"/>
+
+
+	<!-- Use doctitle for olinks -->
+	<xsl:param name="olink.doctitle" select="'yes'" />
+
+	<!-- Enable source code highlighting-->
+	<xsl:param name="highlight.source" select="1"/>
+	
+</xsl:stylesheet>
diff --git a/lib/lufa/LUFA/StudioIntegration/Docbook/mshelp/hv1-common.xsl b/lib/lufa/LUFA/StudioIntegration/Docbook/mshelp/hv1-common.xsl
new file mode 100644
index 0000000000..b6f2610680
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/Docbook/mshelp/hv1-common.xsl
@@ -0,0 +1,664 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+				xmlns:d="http://docbook.org/ns/docbook"
+				xmlns="http://www.w3.org/1999/xhtml"
+				exclude-result-prefixes="d"
+    			version="1.0">
+
+
+	<!-- no separate HTML page with index as this is binary in hv1 -->
+	<xsl:param name="generate.index" select="0"/>
+
+
+	<!-- Generate help tags in header -->
+	<xsl:template name="user.head.content">
+		<xsl:param name="node" select="''" />
+		<xsl:variable name="up" select="parent::*"/>
+
+		<!-- Locale should be first Help tag-->
+		<meta name="Microsoft.Help.Locale">
+			<xsl:attribute name="content">
+				<xsl:choose>
+					<xsl:when test="$product.locale and product.locale != ''">
+						<xsl:value-of select="$product.locale"/>
+					</xsl:when>
+					<xsl:otherwise>
+						<xsl:text>en-US</xsl:text>
+					</xsl:otherwise>
+				</xsl:choose>
+			</xsl:attribute>
+		</meta>
+
+		<!-- Specify locale for this chunk. Should probably query xml:lang -->
+		<meta name="Microsoft.Help.TopicLocale">
+			<xsl:attribute name="content">
+				<xsl:choose>
+					<xsl:when test="@xml:lang">
+						<xsl:value-of select="@xml:lang"/>
+					</xsl:when>
+					<xsl:when test="$product.locale and product.locale != ''">
+						<xsl:value-of select="$product.locale"/>
+					</xsl:when>
+					<xsl:otherwise>
+						<xsl:text>en-US</xsl:text>
+					</xsl:otherwise>
+				</xsl:choose>
+			</xsl:attribute>
+		</meta>
+
+		<!-- This is the unique ID for this page -->
+		<meta name="Microsoft.Help.Id">
+			<xsl:attribute name="content">
+				<xsl:call-template name="hv1.toc.id"/>
+			</xsl:attribute>
+		</meta>
+
+		<!-- The ID of the parent TOC node (-1 is root) -->
+		<meta name="Microsoft.Help.TocParent">
+			<xsl:attribute name="content">
+				<xsl:call-template name="hv1.toc.parent.id">
+					<xsl:with-param name="up" select="$up"/>
+				</xsl:call-template>
+			</xsl:attribute>
+		</meta>
+
+		<!-- For all pages with the same parent, the order is set by TocOrder -->
+		<meta name="Microsoft.Help.TocOrder">
+			<xsl:attribute name="content">
+				<xsl:value-of select="1+count(preceding-sibling::chapter|preceding-sibling::section)"/>
+			</xsl:attribute>
+		</meta>
+
+		<!-- boolean to indicate if this page is allowed to load custom branding -->
+		<meta name="Microsoft.Help.SelfBranded">
+			<xsl:attribute name="content">
+				<xsl:choose>
+					<xsl:when test="$topic.selfbrand">
+						<xsl:text>true</xsl:text>
+					</xsl:when>
+					<xsl:otherwise>
+						<xsl:text>false</xsl:text>
+					</xsl:otherwise>
+				</xsl:choose>
+			</xsl:attribute>
+		</meta>
+
+		<!--
+			Insert description meta element. This is shown in searches and indexes
+		-->
+
+		<xsl:variable name="description">
+			<xsl:call-template name="hv1.description"/>
+		</xsl:variable>
+		<xsl:if test="$description != ''">
+			<meta name="Description">
+				<xsl:attribute name="content">
+					<xsl:call-template name="hv1.description"/>
+				</xsl:attribute>
+			</meta>
+		</xsl:if>
+
+		<!-- Display version of page -->
+		<xsl:variable name="display.version">
+			<xsl:call-template name="hv1.display.version"/>
+		</xsl:variable>
+		<xsl:if test="$display.version != ''">
+			<meta name="Microsoft.Help.DisplayVersion">
+				<xsl:attribute name="content">
+					<xsl:value-of select="$display.version"/>
+				</xsl:attribute>
+			</meta>
+		</xsl:if>
+
+		<!--
+			Content type is used to distinguish between multiple topics with same id.
+			Usualy to have multiple versions available
+		-->
+		<!--
+		<meta name="Microsoft.Help.ContentType">
+			<xsl:attribute name="content">
+				TODO: implement
+			</xsl:attribute>
+		</meta>
+		-->
+
+
+		<!-- If a product name is given, then mark each header with this name-->
+		<xsl:if test="$product.name and $product.name != ''">
+			<meta name="Microsoft.Help.Product">
+				<xsl:attribute name="content">
+					<xsl:value-of select="$product.name"/>
+				</xsl:attribute>
+			</meta>
+		</xsl:if>
+
+		<!-- If a version is given, then mark each header with version-->
+		<xsl:if test="$product.version and $product.version != ''">
+			<meta name="Microsoft.Help.ProductVersion">
+				<xsl:attribute name="content">
+					<xsl:value-of select="$product.version"/>
+				</xsl:attribute>
+			</meta>
+		</xsl:if>
+
+		<!--
+			Insert all keywords for this chunk. These are used
+			by the help runtime to generate indexes and refine search
+		-->
+		<xsl:call-template name="hv1.keywords" />
+
+		<!--
+			Insert all F1 ids for this chunk. This is used
+			by the help runtime to resolve F1 queries
+		-->
+		<xsl:call-template name="hv1.f1" />
+	</xsl:template>
+
+
+	<!-- There are links from ToC pane to bibliodivs, so there must be anchor -->
+	<xsl:template match="bibliodiv/title">
+		<h3 class="{name(.)}">
+			<xsl:call-template name="anchor">
+				<xsl:with-param name="node" select=".."/>
+				<xsl:with-param name="conditional" select="0"/>
+			</xsl:call-template>
+			<xsl:apply-templates/>
+		</h3>
+	</xsl:template>
+
+	<!--
+		Template to get a page id.
+
+		Needs to be unique in the target help system; microsoft uses UUIDs for this.
+		To avoid UUIDs and generate-id (only unique in current xml fragment),
+		we do
+			<root.filename> +
+				<last ancestor title> +
+					<second last ancestor title> +
+						....
+						<self title>, 	where different types of sections/fragments
+											may be prefixed with a type identifier.
+
+		This should generate a fairly specific/unique ID.
+		-->
+	<xsl:template name="get.id.from.pagename">
+		<xsl:param name="target" />
+		<xsl:value-of select="$root.filename"/>
+		<xsl:variable name="id.of.document">
+			<xsl:apply-templates select="$target" mode="recursive-chunk-id"/>
+		</xsl:variable>
+		<xsl:variable name="titleWithSpace">
+			<xsl:value-of select="key('id',$id.of.document)/title"/>
+		</xsl:variable>
+		<xsl:value-of select="translate($id.of.document,' ','')" />
+	</xsl:template>
+
+	<!-- template that returns the page id used above -->
+	<xsl:template match="*" mode="recursive-chunk-id">
+		<xsl:param name="recursive" select="false()"/>
+
+		<!-- returns the filename of a chunk -->
+		<xsl:variable name="ischunk">
+			<xsl:call-template name="chunk"/>
+		</xsl:variable>
+
+		<xsl:variable name="dbhtml-filename">
+			<xsl:call-template name="pi.dbhtml_filename"/>
+		</xsl:variable>
+
+		<xsl:variable name="filename">
+			<xsl:choose>
+				<xsl:when test="$dbhtml-filename != ''">
+					<xsl:value-of select="$dbhtml-filename"/>
+				</xsl:when>
+				<!-- if this is the root element, use the root.filename -->
+				<xsl:when test="not(parent::*) and $root.filename != ''">
+					<xsl:value-of select="$root.filename"/>
+					<!-- <xsl:value-of select="$html.ext"/> -->
+				</xsl:when>
+				<!-- Special case -->
+				<xsl:when test="self::legalnotice and not($generate.legalnotice.link = 0)">
+					<xsl:choose>
+						<xsl:when test="(@id or @xml:id) and not($use.id.as.filename = 0)">
+							<!-- * if this legalnotice has an ID, then go ahead and use -->
+							<!-- * just the value of that ID as the basename for the file -->
+							<!-- * (that is, without prepending an "ln-" too it) -->
+							<xsl:value-of select="(@id|@xml:id)[1]"/>
+							<!-- <xsl:value-of select="$html.ext"/>-->
+						</xsl:when>
+						<xsl:otherwise>
+							<!-- * otherwise, if this legalnotice does not have an ID, -->
+							<!-- * then we generate an ID... -->
+							<xsl:variable name="id">
+								<xsl:call-template name="object.id"/>
+							</xsl:variable>
+							<!-- * ...and then we take that generated ID, prepend an -->
+							<!-- * "ln-" to it, and use that as the basename for the file -->
+							<!-- <xsl:value-of select="concat('ln-',$id,$html.ext)"/>-->
+						</xsl:otherwise>
+					</xsl:choose>
+				</xsl:when>
+				<!-- if there's no dbhtml filename, and if we're to use IDs as -->
+				<!-- filenames, then use the ID to generate the filename. -->
+				<xsl:when test="(@id or @xml:id) and $use.id.as.filename != 0">
+					<xsl:value-of select="(@id|@xml:id)[1]"/>
+					<!-- <xsl:value-of select="$html.ext"/>-->
+				</xsl:when>
+				<xsl:otherwise/>
+			</xsl:choose>
+		</xsl:variable>
+
+		<xsl:choose>
+			<xsl:when test="$ischunk='0'">
+				<!-- if called on something that isn't a chunk, walk up... -->
+				<xsl:choose>
+					<xsl:when test="count(parent::*)&gt;0">
+						<xsl:apply-templates mode="recursive-chunk-id" select="parent::*">
+							<xsl:with-param name="recursive" select="$recursive"/>
+						</xsl:apply-templates>
+					</xsl:when>
+					<!-- unless there is no up, in which case return "" -->
+					<xsl:otherwise/>
+				</xsl:choose>
+			</xsl:when>
+
+			<xsl:when test="not($recursive) and $filename != ''">
+				<!-- if this chunk has an explicit name, use it -->
+				<xsl:value-of select="$filename"/>
+			</xsl:when>
+
+			<xsl:when test="self::set">
+				<xsl:value-of select="$root.filename"/>
+			</xsl:when>
+
+			<xsl:when test="self::book">
+				<xsl:text>bk</xsl:text>
+				<xsl:number level="any" format="01"/>
+			</xsl:when>
+
+			<xsl:when test="self::article">
+				<xsl:if test="/set">
+					<!-- in a set, make sure we inherit the right book info... -->
+					<xsl:apply-templates mode="recursive-chunk-id" select="parent::*">
+						<xsl:with-param name="recursive" select="true()"/>
+					</xsl:apply-templates>
+				</xsl:if>
+
+				<xsl:text>ar</xsl:text>
+				<xsl:number level="any" format="01" from="book"/>
+			</xsl:when>
+
+			<xsl:when test="self::preface">
+				<xsl:if test="/set">
+					<!-- in a set, make sure we inherit the right book info... -->
+					<xsl:apply-templates mode="recursive-chunk-id" select="parent::*">
+						<xsl:with-param name="recursive" select="true()"/>
+					</xsl:apply-templates>
+				</xsl:if>
+
+				<xsl:text>pr</xsl:text>
+				<xsl:number level="any" format="01" from="book"/>
+			</xsl:when>
+
+			<xsl:when test="self::chapter">
+				<xsl:if test="/set">
+					<!-- in a set, make sure we inherit the right book info... -->
+					<xsl:apply-templates mode="recursive-chunk-id" select="parent::*">
+						<xsl:with-param name="recursive" select="true()"/>
+					</xsl:apply-templates>
+				</xsl:if>
+
+				<xsl:text>ch</xsl:text>
+				<xsl:number level="any" format="01" from="book"/>
+			</xsl:when>
+
+			<xsl:when test="self::appendix">
+				<xsl:if test="/set">
+					<!-- in a set, make sure we inherit the right book info... -->
+					<xsl:apply-templates mode="recursive-chunk-id" select="parent::*">
+						<xsl:with-param name="recursive" select="true()"/>
+					</xsl:apply-templates>
+				</xsl:if>
+
+				<xsl:text>ap</xsl:text>
+				<xsl:number level="any" format="a" from="book"/>
+			</xsl:when>
+
+			<xsl:when test="self::part">
+				<xsl:choose>
+					<xsl:when test="/set">
+						<!-- in a set, make sure we inherit the right book info... -->
+						<xsl:apply-templates mode="recursive-chunk-id" select="parent::*">
+							<xsl:with-param name="recursive" select="true()"/>
+						</xsl:apply-templates>
+					</xsl:when>
+					<xsl:otherwise>
+					</xsl:otherwise>
+				</xsl:choose>
+
+				<xsl:text>pt</xsl:text>
+				<xsl:number level="any" format="01" from="book"/>
+			</xsl:when>
+
+			<xsl:when test="self::reference">
+				<xsl:choose>
+					<xsl:when test="/set">
+						<!-- in a set, make sure we inherit the right book info... -->
+						<xsl:apply-templates mode="recursive-chunk-id" select="parent::*">
+							<xsl:with-param name="recursive" select="true()"/>
+						</xsl:apply-templates>
+					</xsl:when>
+					<xsl:otherwise>
+					</xsl:otherwise>
+				</xsl:choose>
+
+				<xsl:text>rn</xsl:text>
+				<xsl:number level="any" format="01" from="book"/>
+			</xsl:when>
+
+			<xsl:when test="self::refentry">
+				<xsl:choose>
+					<xsl:when test="parent::reference">
+						<xsl:apply-templates mode="recursive-chunk-id" select="parent::*">
+							<xsl:with-param name="recursive" select="true()"/>
+						</xsl:apply-templates>
+					</xsl:when>
+					<xsl:otherwise>
+					</xsl:otherwise>
+				</xsl:choose>
+
+				<xsl:text>re</xsl:text>
+				<xsl:number level="any" format="01" from="book"/>
+			</xsl:when>
+
+			<xsl:when test="self::colophon">
+				<xsl:choose>
+					<xsl:when test="/set">
+						<!-- in a set, make sure we inherit the right book info... -->
+						<xsl:apply-templates mode="recursive-chunk-id" select="parent::*">
+							<xsl:with-param name="recursive" select="true()"/>
+						</xsl:apply-templates>
+					</xsl:when>
+					<xsl:otherwise>
+					</xsl:otherwise>
+				</xsl:choose>
+
+				<xsl:text>co</xsl:text>
+				<xsl:number level="any" format="01" from="book"/>
+			</xsl:when>
+
+			<xsl:when test="self::sect1
+									or self::sect2
+									or self::sect3
+									or self::sect4
+									or self::sect5
+									or self::section">
+				<xsl:apply-templates mode="recursive-chunk-id" select="parent::*">
+					<xsl:with-param name="recursive" select="true()"/>
+				</xsl:apply-templates>
+				<xsl:text>s</xsl:text>
+				<xsl:number format="01"/>
+			</xsl:when>
+
+			<xsl:when test="self::bibliography">
+				<xsl:choose>
+					<xsl:when test="/set">
+						<!-- in a set, make sure we inherit the right book info... -->
+						<xsl:apply-templates mode="recursive-chunk-id" select="parent::*">
+							<xsl:with-param name="recursive" select="true()"/>
+						</xsl:apply-templates>
+					</xsl:when>
+					<xsl:otherwise>
+					</xsl:otherwise>
+				</xsl:choose>
+
+				<xsl:text>bi</xsl:text>
+				<xsl:number level="any" format="01" from="book"/>
+			</xsl:when>
+
+			<xsl:when test="self::glossary">
+				<xsl:choose>
+					<xsl:when test="/set">
+						<!-- in a set, make sure we inherit the right book info... -->
+						<xsl:apply-templates mode="recursive-chunk-id" select="parent::*">
+							<xsl:with-param name="recursive" select="true()"/>
+						</xsl:apply-templates>
+					</xsl:when>
+					<xsl:otherwise>
+					</xsl:otherwise>
+				</xsl:choose>
+
+				<xsl:text>go</xsl:text>
+				<xsl:number level="any" format="01" from="book"/>
+			</xsl:when>
+
+			<xsl:when test="self::index">
+				<xsl:choose>
+					<xsl:when test="/set">
+						<!-- in a set, make sure we inherit the right book info... -->
+						<xsl:apply-templates mode="recursive-chunk-id" select="parent::*">
+							<xsl:with-param name="recursive" select="true()"/>
+						</xsl:apply-templates>
+					</xsl:when>
+					<xsl:otherwise>
+					</xsl:otherwise>
+				</xsl:choose>
+
+				<xsl:text>ix</xsl:text>
+				<xsl:number level="any" format="01" from="book"/>
+			</xsl:when>
+
+			<xsl:when test="self::setindex">
+				<xsl:text>si</xsl:text>
+				<xsl:number level="any" format="01" from="set"/>
+			</xsl:when>
+
+			<xsl:otherwise>
+				<xsl:text>chunk-filename-error-</xsl:text>
+				<xsl:value-of select="name(.)"/>
+				<xsl:number level="any" format="01" from="set"/>
+			</xsl:otherwise>
+		</xsl:choose>
+	</xsl:template>
+
+	<!-- Main template that generates internal links -->
+	<xsl:template name="href.target">
+		<xsl:param name="context" select="."/>
+		<xsl:param name="object" select="."/>
+		<xsl:param name="toc-context" select="."/>
+
+		<xsl:variable name="id">
+			<xsl:call-template name="get.id.from.pagename">
+				<xsl:with-param name="target" select="$object"/>
+			</xsl:call-template>
+		</xsl:variable>
+
+		<xsl:variable name="href">
+			<xsl:choose>
+				<xsl:when test="$use.mshelp.links">
+					<!-- Generate a ms.help type link-->
+					<xsl:if test="$product.name = ''">
+						<xsl:message terminate="yes">
+							$product.name needs to be set to generate ms.help style links
+						</xsl:message>
+					</xsl:if>
+					<xsl:if test="$product.version = ''">
+						<xsl:message terminate="yes">
+							$product.version needs to be set to generate ms.help style links
+						</xsl:message>
+					</xsl:if>
+					<xsl:if test="$product.locale = ''">
+						<xsl:message terminate="yes">
+							$product.locale needs to be set to generate ms.help style links
+						</xsl:message>
+					</xsl:if>
+
+					<xsl:text>ms.help?method=page&amp;id=</xsl:text>
+					<xsl:value-of select="$id"/>
+					<xsl:text>&amp;product=</xsl:text>
+					<xsl:value-of select="$product.name"/>
+					<xsl:text>&amp;productVersion=</xsl:text>
+					<xsl:value-of select="$product.version"/>
+					<xsl:text>&amp;locale=</xsl:text>
+					<xsl:value-of select="$product.locale"/>
+					<!-- Append the jump id if the current object has an id-->
+					<xsl:if test="$object[@id or @xml:id]">
+						<xsl:text>#</xsl:text>
+						<xsl:value-of select="$object/@id|$object/@xml:id"/>
+					</xsl:if>
+				</xsl:when>
+				<xsl:otherwise>
+					<!-- Generate ms-xhelp type links. Default-->
+					<xsl:text>ms-xhelp:///?Id=</xsl:text>
+					<xsl:value-of select="$id"/>
+				</xsl:otherwise>
+			</xsl:choose>
+		</xsl:variable>
+		<xsl:value-of select="$href"/>
+	</xsl:template>
+
+	<xsl:template match="*" mode="common.html.attributes">
+		<xsl:param name="class" select="local-name(.)"/>
+		<xsl:param name="inherit" select="0"/>
+
+		<!--
+			Workaround for known issue with HelpLibAgent
+			Comment from Bruce Belson:
+			<pre> tags get their whitespace mangled by the Help Library Agent,
+			unless the non-standard attribute xml:space="preserve" is added to the pre element.
+		-->
+		<xsl:if test="$class = 'programlisting' or $class = 'verbatim' or $class = 'litterallayout' or $class = 'screen'">
+			<xsl:attribute name="xml:space">preserve</xsl:attribute>
+		</xsl:if>
+
+		<xsl:call-template name="generate.html.lang"/>
+		<xsl:call-template name="dir">
+			<xsl:with-param name="inherit" select="$inherit"/>
+		</xsl:call-template>
+		<xsl:apply-templates select="." mode="class.attribute">
+			<xsl:with-param name="class" select="$class"/>
+		</xsl:apply-templates>
+	</xsl:template>
+
+
+	<xsl:template name="hv1.display.version">
+		<xsl:apply-templates mode="title.markup" select="ancestor-or-self::book"/>
+		<xsl:if test="ancestor-or-self::chapter">
+			<xsl:text> - </xsl:text>
+			<xsl:apply-templates mode="title.markup" select="ancestor-or-self::chapter"/>
+		</xsl:if>
+	</xsl:template>
+
+
+	<!-- Generate a meta element for each keyword in chunk -->
+	<xsl:template name="hv1.keywords">
+		<xsl:variable name="is.chunk">
+			<xsl:call-template name="chunk">
+				<xsl:with-param name="node" select="."/>
+			</xsl:call-template>
+		</xsl:variable>
+
+		<xsl:for-each select=".//indexterm[$is.chunk = '0'] |
+			(./indexterm | *[not(self::section or self::preface or self::book or self::chapter)]//indexterm)[$is.chunk = '1']">
+			<xsl:choose>
+				<xsl:when test="primary != ''">
+					<meta name="Microsoft.Help.Keywords">
+						<xsl:attribute name="content">
+							<xsl:choose>
+								<!-- This concats the primary and secondary togheter, separated by colon if there exists
+								a tertiary element -->
+								<xsl:when test="tertiary">
+									<xsl:value-of select="primary/text()" />
+									<xsl:text>: </xsl:text>
+									<xsl:value-of select="secondary/text()" />
+									<xsl:text>, </xsl:text>
+									<xsl:value-of select="tertiary/text()" />
+								</xsl:when>
+
+								<xsl:otherwise>
+									<xsl:for-each select="primary/text() | secondary/text()">
+										<xsl:value-of select="." />
+										<xsl:if test="not(position() = last())">, </xsl:if>
+									</xsl:for-each>
+								</xsl:otherwise>
+							</xsl:choose>
+						</xsl:attribute>
+					</meta>
+				</xsl:when>
+				<xsl:otherwise/>
+			</xsl:choose>
+		</xsl:for-each>
+	</xsl:template>
+
+	<!-- Generate a F1 meta element for each indexterm with an ID (used as F1 id) -->
+	<xsl:template name="hv1.f1">
+		<xsl:variable name="is.chunk">
+			<xsl:call-template name="chunk">
+				<xsl:with-param name="node" select="."/>
+			</xsl:call-template>
+		</xsl:variable>
+
+		<xsl:variable name="id">
+			<xsl:call-template name="hv1.toc.id"/>
+		</xsl:variable>
+
+		<xsl:for-each select=".//indexterm[$is.chunk = '0'] |
+			(./indexterm | *[not(self::section or self::preface or self::book or self::chapter)]//indexterm)[$is.chunk = '1']">
+			<xsl:if test="@id|@xml:id">
+				<meta name="Microsoft.Help.F1">
+					<xsl:attribute name="content">
+						<xsl:value-of select="(@id|@xml:id)[1]" />
+					</xsl:attribute>
+				</meta>
+			</xsl:if>
+		</xsl:for-each>
+	</xsl:template>
+
+	<!-- ID used for to resolution. Using default ID -->
+	<xsl:template name="hv1.toc.id">
+		<xsl:variable name="href">
+			<xsl:call-template name="get.id.from.pagename">
+				<xsl:with-param name="target" select="."/>
+			</xsl:call-template>
+		</xsl:variable>
+		<xsl:value-of select="$href"/>
+	</xsl:template>
+
+	<!-- Determine parent id (if top level -> -1) -->
+	<xsl:template name="hv1.toc.parent.id">
+		<xsl:param name="up" select="''"/>
+		<xsl:variable name="href">
+			<xsl:choose>
+				<xsl:when test="$up">
+					<!-- I have a parent -->
+					<xsl:call-template name="get.id.from.pagename">
+						<xsl:with-param name="target" select="$up"/>
+					</xsl:call-template>
+				</xsl:when>
+				<xsl:otherwise>
+					<xsl:text>-1</xsl:text>
+				</xsl:otherwise>
+			</xsl:choose>
+		</xsl:variable>
+		<xsl:value-of select="$href"/>
+	</xsl:template>
+
+	<xsl:template name="hv1.description">
+		<xsl:variable name="content">
+			<xsl:choose>
+				<xsl:when test="abstract|d:abstract|d:info/d:abstract|bookinfo/abstract|sectioninfo/abstract|articleinfo/abstract|partinfo/abstract">
+					<xsl:value-of select="(abstract|d:abstract|d:info/d:abstract|bookinfo/abstract|sectioninfo/abstract|articleinfo/abstract|partinfo/abstract)[1]"/>
+				</xsl:when>
+				<xsl:when test="child::para">
+					<xsl:value-of select="substring(normalize-space(child::para[1]), 0, 150)"/>
+				</xsl:when>
+				<xsl:otherwise/>
+			</xsl:choose>
+		</xsl:variable>
+		<xsl:if test="$content != ''">
+			<xsl:value-of select="concat($content, '...')"/>
+		</xsl:if>
+	</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/lib/lufa/LUFA/StudioIntegration/Docbook/placeholder.txt b/lib/lufa/LUFA/StudioIntegration/Docbook/placeholder.txt
new file mode 100644
index 0000000000..c017acfd75
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/Docbook/placeholder.txt
@@ -0,0 +1 @@
+Copy the Docbook XSLT docbook-xsl-1.78.1 release contents into this directory (i.e. with the root Docbook files in the current folder). The Docbook releases can be found at http://sourceforge.net/projects/docbook/files/docbook-xsl/ .

diff --git a/lib/lufa/LUFA/StudioIntegration/HV1/helpcontentsetup.msha b/lib/lufa/LUFA/StudioIntegration/HV1/helpcontentsetup.msha
new file mode 100644
index 0000000000..bd1d7ee219
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/HV1/helpcontentsetup.msha
@@ -0,0 +1,27 @@
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<title>LUFA Help</title>
+	</head>
+	<body class="vendor-book">
+		<div class="details">
+			<span class="vendor">FourWalledCubicle</span>
+			<span class="product">LUFA</span>
+			<span class="name">LUFA Help</span>
+			<span class="locale">en-us</span>
+		</div>
+		<div class="package-list">
+			<div class="package">
+				<span class="name">lufa_studio_help.mshc</span>
+				<a class="current-link" href="lufa_studio_help.mshc">lufa_studio_help.mshc</a>
+			</div>
+		</div>
+	</body>
+</html>
diff --git a/lib/lufa/LUFA/StudioIntegration/HV1/lufa_docbook_transform.xslt b/lib/lufa/LUFA/StudioIntegration/HV1/lufa_docbook_transform.xslt
new file mode 100644
index 0000000000..26c1d378e2
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/HV1/lufa_docbook_transform.xslt
@@ -0,0 +1,806 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+	<xsl:output method="xml" indent="no"/>
+
+	<xsl:template name="generate.book.title">
+		<xsl:text>LUFA Library</xsl:text>
+	</xsl:template>
+
+	<xsl:template name="generate.book.id">
+		<xsl:param name="book.title"/>
+		<xsl:choose>
+			<xsl:when test="@id">
+				<xsl:value-of select="@id"/>
+			</xsl:when>
+			<xsl:otherwise>
+				<xsl:value-of select="translate($book.title, ' ','')"/>
+			</xsl:otherwise>
+		</xsl:choose>
+	</xsl:template>
+
+	<xsl:template name="generate.index.id">
+		<xsl:param name="name"/>
+		<xsl:variable name="book.title">
+			<xsl:call-template name="generate.book.title"/>
+		</xsl:variable>
+		<xsl:variable name="book.id">
+			<xsl:call-template name="generate.book.id">
+				<xsl:with-param name="book.title" select="$book.title"/>
+			</xsl:call-template>
+		</xsl:variable>
+
+		<indexterm id="{$name}">
+			<primary>
+				<xsl:value-of select="$book.title"/>
+			</primary>
+			<secondary>
+				<xsl:value-of select="$name"/>
+			</secondary>
+		</indexterm>
+	</xsl:template>
+
+	<xsl:template match="doxygen">
+		<xsl:variable name="book.title">
+			<xsl:call-template name="generate.book.title"/>
+		</xsl:variable>
+
+		<xsl:variable name="book.id">
+			<xsl:call-template name="generate.book.id">
+				<xsl:with-param name="book.title" select="$book.title"/>
+			</xsl:call-template>
+		</xsl:variable>
+
+		<book id="{$book.id}">
+			<title>
+				<xsl:value-of select="$book.title"/>
+			</title>
+
+			<!-- Add index chapter -->
+			<xsl:apply-templates select="compounddef[@kind = 'page' and @id = 'indexpage']">
+				<xsl:with-param name="element.type" select="'chapter'"/>
+				<xsl:with-param name="page.title"   select="'Library Information'"/>
+			</xsl:apply-templates>
+
+			<!-- Add free-floating chapters -->
+			<xsl:apply-templates select="compounddef[@kind = 'page' and not(@id = 'indexpage') and not(//innerpage/@refid = @id)]">
+				<xsl:with-param name="element.type" select="'chapter'"/>
+			</xsl:apply-templates>
+
+			<!-- Add Modules chapter -->
+			<chapter>
+				<title>Modules</title>
+				<xsl:apply-templates select="compounddef[@kind = 'group' and not(//innergroup/@refid = @id)]"/>
+			</chapter>
+		</book>
+	</xsl:template>
+
+	<xsl:template match="compounddef[@kind = 'page']">
+		<xsl:param name="element.type" select="'section'"/>
+		<xsl:param name="page.title"   select="title"/>
+
+		<xsl:element name="{$element.type}">
+			<xsl:attribute name="id">
+				<xsl:value-of select="@id"/>
+			</xsl:attribute>
+
+			<xsl:variable name="name">
+				<xsl:text>LUFA.</xsl:text>
+				<xsl:value-of select="translate(compoundname, '_', '.')"/>
+			</xsl:variable>
+
+			<xsl:call-template name="generate.index.id">
+				<xsl:with-param name="name" select="$name"/>
+			</xsl:call-template>
+
+			<title>
+				<xsl:value-of select="$page.title"/>
+			</title>
+
+			<xsl:apply-templates select="detaileddescription"/>
+
+			<xsl:if test="not(innerpage) and count(detaileddescription//sect1)">
+				<para>
+					<emphasis role="bold">Subsections:</emphasis>
+					<itemizedlist>
+						<xsl:for-each select="detaileddescription//sect1">
+							<listitem>
+								<link linkend="{@id}">
+									<xsl:value-of select="title"/>
+								</link>
+							</listitem>
+						</xsl:for-each>
+					</itemizedlist>
+				</para>
+			</xsl:if>
+
+			<xsl:for-each select="innerpage">
+				<xsl:apply-templates select="ancestor::*/compounddef[@kind = 'page' and @id = current()/@refid]"/>
+			</xsl:for-each>
+		</xsl:element>
+	</xsl:template>
+
+	<xsl:template match="compounddef[@kind = 'group']">
+		<section id="{@id}">
+			<title>
+				<xsl:value-of select="title"/>
+			</title>
+
+			<xsl:variable name="name">
+				<xsl:text>LUFA.</xsl:text>
+				<xsl:value-of select="translate(compoundname, '_', '.')"/>
+			</xsl:variable>
+
+			<xsl:call-template name="generate.index.id">
+				<xsl:with-param name="name" select="$name"/>
+			</xsl:call-template>
+
+			<xsl:apply-templates select="detaileddescription"/>
+
+			<xsl:if test="count(innergroup)">
+				<para>
+					<emphasis role="bold">Subgroups:</emphasis>
+					<itemizedlist>
+						<xsl:for-each select="innergroup">
+							<listitem>
+								<link linkend="{@refid}">
+									<xsl:value-of select="text()"/>
+								</link>
+							</listitem>
+						</xsl:for-each>
+					</itemizedlist>
+				</para>
+			</xsl:if>
+
+			<xsl:apply-templates select="sectiondef"/>
+
+			<xsl:for-each select="innerclass">
+				<xsl:apply-templates select="ancestor::*/compounddef[@id = current()/@refid]"/>
+			</xsl:for-each>
+
+			<xsl:for-each select="innergroup">
+				<xsl:apply-templates select="ancestor::*/compounddef[@kind = 'group' and @id = current()/@refid]"/>
+			</xsl:for-each>
+		</section>
+	</xsl:template>
+
+	<xsl:template match="compounddef[@kind = 'struct' or @kind = 'union']">
+		<xsl:variable name="name" select="compoundname"/>
+
+		<section id="{@id}" xreflabel="{$name}">
+			<title>
+				<xsl:choose>
+					<xsl:when test="@kind = 'struct'">
+						<xsl:text>Struct </xsl:text>
+					</xsl:when>
+
+					<xsl:when test="@kind = 'union'">
+						<xsl:text>Union </xsl:text>
+					</xsl:when>
+				</xsl:choose>
+
+				<xsl:value-of select="$name"/>
+			</title>
+
+			<xsl:call-template name="generate.index.id">
+				<xsl:with-param name="name" select="$name"/>
+			</xsl:call-template>
+
+			<xsl:apply-templates select="detaileddescription"/>
+
+			<xsl:for-each select="sectiondef[@kind = 'public-attrib']">
+				<table>
+					<title>
+						<xsl:value-of select="$name"/>
+					</title>
+
+					<tgroup cols="3">
+						<thead>
+							<row>
+								<entry>Type</entry>
+								<entry>Name</entry>
+								<entry>Description</entry>
+							</row>
+						</thead>
+
+						<tbody>
+							<xsl:for-each select="memberdef">
+								<row id="{@id}" xreflabel="{name}">
+									<entry>
+										<xsl:value-of select="type"/>
+									</entry>
+									<entry>
+										<xsl:value-of select="name"/>
+										<xsl:if test="starts-with(argsstring, '[')">
+											<xsl:text>[]</xsl:text>
+										</xsl:if>
+
+										<xsl:variable name="struct.element.name">
+											<xsl:value-of select="$name"/>
+											<xsl:text>.</xsl:text>
+											<xsl:value-of select="name"/>
+										</xsl:variable>
+
+										<xsl:call-template name="generate.index.id">
+											<xsl:with-param name="name" select="$struct.element.name"/>
+										</xsl:call-template>
+									</entry>
+									<entry>
+										<xsl:apply-templates select="detaileddescription"/>
+									</entry>
+								</row>
+							</xsl:for-each>
+						</tbody>
+					</tgroup>
+				</table>
+			</xsl:for-each>
+		</section>
+	</xsl:template>
+
+	<xsl:template match="memberdef[@kind = 'function']">
+		<section id="{@id}" xreflabel="{name}">
+			<title>
+				<xsl:text>Function </xsl:text>
+				<xsl:value-of select="name"/>
+				<xsl:text>()</xsl:text>
+			</title>
+
+			<xsl:call-template name="generate.index.id">
+				<xsl:with-param name="name" select="name"/>
+			</xsl:call-template>
+
+			<para>
+				<emphasis role="italic">
+					<xsl:value-of select="briefdescription"/>
+				</emphasis>
+			</para>
+
+			<programlisting language="c">
+				<emphasis role="keyword">
+					<xsl:value-of select="type"/>
+				</emphasis>
+				<xsl:text> </xsl:text>
+				<xsl:value-of select="name"/>
+				<xsl:text>(</xsl:text>
+
+				<xsl:choose>
+					<xsl:when test="not(param[1]/declname)">
+						<emphasis role="keyword">void</emphasis>
+					</xsl:when>
+
+					<xsl:otherwise>
+						<xsl:for-each select="param">
+							<xsl:if test="position() > 1">
+								<xsl:text>,</xsl:text>
+							</xsl:if>
+							<xsl:text>&#10;&#9;</xsl:text>
+							<emphasis role="keyword">
+								<xsl:value-of select="type"/>
+							</emphasis>
+							<xsl:text> </xsl:text>
+							<xsl:value-of select="declname"/>
+						</xsl:for-each>
+					</xsl:otherwise>
+				</xsl:choose>
+
+				<xsl:text>)</xsl:text>
+			</programlisting>
+
+			<xsl:apply-templates select="detaileddescription"/>
+		</section>
+	</xsl:template>
+
+	<xsl:template match="memberdef[@kind = 'enum']">
+		<section id="{@id}" xreflabel="{name}">
+			<title>
+				<xsl:text>Enum </xsl:text>
+				<xsl:value-of select="name"/>
+			</title>
+
+			<xsl:call-template name="generate.index.id">
+				<xsl:with-param name="name" select="name"/>
+			</xsl:call-template>
+
+			<xsl:apply-templates select="detaileddescription"/>
+
+			<table>
+				<title>Members</title>
+				<tgroup cols="2">
+					<thead>
+						<row>
+							<entry>Enum Value</entry>
+							<entry>Description</entry>
+						</row>
+					</thead>
+
+					<tbody>
+						<xsl:for-each select="enumvalue">
+							<row>
+								<entry>
+									<para id="{@id}" xreflabel="{name}">
+										<xsl:value-of select="name"/>
+
+										<xsl:call-template name="generate.index.id">
+											<xsl:with-param name="name" select="name"/>
+										</xsl:call-template>
+									</para>
+								</entry>
+								<entry>
+									<xsl:apply-templates select="detaileddescription"/>
+								</entry>
+							</row>
+						</xsl:for-each>
+					</tbody>
+				</tgroup>
+			</table>
+		</section>
+	</xsl:template>
+
+	<xsl:template match="memberdef[@kind = 'define']">
+		<section id="{@id}" xreflabel="{name}">
+			<title>
+				<xsl:text>Macro </xsl:text>
+				<xsl:value-of select="name"/>
+			</title>
+
+			<xsl:call-template name="generate.index.id">
+				<xsl:with-param name="name" select="name"/>
+			</xsl:call-template>
+
+			<programlisting language="c">
+				<emphasis role="preprocessor">
+					<xsl:text>#define </xsl:text>
+					<xsl:value-of select="name"/>
+					<xsl:if test="count(param) > 0">
+						<xsl:text>(</xsl:text>
+						<xsl:for-each select="param/defname">
+							<xsl:if test="position() > 1">
+								<xsl:text>,</xsl:text>
+							</xsl:if>
+							<xsl:value-of select="."/>
+						</xsl:for-each>
+						<xsl:text>)</xsl:text>
+					</xsl:if>
+					<xsl:text> </xsl:text>
+
+					<!-- Split long macro definitions across multiple lines -->
+					<xsl:if test="(string-length(initializer) > 50) or (count(param) > 0)">
+						<xsl:text>\&#10;&#9;</xsl:text>
+					</xsl:if>
+
+					<xsl:value-of select="initializer"/>
+				</emphasis>
+				<xsl:text> </xsl:text>
+			</programlisting>
+
+			<xsl:apply-templates select="detaileddescription"/>
+		</section>
+	</xsl:template>
+
+	<xsl:template match="memberdef[@kind = 'typedef']">
+		<section id="{@id}" xreflabel="{name}">
+			<title>
+				<xsl:text>Type </xsl:text>
+				<xsl:value-of select="name"/>
+			</title>
+
+			<xsl:call-template name="generate.index.id">
+				<xsl:with-param name="name" select="name"/>
+			</xsl:call-template>
+
+			<programlisting language="c">
+				<emphasis role="keyword">
+					<xsl:text>typedef </xsl:text>
+					<xsl:value-of select="type"/>
+				</emphasis>
+				<xsl:text> </xsl:text>
+				<xsl:value-of select="name"/>
+				<xsl:text> </xsl:text>
+				<xsl:value-of select="argsstring"/>
+			</programlisting>
+
+			<xsl:apply-templates select="detaileddescription"/>
+		</section>
+	</xsl:template>
+
+
+	<xsl:template match="memberdef[@kind = 'variable']">
+		<section id="{@id}" xreflabel="{name}">
+			<title>
+				<xsl:text>Variable </xsl:text>
+				<xsl:value-of select="name"/>
+			</title>
+
+			<xsl:call-template name="generate.index.id">
+				<xsl:with-param name="name" select="name"/>
+			</xsl:call-template>
+
+			<programlisting language="c">
+				<emphasis role="keyword">
+					<xsl:value-of select="type"/>
+				</emphasis>
+				<xsl:text> </xsl:text>
+				<xsl:value-of select="name"/>
+			</programlisting>
+
+			<xsl:apply-templates select="detaileddescription"/>
+		</section>
+	</xsl:template>
+
+	<xsl:template match="linebreak | simplesectsep">
+		<!-- MUST be on two separate lines, as this is a *literal* newline -->
+		<literallayout>
+		</literallayout>
+	</xsl:template>
+
+	<xsl:template match="verbatim">
+		<programlisting>
+			<xsl:apply-templates/>
+		</programlisting>
+	</xsl:template>
+
+	<xsl:template match="sectiondef">
+		<para>
+			<xsl:value-of select="description"/>
+		</para>
+
+		<xsl:apply-templates select="memberdef"/>
+	</xsl:template>
+
+	<xsl:template match="simplesect" mode="struct">
+		<footnote>
+			<xsl:apply-templates/>
+		</footnote>
+	</xsl:template>
+
+	<xsl:template match="simplesect">
+		<xsl:choose>
+			<xsl:when test="@kind = 'par'">
+				<note>
+					<title>
+						<xsl:value-of select="title"/>
+					</title>
+					<xsl:apply-templates/>
+				</note>
+			</xsl:when>
+
+			<xsl:when test="@kind = 'return'">
+				<note>
+					<title>Returns</title>
+					<xsl:apply-templates/>
+				</note>
+			</xsl:when>
+
+			<xsl:when test="@kind = 'warning'">
+				<warning>
+					<title>Warning</title>
+					<xsl:apply-templates/>
+				</warning>
+			</xsl:when>
+
+			<xsl:when test="@kind = 'pre'">
+				<note>
+					<title>Precondition</title>
+					<xsl:apply-templates/>
+				</note>
+			</xsl:when>
+
+			<xsl:when test="@kind = 'see'">
+				<note>
+					<title>See also</title>
+					<xsl:apply-templates/>
+				</note>
+			</xsl:when>
+
+			<xsl:when test="@kind = 'note'">
+				<note>
+					<title>Note</title>
+					<xsl:apply-templates/>
+				</note>
+			</xsl:when>
+
+		</xsl:choose>
+	</xsl:template>
+
+	<xsl:template match="parameterlist[@kind = 'param']">
+		<table>
+			<title>Parameters</title>
+			<tgroup cols="3">
+				<thead>
+					<row>
+						<entry>Data Direction</entry>
+						<entry>Parameter Name</entry>
+						<entry>Description</entry>
+					</row>
+				</thead>
+				<tbody>
+					<xsl:for-each select="parameteritem">
+						<row>
+							<xsl:apply-templates select="."/>
+						</row>
+					</xsl:for-each>
+				</tbody>
+			</tgroup>
+		</table>
+	</xsl:template>
+
+	<xsl:template match="parameterlist[@kind = 'retval']">
+		<table>
+			<title>Return Values</title>
+			<tgroup cols="2">
+				<thead>
+					<row>
+						<entry>Return Value</entry>
+						<entry>Description</entry>
+					</row>
+				</thead>
+				<tbody>
+					<xsl:for-each select="parameteritem">
+						<row>
+							<xsl:apply-templates select="."/>
+						</row>
+					</xsl:for-each>
+				</tbody>
+			</tgroup>
+		</table>
+	</xsl:template>
+
+	<xsl:template match="parameteritem">
+		<xsl:if test="parent::parameterlist/@kind = 'param'">
+			<entry>
+				<para>
+					<xsl:choose>
+						<xsl:when test="not(descendant::parametername/@direction)">
+							<emphasis role="italic">?</emphasis>
+						</xsl:when>
+
+						<xsl:otherwise>
+							<emphasis role="bold">
+								[<xsl:value-of select="descendant::parametername/@direction"/>]
+							</emphasis>
+						</xsl:otherwise>
+					</xsl:choose>
+				</para>
+			</entry>
+		</xsl:if>
+
+		<entry>
+			<para>
+				<xsl:value-of select="parameternamelist/parametername"/>
+			</para>
+		</entry>
+
+		<entry>
+			<xsl:apply-templates select="parameterdescription"/>
+		</entry>
+	</xsl:template>
+
+	<xsl:template match="parameterdescription">
+		<para>
+			<xsl:apply-templates/>
+		</para>
+	</xsl:template>
+
+	<xsl:template match="type">
+		<xsl:apply-templates/>
+	</xsl:template>
+
+	<xsl:template match="bold">
+		<emphasis role="bold">
+			<xsl:apply-templates/>
+		</emphasis>
+	</xsl:template>
+
+	<xsl:template match="emphasis">
+		<emphasis role="italic">
+			<xsl:apply-templates/>
+		</emphasis>
+	</xsl:template>
+
+	<xsl:template match="small">
+		<xsl:apply-templates/>
+	</xsl:template>
+
+	<xsl:template match="mdash | ndash">
+		<!-- Doxygen bug; double dashed are replaced with single HTML dash
+		     entities, even in verbatim-like <tt> sections -->
+		<xsl:text>--</xsl:text>
+	</xsl:template>
+
+	<xsl:template match="computeroutput | preformatted">
+		<computeroutput>
+			<xsl:apply-templates/>
+		</computeroutput>
+	</xsl:template>
+
+	<xsl:template match="codeline">
+			<xsl:apply-templates/>
+	</xsl:template>
+
+	<xsl:template match="ulink">
+		<ulink url="{@url}">
+			<xsl:value-of select="."/>
+		</ulink>
+	</xsl:template>
+
+	<xsl:template match="superscript">
+		<superscript>
+			<xsl:apply-templates/>
+		</superscript>
+	</xsl:template>
+
+	<xsl:template match="subscript">
+		<subscript>
+			<xsl:apply-templates/>
+		</subscript>
+	</xsl:template>
+
+	<xsl:template match="para">
+		<para>
+			<xsl:apply-templates/>
+		</para>
+	</xsl:template>
+
+	<xsl:template match="ref">
+		<xsl:choose>
+			<!-- Don't show links inside program listings -->
+			<xsl:when test="ancestor::programlisting">
+				<xsl:value-of select="."/>
+			</xsl:when>
+
+			<!-- Don't show links to file compound definitions, as they are discarded -->
+			<xsl:when test="ancestor::*/compounddef[@kind = 'file' and @id = current()/@refid]">
+				<xsl:value-of select="."/>
+			</xsl:when>
+
+			<!-- Show links outside program listings -->
+			<xsl:otherwise>
+				<link linkend="{@refid}">
+					<xsl:value-of select="text()"/>
+				</link>
+			</xsl:otherwise>
+		</xsl:choose>
+	</xsl:template>
+
+	<xsl:template match="entry">
+		<entry>
+			<xsl:apply-templates/>
+		</entry>
+	</xsl:template>
+
+	<xsl:template match="table[caption]">
+		<table>
+			<title>
+				<xsl:value-of select="caption"/>
+			</title>
+
+			<tgroup cols="{@cols}">
+				<thead>
+					<xsl:apply-templates select="row[entry/@thead = 'yes']"/>
+				</thead>
+
+				<tbody>
+					<xsl:apply-templates select="row[entry/@thead != 'yes']"/>
+				</tbody>
+			</tgroup>
+		</table>
+	</xsl:template>
+
+	<xsl:template match="table[not(caption)]">
+		<informaltable>
+			<tgroup cols="{@cols}">
+				<thead>
+					<xsl:apply-templates select="row[entry/@thead = 'yes']"/>
+				</thead>
+
+				<tbody>
+					<xsl:apply-templates select="row[entry/@thead != 'yes']"/>
+				</tbody>
+			</tgroup>
+		</informaltable>
+	</xsl:template>
+
+	<xsl:template match="row">
+		<row>
+			<xsl:apply-templates/>
+		</row>
+	</xsl:template>
+
+	<xsl:template match="itemizedlist">
+		<itemizedlist>
+			<xsl:apply-templates/>
+		</itemizedlist>
+	</xsl:template>
+
+	<xsl:template match="orderedlist">
+		<orderedlist>
+			<xsl:apply-templates/>
+		</orderedlist>
+	</xsl:template>
+
+	<xsl:template match="listitem">
+		<listitem>
+			<xsl:apply-templates/>
+		</listitem>
+	</xsl:template>
+
+	<xsl:template match="programlisting">
+		<programlisting language="c">
+			<xsl:for-each select="codeline[position() > 1 or highlight]">
+				<xsl:apply-templates select="."/>
+				<xsl:text>&#10;</xsl:text>
+			</xsl:for-each>
+		</programlisting>
+	</xsl:template>
+
+	<xsl:template match="highlight">
+		<emphasis role="{@class}">
+			<xsl:apply-templates/>
+		</emphasis>
+	</xsl:template>
+
+	<xsl:template match="highlight[1]/text()">
+		<xsl:choose>
+			<xsl:when test="substring(., 1, 1) = '*'">
+				<xsl:value-of select="substring(., 2)"/>
+			</xsl:when>
+
+			<xsl:otherwise>
+				<xsl:value-of select="."/>
+			</xsl:otherwise>
+		</xsl:choose>
+	</xsl:template>
+
+	<xsl:template match="sp[ancestor::codeline]">
+		<xsl:text> </xsl:text>
+	</xsl:template>
+
+	<xsl:template match="image">
+		<mediaobject>
+			<imageobject>
+				<imagedata align="center">
+					<xsl:attribute name="fileref">
+						<xsl:text>images/</xsl:text>
+						<xsl:value-of select="@name"/>
+					</xsl:attribute>
+				</imagedata>
+			</imageobject>
+		</mediaobject>
+	</xsl:template>
+
+	<xsl:template match="detaileddescription">
+		<xsl:apply-templates/>
+	</xsl:template>
+
+	<xsl:template match="sect1 | sect2 | sect3 | sect4 | sect5 | sect6 | sect7 | sect8 | sect9">
+		<section>
+			<xsl:if test="@id">
+				<xsl:attribute name="id">
+					<xsl:value-of select="@id"/>
+				</xsl:attribute>
+			</xsl:if>
+
+			<title>
+				<xsl:value-of select="title"/>
+			</title>
+
+			<xsl:apply-templates/>
+		</section>
+	</xsl:template>
+
+	<xsl:template match="anchor">
+		<xsl:if test="@id">
+			<indexterm id="{@id}"/>
+		</xsl:if>
+	</xsl:template>
+
+	<xsl:template match="title"/>
+
+	<xsl:template match="htmlonly"/>
+
+	<xsl:template match="*">
+		<xsl:message>NO XSL TEMPLATE MATCH: <xsl:value-of select="local-name()"/></xsl:message>
+	</xsl:template>
+
+</xsl:stylesheet>
diff --git a/lib/lufa/LUFA/StudioIntegration/HV1/lufa_helpcontentsetup_transform.xslt b/lib/lufa/LUFA/StudioIntegration/HV1/lufa_helpcontentsetup_transform.xslt
new file mode 100644
index 0000000000..c9ff58f597
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/HV1/lufa_helpcontentsetup_transform.xslt
@@ -0,0 +1,47 @@
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio HV1 Setup XHTML transform file -->
+
+<!-- Updates a helpcontentsetup.msha document to add appropriate version
+     information. -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml" version="1.0">
+	<xsl:output method="xml" omit-xml-declaration="yes"/>
+
+	<!-- Need to input the LUFA help package filename for later use -->
+	<xsl:param name="help-package-filename"/>
+
+	<!-- Recursively match and copy/process all nodes/attributes -->
+	<xsl:template match="node()">
+		<xsl:copy>
+			<xsl:copy-of select="@*"/>
+			<xsl:apply-templates select="node()"/>
+		</xsl:copy>
+	</xsl:template>
+
+	<!-- Update the LUFA help package file name -->
+	<xsl:template match="xhtml:div[@class='package']/xhtml:span[@class='name']">
+		<xsl:copy>
+			<xsl:copy-of select="@class"/>
+
+			<xsl:value-of select="$help-package-filename"/>
+		</xsl:copy>
+	</xsl:template>
+
+	<xsl:template match="xhtml:div[@class='package']/xhtml:a[@class='current-link']">
+		<xsl:copy>
+			<xsl:copy-of select="@class"/>
+
+			<xsl:attribute name="href">
+				<xsl:value-of select="$help-package-filename"/>
+			</xsl:attribute>
+
+			<xsl:value-of select="$help-package-filename"/>
+		</xsl:copy>
+	</xsl:template>
+</xsl:stylesheet>
diff --git a/lib/lufa/LUFA/StudioIntegration/HV1/lufa_hv1_transform.xslt b/lib/lufa/LUFA/StudioIntegration/HV1/lufa_hv1_transform.xslt
new file mode 100644
index 0000000000..e7e230166d
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/HV1/lufa_hv1_transform.xslt
@@ -0,0 +1,45 @@
+<!--

+             LUFA Library

+     Copyright (C) Dean Camera, 2017.

+

+  dean [at] fourwalledcubicle [dot] com

+           www.lufa-lib.org

+-->

+

+<!-- Docbook XML to Microsoft Help Viewer 1.0 transform file -->

+

+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

+

+	<xsl:import href="../Docbook/mshelp/docbook.xsl"/>

+

+	<xsl:output method="xml" indent="no"/>

+

+	<xsl:template match="emphasis[@role = 'keyword' or @role = 'keywordtype' or @role = 'keywordflow']">

+		<span class="hl-keyword" style="color: #0079C1">

+			<xsl:apply-templates/>

+		</span>

+	</xsl:template>

+

+	<xsl:template match="emphasis[@role = 'stringliteral' or @role = 'charliteral']">

+		<span class="hl-string" style="color: #800000">

+			<xsl:apply-templates/>

+		</span>

+	</xsl:template>

+

+	<xsl:template match="emphasis[@role = 'comment']">

+		<em class="hl-comment" style="color: #008000">

+			<xsl:apply-templates/>

+		</em>

+	</xsl:template>

+

+	<xsl:template match="emphasis[@role = 'preprocessor']">

+		<span class="hl-preprocessor" style="color: #A000A0">

+			<xsl:apply-templates/>

+		</span>

+	</xsl:template>

+

+	<xsl:template match="emphasis[@role = 'normal' and ancestor::programlisting]">

+		<xsl:apply-templates />

+	</xsl:template>

+

+</xsl:stylesheet>

diff --git a/lib/lufa/LUFA/StudioIntegration/HV1/lufa_studio_help_styling.css b/lib/lufa/LUFA/StudioIntegration/HV1/lufa_studio_help_styling.css
new file mode 100644
index 0000000000..a4a025cc8b
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/HV1/lufa_studio_help_styling.css
@@ -0,0 +1,53 @@
+/*

+             LUFA Library

+     Copyright (C) Dean Camera, 2017.

+

+  dean [at] fourwalledcubicle [dot] com

+           www.lufa-lib.org

+*/

+

+.programlisting {

+ 	display: block;

+ 	margin-left: 15px;

+ 	padding: 10px;

+ 	background-color: #f4f4f4;

+ 	border: 1px solid #aaaaaa;

+ 	font-family: "Consolas", "Courier New", sans-serif;

+ }

+

+ code {

+ 	background-color: #f4f4f4;

+ 	font-family: "Consolas", "Courier New", sans-serif;

+ }

+

+.note, .warning, .tip {

+	display: block;

+ 	margin-left: 15px;

+ 	padding-left: 10px;

+ 	padding-bottom: 5px;

+ 	background-color: #f4f4f4;

+ 	border: 1px solid #aaaaaa;

+}

+

+table {

+	border: 1px solid #aaaaaa;

+	border-collapse: collapse;

+	margin-left: 15px;

+	font-size: 10pt;

+}

+

+table thead {

+ 	background-color: #f4f4f4;

+}

+

+table thead th {

+	padding: 5px;

+}

+

+table tbody td {

+	padding: 5px;

+}

+

+ul {

+	padding-left: 20px;

+}

diff --git a/lib/lufa/LUFA/StudioIntegration/VSIX/LUFA.dll b/lib/lufa/LUFA/StudioIntegration/VSIX/LUFA.dll
new file mode 100644
index 0000000000..369c78178b
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/VSIX/LUFA.dll
Binary files differdiff --git a/lib/lufa/LUFA/StudioIntegration/VSIX/LUFA.pkgdef b/lib/lufa/LUFA/StudioIntegration/VSIX/LUFA.pkgdef
new file mode 100644
index 0000000000..b1b2f943b8
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/VSIX/LUFA.pkgdef
Binary files differdiff --git a/lib/lufa/LUFA/StudioIntegration/VSIX/[Content_Types].xml b/lib/lufa/LUFA/StudioIntegration/VSIX/[Content_Types].xml
new file mode 100644
index 0000000000..05ef8b6ba4
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/VSIX/[Content_Types].xml
@@ -0,0 +1,13 @@
+<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">

+	<Default Extension="vsixmanifest" ContentType="text/xml"/>

+	<Default Extension="cache" ContentType="text/xml"/>

+	<Default Extension="png" ContentType="application/octet-stream"/>

+	<Default Extension="txt" ContentType="text/plain"/>

+	<Default Extension="xml" ContentType="text/xml"/>

+	<Default Extension="zip" ContentType="application/octet-stream"/>

+	<Default Extension="dll" ContentType="application/octet-stream" />

+	<Default Extension="pkgdef" ContentType="text/plain" />

+	<Default Extension="htm" ContentType="text/html" />

+	<Default Extension="msha" ContentType="text/html" />

+	<Default Extension="mshc" ContentType="application/octet-stream"/>

+</Types>

diff --git a/lib/lufa/LUFA/StudioIntegration/VSIX/asf-manifest.xml b/lib/lufa/LUFA/StudioIntegration/VSIX/asf-manifest.xml
new file mode 100644
index 0000000000..794fd689e1
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/VSIX/asf-manifest.xml
@@ -0,0 +1,18 @@
+<AsfContentProvider Version="1.0.0">

+	<Identifier Id="0e160d5c-e331-48d9-850b-e0387912171b">

+		<Org>FourWalledCubicle</Org>

+		<ShortName>LUFA</ShortName>

+		<Author>Dean Camera</Author>

+		<Description/>

+		<FollowFolderStructure>True</FollowFolderStructure>

+	</Identifier>

+	<AsfContent Type="zip" Path="contents.zip">

+		<Content>

+			<Version>0</Version>

+			<HelpURL/>

+			<Locator/>

+			<DbXMLPath>content.xml.cache</DbXMLPath>

+			<Description/>

+		</Content>

+	</AsfContent>

+</AsfContentProvider>

diff --git a/lib/lufa/LUFA/StudioIntegration/VSIX/extension.vsixmanifest b/lib/lufa/LUFA/StudioIntegration/VSIX/extension.vsixmanifest
new file mode 100644
index 0000000000..f155618b73
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/VSIX/extension.vsixmanifest
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>

+

+<Vsix xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2010">

+	<Identifier Id="FourWalledCubicle.LUFA.0e160d5c-e331-48d9-850b-e0387912171b">

+		<Name>LUFA Library</Name>

+		<Author>Dean Camera</Author>

+		<Version>0</Version>

+		<MoreInfoUrl>http://www.lufa-lib.org</MoreInfoUrl>

+		<Description xml:space="preserve">LUFA, the Lightweight USB Framework for AVRs.</Description>

+

+		<License>License.txt</License>

+		<Icon>LUFA_thumb.png</Icon>

+		<PreviewImage>LUFA.png</PreviewImage>

+

+		<SupportedProducts>

+			<IsolatedShell Version="7.0">AtmelStudio</IsolatedShell>

+		</SupportedProducts>

+

+		<SupportedFrameworkRuntimeEdition MinVersion="4.0" MaxVersion="4.5"/>

+		<Locale>1033</Locale>

+

+		<AllUsers>false</AllUsers>

+	</Identifier>

+

+	<References/>

+

+	<Content>

+		<VsPackage>LUFA.pkgdef</VsPackage>

+		<CustomExtension Type="MSHelp">helpcontentsetup.msha</CustomExtension>

+		<CustomExtension Type="asf-manifest">asf-manifest.xml</CustomExtension>

+	</Content>

+</Vsix>

diff --git a/lib/lufa/LUFA/StudioIntegration/VSIX/generate_caches.py b/lib/lufa/LUFA/StudioIntegration/VSIX/generate_caches.py
new file mode 100644
index 0000000000..ab787e8ec3
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/VSIX/generate_caches.py
@@ -0,0 +1,38 @@
+"""

+             LUFA Library

+     Copyright (C) Dean Camera, 2017.

+

+  dean [at] fourwalledcubicle [dot] com

+           www.lufa-lib.org

+"""

+

+import sys

+sys.path.append("ProjectGenerator")

+

+

+def show_message(message):

+    print("[Project Generator] %s" % message)

+    sys.stdout.flush()

+

+

+def main(lufa_root_path):

+    try:

+        from asf_avrstudio5_interface import PythonFacade

+    except ImportError:

+        print("Fatal Error: The ASF project generator is missing.")

+        return 1

+

+    p = PythonFacade(lufa_root_path)

+

+    show_message("Checking database sanity...")

+    p.check_extension_database_sanity(lufa_root_path)

+

+    show_message("Building cache files...")

+    p.generate_extension_cache_files(lufa_root_path)

+

+    show_message("Cache files created.")

+    return 0

+

+

+if __name__ == "__main__":

+    sys.exit(main(sys.argv[1]))

diff --git a/lib/lufa/LUFA/StudioIntegration/VSIX/lufa_asfmanifest_transform.xslt b/lib/lufa/LUFA/StudioIntegration/VSIX/lufa_asfmanifest_transform.xslt
new file mode 100644
index 0000000000..00f552c9c9
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/VSIX/lufa_asfmanifest_transform.xslt
@@ -0,0 +1,36 @@
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework VSIX XML transform file -->
+
+<!-- Updates an asf-manifest.xml document to add appropriate version
+     information. -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+	<xsl:output method="xml" omit-xml-declaration="yes"/>
+
+	<!-- Need to input the LUFA version for later use -->
+	<xsl:param name="lufa-version"/>
+
+	<!-- Recursively match and copy/process all nodes/attributes -->
+	<xsl:template match="@*|node()">
+		<xsl:copy>
+			<xsl:apply-templates select="@*|node()"/>
+		</xsl:copy>
+	</xsl:template>
+
+	<!-- Update the LUFA version to the version passed as a parameter -->
+	<xsl:template match="Version">
+		<xsl:copy>
+			<xsl:value-of select="substring($lufa-version, 1, 2)"/>
+			<xsl:text>.</xsl:text>
+			<xsl:value-of select="substring($lufa-version, 3, 2)"/>
+			<xsl:text>.</xsl:text>
+			<xsl:value-of select="substring($lufa-version, 5, 2)"/>
+		</xsl:copy>
+	</xsl:template>
+</xsl:stylesheet>
diff --git a/lib/lufa/LUFA/StudioIntegration/VSIX/lufa_vsmanifest_transform.xslt b/lib/lufa/LUFA/StudioIntegration/VSIX/lufa_vsmanifest_transform.xslt
new file mode 100644
index 0000000000..1198dd9dd6
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/VSIX/lufa_vsmanifest_transform.xslt
@@ -0,0 +1,33 @@
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework VSIX XML transform file -->
+
+<!-- Updates the version element of a Visual Studio VSIX manifest file to the
+     value passed as a parameter to the stylesheet transform -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:vs="http://schemas.microsoft.com/developer/vsx-schema/2010" version="1.0">
+	<xsl:output method="xml" omit-xml-declaration="yes"/>
+
+	<!-- Need to input the extension version for later use -->
+	<xsl:param name="extension-version"/>
+
+	<!-- Recursively match and copy/process all nodes/attributes -->
+	<xsl:template match="@*|node()">
+		<xsl:copy>
+			<xsl:apply-templates select="@*|node()"/>
+		</xsl:copy>
+	</xsl:template>
+
+	<!-- Update the extension version to the version passed as a parameter -->
+	<xsl:template match="vs:Version">
+		<xsl:copy>
+			<xsl:value-of select="$extension-version"/>
+		</xsl:copy>
+	</xsl:template>
+
+</xsl:stylesheet>
diff --git a/lib/lufa/LUFA/StudioIntegration/XDK/lufa_extension_transform.xslt b/lib/lufa/LUFA/StudioIntegration/XDK/lufa_extension_transform.xslt
new file mode 100644
index 0000000000..c3fb82294a
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/XDK/lufa_extension_transform.xslt
@@ -0,0 +1,68 @@
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework Extension XML transform file -->
+
+<!-- Creates an extension.xml document from a given manifest list of XML files,
+     and adds appropriate documentation base URI entries and version
+     information. -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+	<xsl:output method="xml" omit-xml-declaration="yes"/>
+
+	<!-- Store the LUFA version mentioned in the root node for later use -->
+	<xsl:param name="lufa-version" select="lufa-manifest/@version"/>
+
+	<!-- Read manifest list and then process all FDK nodes in the referenced
+	     document -->
+	<xsl:template match="lufa-manifest">
+		<xsl:comment>This file has been automatically generated from the LUFA Atmel Studio integration XML files.</xsl:comment>
+
+		<extension-container xmlversion="2.0">
+			<xsl:for-each select="xml-source">
+				<xsl:apply-templates select="document(@filename)/lufa/extension-container/*"/>
+			</xsl:for-each>
+		</extension-container>
+	</xsl:template>
+
+	<!-- Recursively match and copy/process all nodes/attributes -->
+	<xsl:template match="@*|node()">
+		<xsl:copy>
+			<xsl:apply-templates select="@*|node()"/>
+		</xsl:copy>
+	</xsl:template>
+
+	<!-- Update the extension version to the version of LUFA being used -->
+	<xsl:template match="extension/@version">
+		<xsl:attribute name="version">
+			<xsl:value-of select="substring($lufa-version, 1, 2)"/>
+			<xsl:text>.</xsl:text>
+			<xsl:value-of select="substring($lufa-version, 3, 2)"/>
+			<xsl:text>.</xsl:text>
+			<xsl:value-of select="substring($lufa-version, 5, 2)"/>
+		</xsl:attribute>
+	</xsl:template>
+
+	<!-- Update the extension online help URLs to the version of LUFA being
+	     used -->
+	<xsl:template match="online-help/*/@baseurl">
+		<xsl:attribute name="baseurl">
+			<xsl:value-of select="current()"/>
+			<xsl:value-of select="$lufa-version"/>
+			<xsl:text>/html/</xsl:text>
+		</xsl:attribute>
+	</xsl:template>
+
+	<xsl:template match="online-help/index-page/@url">
+		<xsl:attribute name="url">
+			<xsl:value-of select="current()"/>
+			<xsl:value-of select="$lufa-version"/>
+			<xsl:text>/html/</xsl:text>
+		</xsl:attribute>
+	</xsl:template>
+
+</xsl:stylesheet>
diff --git a/lib/lufa/LUFA/StudioIntegration/XDK/lufa_filelist_transform.xslt b/lib/lufa/LUFA/StudioIntegration/XDK/lufa_filelist_transform.xslt
new file mode 100644
index 0000000000..2998b879f0
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/XDK/lufa_filelist_transform.xslt
@@ -0,0 +1,35 @@
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework Module XML transform file -->
+
+<!-- Outputs a flat file list of all source files referenced in all modules of
+     the input manifest XML file, so that they can be checked for existence. -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+	<xsl:output method="xml" omit-xml-declaration="yes"/>
+
+	<!-- Read manifest list, add a comment to indicate the source filename
+	     and then process all ASF nodes in the referenced document -->
+	<xsl:template match="lufa-manifest">
+		<xsl:for-each select="xml-source">
+			<xsl:comment>Sourced from <xsl:value-of select="@filename"/></xsl:comment>
+			<xsl:apply-templates select="document(@filename)/lufa/asf/*"/>
+		</xsl:for-each>
+	</xsl:template>
+
+	<!-- Recursively match and process all nodes/attributes -->
+	<xsl:template match="@*|node()">
+		<xsl:apply-templates select="@*|node()"/>
+	</xsl:template>
+
+	<!-- Match source file nodes, output filename -->
+	<xsl:template match="build[@type='c-source']|build[@type='header-file']|build[@type='distribute']">
+		<xsl:value-of select="@value"/>
+		<xsl:text>&#xA;</xsl:text>
+	</xsl:template>
+</xsl:stylesheet>
diff --git a/lib/lufa/LUFA/StudioIntegration/XDK/lufa_indent_transform.xslt b/lib/lufa/LUFA/StudioIntegration/XDK/lufa_indent_transform.xslt
new file mode 100644
index 0000000000..6c22ff94cc
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/XDK/lufa_indent_transform.xslt
@@ -0,0 +1,23 @@
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework XML transform file -->
+
+<!-- Indents a given XML document to match the node hierarchy. -->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+	<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
+
+	<!-- Remove all white-space on all elements so that they can be indented -->
+	<xsl:strip-space elements="*"/>
+
+	<!-- Match the root node and copy, so that the output will be a correctly
+	     indented version of the input document -->
+	<xsl:template match="/">
+		<xsl:copy-of select="."/>
+	</xsl:template>
+</xsl:stylesheet>
diff --git a/lib/lufa/LUFA/StudioIntegration/XDK/lufa_module_transform.xslt b/lib/lufa/LUFA/StudioIntegration/XDK/lufa_module_transform.xslt
new file mode 100644
index 0000000000..0ab44e7a18
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/XDK/lufa_module_transform.xslt
@@ -0,0 +1,66 @@
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework Module XML transform file -->
+
+<!-- Creates an asf.xml module document from a given manifest list of XML files,
+     and adds appropriate documentation links by cross-referencing the Doxygen
+     tag output file to map Doxygen group names to generated filenames. -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+	<xsl:output method="xml" omit-xml-declaration="yes"/>
+
+	<!-- Store the LUFA Doxygen tag filename mentioned in the root node for later use -->
+	<xsl:param name="lufa-doxygen-tagfile" select="lufa-manifest/@tagfile"/>
+
+	<!-- Store the LUFA Doxygen documentation filename mentioned in the root node for later use -->
+	<xsl:param name="lufa-doxygen-docfile" select="lufa-manifest/@docfile"/>
+
+	<!-- Read manifest list, add a comment to indicate the source filename
+	     and then copy/process all ASF nodes in the referenced document -->
+	<xsl:template match="lufa-manifest">
+		<xsl:comment>This file has been automatically generated from the LUFA Atmel Studio integration XML files.</xsl:comment>
+
+		<asf xmlversion="1.0">
+			<xsl:for-each select="xml-source">
+				<xsl:comment>Sourced from <xsl:value-of select="@filename"/></xsl:comment>
+				<xsl:apply-templates select="document(@filename)/lufa/asf/*"/>
+			</xsl:for-each>
+		</asf>
+	</xsl:template>
+
+	<!-- Recursively match and copy/process all nodes/attributes -->
+	<xsl:template match="@*|node()">
+		<xsl:copy>
+			<xsl:apply-templates select="@*|node()"/>
+		</xsl:copy>
+	</xsl:template>
+
+	<!-- For Doxygen entry point nodes we need to convert them into help link
+	     nodes instead and add descriptions, so that they show up as links in
+	     Studio correctly -->
+	<xsl:template match="build[@type='doxygen-entry-point']">
+		<!-- select-by-config entries should not have a help link -->
+		<xsl:if test="not(parent::select-by-config)">
+			<build type="online-help" subtype="module-help-page-append">
+			 	<xsl:attribute name="value">
+			 		<!-- Extract filename of the HTML file that contains the documentation for this module from the Doxgen tag file -->
+				    <xsl:value-of select="document($lufa-doxygen-tagfile)/tagfile/compound[name=current()/@value]/filename"/>
+	  			</xsl:attribute>
+	  		</build>
+	  	</xsl:if>
+
+		<!-- Modules inside a select-by-config entries should not have a help link -->
+		<xsl:if test="not(parent::module and ../parent::select-by-config)">
+			<info type="description" value="summary">
+			 	<!-- Extract brief description of the module from the Doxygen combined XML documentation file -->
+				<xsl:value-of select="document($lufa-doxygen-docfile)/doxygen/compounddef[compoundname=current()/@value]/briefdescription/para"/>
+			</info>
+	  	</xsl:if>
+	</xsl:template>
+
+</xsl:stylesheet>
diff --git a/lib/lufa/LUFA/StudioIntegration/lufa.xml b/lib/lufa/LUFA/StudioIntegration/lufa.xml
new file mode 100644
index 0000000000..c838949865
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa.xml
@@ -0,0 +1,96 @@
+<!--

+             LUFA Library

+     Copyright (C) Dean Camera, 2017.

+

+  dean [at] fourwalledcubicle [dot] com

+           www.lufa-lib.org

+-->

+

+<!-- Atmel Studio framework integration file -->

+

+<lufa>

+	<extension-container>

+		<extension uuid="0e160d5c-e331-48d9-850b-e0387912171b" org="FourWalledCubicle" shortname="LUFA" version="" fullname="Lightweight USB Framework for AVRs (LUFA)">

+			<author name="Dean Camera" website="http://www.lufa-lib.org/" email="dean@fourwalledcubicle.com"/>

+			<description>Lightweight USB Framework for AVRs (LUFA), a USB software stack/framework.</description>

+			<icon-image path="LUFA/DoxygenPages/Images/LUFA_thumb.png"/>

+			<preview-image path="LUFA/DoxygenPages/Images/LUFA.png"/>

+			<license caption="LUFA License" path="LUFA/License.txt"/>

+			<release-notes caption="LUFA Information" url="http://www.lufa-lib.org"/>

+			<online-help>

+				<index-page caption="LUFA Documentation" url="http://www.lufa-lib.org/documentation/"/>

+				<module-help-page scheme="append" baseurl="http://www.lufa-lib.org/documentation/"/>

+				<module-guide-page scheme="append" baseurl="http://www.lufa-lib.org/documentation/"/>

+			</online-help>

+			<dependencies/>

+		</extension>

+	</extension-container>

+

+	<asf>

+		<device-alias-map name="lufa_avr8">

+			<device-support value="at90usb82"/>

+			<device-support value="atmega8u2"/>

+			<device-support value="at90usb162"/>

+			<device-support value="atmega16u2"/>

+			<device-support value="atmega16u4"/>

+			<device-support value="atmega32u2"/>

+			<device-support value="atmega32u4"/>

+			<device-support value="at90usb646"/>

+			<device-support value="at90usb647"/>

+			<device-support value="at90usb1286"/>

+			<device-support value="at90usb1287"/>

+		</device-alias-map>

+

+		<device-alias-map name="lufa_xmega">

+			<device-support value="atxmega16a4u"/>

+			<device-support value="atxmega32a4u"/>

+			<device-support value="atxmega64a4u"/>

+			<device-support value="atxmega128a4u"/>

+			<device-support value="atxmega64a3u"/>

+			<device-support value="atxmega128a3u"/>

+			<device-support value="atxmega192a3u"/>

+			<device-support value="atxmega256a3u"/>

+			<device-support value="atxmega256a3bu"/>

+			<device-support value="atxmega128a1u"/>

+			<device-support value="atxmega64b3"/>

+			<device-support value="atxmega128b3"/>

+			<device-support value="atxmega64b1"/>

+			<device-support value="atxmega128b1"/>

+			<device-support value="atxmega64c3"/>

+			<device-support value="atxmega128c3"/>

+			<device-support value="atxmega192c3"/>

+			<device-support value="atxmega256c3"/>

+			<device-support value="atxmega384c3"/>

+			<device-support value="atxmega16c4"/>

+		</device-alias-map>

+

+		<device-alias-map name="lufa_uc3">

+			<device-support value="at32uc3a364"/>

+			<device-support value="at32uc3a364s"/>

+			<device-support value="at32uc3a464"/>

+			<device-support value="at32uc3a464s"/>

+			<device-support value="at32uc3b064"/>

+			<device-support value="at32uc3b164"/>

+			<device-support value="at32uc3a0128"/>

+			<device-support value="at32uc3a1128"/>

+			<device-support value="at32uc3a3128"/>

+			<device-support value="at32uc3a3128s"/>

+			<device-support value="at32uc3a4128"/>

+			<device-support value="at32uc3a4128s"/>

+			<device-support value="at32uc3b0128"/>

+			<device-support value="at32uc3b1128"/>

+			<device-support value="at32uc3a0256"/>

+			<device-support value="at32uc3a1256"/>

+			<device-support value="at32uc3a3256"/>

+			<device-support value="at32uc3a3256s"/>

+			<device-support value="at32uc3a4256"/>

+			<device-support value="at32uc3a4256s"/>

+			<device-support value="at32uc3b0256"/>

+			<device-support value="at32uc3b1256"/>

+			<device-support value="at32uc3a0512"/>

+			<device-support value="at32uc3a1512"/>

+			<device-support value="at32uc3b0512"/>

+			<device-support value="at32uc3b1512"/>

+		</device-alias-map>

+	</asf>

+</lufa>

diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_common.xml b/lib/lufa/LUFA/StudioIntegration/lufa_common.xml
new file mode 100644
index 0000000000..b72f84cd9d
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_common.xml
@@ -0,0 +1,34 @@
+<!--

+             LUFA Library

+     Copyright (C) Dean Camera, 2017.

+

+  dean [at] fourwalledcubicle [dot] com

+           www.lufa-lib.org

+-->

+

+<!-- Atmel Studio framework integration file -->

+

+<lufa>

+	<asf>

+		<module type="service" id="lufa.common" caption="LUFA Common Infrastructure">

+			<device-support-alias value="lufa_avr8"/>

+			<device-support-alias value="lufa_xmega"/>

+			<device-support-alias value="lufa_uc3"/>

+

+			<info type="gui-flag" value="hidden"/>

+			<build type="doxygen-entry-point" value="Group_Common"/>

+

+			<build type="include-path" value=".."/>

+			<build type="header-file" subtype="api" value="Version.h"/>

+			<build type="distribute" subtype="license" value="License.txt"/>

+

+			<build type="header-file" subtype="api" value="Common/Common.h"/>

+			<build type="header-file" value="Common/Architectures.h"/>

+			<build type="header-file" value="Common/ArchitectureSpecific.h"/>

+			<build type="header-file" value="Common/Attributes.h"/>

+			<build type="header-file" value="Common/BoardTypes.h"/>

+			<build type="header-file" value="Common/CompilerSpecific.h"/>

+			<build type="header-file" value="Common/Endianness.h"/>

+		</module>

+	</asf>

+</lufa>

diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_drivers_board.xml b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_board.xml
new file mode 100644
index 0000000000..bd0359f683
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_board.xml
@@ -0,0 +1,114 @@
+<!--

+             LUFA Library

+     Copyright (C) Dean Camera, 2017.

+

+  dean [at] fourwalledcubicle [dot] com

+           www.lufa-lib.org

+-->

+

+<!-- Atmel Studio framework integration file -->

+

+<lufa>

+	<asf>

+		<board id="lufa.boards.dummy.avr8" vendor="LUFA" caption="AVR8 Architecture">

+			<device-support value="mega"/>

+

+			<require idref="lufa.drivers.board"/>

+			<require idref="lufa.drivers.board.info"/>

+		</board>

+

+		<board id="lufa.boards.dummy.xmega" vendor="LUFA" caption="XMEGA Architecture">

+			<device-support value="xmega"/>

+

+			<require idref="lufa.drivers.board"/>

+			<require idref="lufa.drivers.board.info"/>

+		</board>

+

+		<board id="lufa.boards.dummy.uc3" vendor="LUFA" caption="UC3 Architecture">

+			<device-support value="uc3"/>

+

+			<require idref="lufa.drivers.board"/>

+			<require idref="lufa.drivers.board.info"/>

+		</board>

+

+		<module type="driver" id="lufa.drivers.board.info" caption="LUFA Board Hardware Information Driver">

+			<device-support-alias value="lufa_avr8"/>

+			<device-support-alias value="lufa_xmega"/>

+			<device-support-alias value="lufa_uc3"/>

+

+			<build type="doxygen-entry-point" value="Group_BoardInfo"/>

+

+			<require idref="lufa.common"/>

+

+			<build type="include-path" value=".."/>

+			<build type="header-file"  subtype="api" value="Drivers/Board/Board.h"/>

+		</module>

+

+		<module type="driver" id="lufa.drivers.board.leds" caption="LUFA Board LED Driver">

+			<device-support-alias value="lufa_avr8"/>

+			<device-support-alias value="lufa_xmega"/>

+			<device-support-alias value="lufa_uc3"/>

+

+			<build type="doxygen-entry-point" value="Group_LEDs"/>

+

+			<require idref="lufa.common"/>

+

+			<build type="include-path" value=".."/>

+			<build type="header-file"  subtype="api" value="Drivers/Board/LEDs.h"/>

+		</module>

+

+		<module type="driver" id="lufa.drivers.board.buttons" caption="LUFA Board Buttons Driver">

+			<device-support-alias value="lufa_avr8"/>

+			<device-support-alias value="lufa_xmega"/>

+			<device-support-alias value="lufa_uc3"/>

+

+			<build type="doxygen-entry-point" value="Group_Buttons"/>

+

+			<require idref="lufa.common"/>

+

+			<build type="include-path" value=".."/>

+			<build type="header-file"  subtype="api" value="Drivers/Board/Buttons.h"/>

+		</module>

+

+		<module type="driver" id="lufa.drivers.board.dataflash" caption="LUFA Board Dataflash Driver">

+			<device-support-alias value="lufa_avr8"/>

+			<device-support-alias value="lufa_xmega"/>

+			<device-support-alias value="lufa_uc3"/>

+

+			<build type="doxygen-entry-point" value="Group_Dataflash"/>

+

+			<require idref="lufa.common"/>

+

+			<build type="include-path" value=".."/>

+			<build type="header-file"  subtype="api" value="Drivers/Board/Dataflash.h"/>

+		</module>

+

+		<module type="driver" id="lufa.drivers.board.joystick" caption="LUFA Board Joystick Driver">

+			<device-support-alias value="lufa_avr8"/>

+			<device-support-alias value="lufa_xmega"/>

+			<device-support-alias value="lufa_uc3"/>

+

+			<build type="doxygen-entry-point" value="Group_Joystick"/>

+

+			<require idref="lufa.common"/>

+

+			<build type="include-path" value=".."/>

+			<build type="header-file"  subtype="api" value="Drivers/Board/Joystick.h"/>

+		</module>

+

+		<module type="driver" id="lufa.drivers.board.temperature" caption="LUFA Board Temperature Sensor Driver">

+			<device-support-alias value="lufa_avr8"/>

+			<device-support-alias value="lufa_xmega"/>

+			<device-support-alias value="lufa_uc3"/>

+

+			<build type="doxygen-entry-point" value="Group_Temperature"/>

+

+			<require idref="lufa.common"/>

+			<require idref="lufa.drivers.peripheral.adc"/>

+

+			<build type="c-source"     value="Drivers/Board/Temperature.c"/>

+			<build type="include-path" value=".."/>

+			<build type="header-file"  subtype="api" value="Drivers/Board/Temperature.h"/>

+		</module>

+	</asf>

+</lufa>

diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_drivers_board_names.xml b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_board_names.xml
new file mode 100644
index 0000000000..69a38c5f70
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_board_names.xml
@@ -0,0 +1,853 @@
+<!--

+             LUFA Library

+     Copyright (C) Dean Camera, 2017.

+

+  dean [at] fourwalledcubicle [dot] com

+           www.lufa-lib.org

+-->

+

+<!-- Atmel Studio framework integration file -->

+

+<lufa>

+	<asf>

+		<select-by-config id="lufa.drivers.board" name="lufa.drivers.board.name" default="none" caption="LUFA Board Support">

+			<info type="description" value="summary">

+				Board hardware (LEDs, Buttons, etc.) drivers for the preconfigured LUFA boards. Note that only the boards

+				compatible with the currently selected device will be shown.

+

+				To disable all hardware drivers silently, use NONE. To supply customer drivers, use USER (see manual).

+			</info>

+

+			<module type="driver" id="lufa.drivers.board#none" caption="Board Support - None">

+				<device-support value="avr"/>

+				<build type="define" name="BOARD" value="BOARD_NONE"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#user" caption="Board Support - User Supplied">

+				<device-support value="avr"/>

+				<build type="define" name="BOARD" value="BOARD_USER"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#adafruit_u4" caption="Board Support - ADAFRUITU4">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_ADAFRUITU4"/>

+

+				<device-support value="atmega32u4"/>

+				<build type="define" name="BOARD" value="BOARD_ADAFRUITU4"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/ADAFRUITU4/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/ADAFRUITU4/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#atavrusbrf01" caption="Board Support - ATAVRUSBRF01">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_ATAVRUSBRF01"/>

+

+				<device-support value="at90usb1287"/>

+				<build type="define" name="BOARD" value="BOARD_ATAVRUSBRF01"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/ATAVRUSBRF01/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/ATAVRUSBRF01/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/ATAVRUSBRF01/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#benito" caption="Board Support - BENITO">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_BENITO"/>

+

+				<device-support value="at90usb162"/>

+				<build type="define" name="BOARD" value="BOARD_BENITO"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/BENITO/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/BENITO/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/BENITO/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#big_multio" caption="Board Support - BIGMULTIO">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_BIGMULTIO"/>

+

+				<device-support value="atmega32u4"/>

+				<build type="define" name="BOARD" value="BOARD_BIGMULTIO"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/BIGMULTIO/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/BIGMULTIO/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#blackcat" caption="Board Support - BLACKCAT">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_BLACKCAT"/>

+

+				<device-support value="at90usb162"/>

+				<build type="define" name="BOARD" value="BOARD_BLACKCAT"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/BLACKCAT/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/BLACKCAT/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#bui" caption="Board Support - BUI">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_BUI"/>

+

+				<device-support value="at90usb646"/>

+				<build type="define" name="BOARD" value="BOARD_BUI"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/BUI/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/BUI/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#bumbleb" caption="Board Support - BUMBLEB">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_BUMBLEB"/>

+

+				<device-support value="at90usb162"/>

+				<build type="define" name="BOARD" value="BOARD_BUMBLEB"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.leds"/>

+				<require idref="lufa.drivers.board.joystick"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/Joystick.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#culv3" caption="Board Support - CULV3">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_CULV3"/>

+

+				<device-support value="atmega32u4"/>

+				<build type="define" name="BOARD" value="BOARD_CULV3"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/CULV3/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/CULV3/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/CULV3/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#duce" caption="Board Support - DUCE">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_DUCE"/>

+

+				<device-support value="atmega32u2"/>

+				<build type="define" name="BOARD" value="BOARD_DUCE"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/DUCE/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/DUCE/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#evk527" caption="Board Support - EVK527">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_EVK527"/>

+

+				<device-support value="atmega32u4"/>

+				<build type="define" name="BOARD" value="BOARD_EVK527"/>

+

+				<require idref="lufa.drivers.misc.at45db321c"/>

+				<require idref="lufa.drivers.peripheral.spi"/>

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.dataflash"/>

+				<require idref="lufa.drivers.board.joystick"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/EVK527/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/EVK527/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/EVK527/Dataflash.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/EVK527/Joystick.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/EVK527/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#jm_db_u2" caption="Board Support - JMDBU2">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_JMDBU2"/>

+

+				<device-support value="atmega32u2"/>

+				<build type="define" name="BOARD" value="BOARD_JMDBU2"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/JMDBU2/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/JMDBU2/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/JMDBU2/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#leonardo" caption="Board Support - LEONARDO">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_LEONARDO"/>

+

+				<device-support value="atmega32u4"/>

+				<build type="define" name="BOARD" value="BOARD_LEONARDO"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/LEONARDO/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/LEONARDO/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#maximus" caption="Board Support - MAXIMUS">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_MAXIMUS"/>

+

+				<device-support value="at90usb162"/>

+				<build type="define" name="BOARD" value="BOARD_MAXIMUS"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/MAXIMUS/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/MAXIMUS/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#micropendous_32u2" caption="Board Support - MICROPENDOUS_32U2">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_32U2"/>

+

+				<device-support value="atmega32u2"/>

+				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_32U2"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+				<require idref="lufa.drivers.board.buttons"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/LEDs.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#micropendous_a" caption="Board Support - MICROPENDOUS_A">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_A"/>

+

+				<device-support value="at90usb1287"/>

+				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_A"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#micropendous_1" caption="Board Support - MICROPENDOUS_1">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_1"/>

+

+				<device-support value="at90usb162"/>

+				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_1"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#micropendous_2" caption="Board Support - MICROPENDOUS_2">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_2"/>

+

+				<device-support value="atmega32u4"/>

+				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_2"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#micropendous_3" caption="Board Support - MICROPENDOUS_3">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_3"/>

+

+				<device-support value="at90usb1287"/>

+				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_3"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#micropendous_4" caption="Board Support - MICROPENDOUS_4">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_4"/>

+

+				<device-support value="at90usb1287"/>

+				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_4"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#micropendous_dip" caption="Board Support - MICROPENDOUS_DIP">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_DIP"/>

+

+				<device-support value="at90usb1287"/>

+				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_DIP"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#micropendous_rev1" caption="Board Support - MICROPENDOUS_REV1">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_REV1"/>

+

+				<device-support value="at90usb1287"/>

+				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_REV1"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+				<require idref="lufa.drivers.board.buttons"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/LEDs.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#micropendous_rev2" caption="Board Support - MICROPENDOUS_REV2">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_REV2"/>

+

+				<device-support value="at90usb1287"/>

+				<build type="define" name="BOARD" value="BOARD_MICROPENDOUS_REV2"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+				<require idref="lufa.drivers.board.buttons"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/LEDs.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#microsin_162" caption="Board Support - MICROSIN162">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICROSIN162"/>

+

+				<device-support value="atmega162"/>

+				<build type="define" name="BOARD" value="BOARD_MICROSIN162"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+				<require idref="lufa.drivers.board.buttons"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/MICROSIN162/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/MICROSIN162/LEDs.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/MICROSIN162/Buttons.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#minimus" caption="Board Support - MINIMUS">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_MINIMUS"/>

+

+				<device-support value="atmega32u2"/>

+				<build type="define" name="BOARD" value="BOARD_MINIMUS"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+				<require idref="lufa.drivers.board.buttons"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/MINIMUS/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/MINIMUS/LEDs.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/MINIMUS/Buttons.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#multio" caption="Board Support - MULTIO">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_MULTIO"/>

+

+				<device-support value="at90usb162"/>

+				<build type="define" name="BOARD" value="BOARD_MULTIO"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/MULTIO/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/MULTIO/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#olimex_162" caption="Board Support - OLIMEX162">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEX162"/>

+

+				<device-support value="at90usb162"/>

+				<build type="define" name="BOARD" value="BOARD_OLIMEX162"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+				<require idref="lufa.drivers.board.buttons"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEX162/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEX162/LEDs.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEX162/Buttons.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#olimex_32u4" caption="Board Support - OLIMEX32U4">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEX32U4"/>

+

+				<device-support value="atmega32u4"/>

+				<build type="define" name="BOARD" value="BOARD_OLIMEX32U4"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+				<require idref="lufa.drivers.board.buttons"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEX32U4/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEX32U4/LEDs.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEX32U4/Buttons.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#olimex_isp_mkii" caption="Board Support - OLIMEXISPMK2">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEXISPMK2"/>

+

+				<device-support value="at90usb162"/>

+				<build type="define" name="BOARD" value="BOARD_OLIMEXISPMK2"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+				<require idref="lufa.drivers.board.buttons"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEXISPMK2/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEXISPMK2/LEDs.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEXISPMK2/Buttons.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#olimex_t32u4" caption="Board Support - OLIMEX_T32U4">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEXT32U4"/>

+

+				<device-support value="atmega32u4"/>

+				<build type="define" name="BOARD" value="BOARD_OLIMEXT32U4"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+				<require idref="lufa.drivers.board.buttons"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEXT32U4/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEXT32U4/LEDs.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/OLIMEXT32U4/Buttons.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#rzusbstick" caption="Board Support - RZUSBSTICK">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_RZUSBSTICK"/>

+

+				<device-support value="at90usb1287"/>

+				<build type="define" name="BOARD" value="BOARD_RZUSBSTICK"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/RZUSBSTICK/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/RZUSBSTICK/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#sparkfun_8u2" caption="Board Support - SPARKFUN8U2">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_SPARKFUN8U2"/>

+

+				<device-support value="atmega8u2"/>

+				<build type="define" name="BOARD" value="BOARD_SPARKFUN8U2"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/SPARKFUN8U2/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/SPARKFUN8U2/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#stk525" caption="Board Support - STK525">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_STK525"/>

+

+				<device-support value="at90usb1287"/>

+				<device-support value="at90usb1286"/>

+				<device-support value="at90usb647"/>

+				<device-support value="at90usb646"/>

+				<build type="define" name="BOARD" value="BOARD_STK525"/>

+

+				<require idref="lufa.drivers.misc.at45db321c"/>

+				<require idref="lufa.drivers.peripheral.spi"/>

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.dataflash"/>

+				<require idref="lufa.drivers.board.joystick"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/STK525/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/STK525/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/STK525/Dataflash.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/STK525/Joystick.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/STK525/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#stk526" caption="Board Support - STK526">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_STK526"/>

+

+				<device-support value="at90usb162"/>

+				<device-support value="at90usb82"/>

+				<device-support value="atmega32u2"/>

+				<device-support value="atmega16u2"/>

+				<device-support value="atmega8u2"/>

+				<build type="define" name="BOARD" value="BOARD_STK526"/>

+

+				<require idref="lufa.drivers.misc.at45db642d"/>

+				<require idref="lufa.drivers.peripheral.spi"/>

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.dataflash"/>

+				<require idref="lufa.drivers.board.joystick"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/STK526/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/STK526/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/STK526/Dataflash.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/STK526/Joystick.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/STK526/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#teensy" caption="Board Support - TEENSY">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_TEENSY"/>

+

+				<device-support value="at90usb162"/>

+				<build type="define" name="BOARD" value="BOARD_TEENSY"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/TEENSY/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/TEENSY/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#teensy2" caption="Board Support - TEENSY2">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_TEENSY2"/>

+

+				<device-support value="at90usb646"/>

+				<build type="define" name="BOARD" value="BOARD_TEENSY2"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/TEENSY/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/TEENSY/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#tul" caption="Board Support - TUL">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_TUL"/>

+

+				<device-support value="atmega32u4"/>

+				<build type="define" name="BOARD" value="BOARD_TUL"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/TUL/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/TUL/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/TUL/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#udip" caption="Board Support - UDIP">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_UDIP"/>

+

+				<device-support value="atmega32u2"/>

+				<build type="define" name="BOARD" value="BOARD_UDIP"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/UDIP/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/UDIP/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/UDIP/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#uno" caption="Board Support - UNO">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_UNO"/>

+

+				<device-support value="atmega8u2"/>

+				<device-support value="atmega16u2"/>

+				<build type="define" name="BOARD" value="BOARD_UNO"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/UNO/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/UNO/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#usb2ax" caption="Board Support - USB2AX">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_USB2AX"/>

+

+				<device-support value="atmega32u2"/>

+				<build type="define" name="BOARD" value="BOARD_USB2AX"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#usb2ax_v3" caption="Board Support - USB2AX_V3">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_USB2AX_V3"/>

+

+				<device-support value="atmega32u2"/>

+				<build type="define" name="BOARD" value="BOARD_USB2AX_V3"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#usb2ax_v3_1" caption="Board Support - USB2AX_V31">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_USB2AX_V31"/>

+

+				<device-support value="atmega32u2"/>

+				<build type="define" name="BOARD" value="BOARD_USB2AX_V31"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/USB2AX/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#usbfoo" caption="Board Support - USBFOO">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_USBFOO"/>

+

+				<device-support value="atmega162"/>

+				<build type="define" name="BOARD" value="BOARD_USBFOO"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/USBFOO/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/USBFOO/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/USBFOO/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#usbkey" caption="Board Support - USBKEY">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_USBKEY"/>

+

+				<device-support value="at90usb1287"/>

+				<build type="define" name="BOARD" value="BOARD_USBKEY"/>

+

+				<require idref="lufa.drivers.misc.at45db642d"/>

+				<require idref="lufa.drivers.peripheral.spi"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.dataflash"/>

+				<require idref="lufa.drivers.board.joystick"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/USBKEY/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/USBKEY/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/USBKEY/Dataflash.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/USBKEY/Joystick.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/USBKEY/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#usbtiny_mkii" caption="Board Support - USBTINYMKII">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_USBTINYMKII"/>

+

+				<device-support value="at90usb162"/>

+				<build type="define" name="BOARD" value="BOARD_USBTINYMKII"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/USBTINYMKII/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/USBTINYMKII/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/USBTINYMKII/LEDs.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#xplain_rev1" caption="Board Support - XPLAIN (HW Rev 1)">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_XPLAIN_REV1"/>

+

+				<device-support value="at90usb1287"/>

+

+				<require idref="lufa.drivers.misc.at45db642d"/>

+				<require idref="lufa.drivers.peripheral.spi"/>

+				<require idref="lufa.drivers.board.dataflash"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Dataflash.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/XPLAIN/LEDs.h"/>

+

+				<build type="define" name="BOARD" value="BOARD_XPLAIN_REV1"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#xplain" caption="Board Support - XPLAIN (HW Rev 2+)">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_XPLAIN"/>

+

+				<device-support value="at90usb1287"/>

+

+				<require idref="lufa.drivers.misc.at45db642d"/>

+				<require idref="lufa.drivers.peripheral.spi"/>

+				<require idref="lufa.drivers.board.dataflash"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Dataflash.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/XPLAIN/LEDs.h"/>

+

+				<build type="define" name="BOARD" value="BOARD_XPLAIN"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#a3bu_xplained" caption="Board Support - A3BU_XPLAINED">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_A3BU_XPLAINED"/>

+

+				<device-support value="atxmega256a3bu"/>

+

+				<require idref="lufa.drivers.misc.at45db642d"/>

+				<require idref="lufa.drivers.peripheral.usart_spi"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.dataflash"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/Board.h"/>

+				<build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/Dataflash.h"/>

+				<build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h"/>

+

+				<build type="define" name="BOARD" value="BOARD_A3BU_XPLAINED"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#b1_xplained" caption="Board Support - B1_XPLAINED">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_B1_XPLAINED"/>

+

+				<device-support value="atxmega128b1"/>

+

+				<require idref="lufa.drivers.misc.at45db642d"/>

+				<require idref="lufa.drivers.peripheral.usart_spi"/>

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.dataflash"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/Board.h"/>

+				<build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/Dataflash.h"/>

+				<build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/LEDs.h"/>

+

+				<build type="define" name="BOARD" value="BOARD_B1_XPLAINED"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#evk1100" caption="Board Support - EVK1100">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_EVK1100"/>

+

+				<device-support value="at32uc3a0512"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.joystick"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/UC3/EVK1100/Board.h"/>

+				<build type="header-file" value="Drivers/Board/UC3/EVK1100/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/UC3/EVK1100/Joystick.h"/>

+				<build type="header-file" value="Drivers/Board/UC3/EVK1100/LEDs.h"/>

+

+				<build type="define" name="BOARD" value="BOARD_EVK1100"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#evk1101" caption="Board Support - EVK1101">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_EVK1101"/>

+

+				<device-support value="at32uc3b0256"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.joystick"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/UC3/EVK1101/Board.h"/>

+				<build type="header-file" value="Drivers/Board/UC3/EVK1101/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/UC3/EVK1101/Joystick.h"/>

+				<build type="header-file" value="Drivers/Board/UC3/EVK1101/LEDs.h"/>

+

+				<build type="define" name="BOARD" value="BOARD_EVK1101"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#evk1104" caption="Board Support - EVK1104">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_EVK1104"/>

+

+				<device-support value="at32uc3a3256"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/UC3/EVK1104/Board.h"/>

+				<build type="header-file" value="Drivers/Board/UC3/EVK1104/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/UC3/EVK1104/LEDs.h"/>

+

+				<build type="define" name="BOARD" value="BOARD_EVK1104"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#uc3a3_xplained" caption="Board Support - UC3A3_XPLAINED">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_UC3_A3_XPLAINED"/>

+

+				<device-support value="at32uc3a3256"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/UC3/UC3A3_XPLAINED/Board.h"/>

+				<build type="header-file" value="Drivers/Board/UC3/UC3A3_XPLAINED/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/UC3/UC3A3_XPLAINED/LEDs.h"/>

+

+				<build type="define" name="BOARD" value="BOARD_UC3A3_XPLAINED"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#stange_isp" caption="Board Support - STANGE_ISP">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_STANGE_ISP"/>

+

+				<device-support value="at90usb162"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/STANGE_ISP/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/STANGE_ISP/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/STANGE_ISP/LEDs.h"/>

+

+				<build type="define" name="BOARD" value="BOARD_STANGE_ISP"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#c3_xplained" caption="Board Support - C3_XPLAINED">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_C3_XPLAINED"/>

+

+				<device-support value="atxmega384c3"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/XMEGA/C3_XPLAINED/Board.h"/>

+				<build type="header-file" value="Drivers/Board/XMEGA/C3_XPLAINED/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h"/>

+

+				<build type="define" name="BOARD" value="BOARD_C3_XPLAINED"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#u2s" caption="Board Support - U2S">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_U2S"/>

+

+				<device-support value="atmega32u2"/>

+

+				<require idref="lufa.drivers.board.buttons"/>

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/U2S/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/U2S/Buttons.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/U2S/LEDs.h"/>

+

+				<build type="define" name="BOARD" value="BOARD_U2S"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#yun" caption="Board Support - YUN">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_YUN"/>

+

+				<device-support value="atmega32u4"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/YUN/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/YUN/LEDs.h"/>

+

+				<build type="define" name="BOARD" value="BOARD_YUN"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.board#micro" caption="Board Support - MICRO">

+				<build type="doxygen-entry-point" value="Group_BoardInfo_MICRO"/>

+

+				<device-support value="atmega32u4"/>

+

+				<require idref="lufa.drivers.board.leds"/>

+

+				<build type="header-file" value="Drivers/Board/AVR8/MICRO/Board.h"/>

+				<build type="header-file" value="Drivers/Board/AVR8/MICRO/LEDs.h"/>

+

+				<build type="define" name="BOARD" value="BOARD_MICRO"/>

+			</module>

+		</select-by-config>

+	</asf>

+</lufa>

diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_drivers_misc.xml b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_misc.xml
new file mode 100644
index 0000000000..ee72f33db0
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_misc.xml
@@ -0,0 +1,57 @@
+<!--

+             LUFA Library

+     Copyright (C) Dean Camera, 2017.

+

+  dean [at] fourwalledcubicle [dot] com

+           www.lufa-lib.org

+-->

+

+<!-- Atmel Studio framework integration file -->

+

+<lufa>

+	<asf>

+		<module type="component" id="lufa.drivers.misc.at45db321c" caption="LUFA AT45DB321C Dataflash Commands">

+			<device-support-alias value="lufa_avr8"/>

+			<device-support-alias value="lufa_xmega"/>

+			<device-support-alias value="lufa_uc3"/>

+

+			<build type="doxygen-entry-point" value="Group_AT45DB321C"/>

+

+			<build type="include-path" value=".."/>

+			<build type="header-file" subtype="api" value="Drivers/Misc/AT45DB321C.h"/>

+		</module>

+

+		<module type="component" id="lufa.drivers.misc.at45db642d" caption="LUFA AT45DB642D Dataflash Commands">

+			<device-support-alias value="lufa_avr8"/>

+			<device-support-alias value="lufa_xmega"/>

+			<device-support-alias value="lufa_uc3"/>

+

+			<build type="doxygen-entry-point" value="Group_AT45DB321C"/>

+

+			<build type="include-path" value=".."/>

+			<build type="header-file" subtype="api" value="Drivers/Misc/AT45DB642D.h"/>

+		</module>

+

+		<module type="service" id="lufa.drivers.misc.ringbuffer" caption="LUFA Ring Buffer">

+			<device-support-alias value="lufa_avr8"/>

+			<device-support-alias value="lufa_xmega"/>

+			<device-support-alias value="lufa_uc3"/>

+

+			<build type="doxygen-entry-point" value="Group_RingBuff"/>

+

+			<build type="include-path" value=".."/>

+			<build type="header-file" subtype="api" value="Drivers/Misc/RingBuffer.h"/>

+		</module>

+

+		<module type="service" id="lufa.drivers.misc.ansi" caption="LUFA ANSI Terminal Commands">

+			<device-support-alias value="lufa_avr8"/>

+			<device-support-alias value="lufa_xmega"/>

+			<device-support-alias value="lufa_uc3"/>

+

+			<build type="doxygen-entry-point" value="Group_Terminal"/>

+

+			<build type="include-path" value=".."/>

+			<build type="header-file" subtype="api" value="Drivers/Misc/TerminalCodes.h"/>

+		</module>

+	</asf>

+</lufa>

diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_drivers_peripheral.xml b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_peripheral.xml
new file mode 100644
index 0000000000..b4eb8747a2
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_peripheral.xml
@@ -0,0 +1,198 @@
+<!--

+             LUFA Library

+     Copyright (C) Dean Camera, 2017.

+

+  dean [at] fourwalledcubicle [dot] com

+           www.lufa-lib.org

+-->

+

+<!-- Atmel Studio framework integration file -->

+

+<lufa>

+	<asf>

+		<select-by-device id="lufa.drivers.peripheral.usart" caption="LUFA USART Driver">

+			<module type="driver" id="lufa.drivers.peripheral.usart#avr8" caption="LUFA USART Driver - AVR8">

+				<device-support-alias value="lufa_avr8"/>

+

+				<build type="doxygen-entry-point" value="Group_Serial"/>

+

+				<require idref="lufa.common"/>

+				<require idref="lufa.drivers.misc.ansi"/>

+

+				<build type="c-source" value="Drivers/Peripheral/AVR8/Serial_AVR8.c"/>

+				<build type="header-file" value="Drivers/Peripheral/AVR8/Serial_AVR8.h"/>

+				<build type="include-path" value=".."/>

+				<build type="header-file" subtype="api" value="Drivers/Peripheral/Serial.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.peripheral.usart#xmega" caption="LUFA USART Driver - AVR8">

+				<device-support-alias value="lufa_xmega"/>

+

+				<build type="doxygen-entry-point" value="Group_Serial"/>

+

+				<require idref="lufa.common"/>

+				<require idref="lufa.drivers.misc.ansi"/>

+

+				<build type="c-source" value="Drivers/Peripheral/XMEGA/Serial_XMEGA.c"/>

+				<build type="header-file" value="Drivers/Peripheral/XMEGA/Serial_XMEGA.h"/>

+				<build type="include-path" value=".."/>

+				<build type="header-file" subtype="api" value="Drivers/Peripheral/Serial.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.peripheral.usart#uc3" caption="LUFA USART Driver - UC3">

+				<device-support-alias value="lufa_uc3"/>

+

+				<build type="doxygen-entry-point" value="Group_Serial"/>

+

+				<require idref="lufa.common"/>

+				<require idref="lufa.drivers.misc.ansi"/>

+

+				<info type="gui-flag" value="hidden"/>

+			</module>

+		</select-by-device>

+

+		<select-by-device id="lufa.drivers.peripheral.spi" caption="LUFA SPI Driver">

+			<module type="driver" id="lufa.drivers.peripheral.spi#avr8" caption="LUFA SPI Driver - AVR8">

+				<device-support-alias value="lufa_avr8"/>

+

+				<build type="doxygen-entry-point" value="Group_SPI"/>

+

+				<require idref="lufa.common"/>

+

+				<build type="header-file" value="Drivers/Peripheral/AVR8/SPI_AVR8.h"/>

+				<build type="include-path" value=".."/>

+				<build type="header-file" subtype="api" value="Drivers/Peripheral/SPI.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.peripheral.spi#xmega" caption="LUFA SPI Driver - XMEGA">

+				<device-support-alias value="lufa_xmega"/>

+

+				<build type="doxygen-entry-point" value="Group_SPI"/>

+

+				<require idref="lufa.common"/>

+

+				<build type="header-file" value="Drivers/Peripheral/XMEGA/SPI_XMEGA.h"/>

+				<build type="include-path" value=".."/>

+				<build type="header-file" subtype="api" value="Drivers/Peripheral/SPI.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.peripheral.spi#uc3" caption="LUFA SPI Driver - UC3">

+				<device-support-alias value="lufa_uc3"/>

+

+				<build type="doxygen-entry-point" value="Group_SPI"/>

+

+				<require idref="lufa.common"/>

+

+				<info type="gui-flag" value="hidden"/>

+			</module>

+		</select-by-device>

+

+		<select-by-device id="lufa.drivers.peripheral.usart_spi" caption="LUFA USART SPI Driver">

+			<module type="driver" id="lufa.drivers.peripheral.usart_spi#avr8" caption="LUFA USART SPI Driver - AVR8">

+				<device-support-alias value="lufa_avr8"/>

+

+				<build type="doxygen-entry-point" value="Group_SerialSPI"/>

+

+				<require idref="lufa.common"/>

+

+				<build type="header-file" value="Drivers/Peripheral/AVR8/SerialSPI_AVR8.h"/>

+				<build type="include-path" value=".."/>

+				<build type="header-file" subtype="api"  value="Drivers/Peripheral/SerialSPI.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.peripheral.usart_spi#xmega" caption="LUFA USART SPI Driver - XMEGA">

+				<device-support-alias value="lufa_xmega"/>

+

+				<build type="doxygen-entry-point" value="Group_SerialSPI"/>

+

+				<require idref="lufa.common"/>

+

+				<build type="header-file" value="Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h"/>

+				<build type="include-path" value=".."/>

+				<build type="header-file" subtype="api" value="Drivers/Peripheral/SerialSPI.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.peripheral.usart_spi#uc3" caption="LUFA USART SPI Driver - UC3">

+				<device-support-alias value="lufa_uc3"/>

+

+				<build type="doxygen-entry-point" value="Group_SerialSPI"/>

+

+				<require idref="lufa.common"/>

+

+				<info type="gui-flag" value="hidden"/>

+			</module>

+		</select-by-device>

+

+		<select-by-device id="lufa.drivers.peripheral.twi" caption="LUFA TWI Master Driver">

+			<module type="driver" id="lufa.drivers.peripheral.twi#avr8" caption="LUFA TWI Master Driver - AVR8">

+				<device-support-alias value="lufa_avr8"/>

+

+				<build type="doxygen-entry-point" value="Group_TWI"/>

+

+				<require idref="lufa.common"/>

+

+				<build type="c-source" value="Drivers/Peripheral/AVR8/TWI_AVR8.c"/>

+				<build type="header-file" value="Drivers/Peripheral/AVR8/TWI_AVR8.h"/>

+				<build type="include-path" value=".."/>

+				<build type="header-file" subtype="api" value="Drivers/Peripheral/TWI.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.peripheral.twi#xmega" caption="LUFA TWI Master Driver - XMEGA">

+				<device-support-alias value="lufa_xmega"/>

+

+				<build type="doxygen-entry-point" value="Group_TWI"/>

+

+				<require idref="lufa.common"/>

+

+				<build type="c-source" value="Drivers/Peripheral/XMEGA/TWI_XMEGA.c"/>

+				<build type="header-file" value="Drivers/Peripheral/XMEGA/TWI_XMEGA.h"/>

+				<build type="include-path" value=".."/>

+				<build type="header-file" subtype="api" value="Drivers/Peripheral/TWI.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.peripheral.twi#uc3" caption="LUFA TWI Master Driver - UC3">

+				<device-support-alias value="lufa_uc3"/>

+

+				<build type="doxygen-entry-point" value="Group_TWI"/>

+

+				<require idref="lufa.common"/>

+

+				<info type="gui-flag" value="hidden"/>

+			</module>

+		</select-by-device>

+

+		<select-by-device id="lufa.drivers.peripheral.adc" caption="LUFA ADC Driver">

+			<module type="driver" id="lufa.drivers.peripheral.adc#avr8" caption="LUFA ADC Driver - AVR8">

+				<device-support-alias value="lufa_avr8"/>

+

+				<build type="doxygen-entry-point" value="Group_ADC"/>

+

+				<require idref="lufa.common"/>

+

+				<build type="header-file" value="Drivers/Peripheral/AVR8/ADC_AVR8.h"/>

+				<build type="include-path" value=".."/>

+				<build type="header-file" subtype="api" value="Drivers/Peripheral/ADC.h"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.peripheral.adc#xmega" caption="LUFA ADC Driver - XMEGA">

+				<device-support-alias value="lufa_xmega"/>

+

+				<build type="doxygen-entry-point" value="Group_ADC"/>

+

+				<require idref="lufa.common"/>

+

+				<info type="gui-flag" value="hidden"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.peripheral.adc#uc3" caption="LUFA ADC Driver - UC3">

+				<device-support-alias value="lufa_uc3"/>

+

+				<build type="doxygen-entry-point" value="Group_ADC"/>

+

+				<require idref="lufa.common"/>

+

+				<info type="gui-flag" value="hidden"/>

+			</module>

+		</select-by-device>

+	</asf>

+</lufa>

diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb.xml b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb.xml
new file mode 100644
index 0000000000..f07aad672b
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb.xml
@@ -0,0 +1,32 @@
+<!--

+             LUFA Library

+     Copyright (C) Dean Camera, 2017.

+

+  dean [at] fourwalledcubicle [dot] com

+           www.lufa-lib.org

+-->

+

+<!-- Atmel Studio framework integration file -->

+

+<lufa>

+	<asf>

+		<module type="driver" id="lufa.drivers.usb" caption="LUFA USB Driver">

+			<device-support-alias value="lufa_avr8"/>

+			<device-support-alias value="lufa_xmega"/>

+			<device-support-alias value="lufa_uc3"/>

+

+			<build type="doxygen-entry-point" value="Group_USB"/>

+

+			<build type="define" name="USE_LUFA_CONFIG_HEADER" value=""/>

+			<build type="module-config" subtype="path" value="CodeTemplates"/>

+			<build type="module-config" subtype="required-header-file" value="LUFAConfig.h"/>

+

+			<build type="include-path" value=".."/>

+			<build type="header-file" subtype="api" value="Drivers/USB/USB.h"/>

+

+			<require idref="lufa.common"/>

+			<require idref="lufa.drivers.usb.class"/>

+			<require idref="lufa.drivers.usb.core"/>

+		</module>

+	</asf>

+</lufa>

diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class.xml b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class.xml
new file mode 100644
index 0000000000..123d60643b
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class.xml
@@ -0,0 +1,32 @@
+<!--

+             LUFA Library

+     Copyright (C) Dean Camera, 2017.

+

+  dean [at] fourwalledcubicle [dot] com

+           www.lufa-lib.org

+-->

+

+<!-- Atmel Studio framework integration file -->

+

+<lufa>

+	<asf>

+		<module type="service" id="lufa.drivers.usb.class" caption="LUFA USB Class Drivers">

+			<device-support-alias value="lufa_avr8"/>

+			<device-support-alias value="lufa_xmega"/>

+			<device-support-alias value="lufa_uc3"/>

+

+			<info type="gui-flag" value="hidden"/>

+			<build type="doxygen-entry-point" value="Group_USBClassDrivers"/>

+

+			<require idref="lufa.drivers.usb.class.android"/>

+			<require idref="lufa.drivers.usb.class.audio"/>

+			<require idref="lufa.drivers.usb.class.cdc"/>

+			<require idref="lufa.drivers.usb.class.hid"/>

+			<require idref="lufa.drivers.usb.class.ms"/>

+			<require idref="lufa.drivers.usb.class.midi"/>

+			<require idref="lufa.drivers.usb.class.printer"/>

+			<require idref="lufa.drivers.usb.class.rndis"/>

+			<require idref="lufa.drivers.usb.class.si"/>

+		</module>

+	</asf>

+</lufa>

diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_android.xml b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_android.xml
new file mode 100644
index 0000000000..3ec06ed6cb
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_android.xml
@@ -0,0 +1,54 @@
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<select-by-config id="lufa.drivers.usb.class.android" name="lufa.drivers.usb.class.android.mode" default="host" caption="LUFA USB Class Driver - Android Accessory">
+			<build type="doxygen-entry-point" value="Group_USBClassAOA"/>
+
+			<module type="service" id="lufa.drivers.usb.class.android#host" caption="LUFA USB Class Driver - Android Accessory (Host)">
+				<info type="description" value="summary">
+					Common definitions and Host mode implementation of the Android Open Accessory USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassAOA"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/AndroidAccessoryClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/AndroidAccessoryClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/AndroidAccessoryClassHost.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Host/AndroidAccessoryClassHost.c"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.android#definitions_only" caption="LUFA USB Class Driver - Android Accessory (Definitions Only)">
+				<info type="description" value="summary">
+					Common definitions only (no implementations) of the Android Open Accessory USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassAOA"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/AndroidAccessoryClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/AndroidAccessoryClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/AndroidAccessoryClassHost.h"/>
+			</module>
+		</select-by-config>
+	</asf>
+</lufa>
diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_audio.xml b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_audio.xml
new file mode 100644
index 0000000000..d93925dab1
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_audio.xml
@@ -0,0 +1,109 @@
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<select-by-config id="lufa.drivers.usb.class.audio" name="lufa.drivers.usb.class.audio.mode" default="host_device" caption="LUFA USB Class Driver - Audio 1.0">
+			<build type="doxygen-entry-point" value="Group_USBClassAudio"/>
+
+			<info type="gui-flag" value="hidden"/>
+
+			<module type="service" id="lufa.drivers.usb.class.audio#host_device" caption="LUFA USB Class Driver - Audio 1.0 (Host/Device)">
+				<info type="description" value="summary">
+					Common definitions and Host/Device mode implementations of the Audio 1.0 USB class.
+				</info>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<build type="doxygen-entry-point" value="Group_USBClassAudio"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/AudioClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/AudioClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/AudioClassDevice.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Device/AudioClassDevice.c"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/AudioClassHost.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Host/AudioClassHost.c"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.audio#host" caption="LUFA USB Class Driver - Audio 1.0 (Host)">
+				<info type="description" value="summary">
+					Common definitions and Host mode implementation of the Audio 1.0 USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassAudio"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/AudioClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/AudioClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/AudioClassDevice.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/AudioClassHost.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Host/AudioClassHost.c"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.audio#device" caption="LUFA USB Class Driver - Audio 1.0 (Device)">
+				<info type="description" value="summary">
+					Common definitions and Device mode implementation of the Audio 1.0 USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassAudio"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/AudioClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/AudioClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/AudioClassDevice.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Device/AudioClassDevice.c"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/AudioClassHost.h"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.audio#definitions_only" caption="LUFA USB Class Driver - Audio 1.0 (Definitions Only)">
+				<info type="description" value="summary">
+					Common definitions only (no implementations) of the Audio 1.0 USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassAudio"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/AudioClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/AudioClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/AudioClassDevice.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/AudioClassHost.h"/>
+			</module>
+		</select-by-config>
+	</asf>
+</lufa>
diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_cdc.xml b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_cdc.xml
new file mode 100644
index 0000000000..6c4f678d3e
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_cdc.xml
@@ -0,0 +1,99 @@
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<select-by-config id="lufa.drivers.usb.class.cdc" name="lufa.drivers.usb.class.cdc.mode" default="host_device" caption="LUFA USB Class Driver - CDC">
+			<build type="doxygen-entry-point" value="Group_USBClassCDC"/>
+
+			<info type="gui-flag" value="hidden"/>
+
+			<module type="service" id="lufa.drivers.usb.class.cdc#host_device" caption="LUFA USB Class Driver - CDC (Host/Device)">
+				<info type="description" value="summary">
+					Common definitions and Host/Device mode implementations of the CDC USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassCDC"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/CDCClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/CDCClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/CDCClassDevice.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Device/CDCClassDevice.c"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/CDCClassHost.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Host/CDCClassHost.c"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.cdc#host" caption="LUFA USB Class Driver - CDC (Host)">
+				<info type="description" value="summary">
+					Common definitions and Host mode implementation of the CDC USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassCDC"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/CDCClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/CDCClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/CDCClassDevice.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/CDCClassHost.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Host/CDCClassHost.c"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.cdc#device" caption="LUFA USB Class Driver - CDC (Device)">
+				<info type="description" value="summary">
+					Common definitions and Device mode implementation of the CDC USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassCDC"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/CDCClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/CDCClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/CDCClassDevice.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Device/CDCClassDevice.c"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/CDCClassHost.h"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.cdc#definitions_only" caption="LUFA USB Class Driver - CDC (Definitions Only)">
+				<info type="description" value="summary">
+					Common definitions only (no implementations) of the CDC USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassCDC"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/CDCClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/CDCClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/CDCClassDevice.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/CDCClassHost.h"/>
+			</module>
+		</select-by-config>
+	</asf>
+</lufa>
diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_hid.xml b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_hid.xml
new file mode 100644
index 0000000000..d9e70a97c4
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_hid.xml
@@ -0,0 +1,99 @@
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<select-by-config id="lufa.drivers.usb.class.hid" name="lufa.drivers.usb.class.hid.mode" default="host_device" caption="LUFA USB Class Driver - HID">
+			<build type="doxygen-entry-point" value="Group_USBClassHID"/>
+
+			<info type="gui-flag" value="hidden"/>
+
+			<module type="service" id="lufa.drivers.usb.class.hid#host_device" caption="LUFA USB Class Driver - HID (Host/Device)">
+				<info type="description" value="summary">
+					Common definitions and Host/Device mode implementations of the HID USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassHID"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/HIDClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/HIDClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/HIDClassDevice.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Device/HIDClassDevice.c"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/HIDClassHost.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Host/HIDClassHost.c"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.hid#host" caption="LUFA USB Class Driver - HID (Host)">
+				<info type="description" value="summary">
+					Common definitions and Host mode implementation of the HID USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassHID"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/HIDClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/HIDClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/HIDClassDevice.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/HIDClassHost.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Host/HIDClassHost.c"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.hid#device" caption="LUFA USB Class Driver - HID (Device)">
+				<info type="description" value="summary">
+					Common definitions and Device mode implementation of the HID USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassHID"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/HIDClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/HIDClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/HIDClassDevice.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Device/HIDClassDevice.c"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/HIDClassHost.h"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.hid#definitions_only" caption="LUFA USB Class Driver - HID (Definitions Only)">
+				<info type="description" value="summary">
+					Common definitions only (no implementations) of the HID USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassHID"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/HIDClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/HIDClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/HIDClassDevice.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/HIDClassHost.h"/>
+			</module>
+		</select-by-config>
+	</asf>
+</lufa>
diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_midi.xml b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_midi.xml
new file mode 100644
index 0000000000..c127ae2cea
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_midi.xml
@@ -0,0 +1,99 @@
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<select-by-config id="lufa.drivers.usb.class.midi" name="lufa.drivers.usb.class.midi.mode" default="host_device" caption="LUFA USB Class Driver - MIDI">
+			<build type="doxygen-entry-point" value="Group_USBClassMIDI"/>
+
+			<info type="gui-flag" value="hidden"/>
+
+			<module type="service" id="lufa.drivers.usb.class.midi#host_device" caption="LUFA USB Class Driver - MIDI (Host/Device)">
+				<info type="description" value="summary">
+					Common definitions and Host/Device mode implementations of the MIDI USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassMIDI"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/MIDIClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/MIDIClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/MIDIClassDevice.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Device/MIDIClassDevice.c"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/MIDIClassHost.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Host/MIDIClassHost.c"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.midi#host" caption="LUFA USB Class Driver - MIDI (Host)">
+				<info type="description" value="summary">
+					Common definitions and Host mode implementation of the MIDI USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassMIDI"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/MIDIClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/MIDIClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/MIDIClassDevice.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/MIDIClassHost.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Host/MIDIClassHost.c"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.midi#device" caption="LUFA USB Class Driver - MIDI (Device)">
+				<info type="description" value="summary">
+					Common definitions and Device mode implementation of the MIDI USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassMIDI"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/MIDIClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/MIDIClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/MIDIClassDevice.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Device/MIDIClassDevice.c"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/MIDIClassHost.h"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.midi#definitions_only" caption="LUFA USB Class Driver - MIDI (Definitions Only)">
+				<info type="description" value="summary">
+					Common definitions only (no implementations) of the MIDI USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassMIDI"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/MIDIClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/MIDIClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/MIDIClassDevice.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/MIDIClassHost.h"/>
+			</module>
+		</select-by-config>
+	</asf>
+</lufa>
diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_ms.xml b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_ms.xml
new file mode 100644
index 0000000000..1be340310d
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_ms.xml
@@ -0,0 +1,99 @@
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<select-by-config id="lufa.drivers.usb.class.ms" name="lufa.drivers.usb.class.ms.mode" default="host_device" caption="LUFA USB Class Driver - Mass Storage">
+			<build type="doxygen-entry-point" value="Group_USBClassMS"/>
+
+			<info type="gui-flag" value="hidden"/>
+
+			<module type="service" id="lufa.drivers.usb.class.ms#host_device" caption="LUFA USB Class Driver - Mass Storage (Host/Device)">
+				<info type="description" value="summary">
+					Common definitions and Host/Device mode implementations of the Mass Storage USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassMS"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/MassStorageClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/MassStorageClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/MassStorageClassDevice.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Device/MassStorageClassDevice.c"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/MassStorageClassHost.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Host/MassStorageClassHost.c"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.ms#host" caption="LUFA USB Class Driver - Mass Storage (Host)">
+				<info type="description" value="summary">
+					Common definitions and Host mode implementation of the Mass Storage USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassMS"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/MassStorageClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/MassStorageClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/MassStorageClassDevice.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/MassStorageClassHost.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Host/MassStorageClassHost.c"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.ms#device" caption="LUFA USB Class Driver - Mass Storage (Device)">
+				<info type="description" value="summary">
+					Common definitions and Device mode implementation of the Mass Storage USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassMS"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/MassStorageClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/MassStorageClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/MassStorageClassDevice.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Device/MassStorageClassDevice.c"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/MassStorageClassHost.h"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.ms#definitions_only" caption="LUFA USB Class Driver - Mass Storage (Definitions Only)">
+				<info type="description" value="summary">
+					Common definitions only (no implementations) of the Mass Storage USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassMS"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/MassStorageClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/MassStorageClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/MassStorageClassDevice.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/MassStorageClassHost.h"/>
+			</module>
+		</select-by-config>
+	</asf>
+</lufa>
diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_printer.xml b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_printer.xml
new file mode 100644
index 0000000000..3b1fbe60ad
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_printer.xml
@@ -0,0 +1,99 @@
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<select-by-config id="lufa.drivers.usb.class.printer" name="lufa.drivers.usb.class.printer.mode" default="host_device" caption="LUFA USB Class Driver - Printer">
+			<build type="doxygen-entry-point" value="Group_USBClassPrinter"/>
+
+			<info type="gui-flag" value="hidden"/>
+
+			<module type="service" id="lufa.drivers.usb.class.printer#host_device" caption="LUFA USB Class Driver - Printer (Host/Device)">
+				<info type="description" value="summary">
+					Common definitions and Host/Device mode implementations of the Printer USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassPrinter"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/PrinterClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/PrinterClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/PrinterClassDevice.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Device/PrinterClassDevice.c"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/PrinterClassHost.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Host/PrinterClassHost.c"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.printer#host" caption="LUFA USB Class Driver - Printer (Host)">
+				<info type="description" value="summary">
+					Common definitions and Host mode implementation of the Printer USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassPrinter"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/PrinterClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/PrinterClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/PrinterClassDevice.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/PrinterClassHost.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Host/PrinterClassHost.c"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.printer#device" caption="LUFA USB Class Driver - Printer (Device)">
+				<info type="description" value="summary">
+					Common definitions and Device mode implementation of the Printer USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassPrinter"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/PrinterClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/PrinterClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/PrinterClassDevice.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Device/PrinterClassDevice.c"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/PrinterClassHost.h"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.printer#definitions_only" caption="LUFA USB Class Driver - Printer (Definitions Only)">
+				<info type="description" value="summary">
+					Common definitions only (no implementations) of the Printer USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassPrinter"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/PrinterClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/PrinterClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/PrinterClassDevice.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/PrinterClassHost.h"/>
+			</module>
+		</select-by-config>
+	</asf>
+</lufa>
diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_rndis.xml b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_rndis.xml
new file mode 100644
index 0000000000..09e86fbf0e
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_rndis.xml
@@ -0,0 +1,99 @@
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<select-by-config id="lufa.drivers.usb.class.rndis" name="lufa.drivers.usb.class.rndis.mode" default="host_device" caption="LUFA USB Class Driver - RNDIS Ethernet">
+			<build type="doxygen-entry-point" value="Group_USBClassRNDIS"/>
+
+			<info type="gui-flag" value="hidden"/>
+
+			<module type="service" id="lufa.drivers.usb.class.rndis#host_device" caption="LUFA USB Class Driver - RNDIS Ethernet (Host/Device)">
+				<info type="description" value="summary">
+					Common definitions and Host/Device mode implementations of the RNDIS Ethernet USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassRNDIS"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/RNDISClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/RNDISClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/RNDISClassDevice.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Device/RNDISClassDevice.c"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/RNDISClassHost.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Host/RNDISClassHost.c"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.rndis#host" caption="LUFA USB Class Driver - RNDIS Ethernet (Host)">
+				<info type="description" value="summary">
+					Common definitions and Host mode implementation of the RNDIS Ethernet USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassRNDIS"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/RNDISClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/RNDISClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/RNDISClassDevice.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/RNDISClassHost.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Host/RNDISClassHost.c"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.rndis#device" caption="LUFA USB Class Driver - RNDIS Ethernet (Device)">
+				<info type="description" value="summary">
+					Common definitions and Device mode implementation of the RNDIS Ethernet USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassRNDIS"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/RNDISClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/RNDISClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/RNDISClassDevice.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Device/RNDISClassDevice.c"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/RNDISClassHost.h"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.rndis#definitions_only" caption="LUFA USB Class Driver - RNDIS Ethernet (Definitions Only)">
+				<info type="description" value="summary">
+					Common definitions only (no implementations) of the RNDIS Ethernet USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassRNDIS"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/RNDISClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/RNDISClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Device/RNDISClassDevice.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/RNDISClassHost.h"/>
+			</module>
+		</select-by-config>
+	</asf>
+</lufa>
diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_si.xml b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_si.xml
new file mode 100644
index 0000000000..eb0786ceae
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_si.xml
@@ -0,0 +1,56 @@
+<!--
+             LUFA Library
+     Copyright (C) Dean Camera, 2017.
+
+  dean [at] fourwalledcubicle [dot] com
+           www.lufa-lib.org
+-->
+
+<!-- Atmel Studio framework integration file -->
+
+<lufa>
+	<asf>
+		<select-by-config id="lufa.drivers.usb.class.si" name="lufa.drivers.usb.class.si.mode" default="host" caption="LUFA USB Class Driver - Still Image">
+			<build type="doxygen-entry-point" value="Group_USBClassSI"/>
+
+			<info type="gui-flag" value="hidden"/>
+
+			<module type="service" id="lufa.drivers.usb.class.si#host" caption="LUFA USB Class Driver - Still Image (Host)">
+				<info type="description" value="summary">
+					Common definitions and Host mode implementation of the Still Image USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassSI"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/StillImageClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/StillImageClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/StillImageClassHost.h"/>
+				<build type="c-source"    value="Drivers/USB/Class/Host/StillImageClassHost.c"/>
+			</module>
+
+			<module type="service" id="lufa.drivers.usb.class.si#definitions_only" caption="LUFA USB Class Driver - Still Image (Definitions Only)">
+				<info type="description" value="summary">
+					Common definitions only (no implementations) of the Still Image USB class.
+				</info>
+
+				<build type="doxygen-entry-point" value="Group_USBClassSI"/>
+
+				<info type="gui-flag" value="hidden"/>
+
+				<device-support-alias value="lufa_avr8"/>
+				<device-support-alias value="lufa_xmega"/>
+				<device-support-alias value="lufa_uc3"/>
+
+				<build type="header-file" value="Drivers/USB/Class/StillImageClass.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Common/StillImageClassCommon.h"/>
+				<build type="header-file" value="Drivers/USB/Class/Host/StillImageClassHost.h"/>
+			</module>
+		</select-by-config>
+	</asf>
+</lufa>
diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core.xml b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core.xml
new file mode 100644
index 0000000000..095bcd2798
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core.xml
@@ -0,0 +1,85 @@
+<!--

+             LUFA Library

+     Copyright (C) Dean Camera, 2017.

+

+  dean [at] fourwalledcubicle [dot] com

+           www.lufa-lib.org

+-->

+

+<!-- Atmel Studio framework integration file -->

+

+<lufa>

+	<asf>

+		<module type="driver" id="lufa.drivers.usb.core.common" caption="LUFA USB Core Driver - Common">

+			<device-support-alias value="lufa_avr8"/>

+			<device-support-alias value="lufa_xmega"/>

+			<device-support-alias value="lufa_uc3"/>

+

+			<build type="doxygen-entry-point" value="Group_USBManagement"/>

+

+			<info type="gui-flag" value="hidden"/>

+

+			<build type="header-file" value="Drivers/USB/Core/Device.h"/>

+			<build type="header-file" value="Drivers/USB/Core/Endpoint.h"/>

+			<build type="header-file" value="Drivers/USB/Core/Host.h"/>

+			<build type="header-file" value="Drivers/USB/Core/Pipe.h"/>

+			<build type="header-file" value="Drivers/USB/Core/OTG.h"/>

+			<build type="header-file" value="Drivers/USB/Core/USBController.h"/>

+			<build type="header-file" value="Drivers/USB/Core/USBInterrupt.h"/>

+			<build type="header-file" value="Drivers/USB/Core/EndpointStream.h"/>

+			<build type="header-file" value="Drivers/USB/Core/PipeStream.h"/>

+	        <build type="c-source"    value="Drivers/USB/Core/ConfigDescriptors.c"/>

+			<build type="header-file" value="Drivers/USB/Core/ConfigDescriptors.h"/>

+	        <build type="c-source"    value="Drivers/USB/Core/DeviceStandardReq.c"/>

+			<build type="header-file" value="Drivers/USB/Core/DeviceStandardReq.h"/>

+	        <build type="c-source"    value="Drivers/USB/Core/Events.c"/>

+			<build type="header-file" value="Drivers/USB/Core/Events.h"/>

+	        <build type="c-source"    value="Drivers/USB/Core/HostStandardReq.c"/>

+			<build type="header-file" value="Drivers/USB/Core/HostStandardReq.h"/>

+	        <build type="c-source"    value="Drivers/USB/Core/USBTask.c"/>

+			<build type="header-file" value="Drivers/USB/Core/USBTask.h"/>

+			<build type="header-file" value="Drivers/USB/Core/USBMode.h"/>

+			<build type="header-file" value="Drivers/USB/Core/StdDescriptors.h"/>

+			<build type="header-file" value="Drivers/USB/Core/StdRequestType.h"/>

+

+	        <build type="c-source"    value="Drivers/USB/Class/Common/HIDParser.c"/>

+	        <build type="header-file" value="Drivers/USB/Class/Common/HIDParser.h"/>

+	        <build type="header-file" value="Drivers/USB/Class/Common/HIDReportData.h"/>

+	    </module>

+

+		<select-by-device id="lufa.drivers.usb.core" caption="LUFA USB Core Driver">

+			<module type="driver" id="lufa.drivers.usb.core#avr8" caption="LUFA USB Core Driver - AVR8">

+				<device-support-alias value="lufa_avr8"/>

+

+				<info type="gui-flag" value="hidden"/>

+

+				<build type="doxygen-entry-point" value="Group_USBManagement_AVR8"/>

+

+				<require idref="lufa.drivers.usb.core.common"/>

+				<require idref="lufa.drivers.usb.core.avr8"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.usb.core#xmega" caption="LUFA USB Core Driver - XMEGA">

+				<device-support-alias value="lufa_xmega"/>

+

+				<info type="gui-flag" value="hidden"/>

+

+				<build type="doxygen-entry-point" value="Group_USBManagement_XMEGA"/>

+

+				<require idref="lufa.drivers.usb.core.common"/>

+				<require idref="lufa.drivers.usb.core.xmega"/>

+			</module>

+

+			<module type="driver" id="lufa.drivers.usb.core#uc3" caption="LUFA USB Core Driver - UC3">

+				<device-support-alias value="lufa_uc3"/>

+

+				<info type="gui-flag" value="hidden"/>

+

+				<build type="doxygen-entry-point" value="Group_USBManagement_UC3"/>

+

+				<require idref="lufa.drivers.usb.core.common"/>

+				<require idref="lufa.drivers.usb.core.uc3"/>

+			</module>

+		</select-by-device>

+	</asf>

+</lufa>

diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core_avr8.xml b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core_avr8.xml
new file mode 100644
index 0000000000..b2792cb2f7
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core_avr8.xml
@@ -0,0 +1,43 @@
+<!--

+             LUFA Library

+     Copyright (C) Dean Camera, 2017.

+

+  dean [at] fourwalledcubicle [dot] com

+           www.lufa-lib.org

+-->

+

+<!-- Atmel Studio framework integration file -->

+

+<lufa>

+	<asf>

+		<module type="driver" id="lufa.drivers.usb.core.avr8" caption="LUFA USB Core Driver for AVR8">

+			<device-support-alias value="lufa_avr8"/>

+

+			<info type="gui-flag" value="hidden"/>

+

+			<build type="doxygen-entry-point" value="Group_USBManagement_AVR8"/>

+

+			<build type="c-source"    value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_R.c"/>

+			<build type="c-source"    value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_W.c"/>

+			<build type="c-source"    value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_RW.c"/>

+			<build type="c-source"    value="Drivers/USB/Core/AVR8/Template/Template_Pipe_RW.c"/>

+			<build type="c-source"    value="Drivers/USB/Core/AVR8/Device_AVR8.c"/>

+			<build type="header-file" value="Drivers/USB/Core/AVR8/Device_AVR8.h"/>

+			<build type="c-source"    value="Drivers/USB/Core/AVR8/Endpoint_AVR8.c"/>

+			<build type="header-file" value="Drivers/USB/Core/AVR8/Endpoint_AVR8.h"/>

+			<build type="c-source"    value="Drivers/USB/Core/AVR8/Host_AVR8.c"/>

+			<build type="header-file" value="Drivers/USB/Core/AVR8/Host_AVR8.h"/>

+			<build type="c-source"    value="Drivers/USB/Core/AVR8/Pipe_AVR8.c"/>

+			<build type="header-file" value="Drivers/USB/Core/AVR8/Pipe_AVR8.h"/>

+			<build type="header-file" value="Drivers/USB/Core/AVR8/OTG_AVR8.h"/>

+			<build type="c-source"    value="Drivers/USB/Core/AVR8/USBController_AVR8.c"/>

+			<build type="header-file" value="Drivers/USB/Core/AVR8/USBController_AVR8.h"/>

+			<build type="c-source"    value="Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c"/>

+			<build type="header-file" value="Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h"/>

+			<build type="c-source"    value="Drivers/USB/Core/AVR8/EndpointStream_AVR8.c"/>

+			<build type="header-file" value="Drivers/USB/Core/AVR8/EndpointStream_AVR8.h"/>

+			<build type="c-source"    value="Drivers/USB/Core/AVR8/PipeStream_AVR8.c"/>

+			<build type="header-file" value="Drivers/USB/Core/AVR8/PipeStream_AVR8.h"/>

+		</module>

+	</asf>

+</lufa>

diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core_uc3.xml b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core_uc3.xml
new file mode 100644
index 0000000000..d815fca449
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core_uc3.xml
@@ -0,0 +1,42 @@
+<!--

+             LUFA Library

+     Copyright (C) Dean Camera, 2017.

+

+  dean [at] fourwalledcubicle [dot] com

+           www.lufa-lib.org

+-->

+

+<!-- Atmel Studio framework integration file -->

+

+<lufa>

+	<asf>

+		<module type="driver" id="lufa.drivers.usb.core.uc3" caption="LUFA USB Core Driver for UC3">

+			<device-support-alias value="lufa_uc3"/>

+

+			<info type="gui-flag" value="hidden"/>

+

+			<build type="doxygen-entry-point" value="Group_USBManagement_UC3"/>

+

+			<build type="c-source"    value="Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_R.c"/>

+			<build type="c-source"    value="Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_W.c"/>

+			<build type="c-source"    value="Drivers/USB/Core/UC3/Template/Template_Endpoint_RW.c"/>

+			<build type="c-source"    value="Drivers/USB/Core/UC3/Template/Template_Pipe_RW.c"/>

+			<build type="c-source"    value="Drivers/USB/Core/UC3/Device_UC3.c"/>

+			<build type="header-file" value="Drivers/USB/Core/UC3/Device_UC3.h"/>

+			<build type="c-source"    value="Drivers/USB/Core/UC3/Endpoint_UC3.c"/>

+			<build type="header-file" value="Drivers/USB/Core/UC3/Endpoint_UC3.h"/>

+			<build type="c-source"    value="Drivers/USB/Core/UC3/Host_UC3.c"/>

+			<build type="header-file" value="Drivers/USB/Core/UC3/Host_UC3.h"/>

+			<build type="c-source"    value="Drivers/USB/Core/UC3/Pipe_UC3.c"/>

+			<build type="header-file" value="Drivers/USB/Core/UC3/Pipe_UC3.h"/>

+			<build type="c-source"    value="Drivers/USB/Core/UC3/USBController_UC3.c"/>

+			<build type="header-file" value="Drivers/USB/Core/UC3/USBController_UC3.h"/>

+			<build type="c-source"    value="Drivers/USB/Core/UC3/USBInterrupt_UC3.c"/>

+			<build type="header-file" value="Drivers/USB/Core/UC3/USBInterrupt_UC3.h"/>

+			<build type="c-source"    value="Drivers/USB/Core/UC3/EndpointStream_UC3.c"/>

+			<build type="header-file" value="Drivers/USB/Core/UC3/EndpointStream_UC3.h"/>

+			<build type="c-source"    value="Drivers/USB/Core/UC3/PipeStream_UC3.c"/>

+			<build type="header-file" value="Drivers/USB/Core/UC3/PipeStream_UC3.h"/>

+		</module>

+	</asf>

+</lufa>

diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core_xmega.xml b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core_xmega.xml
new file mode 100644
index 0000000000..364a0f3ed5
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core_xmega.xml
@@ -0,0 +1,36 @@
+<!--

+             LUFA Library

+     Copyright (C) Dean Camera, 2017.

+

+  dean [at] fourwalledcubicle [dot] com

+           www.lufa-lib.org

+-->

+

+<!-- Atmel Studio framework integration file -->

+

+<lufa>

+	<asf>

+		<module type="driver" id="lufa.drivers.usb.core.xmega" caption="LUFA USB Core Driver for XMEGA">

+			<device-support-alias value="lufa_xmega"/>

+

+			<info type="gui-flag" value="hidden"/>

+

+			<build type="doxygen-entry-point" value="Group_USBManagement_XMEGA"/>

+

+			<build type="c-source"    value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_R.c"/>

+			<build type="c-source"    value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_W.c"/>

+			<build type="c-source"    value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_RW.c"/>

+			<build type="c-source"    value="Drivers/USB/Core/XMEGA/Device_XMEGA.c"/>

+			<build type="header-file" value="Drivers/USB/Core/XMEGA/Device_XMEGA.h"/>

+			<build type="c-source"    value="Drivers/USB/Core/XMEGA/Endpoint_XMEGA.c"/>

+			<build type="header-file" value="Drivers/USB/Core/XMEGA/Endpoint_XMEGA.h"/>

+			<build type="c-source"    value="Drivers/USB/Core/XMEGA/Pipe_XMEGA.c"/>

+			<build type="c-source"    value="Drivers/USB/Core/XMEGA/USBController_XMEGA.c"/>

+			<build type="header-file" value="Drivers/USB/Core/XMEGA/USBController_XMEGA.h"/>

+			<build type="c-source"    value="Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.c"/>

+			<build type="header-file" value="Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.h"/>

+			<build type="c-source"    value="Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c"/>

+			<build type="header-file" value="Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.h"/>

+		</module>

+	</asf>

+</lufa>

diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_platform.xml b/lib/lufa/LUFA/StudioIntegration/lufa_platform.xml
new file mode 100644
index 0000000000..e20b718fb0
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_platform.xml
@@ -0,0 +1,60 @@
+<!--

+             LUFA Library

+     Copyright (C) Dean Camera, 2017.

+

+  dean [at] fourwalledcubicle [dot] com

+           www.lufa-lib.org

+-->

+

+<!-- Atmel Studio framework integration file -->

+

+<lufa>

+	<asf>

+		<select-by-device id="lufa.platform" caption="LUFA Platform Specific Support">

+			<module type="service" id="lufa.platform#avr8" caption="LUFA Platform Specific Support - AVR8">

+				<device-support-alias value="lufa_avr8"/>

+

+				<build type="define" name="ARCH" value="ARCH_AVR8"/>

+

+				<build type="doxygen-entry-point" value="Group_PlatformDrivers"/>

+

+				<build type="include-path" value=".."/>

+				<build type="header-file" subtype="api" value="Platform/Platform.h"/>

+

+				<require idref="lufa.common"/>

+			</module>

+

+			<module type="service" id="lufa.platform#xmega" caption="LUFA Platform Specific Support - XMEGA">

+				<device-support-alias value="lufa_xmega"/>

+

+				<build type="define" name="ARCH" value="ARCH_XMEGA"/>

+

+				<build type="doxygen-entry-point" value="Group_PlatformDrivers"/>

+

+				<build type="include-path" value=".."/>

+				<build type="header-file" subtype="api" value="Platform/Platform.h"/>

+

+				<build type="distribute" value="Platform/XMEGA/XMEGAExperimentalInfo.txt" subtype="license"/>

+

+				<require idref="lufa.platform.xmega"/>

+				<require idref="lufa.common"/>

+			</module>

+

+			<module type="service" id="lufa.platform#uc3" caption="LUFA Platform Specific Support - UC3">

+				<device-support-alias value="lufa_uc3"/>

+

+				<build type="define" name="ARCH" value="ARCH_UC3"/>

+

+				<build type="doxygen-entry-point" value="Group_PlatformDrivers"/>

+

+				<build type="include-path" value=".."/>

+				<build type="header-file" subtype="api" value="Platform/Platform.h"/>

+

+				<build type="distribute" value="Platform/UC3/UC3ExperimentalInfo.txt" subtype="license"/>

+

+				<require idref="lufa.platform.uc3"/>

+				<require idref="lufa.common"/>

+			</module>

+		</select-by-device>

+	</asf>

+</lufa>

diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_platform_uc3.xml b/lib/lufa/LUFA/StudioIntegration/lufa_platform_uc3.xml
new file mode 100644
index 0000000000..8c26d2304f
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_platform_uc3.xml
@@ -0,0 +1,26 @@
+<!--

+             LUFA Library

+     Copyright (C) Dean Camera, 2017.

+

+  dean [at] fourwalledcubicle [dot] com

+           www.lufa-lib.org

+-->

+

+<!-- Atmel Studio framework integration file -->

+

+<lufa>

+	<asf>

+		<module type="driver" id="lufa.platform.uc3" caption="LUFA UC3 Platform Drivers">

+			<device-support-alias value="lufa_uc3"/>

+

+			<info type="gui-flag" value="hidden"/>

+

+			<build type="doxygen-entry-point" value="Group_PlatformDrivers_UC3"/>

+

+			<build type="header-file" value="Platform/UC3/ClockManagement.h"/>

+			<build type="header-file" value="Platform/UC3/InterruptManagement.h"/>

+			<build type="c-source" value="Platform/UC3/InterruptManagement.c"/>

+			<build type="asm-source" value="Platform/UC3/Exception.S"/>

+		</module>

+	</asf>

+</lufa>

diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_platform_xmega.xml b/lib/lufa/LUFA/StudioIntegration/lufa_platform_xmega.xml
new file mode 100644
index 0000000000..299c859662
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_platform_xmega.xml
@@ -0,0 +1,23 @@
+<!--

+             LUFA Library

+     Copyright (C) Dean Camera, 2017.

+

+  dean [at] fourwalledcubicle [dot] com

+           www.lufa-lib.org

+-->

+

+<!-- Atmel Studio framework integration file -->

+

+<lufa>

+	<asf xmlversion="1.0">

+		<module type="driver" id="lufa.platform.xmega" caption="LUFA XMEGA Platform Drivers">

+			<device-support-alias value="lufa_xmega"/>

+

+			<info type="gui-flag" value="hidden"/>

+

+			<build type="doxygen-entry-point" value="Group_PlatformDrivers_XMEGA"/>

+

+			<build type="header-file" value="Platform/XMEGA/ClockManagement.h"/>

+		</module>

+	</asf>

+</lufa>

diff --git a/lib/lufa/LUFA/StudioIntegration/lufa_toolchain.xml b/lib/lufa/LUFA/StudioIntegration/lufa_toolchain.xml
new file mode 100644
index 0000000000..66b416e28b
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/lufa_toolchain.xml
@@ -0,0 +1,45 @@
+<!--

+             LUFA Library

+     Copyright (C) Dean Camera, 2017.

+

+  dean [at] fourwalledcubicle [dot] com

+           www.lufa-lib.org

+-->

+

+<!-- Atmel Studio framework integration file -->

+

+<lufa>

+	<asf>

+		<select-by-device id="common.utils.toolchain_config" caption="Toolchain configuration defaults">

+			<module type="build-specific" id="common.utils.toolchain_config#avr" caption="Toolchain configuration defaults for 8-bit AVR">

+				<info type="gui-flag" value="hidden"/>

+				<device-support value="avr"/>

+

+				<toolchain-config name="avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned" value="True" toolchain="avrgcc"/>

+				<toolchain-config name="avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned" value="True" toolchain="avrgcc"/>

+				<toolchain-config name="avrgcc.compiler.optimization.OtherFlags" value="-fdata-sections" toolchain="avrgcc"/>

+				<toolchain-config name="avrgcc.compiler.optimization.PrepareFunctionsForGarbageCollection" value="True" toolchain="avrgcc"/>

+				<toolchain-config name="avrgcc.compiler.warnings.AllWarnings" value="True" toolchain="avrgcc"/>

+				<toolchain-config name="avrgcc.compiler.miscellaneous.OtherFlags" value="-mrelax -std=gnu99 -fno-strict-aliasing -fno-jump-tables" toolchain="avrgcc"/>

+				<toolchain-config name="avrgcc.linker.optimization.GarbageCollectUnusedSections" value="True" toolchain="avrgcc"/>

+				<toolchain-config name="avrgcc.linker.optimization.RelaxBranches" value="True" toolchain="avrgcc"/>

+				<toolchain-config name="avrgcc.linker.miscellaneous.LinkerFlags" value="-Wl,--relax" toolchain="avrgcc"/>

+			</module>

+		</select-by-device>

+

+		<module type="build-specific" id="common.utils.toolchain_config#uc3" caption="Toolchain configuration defaults for 32-bit AVR">

+			<info type="gui-flag" value="hidden"/>

+			<device-support value="uc3"/>

+

+			<toolchain-config name="avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned" value="True" toolchain="avr32gcc"/>

+			<toolchain-config name="avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned" value="True" toolchain="avr32gcc"/>

+			<toolchain-config name="avr32gcc.compiler.optimization.OtherFlags" value="-fdata-sections" toolchain="avr32gcc"/>

+			<toolchain-config name="avr32gcc.compiler.optimization.PrepareFunctionsForGarbageCollection" value="True" toolchain="avr32gcc"/>

+			<toolchain-config name="avr32gcc.compiler.warnings.AllWarnings" value="True" toolchain="avr32gcc"/>

+			<toolchain-config name="avr32gcc.compiler.miscellaneous.OtherFlags" value="-mrelax -std=gnu99 -fno-strict-aliasing -mno-cond-exec-before-reload" toolchain="avr32gcc"/>

+			<toolchain-config name="avr32gcc.linker.optimization.GarbageCollectUnusedSections" value="True" toolchain="avr32gcc"/>

+			<toolchain-config name="avr32gcc.linker.optimization.RelaxBranches" value="True" toolchain="avr32gcc"/>

+			<toolchain-config name="avr32gcc.linker.miscellaneous.LinkerFlags" value="-Wl,--relax" toolchain="avr32gcc"/>

+		</module>

+	</asf>

+</lufa>

diff --git a/lib/lufa/LUFA/StudioIntegration/makefile b/lib/lufa/LUFA/StudioIntegration/makefile
new file mode 100644
index 0000000000..30483e9cb5
--- /dev/null
+++ b/lib/lufa/LUFA/StudioIntegration/makefile
@@ -0,0 +1,142 @@
+#
+#             LUFA Library
+#     Copyright (C) Dean Camera, 2017.
+#
+#  dean [at] fourwalledcubicle [dot] com
+#           www.lufa-lib.org
+#
+# ---------------------------------------
+#  Makefile for the LUFA Atmel Studio Integration.
+# ---------------------------------------
+
+LUFA_ROOT            := ..
+LUFA_VERSION_NUM     := $(shell grep -e "\#define *LUFA_VERSION_STRING " $(LUFA_ROOT)/Version.h | cut -d'"' -f2)
+LUFA_VERSION_TYPE    := $(shell grep -e "\#define *LUFA_VERSION_RELEASE_TYPE " $(LUFA_ROOT)/Version.h)
+
+ifneq ($(findstring LUFA_VERSION_RELEASE_TYPE_DEVELOPMENT, $(LUFA_VERSION_TYPE)),LUFA_VERSION_RELEASE_TYPE_DEVELOPMENT)
+  EXT_VERSION_NUM    := $(shell date +"%y.%m.%d").$(LUFA_VERSION_NUM)
+  EXT_VSIX_NAME      := LUFA-RELEASE-$(LUFA_VERSION_NUM).vsix
+else
+  EXT_VERSION_NUM    := 0.$(shell date +"%y%m%d.%H%M%S")
+  EXT_VSIX_NAME      := LUFA-TESTING-$(shell date +"%y.%m.%d-%H.%M.%S").vsix
+
+  $(warning Development mode set - assuming a test version should be created.)
+endif
+
+DOXYGEN_TAG_FILE_XML := $(LUFA_ROOT)/Documentation/lufa_doc_tags.xml
+DOXYGEN_COMBINED_XML := $(LUFA_ROOT)/Documentation/xml/lufa_doc.xml
+TEMP_MANIFEST_XML    := manifest.xml
+EXTENSION_OUTPUT_XML := $(LUFA_ROOT)/../extension.xml
+MODULE_OUTPUT_XML    := $(LUFA_ROOT)/asf.xml
+MSHELP_OUTPUT_XML    := $(LUFA_ROOT)/../lufa_help_$(subst .,_,$(EXT_VERSION_NUM)).mshc
+XML_FILES            := $(filter-out $(TEMP_MANIFEST_FILE), $(shell ls *.xml))
+VSIX_ASSETS          := $(LUFA_ROOT)/DoxygenPages/Images/LUFA_thumb.png     \
+                        $(LUFA_ROOT)/DoxygenPages/Images/LUFA.png           \
+                        $(LUFA_ROOT)/License.txt                            \
+                        VSIX/"[Content_Types].xml"                          \
+                        VSIX/LUFA.dll                                       \
+                        VSIX/LUFA.pkgdef
+VSIX_GEN_PARAMS     := --stringparam extension-version "$(EXT_VERSION_NUM)" \
+                       --stringparam lufa-version "$(LUFA_VERSION_NUM)"     \
+                       --stringparam help-package-filename "$(notdir $(MSHELP_OUTPUT_XML))"
+MSHELP_GEN_PARAMS   := --stringparam generate.toc "book toc"                \
+                       --stringparam chunk.quietly "1"                      \
+                       --stringparam chunk.section.depth "3"                \
+                       --stringparam chunk.first.sections "1"               \
+                       --stringparam chapter.autolabel "0"                  \
+                       --stringparam root.filename "LUFA"                   \
+                       --stringparam html.stylesheet "lufa_studio_help_styling.css"
+
+all: clear_project_dirs generate_xml check_filenames generate_vsix
+
+clear_project_dirs:
+	@make -s -C $(LUFA_ROOT)/.. clean
+
+clean:
+	@rm -f $(TEMP_MANIFEST_XML) $(MODULE_OUTPUT_XML) $(EXTENSION_OUTPUT_XML) $(DOXYGEN_TAG_FILE_XML) $(DOXYGEN_COMBINED_XML) $(MSHELP_OUTPUT_XML)
+	@rm -rf mshelp
+	@cd $(LUFA_ROOT)/.. && rm -f contents.zip exampleProjects.xml content.xml.cache extension.vsixmanifest asf-manifest.xml extension.xml helpcontentsetup.msha $(notdir $(VSIX_ASSETS)) *.vsix *.mshc
+
+$(DOXYGEN_TAG_FILE_XML):
+	@make -C ../ doxygen DOXYGEN_OVERRIDE_PARAMS="GENERATE_TAGFILE=Documentation/lufa_doc_tags.xml GENERATE_HTML=no GENERATE_XML=yes"
+
+$(DOXYGEN_COMBINED_XML): $(DOXYGEN_TAG_FILE_XML)
+	@xsltproc $(dir $@)/combine.xslt $(dir $@)/index.xml > $(DOXYGEN_COMBINED_XML)
+
+$(TEMP_MANIFEST_XML): $(DOXYGEN_TAG_FILE_XML) $(DOXYGEN_COMBINED_XML)
+	@echo Generating temporary module manifest XML...
+
+	@printf "<lufa-manifest version=\"%s\" tagfile=\"%s\" docfile=\"%s\">\n" $(LUFA_VERSION_NUM) $(DOXYGEN_TAG_FILE_XML) $(DOXYGEN_COMBINED_XML) > $@
+	@for i in $(XML_FILES); do \
+		printf "\t<xml-source filename=\"%s\"/>\n" $$i >> $@; \
+	done;
+	@echo '</lufa-manifest>' >> $@
+
+$(MODULE_OUTPUT_XML): $(TEMP_MANIFEST_XML)
+	@echo Generating library core XDK module manifest file...
+	@xsltproc XDK/lufa_module_transform.xslt $< | xsltproc XDK/lufa_indent_transform.xslt - > $(MODULE_OUTPUT_XML)
+
+$(EXTENSION_OUTPUT_XML): $(TEMP_MANIFEST_XML)
+	@echo Generating library XDK extension manifest file...
+	@xsltproc XDK/lufa_extension_transform.xslt $< | xsltproc XDK/lufa_indent_transform.xslt - > $(EXTENSION_OUTPUT_XML)
+
+$(MSHELP_OUTPUT_XML): $(DOXYGEN_COMBINED_XML)
+	@echo Converting Doxygen XML to DocBook...
+	@-mkdir mshelp 2> /dev/null
+	@xsltproc HV1/lufa_docbook_transform.xslt $(DOXYGEN_COMBINED_XML) > mshelp/lufa_docbook.xml
+
+	@echo Converting DocBook XML to Microsoft Help 1.0...
+	@cd mshelp && xsltproc $(MSHELP_GEN_PARAMS) ../HV1/lufa_hv1_transform.xslt lufa_docbook.xml
+
+	@echo Copying help assets...
+	@cp HV1/lufa_studio_help_styling.css mshelp
+	@-mkdir mshelp/images 2> /dev/null
+	@cp `find $(LUFA_ROOT)/DoxygenPages/Images -type f` mshelp/images
+
+	@echo Archiving help content...
+	@cd mshelp && zip ../$(MSHELP_OUTPUT_XML) -q -0  -r *.html *.css images
+
+	@echo Generating HV1 manifest...
+	@xsltproc $(VSIX_GEN_PARAMS) HV1/lufa_helpcontentsetup_transform.xslt HV1/helpcontentsetup.msha > $(LUFA_ROOT)/../helpcontentsetup.msha
+
+generate_help: $(MSHELP_OUTPUT_XML)
+
+generate_xml: $(EXTENSION_OUTPUT_XML) $(MODULE_OUTPUT_XML)
+
+generate_vsix: $(EXTENSION_OUTPUT_XML) $(MODULE_OUTPUT_XML) $(MSHELP_OUTPUT_XML)
+	@echo Generating XDK cache files...
+	@rm -f $(LUFA_ROOT)/../content.xml.cache
+	@rm -f $(LUFA_ROOT)/../ExampleProjects.xml
+	@python VSIX/generate_caches.py $(LUFA_ROOT)/../
+
+	@echo Archiving XDK content...
+	@rm -f contents.zip
+	@cd $(LUFA_ROOT)/../ && zip contents.zip -q -0 -r --exclude=*Documentation* --exclude=*StudioIntegration* LUFA Bootloaders Demos Projects README.txt
+
+	@echo Creating VSIX dependencies...
+	@cp $(VSIX_ASSETS) $(LUFA_ROOT)/..
+	@xsltproc $(VSIX_GEN_PARAMS) VSIX/lufa_vsmanifest_transform.xslt VSIX/extension.vsixmanifest > $(LUFA_ROOT)/../extension.vsixmanifest
+	@xsltproc $(VSIX_GEN_PARAMS) VSIX/lufa_asfmanifest_transform.xslt VSIX/asf-manifest.xml > $(LUFA_ROOT)/../asf-manifest.xml
+
+	@echo Generating Atmel Studio VSIX file...
+	cd $(LUFA_ROOT)/../ && zip $(EXT_VSIX_NAME) -q -9 contents.zip exampleProjects.xml content.xml.cache extension.vsixmanifest asf-manifest.xml extension.xml helpcontentsetup.msha $(notdir $(MSHELP_OUTPUT_XML)) $(notdir $(VSIX_ASSETS))
+
+	@echo "Atmel Studio VSIX extension file generated."
+
+check_filenames: $(MODULE_OUTPUT_XML)
+	@echo Verifying referenced filenames of XDK modules...
+	@for f in `find $(LUFA_ROOT)/../ -name "asf.xml"`; do \
+		echo "Checking $$f..."; \
+		asf_file_dir=`dirname $$f`; \
+		xsltproc XDK/lufa_filelist_transform.xslt $$f | sed -e "/^$$/d" | while read -r i; do \
+			if ( ( ! test -f "$$asf_file_dir/$$i" ) && ( ! test -d "$$asf_file_dir/$$i" ) ); then \
+				echo "Source file \"$$i\" referenced in $$f does not exist!"; \
+				exit 1; \
+			fi; \
+		done || exit 1; \
+	done;
+
+check_database:
+	python ProjectGenerator/project_generator.py -b $(LUFA_ROOT)/../ --main-ext-uuid=0e160d5c-e331-48d9-850b-e0387912171b CHECK
+
+.PHONY: all clean generate_help generate_xml generate_vsix check_filenames check_database