diff options
| author | tmk <hasu@tmk-kbd.com> | 2015-05-13 11:13:10 +0900 | 
|---|---|---|
| committer | tmk <hasu@tmk-kbd.com> | 2015-05-13 11:13:10 +0900 | 
| commit | f6d56675f9f981c5464f0ca7a1fbb0162154e8c5 (patch) | |
| tree | 57c9d4b3808a26116ae0ee7956fc00b84841aa2b /protocol/lufa/LUFA-git/LUFA/CodeTemplates | |
| parent | 4d116a04e94cf0d19317d5b44e4fa9f34a3e5594 (diff) | |
Squashed 'tmk_core/' changes from caca2c0..dc0e46e
dc0e46e Rename LUFA to LUFA-git
3bfa7fa Remove LUFA-120730
215b764 Merge commit 'afa0f22a9299686fd88f58ce09c5b521ac917e8f' as 'protocol/lufa/LUFA'
afa0f22 Squashed 'protocol/lufa/LUFA/' content from commit def7fca
c0c42fa Remove submodule of LUFA
30f897d Merge commit '87ced33feb74e79c3281dda36eb6d6d153399b41' as 'protocol/usb_hid/USB_Host_Shield_2.0'
87ced33 Squashed 'protocol/usb_hid/USB_Host_Shield_2.0/' content from commit aab4a69
14f6d49 Remove submodule of USB_Host_Shield_2.0
git-subtree-dir: tmk_core
git-subtree-split: dc0e46eaa4367d4e218f8816e3c117895820f07c
Diffstat (limited to 'protocol/lufa/LUFA-git/LUFA/CodeTemplates')
18 files changed, 1638 insertions, 0 deletions
| diff --git a/protocol/lufa/LUFA-git b/protocol/lufa/LUFA-git deleted file mode 160000 -Subproject b6c18b2a7c544653efbe12a1d4e8ba65e7d83c3 diff --git a/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/Descriptors.c b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/Descriptors.c new file mode 100644 index 0000000000..71cebe8911 --- /dev/null +++ b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/Descriptors.c @@ -0,0 +1,180 @@ +/* +             LUFA Library +     Copyright (C) Dean Camera, 2014. + +  dean [at] fourwalledcubicle [dot] com +           www.lufa-lib.org +*/ + +/* +  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com) + +  Permission to use, copy, modify, distribute, and sell this +  software and its documentation for any purpose is hereby granted +  without fee, provided that the above copyright notice appear in +  all copies and that both that the copyright notice and this +  permission notice and warranty disclaimer appear in supporting +  documentation, and that the name of the author not be used in +  advertising or publicity pertaining to distribution of the +  software without specific, written prior permission. + +  The author disclaims all warranties with regard to this +  software, including all implied warranties of merchantability +  and fitness.  In no event shall the author be liable for any +  special, indirect or consequential damages or any damages +  whatsoever resulting from loss of use, data or profits, whether +  in an action of contract, negligence or other tortious action, +  arising out of or in connection with the use or performance of +  this software. +*/ + +/** \file + * + *  USB Device Descriptors, for library use when in USB device mode. Descriptors are special + *  computer-readable structures which the host requests upon device enumeration, to determine + *  the device's capabilities and functions. + */ + +#include "Descriptors.h" + +/** Device descriptor structure. This descriptor describes the overall device + *  characteristics, including the supported USB version, control endpoint size + *  and the number of device configurations. The descriptor is read out by the + *  USB host when the enumeration process begins. + */ +const USB_Descriptor_Device_t DeviceDescriptor = +{ +	.Header                 = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device}, + +	.USBSpecification       = VERSION_BCD(2,0,0), +	.Class                  = USB_CSCP_NoDeviceClass, +	.SubClass               = USB_CSCP_NoDeviceSubclass, +	.Protocol               = USB_CSCP_NoDeviceProtocol, + +	.Endpoint0Size          = 64, + +	.VendorID               = 0x0000, +	.ProductID              = 0x0000, +	.ReleaseNumber          = VERSION_BCD(0,0,2), + +	.ManufacturerStrIndex   = 0x01, +	.ProductStrIndex        = 0x02, +	.SerialNumStrIndex      = NO_DESCRIPTOR, + +	.NumberOfConfigurations = 1 +}; + +/** Configuration descriptor structure. This descriptor, located in FLASH memory, describes the usage + *  of the device in one of its supported configurations, including information about any device interfaces + *  and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting + *  a configuration so that the host may correctly communicate with the USB device. + */ +const USB_Descriptor_Configuration_t ConfigurationDescriptor = +{ +	.Config = +		{ +			.Header                   = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration}, + +			.TotalConfigurationSize   = sizeof(USB_Descriptor_Configuration_t), +			.TotalInterfaces          = 0, + +			.ConfigurationNumber      = 1, +			.ConfigurationStrIndex    = NO_DESCRIPTOR, + +			.ConfigAttributes         = (USB_CONFIG_ATTR_RESERVED | USB_CONFIG_ATTR_SELFPOWERED), + +			.MaxPowerConsumption      = USB_CONFIG_POWER_MA(100) +		}, +}; + +/** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests + *  the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate + *  via the language ID table available at USB.org what languages the device supports for its string descriptors. + */ +const USB_Descriptor_String_t LanguageString = +{ +	.Header                 = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String}, + +	.UnicodeString          = {LANGUAGE_ID_ENG} +}; + +/** Manufacturer descriptor string. This is a Unicode string containing the manufacturer's details in human readable + *  form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device + *  Descriptor. + */ +const USB_Descriptor_String_t ManufacturerString = +{ +	.Header                 = {.Size = USB_STRING_LEN(14), .Type = DTYPE_String}, + +	.UnicodeString          = L"Your Name Here" +}; + +/** Product descriptor string. This is a Unicode string containing the product's details in human readable form, + *  and is read out upon request by the host when the appropriate string ID is requested, listed in the Device + *  Descriptor. + */ +const USB_Descriptor_String_t ProductString = +{ +	.Header                 = {.Size = USB_STRING_LEN(15), .Type = DTYPE_String}, + +	.UnicodeString          = L"LUFA USB Device" +}; + +/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors" + *  documentation) by the application code so that the address and size of a requested descriptor can be given + *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function + *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the + *  USB host. + */ +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, +                                    const uint8_t wIndex, +                                    const void** const DescriptorAddress +									#if defined(HAS_MULTIPLE_DESCRIPTOR_ADDRESS_SPACES) +									, uint8_t* const DescriptorMemorySpace +									#endif +									) +{ +	const uint8_t  DescriptorType   = (wValue >> 8); +	const uint8_t  DescriptorNumber = (wValue & 0xFF); + +	const void* Address = NULL; +	uint16_t    Size    = NO_DESCRIPTOR; + +	switch (DescriptorType) +	{ +		case DTYPE_Device: +			Address = &DeviceDescriptor; +			Size    = sizeof(USB_Descriptor_Device_t); +			break; +		case DTYPE_Configuration: +			Address = &ConfigurationDescriptor; +			Size    = sizeof(USB_Descriptor_Configuration_t); +			break; +		case DTYPE_String: +			switch (DescriptorNumber) +			{ +				case 0x00: +					Address = &LanguageString; +					Size    = pgm_read_byte(&LanguageString.Header.Size); +					break; +				case 0x01: +					Address = &ManufacturerString; +					Size    = pgm_read_byte(&ManufacturerString.Header.Size); +					break; +				case 0x02: +					Address = &ProductString; +					Size    = pgm_read_byte(&ProductString.Header.Size); +					break; +			} + +			break; +	} + +	#if defined(HAS_MULTIPLE_DESCRIPTOR_ADDRESS_SPACES) +	*DescriptorMemorySpace = MEMSPACE_RAM; +	#endif + +	*DescriptorAddress = Address; +	return Size; +} + diff --git a/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/Descriptors.h b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/Descriptors.h new file mode 100644 index 0000000000..6d8145d0cc --- /dev/null +++ b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/Descriptors.h @@ -0,0 +1,59 @@ +/* +             LUFA Library +     Copyright (C) Dean Camera, 2014. + +  dean [at] fourwalledcubicle [dot] com +           www.lufa-lib.org +*/ + +/* +  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com) + +  Permission to use, copy, modify, distribute, and sell this +  software and its documentation for any purpose is hereby granted +  without fee, provided that the above copyright notice appear in +  all copies and that both that the copyright notice and this +  permission notice and warranty disclaimer appear in supporting +  documentation, and that the name of the author not be used in +  advertising or publicity pertaining to distribution of the +  software without specific, written prior permission. + +  The author disclaims all warranties with regard to this +  software, including all implied warranties of merchantability +  and fitness.  In no event shall the author be liable for any +  special, indirect or consequential damages or any damages +  whatsoever resulting from loss of use, data or profits, whether +  in an action of contract, negligence or other tortious action, +  arising out of or in connection with the use or performance of +  this software. +*/ + +/** \file + * + *  Header file for Descriptors.c. + */ + +#ifndef _DESCRIPTORS_H_ +#define _DESCRIPTORS_H_ + +	/* Includes: */ +		#include <LUFA/Drivers/USB/USB.h> + +  /* Macros: */ +    #if (defined(ARCH_HAS_MULTI_ADDRESS_SPACE) && \ +         !(defined(USE_FLASH_DESCRIPTORS) || defined(USE_EEPROM_DESCRIPTORS) || defined(USE_RAM_DESCRIPTORS))) +      #define HAS_MULTIPLE_DESCRIPTOR_ADDRESS_SPACES +    #endif + +	/* Type Defines: */ +		/** Type define for the device configuration descriptor structure. This must be defined in the +		 *  application code, as the configuration descriptor contains several sub-descriptors which +		 *  vary between devices, and which describe the device's usage to the host. +		 */ +		typedef struct +		{ +			USB_Descriptor_Configuration_Header_t Config; +		} USB_Descriptor_Configuration_t; + +#endif + diff --git a/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.c b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.c new file mode 100644 index 0000000000..ddaa9d0893 --- /dev/null +++ b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.c @@ -0,0 +1,106 @@ +/* +             LUFA Library +     Copyright (C) Dean Camera, 2014. + +  dean [at] fourwalledcubicle [dot] com +           www.lufa-lib.org +*/ + +/* +  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com) + +  Permission to use, copy, modify, distribute, and sell this +  software and its documentation for any purpose is hereby granted +  without fee, provided that the above copyright notice appear in +  all copies and that both that the copyright notice and this +  permission notice and warranty disclaimer appear in supporting +  documentation, and that the name of the author not be used in +  advertising or publicity pertaining to distribution of the +  software without specific, written prior permission. + +  The author disclaims all warranties with regard to this +  software, including all implied warranties of merchantability +  and fitness.  In no event shall the author be liable for any +  special, indirect or consequential damages or any damages +  whatsoever resulting from loss of use, data or profits, whether +  in an action of contract, negligence or other tortious action, +  arising out of or in connection with the use or performance of +  this software. +*/ + +/** \file + * + *  Main source file for the USB device application. This file contains the + *  main tasks of the application and is responsible for the initial + *  application hardware configuration. + */ + +#include "DeviceApplication.h" + +/** Main program entry point. This routine contains the overall program flow, including initial + *  setup of all components and the main program loop. + */ +int main(void) +{ +	SetupHardware(); + +	GlobalInterruptEnable(); + +	for (;;) +	{ +		USB_USBTask(); +	} +} + +/** Configures the board hardware and chip peripherals for the demo's functionality. */ +void SetupHardware(void) +{ +	#if (ARCH == ARCH_AVR8) +		/* Disable watchdog if enabled by bootloader/fuses */ +		MCUSR &= ~(1 << WDRF); +		wdt_disable(); + +		/* Disable clock division */ +		clock_prescale_set(clock_div_1); + +		/* Hardware Initialization */ +		USB_Init(USB_MODE_Device, USB_DEVICE_OPT_FULLSPEED | USB_OPT_AUTO_PLL); +	#elif (ARCH == ARCH_XMEGA) +		/* Start the PLL to multiply the 2MHz RC oscillator to 32MHz and switch the CPU core to run from it */ +		XMEGACLK_StartPLL(CLOCK_SRC_INT_RC2MHZ, 2000000, F_CPU); +		XMEGACLK_SetCPUClockSource(CLOCK_SRC_PLL); + +		/* Start the 32MHz internal RC oscillator and start the DFLL to increase it to 48MHz using the USB SOF as a reference */ +		XMEGACLK_StartInternalOscillator(CLOCK_SRC_INT_RC32MHZ); +		XMEGACLK_StartDFLL(CLOCK_SRC_INT_RC32MHZ, DFLL_REF_INT_USBSOF, F_USB); + +		PMIC.CTRL = PMIC_LOLVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_HILVLEN_bm; + +		/* Hardware Initialization */ +		USB_Init(USB_OPT_RC32MCLKSRC | USB_OPT_BUSEVENT_PRIHIGH); +	#endif +} + +/** Event handler for the library USB Connection event. */ +void EVENT_USB_Device_Connect(void) +{ + +} + +/** Event handler for the library USB Disconnection event. */ +void EVENT_USB_Device_Disconnect(void) +{ + +} + +/** Event handler for the library USB Configuration Changed event. */ +void EVENT_USB_Device_ConfigurationChanged(void) +{ + +} + +/** Event handler for the library USB Control Request reception event. */ +void EVENT_USB_Device_ControlRequest(void) +{ + +} diff --git a/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.h b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.h new file mode 100644 index 0000000000..325176c537 --- /dev/null +++ b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.h @@ -0,0 +1,53 @@ +/* +             LUFA Library +     Copyright (C) Dean Camera, 2014. + +  dean [at] fourwalledcubicle [dot] com +           www.lufa-lib.org +*/ + +/* +  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com) + +  Permission to use, copy, modify, distribute, and sell this +  software and its documentation for any purpose is hereby granted +  without fee, provided that the above copyright notice appear in +  all copies and that both that the copyright notice and this +  permission notice and warranty disclaimer appear in supporting +  documentation, and that the name of the author not be used in +  advertising or publicity pertaining to distribution of the +  software without specific, written prior permission. + +  The author disclaims all warranties with regard to this +  software, including all implied warranties of merchantability +  and fitness.  In no event shall the author be liable for any +  special, indirect or consequential damages or any damages +  whatsoever resulting from loss of use, data or profits, whether +  in an action of contract, negligence or other tortious action, +  arising out of or in connection with the use or performance of +  this software. +*/ + +/** \file + * + *  Header file for DeviceApplication.c. + */ + +#ifndef _USB_DEVICE_APPLICATION_H_ +#define _USB_DEVICE_APPLICATION_H_ + +	/* Includes: */ +		#include <avr/io.h> +		#include <avr/wdt.h> +		#include <avr/power.h> + +		#include <LUFA/Platform/Platform.h> +		#include <LUFA/Drivers/USB/USB.h> + +		#include "Descriptors.h" + +	/* Function Prototypes: */ +		void SetupHardware(void); + +#endif + diff --git a/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/asf.xml b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/asf.xml new file mode 100644 index 0000000000..fd65db283f --- /dev/null +++ b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/asf.xml @@ -0,0 +1,55 @@ +<asf xmlversion="1.0">
 +	<project caption="USB Device Template" id="lufa.templates.device.project.avr8">
 +		<require idref="lufa.templates.device"/>
 +		<require idref="lufa.boards.dummy.avr8"/>
 +		<generator value="as5_8_template"/>
 +
 +		<device-support value="at90usb1287"/>
 +		<config name="lufa.drivers.board.name" value="usbkey"/>
 +
 +		<build type="define" name="F_CPU" value="8000000UL"/>
 +		<build type="define" name="F_USB" value="8000000UL"/>
 +	</project>
 +
 +	<project caption="USB Device Template" id="lufa.templates.device.project.xmega">
 +		<require idref="lufa.templates.device"/>
 +		<require idref="lufa.boards.dummy.xmega"/>
 +		<generator value="as5_8_template"/>
 +
 +		<device-support value="atxmega256a3bu"/>
 +		<config name="lufa.drivers.board.name" value="a3bu_xplained"/>
 +
 +		<build type="define" name="F_CPU" value="32000000UL"/>
 +		<build type="define" name="F_USB" value="48000000UL"/>
 +	</project>
 +
 +	<module type="application" id="lufa.templates.device" caption="USB Device Template">
 +		<info type="description" value="summary">
 +		Template for a LUFA USB device mode application.
 +		</info>
 +
 + 		<info type="gui-flag" value="move-to-root"/>
 +
 +		<info type="keyword" value="Technology">
 +			<keyword value="USB Device"/>
 +			<keyword value="Template Projects"/>
 +		</info>
 +
 +		<device-support-alias value="lufa_avr8"/>
 +		<device-support-alias value="lufa_xmega"/>
 +		<device-support-alias value="lufa_uc3"/>
 +
 +		<build type="c-source" value="DeviceApplication.c"/>
 +		<build type="c-source" value="Descriptors.c"/>
 +		<build type="header-file" value="DeviceApplication.h"/>
 +		<build type="header-file" value="Descriptors.h"/>
 +
 +		<build type="module-config" subtype="path" value=".."/>
 +		<build type="header-file" value="../LUFAConfig.h"/>
 +
 +		<require idref="lufa.common"/>
 +		<require idref="lufa.platform"/>
 +		<require idref="lufa.drivers.usb"/>
 +		<require idref="lufa.drivers.board"/>
 +	</module>
 +</asf>
 diff --git a/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DriverStubs/Board.h b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DriverStubs/Board.h new file mode 100644 index 0000000000..5a1e58364f --- /dev/null +++ b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DriverStubs/Board.h @@ -0,0 +1,82 @@ +/* +             LUFA Library +     Copyright (C) Dean Camera, 2014. + +  dean [at] fourwalledcubicle [dot] com +           www.lufa-lib.org +*/ + +/* +  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com) + +  Permission to use, copy, modify, distribute, and sell this +  software and its documentation for any purpose is hereby granted +  without fee, provided that the above copyright notice appear in +  all copies and that both that the copyright notice and this +  permission notice and warranty disclaimer appear in supporting +  documentation, and that the name of the author not be used in +  advertising or publicity pertaining to distribution of the +  software without specific, written prior permission. + +  The author disclaims all warranties with regard to this +  software, including all implied warranties of merchantability +  and fitness.  In no event shall the author be liable for any +  special, indirect or consequential damages or any damages +  whatsoever resulting from loss of use, data or profits, whether +  in an action of contract, negligence or other tortious action, +  arising out of or in connection with the use or performance of +  this software. +*/ + +/** \file + *  \brief LUFA Custom Board Hardware Information Driver (Template) + * + *  This is a stub driver header file, for implementing custom board + *  layout hardware with compatible LUFA board specific drivers. If + *  the library is configured to use the BOARD_USER board mode, this + *  driver file should be completed and copied into the "/Board/" folder + *  inside the application's folder. + * + *  This stub is for the board-specific component of the LUFA Board Hardware + *  information driver. + */ + +#ifndef __BOARD_USER_H__ +#define __BOARD_USER_H__ + +	/* Includes: */ +		// TODO: Add any required includes here + +	/* Enable C linkage for C++ Compilers: */ +		#if defined(__cplusplus) +			extern "C" { +		#endif + +	/* Preprocessor Checks: */ +		#if !defined(__INCLUDE_FROM_BOARD_H) +			#error Do not include this file directly. Include LUFA/Drivers/Board/Board.h instead. +		#endif + +	/* Public Interface - May be used in end-application: */ +		/* Macros: */ +			/** Indicates the board has hardware Buttons mounted if defined. */ +//			#define BOARD_HAS_BUTTONS + +			/** Indicates the board has a hardware Dataflash mounted if defined. */ +//			#define BOARD_HAS_DATAFLASH + +			/** Indicates the board has a hardware Joystick mounted if defined. */ +//			#define BOARD_HAS_JOYSTICK + +			/** Indicates the board has hardware LEDs mounted if defined. */ +//			#define BOARD_HAS_LEDS + +	/* Disable C linkage for C++ Compilers: */ +		#if defined(__cplusplus) +			} +		#endif + +#endif + +/** @} */ + diff --git a/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DriverStubs/Buttons.h b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DriverStubs/Buttons.h new file mode 100644 index 0000000000..b3c2f2b422 --- /dev/null +++ b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DriverStubs/Buttons.h @@ -0,0 +1,90 @@ +/* +             LUFA Library +     Copyright (C) Dean Camera, 2014. + +  dean [at] fourwalledcubicle [dot] com +           www.lufa-lib.org +*/ + +/* +  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com) + +  Permission to use, copy, modify, distribute, and sell this +  software and its documentation for any purpose is hereby granted +  without fee, provided that the above copyright notice appear in +  all copies and that both that the copyright notice and this +  permission notice and warranty disclaimer appear in supporting +  documentation, and that the name of the author not be used in +  advertising or publicity pertaining to distribution of the +  software without specific, written prior permission. + +  The author disclaims all warranties with regard to this +  software, including all implied warranties of merchantability +  and fitness.  In no event shall the author be liable for any +  special, indirect or consequential damages or any damages +  whatsoever resulting from loss of use, data or profits, whether +  in an action of contract, negligence or other tortious action, +  arising out of or in connection with the use or performance of +  this software. +*/ + +/** \file + *  \brief LUFA Custom Board Button Hardware Driver (Template) + * + *  This is a stub driver header file, for implementing custom board + *  layout hardware with compatible LUFA board specific drivers. If + *  the library is configured to use the BOARD_USER board mode, this + *  driver file should be completed and copied into the "/Board/" folder + *  inside the application's folder. + * + *  This stub is for the board-specific component of the LUFA Buttons driver, + *  for the control of physical board-mounted GPIO pushbuttons. + */ + +#ifndef __BUTTONS_USER_H__ +#define __BUTTONS_USER_H__ + +	/* Includes: */ +		// TODO: Add any required includes here + +	/* Enable C linkage for C++ Compilers: */ +		#if defined(__cplusplus) +			extern "C" { +		#endif + +	/* Preprocessor Checks: */ +		#if !defined(__INCLUDE_FROM_BUTTONS_H) +			#error Do not include this file directly. Include LUFA/Drivers/Board/Buttons.h instead. +		#endif + +	/* Public Interface - May be used in end-application: */ +		/* Macros: */ +			/** Button mask for the first button on the board. */ +			#define BUTTONS_BUTTON1          // TODO: Add mask for first board button here + +		/* Inline Functions: */ +		#if !defined(__DOXYGEN__) +			static inline void Buttons_Init(void) +			{ +				// TODO: Initialize the appropriate port pins as an inputs here, with pull-ups +			} + +			static inline void Buttons_Disable(void) +			{ +				// TODO: Clear the appropriate port pins as high impedance inputs here +			} + +			static inline uint8_t Buttons_GetStatus(void) ATTR_WARN_UNUSED_RESULT; +			static inline uint8_t Buttons_GetStatus(void) +			{ +				// TODO: Return current button status here, debounced if required +			} +		#endif + +	/* Disable C linkage for C++ Compilers: */ +		#if defined(__cplusplus) +			} +		#endif + +#endif + diff --git a/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DriverStubs/Dataflash.h b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DriverStubs/Dataflash.h new file mode 100644 index 0000000000..83acb2f12e --- /dev/null +++ b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DriverStubs/Dataflash.h @@ -0,0 +1,223 @@ +/* +             LUFA Library +     Copyright (C) Dean Camera, 2014. + +  dean [at] fourwalledcubicle [dot] com +           www.lufa-lib.org +*/ + +/* +  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com) + +  Permission to use, copy, modify, distribute, and sell this +  software and its documentation for any purpose is hereby granted +  without fee, provided that the above copyright notice appear in +  all copies and that both that the copyright notice and this +  permission notice and warranty disclaimer appear in supporting +  documentation, and that the name of the author not be used in +  advertising or publicity pertaining to distribution of the +  software without specific, written prior permission. + +  The author disclaims all warranties with regard to this +  software, including all implied warranties of merchantability +  and fitness.  In no event shall the author be liable for any +  special, indirect or consequential damages or any damages +  whatsoever resulting from loss of use, data or profits, whether +  in an action of contract, negligence or other tortious action, +  arising out of or in connection with the use or performance of +  this software. +*/ + +/** \file + *  \brief LUFA Custom Board Dataflash Hardware Driver (Template) + * + *  This is a stub driver header file, for implementing custom board + *  layout hardware with compatible LUFA board specific drivers. If + *  the library is configured to use the BOARD_USER board mode, this + *  driver file should be completed and copied into the "/Board/" folder + *  inside the application's folder. + * + *  This stub is for the board-specific component of the LUFA Dataflash + *  driver. +*/ + +#ifndef __DATAFLASH_USER_H__ +#define __DATAFLASH_USER_H__ + +	/* Includes: */ +		// TODO: Add any required includes here + +	/* Preprocessor Checks: */ +		#if !defined(__INCLUDE_FROM_DATAFLASH_H) +			#error Do not include this file directly. Include LUFA/Drivers/Board/Dataflash.h instead. +		#endif + +	/* Private Interface - For use in library only: */ +	#if !defined(__DOXYGEN__) +		/* Macros: */ +			#define DATAFLASH_CHIPCS_MASK                // TODO: Replace this with a mask of all the /CS pins of all Dataflashes +			#define DATAFLASH_CHIPCS_DDR                 // TODO: Replace with the DDR register name for the board's Dataflash ICs +			#define DATAFLASH_CHIPCS_PORT                // TODO: Replace with the PORT register name for the board's Dataflash ICs +	#endif + +	/* Public Interface - May be used in end-application: */ +		/* Macros: */ +			/** Constant indicating the total number of dataflash ICs mounted on the selected board. */ +			#define DATAFLASH_TOTALCHIPS                 1 // TODO: Replace with the number of Dataflashes on the board, max 2 + +			/** Mask for no dataflash chip selected. */ +			#define DATAFLASH_NO_CHIP                    0 + +			/** Mask for the first dataflash chip selected. */ +			#define DATAFLASH_CHIP1                      // TODO: Replace with mask with the pin attached to the first Dataflash /CS set + +			/** Mask for the second dataflash chip selected. */ +			#define DATAFLASH_CHIP2                      // TODO: Replace with mask with the pin attached to the second Dataflash /CS set + +			/** Internal main memory page size for the board's dataflash ICs. */ +			#define DATAFLASH_PAGE_SIZE                  // TODO: Replace with the page size for the Dataflash ICs + +			/** Total number of pages inside each of the board's dataflash ICs. */ +			#define DATAFLASH_PAGES                      // TODO: Replace with the total number of pages inside one of the Dataflash ICs + +		/* Inline Functions: */ +		#if !defined(__DOXYGEN__) +			/** Initializes the dataflash driver so that commands and data may be sent to an attached dataflash IC. +			 *  The microcontroller's SPI driver MUST be initialized before any of the dataflash commands are used. +			 */ +			static inline void Dataflash_Init(void) +			{ +				DATAFLASH_CHIPCS_DDR  |= DATAFLASH_CHIPCS_MASK; +				DATAFLASH_CHIPCS_PORT |= DATAFLASH_CHIPCS_MASK; +			} + +			/** Sends a byte to the currently selected dataflash IC, and returns a byte from the dataflash. +			 * +			 *  \param[in] Byte  Byte of data to send to the dataflash +			 * +			 *  \return Last response byte from the dataflash +			 */ +			static inline uint8_t Dataflash_TransferByte(const uint8_t Byte) ATTR_ALWAYS_INLINE; +			static inline uint8_t Dataflash_TransferByte(const uint8_t Byte) +			{ +				// TODO +			} + +			/** Sends a byte to the currently selected dataflash IC, and ignores the next byte from the dataflash. +			 * +			 *  \param[in] Byte  Byte of data to send to the dataflash +			 */ +			static inline void Dataflash_SendByte(const uint8_t Byte) ATTR_ALWAYS_INLINE; +			static inline void Dataflash_SendByte(const uint8_t Byte) +			{ +				// TODO +			} + +			/** Sends a dummy byte to the currently selected dataflash IC, and returns the next byte from the dataflash. +			 * +			 *  \return Last response byte from the dataflash +			 */ +			static inline uint8_t Dataflash_ReceiveByte(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; +			static inline uint8_t Dataflash_ReceiveByte(void) +			{ +				// TODO +			} + +			/** Determines the currently selected dataflash chip. +			 * +			 *  \return Mask of the currently selected Dataflash chip, either \ref DATAFLASH_NO_CHIP if no chip is selected +			 *          or a DATAFLASH_CHIPn mask (where n is the chip number). +			 */ +			static inline uint8_t Dataflash_GetSelectedChip(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; +			static inline uint8_t Dataflash_GetSelectedChip(void) +			{ +				return (~DATAFLASH_CHIPCS_PORT & DATAFLASH_CHIPCS_MASK); +			} + +			/** Selects the given dataflash chip. +			 * +			 *  \param[in]  ChipMask  Mask of the Dataflash IC to select, in the form of a \c DATAFLASH_CHIPn mask (where n is +			 *              the chip number). +			 */ +			static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE; +			static inline void Dataflash_SelectChip(const uint8_t ChipMask) +			{ +				DATAFLASH_CHIPCS_PORT = ((DATAFLASH_CHIPCS_PORT | DATAFLASH_CHIPCS_MASK) & ~ChipMask); +			} + +			/** Deselects the current dataflash chip, so that no dataflash is selected. */ +			static inline void Dataflash_DeselectChip(void) ATTR_ALWAYS_INLINE; +			static inline void Dataflash_DeselectChip(void) +			{ +				Dataflash_SelectChip(DATAFLASH_NO_CHIP); +			} + +			/** Selects a dataflash IC from the given page number, which should range from 0 to +			 *  ((DATAFLASH_PAGES * DATAFLASH_TOTALCHIPS) - 1). For boards containing only one +			 *  dataflash IC, this will select DATAFLASH_CHIP1. If the given page number is outside +			 *  the total number of pages contained in the boards dataflash ICs, all dataflash ICs +			 *  are deselected. +			 * +			 *  \param[in] PageAddress  Address of the page to manipulate, ranging from +			 *                          0 to ((DATAFLASH_PAGES * DATAFLASH_TOTALCHIPS) - 1). +			 */ +			static inline void Dataflash_SelectChipFromPage(const uint16_t PageAddress) +			{ +				Dataflash_DeselectChip(); + +				if (PageAddress >= (DATAFLASH_PAGES * DATAFLASH_TOTALCHIPS)) +				  return; + +				#if (DATAFLASH_TOTALCHIPS == 2) +					if (PageAddress & 0x01) +					  Dataflash_SelectChip(DATAFLASH_CHIP2); +					else +					  Dataflash_SelectChip(DATAFLASH_CHIP1); +				#else +					Dataflash_SelectChip(DATAFLASH_CHIP1); +				#endif +			} + +			/** Toggles the select line of the currently selected dataflash IC, so that it is ready to receive +			 *  a new command. +			 */ +			static inline void Dataflash_ToggleSelectedChipCS(void) +			{ +				uint8_t SelectedChipMask = Dataflash_GetSelectedChip(); + +				Dataflash_DeselectChip(); +				Dataflash_SelectChip(SelectedChipMask); +			} + +			/** Spin-loops while the currently selected dataflash is busy executing a command, such as a main +			 *  memory page program or main memory to buffer transfer. +			 */ +			static inline void Dataflash_WaitWhileBusy(void) +			{ +				Dataflash_ToggleSelectedChipCS(); +				Dataflash_SendByte(DF_CMD_GETSTATUS); +				while (!(Dataflash_ReceiveByte() & DF_STATUS_READY)); +				Dataflash_ToggleSelectedChipCS(); +			} + +			/** Sends a set of page and buffer address bytes to the currently selected dataflash IC, for use with +			 *  dataflash commands which require a complete 24-bit address. +			 * +			 *  \param[in] PageAddress  Page address within the selected dataflash IC +			 *  \param[in] BufferByte   Address within the dataflash's buffer +			 */ +			static inline void Dataflash_SendAddressBytes(uint16_t PageAddress, +			                                              const uint16_t BufferByte) +			{ +				#if (DATAFLASH_TOTALCHIPS == 2) +					PageAddress >>= 1; +				#endif + +				Dataflash_SendByte(PageAddress >> 5); +				Dataflash_SendByte((PageAddress << 3) | (BufferByte >> 8)); +				Dataflash_SendByte(BufferByte); +			} +		#endif + +#endif + diff --git a/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DriverStubs/Joystick.h b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DriverStubs/Joystick.h new file mode 100644 index 0000000000..07542ab723 --- /dev/null +++ b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DriverStubs/Joystick.h @@ -0,0 +1,102 @@ +/* +             LUFA Library +     Copyright (C) Dean Camera, 2014. + +  dean [at] fourwalledcubicle [dot] com +           www.lufa-lib.org +*/ + +/* +  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com) + +  Permission to use, copy, modify, distribute, and sell this +  software and its documentation for any purpose is hereby granted +  without fee, provided that the above copyright notice appear in +  all copies and that both that the copyright notice and this +  permission notice and warranty disclaimer appear in supporting +  documentation, and that the name of the author not be used in +  advertising or publicity pertaining to distribution of the +  software without specific, written prior permission. + +  The author disclaims all warranties with regard to this +  software, including all implied warranties of merchantability +  and fitness.  In no event shall the author be liable for any +  special, indirect or consequential damages or any damages +  whatsoever resulting from loss of use, data or profits, whether +  in an action of contract, negligence or other tortious action, +  arising out of or in connection with the use or performance of +  this software. +*/ + +/** \file + *  \brief LUFA Custom Board Joystick Hardware Driver (Template) + * + *  This is a stub driver header file, for implementing custom board + *  layout hardware with compatible LUFA board specific drivers. If + *  the library is configured to use the BOARD_USER board mode, this + *  driver file should be completed and copied into the "/Board/" folder + *  inside the application's folder. + * + *  This stub is for the board-specific component of the LUFA Joystick + *  driver, for a digital four-way (plus button) joystick. +*/ + +#ifndef __JOYSTICK_USER_H__ +#define __JOYSTICK_USER_H__ + +	/* Includes: */ +		// TODO: Add any required includes here + +	/* Enable C linkage for C++ Compilers: */ +		#if defined(__cplusplus) +			extern "C" { +		#endif + +	/* Preprocessor Checks: */ +		#if !defined(__INCLUDE_FROM_JOYSTICK_H) +			#error Do not include this file directly. Include LUFA/Drivers/Board/Joystick.h instead. +		#endif + +	/* Public Interface - May be used in end-application: */ +		/* Macros: */ +			/** Mask for the joystick being pushed in the left direction. */ +			#define JOY_LEFT                  // TODO: Add mask to indicate joystick left position here + +			/** Mask for the joystick being pushed in the right direction. */ +			#define JOY_RIGHT                 // TODO: Add mask to indicate joystick right position here + +			/** Mask for the joystick being pushed in the upward direction. */ +			#define JOY_UP                    // TODO: Add mask to indicate joystick up position here + +			/** Mask for the joystick being pushed in the downward direction. */ +			#define JOY_DOWN                  // TODO: Add mask to indicate joystick down position here + +			/** Mask for the joystick being pushed inward. */ +			#define JOY_PRESS                 // TODO: Add mask to indicate joystick pressed position here + +		/* Inline Functions: */ +		#if !defined(__DOXYGEN__) +			static inline void Joystick_Init(void) +			{ +				// TODO: Initialize joystick port pins as inputs with pull-ups +			} + +			static inline void Joystick_Disable(void) +			{ +				// TODO: Clear the joystick pins as high impedance inputs here +			} + +			static inline uint8_t Joystick_GetStatus(void) ATTR_WARN_UNUSED_RESULT; +			static inline uint8_t Joystick_GetStatus(void) +			{ +				// TODO: Return current joystick position data which can be obtained by masking against the JOY_* macros +			} +		#endif + +	/* Disable C linkage for C++ Compilers: */ +		#if defined(__cplusplus) +			} +		#endif + +#endif + diff --git a/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DriverStubs/LEDs.h b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DriverStubs/LEDs.h new file mode 100644 index 0000000000..4373972790 --- /dev/null +++ b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DriverStubs/LEDs.h @@ -0,0 +1,130 @@ +/* +             LUFA Library +     Copyright (C) Dean Camera, 2014. + +  dean [at] fourwalledcubicle [dot] com +           www.lufa-lib.org +*/ + +/* +  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com) + +  Permission to use, copy, modify, distribute, and sell this +  software and its documentation for any purpose is hereby granted +  without fee, provided that the above copyright notice appear in +  all copies and that both that the copyright notice and this +  permission notice and warranty disclaimer appear in supporting +  documentation, and that the name of the author not be used in +  advertising or publicity pertaining to distribution of the +  software without specific, written prior permission. + +  The author disclaims all warranties with regard to this +  software, including all implied warranties of merchantability +  and fitness.  In no event shall the author be liable for any +  special, indirect or consequential damages or any damages +  whatsoever resulting from loss of use, data or profits, whether +  in an action of contract, negligence or other tortious action, +  arising out of or in connection with the use or performance of +  this software. +*/ + +/** \file + *  \brief LUFA Custom Board LED Hardware Driver (Template) + * + *  This is a stub driver header file, for implementing custom board + *  layout hardware with compatible LUFA board specific drivers. If + *  the library is configured to use the BOARD_USER board mode, this + *  driver file should be completed and copied into the "/Board/" folder + *  inside the application's folder. + * + *  This stub is for the board-specific component of the LUFA LEDs driver, + *  for the LEDs (up to four) mounted on most development boards. +*/ + +#ifndef __LEDS_USER_H__ +#define __LEDS_USER_H__ + +	/* Includes: */ +		// TODO: Add any required includes here + +	/* Enable C linkage for C++ Compilers: */ +		#if defined(__cplusplus) +			extern "C" { +		#endif + +	/* Preprocessor Checks: */ +		#if !defined(__INCLUDE_FROM_LEDS_H) +			#error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead. +		#endif + +	/* Public Interface - May be used in end-application: */ +		/* Macros: */ +			/** LED mask for the first LED on the board. */ +			#define LEDS_LED1        // TODO: Add mask for first board LED here + +			/** LED mask for the second LED on the board. */ +			#define LEDS_LED2        // TODO: Add mask for second board LED here + +			/** LED mask for the third LED on the board. */ +			#define LEDS_LED3        // TODO: Add mask for third board LED here + +			/** LED mask for the fourth LED on the board. */ +			#define LEDS_LED4        // TODO: Add mask for fourth board LED here + +			/** LED mask for all the LEDs on the board. */ +			#define LEDS_ALL_LEDS    (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4) + +			/** LED mask for none of the board LEDs. */ +			#define LEDS_NO_LEDS     0 + +		/* Inline Functions: */ +		#if !defined(__DOXYGEN__) +			static inline void LEDs_Init(void) +			{ +				// TODO: Add code to initialize LED port pins as outputs here +			} + +			static inline void LEDs_Disable(void) +			{ +				// TODO: Clear the LED port pins as high impedance inputs here +			} + +			static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) +			{ +				// TODO: Add code to turn on LEDs given in the LEDMask mask here, leave others as-is +			} + +			static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask) +			{ +				// TODO: Add code to turn off LEDs given in the LEDMask mask here, leave others as-is +			} + +			static inline void LEDs_SetAllLEDs(const uint8_t LEDMask) +			{ +				// TODO: Add code to turn on only LEDs given in the LEDMask mask here, all others off +			} + +			static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask) +			{ +				// TODO: Add code to set the Leds in the given LEDMask to the status given in ActiveMask here +			} + +			static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) +			{ +				// TODO: Add code to toggle the Leds in the given LEDMask, ignoring all others +			} + +			static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; +			static inline uint8_t LEDs_GetLEDs(void) +			{ +				// TODO: Add code to return the current LEDs status' here which can be masked against LED_LED* macros +			} +		#endif + +	/* Disable C linkage for C++ Compilers: */ +		#if defined(__cplusplus) +			} +		#endif + +#endif + diff --git a/protocol/lufa/LUFA-git/LUFA/CodeTemplates/HostTemplate/HostApplication.c b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/HostTemplate/HostApplication.c new file mode 100644 index 0000000000..1ac03788d3 --- /dev/null +++ b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/HostTemplate/HostApplication.c @@ -0,0 +1,133 @@ +/* +             LUFA Library +     Copyright (C) Dean Camera, 2014. + +  dean [at] fourwalledcubicle [dot] com +           www.lufa-lib.org +*/ + +/* +  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com) + +  Permission to use, copy, modify, distribute, and sell this +  software and its documentation for any purpose is hereby granted +  without fee, provided that the above copyright notice appear in +  all copies and that both that the copyright notice and this +  permission notice and warranty disclaimer appear in supporting +  documentation, and that the name of the author not be used in +  advertising or publicity pertaining to distribution of the +  software without specific, written prior permission. + +  The author disclaims all warranties with regard to this +  software, including all implied warranties of merchantability +  and fitness.  In no event shall the author be liable for any +  special, indirect or consequential damages or any damages +  whatsoever resulting from loss of use, data or profits, whether +  in an action of contract, negligence or other tortious action, +  arising out of or in connection with the use or performance of +  this software. +*/ + +/** \file + * + *  Main source file for the USB host application. This file contains the + *  main tasks of the application and is responsible for the initial + *  application hardware configuration. + */ + +#include "HostApplication.h" + +/** Main program entry point. This routine configures the hardware required by the application, then + *  enters a loop to run the application tasks in sequence. + */ +int main(void) +{ +	SetupHardware(); + +	GlobalInterruptEnable(); + +	for (;;) +	{ +		USB_USBTask(); +	} +} + +/** Configures the board hardware and chip peripherals for the demo's functionality. */ +void SetupHardware(void) +{ +	/* Disable watchdog if enabled by bootloader/fuses */ +	MCUSR &= ~(1 << WDRF); +	wdt_disable(); + +	/* Disable clock division */ +	clock_prescale_set(clock_div_1); + +	/* Hardware Initialization */ +	USB_Init(USB_MODE_Host, USB_DEVICE_OPT_FULLSPEED | USB_OPT_AUTO_PLL); +} + +/** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and + *  starts the library USB task to begin the enumeration and USB management process. + */ +void EVENT_USB_Host_DeviceAttached(void) +{ + +} + +/** Event handler for the USB_DeviceUnattached event. This indicates that a device has been removed from the host, and + *  stops the library USB task management process. + */ +void EVENT_USB_Host_DeviceUnattached(void) +{ + +} + +/** Event handler for the USB_DeviceEnumerationComplete event. This indicates that a device has been successfully + *  enumerated by the host and is now ready to be used by the application. + */ +void EVENT_USB_Host_DeviceEnumerationComplete(void) +{ +	uint16_t ConfigDescriptorSize; +	uint8_t  ConfigDescriptorData[512]; + +	if (USB_Host_GetDeviceConfigDescriptor(1, &ConfigDescriptorSize, ConfigDescriptorData, +	                                       sizeof(ConfigDescriptorData)) != HOST_GETCONFIG_Successful) +	{ +		return; +	} + +	if (USB_Host_SetDeviceConfiguration(1) != HOST_SENDCONTROL_Successful) +	{ +		return; +	} +} + +/** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */ +void EVENT_USB_Host_HostError(const uint8_t ErrorCode) +{ +	USB_Disable(); +	for(;;); +} + +/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while + *  enumerating an attached USB device. + */ +void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, +                                            const uint8_t SubErrorCode) +{ + +} + +/* Required callback for retrieving descriptors from a LUFA device - unless the USB_HOST_ONLY configuration + * option is set, this is still required even in an application that uses host mode only. + */ +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, +		const uint8_t wIndex, +		const void** const DescriptorAddress +#if defined(HAS_MULTIPLE_DESCRIPTOR_ADDRESS_SPACES) +		, uint8_t* const DescriptorMemorySpace +#endif +) +{ +	return 0; +} diff --git a/protocol/lufa/LUFA-git/LUFA/CodeTemplates/HostTemplate/HostApplication.h b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/HostTemplate/HostApplication.h new file mode 100644 index 0000000000..16dbb535ab --- /dev/null +++ b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/HostTemplate/HostApplication.h @@ -0,0 +1,56 @@ +/* +             LUFA Library +     Copyright (C) Dean Camera, 2014. + +  dean [at] fourwalledcubicle [dot] com +           www.lufa-lib.org +*/ + +/* +  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com) + +  Permission to use, copy, modify, distribute, and sell this +  software and its documentation for any purpose is hereby granted +  without fee, provided that the above copyright notice appear in +  all copies and that both that the copyright notice and this +  permission notice and warranty disclaimer appear in supporting +  documentation, and that the name of the author not be used in +  advertising or publicity pertaining to distribution of the +  software without specific, written prior permission. + +  The author disclaims all warranties with regard to this +  software, including all implied warranties of merchantability +  and fitness.  In no event shall the author be liable for any +  special, indirect or consequential damages or any damages +  whatsoever resulting from loss of use, data or profits, whether +  in an action of contract, negligence or other tortious action, +  arising out of or in connection with the use or performance of +  this software. +*/ + +/** \file + * + *  Header file for HostApplication.c. + */ + +#ifndef _USB_HOST_APPLICATION_H_ +#define _USB_HOST_APPLICATION_H_ + +	/* Includes: */ +		#include <avr/io.h> +		#include <avr/wdt.h> +		#include <avr/power.h> + +		#include <LUFA/Drivers/USB/USB.h> + +	/* Macros: */ +		#if (defined(ARCH_HAS_MULTI_ADDRESS_SPACE) && \ +			 !(defined(USE_FLASH_DESCRIPTORS) || defined(USE_EEPROM_DESCRIPTORS) || defined(USE_RAM_DESCRIPTORS))) +		  #define HAS_MULTIPLE_DESCRIPTOR_ADDRESS_SPACES +		#endif + +	/* Function Prototypes: */ +		void SetupHardware(void); + +#endif + diff --git a/protocol/lufa/LUFA-git/LUFA/CodeTemplates/HostTemplate/asf.xml b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/HostTemplate/asf.xml new file mode 100644 index 0000000000..c1996ec711 --- /dev/null +++ b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/HostTemplate/asf.xml @@ -0,0 +1,41 @@ +<asf xmlversion="1.0">
 +	<project caption="USB Host Template" id="lufa.templates.host.project">
 +		<require idref="lufa.templates.host"/>
 +		<require idref="lufa.boards.dummy.avr8"/>
 +		<generator value="as5_8_template"/>
 +
 +		<device-support value="at90usb1287"/>
 +		<config name="lufa.drivers.board.name" value="usbkey"/>
 +
 +		<build type="define" name="F_CPU" value="8000000UL"/>
 +		<build type="define" name="F_USB" value="8000000UL"/>
 +	</project>
 +
 +	<module type="application" id="lufa.templates.host" caption="USB Host Template">
 +		<info type="description" value="summary">
 +		Template for a LUFA USB host mode application.
 +		</info>
 +
 + 		<info type="gui-flag" value="move-to-root"/>
 +
 +		<info type="keyword" value="Technology">
 +			<keyword value="USB Host"/>
 +			<keyword value="Template Projects"/>
 +		</info>
 +
 +		<device-support-alias value="lufa_avr8"/>
 +		<device-support-alias value="lufa_xmega"/>
 +		<device-support-alias value="lufa_uc3"/>
 +
 +		<build type="c-source" value="HostApplication.c"/>
 +		<build type="header-file" value="HostApplication.h"/>
 +
 +		<build type="module-config" subtype="path" value=".."/>
 +		<build type="header-file" value="../LUFAConfig.h"/>
 +
 +		<require idref="lufa.common"/>
 +		<require idref="lufa.platform"/>
 +		<require idref="lufa.drivers.usb"/>
 +		<require idref="lufa.drivers.board"/>
 +	</module>
 +</asf>
 diff --git a/protocol/lufa/LUFA-git/LUFA/CodeTemplates/LUFAConfig.h b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/LUFAConfig.h new file mode 100644 index 0000000000..ab7fc7520e --- /dev/null +++ b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/LUFAConfig.h @@ -0,0 +1,167 @@ +/* +             LUFA Library +     Copyright (C) Dean Camera, 2014. + +  dean [at] fourwalledcubicle [dot] com +           www.lufa-lib.org +*/ + +/* +  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com) + +  Permission to use, copy, modify, distribute, and sell this +  software and its documentation for any purpose is hereby granted +  without fee, provided that the above copyright notice appear in +  all copies and that both that the copyright notice and this +  permission notice and warranty disclaimer appear in supporting +  documentation, and that the name of the author not be used in +  advertising or publicity pertaining to distribution of the +  software without specific, written prior permission. + +  The author disclaims all warranties with regard to this +  software, including all implied warranties of merchantability +  and fitness.  In no event shall the author be liable for any +  special, indirect or consequential damages or any damages +  whatsoever resulting from loss of use, data or profits, whether +  in an action of contract, negligence or other tortious action, +  arising out of or in connection with the use or performance of +  this software. +*/ + +/** \file + *  \brief LUFA Library Configuration Header File (Template) + * + *  This is a header file which can be used to configure LUFA's + *  compile time options, as an alternative to the compile time + *  constants supplied through a makefile. To use this configuration + *  header, copy this into your project's root directory and supply + *  the \c USE_LUFA_CONFIG_HEADER token to the compiler so that it is + *  defined in all compiled source files. + * + *  For information on what each token does, refer to the LUFA + *  manual section "Summary of Compile Tokens". + */ + +#ifndef __LUFA_CONFIG_H__ +#define __LUFA_CONFIG_H__ + +	#if (ARCH == ARCH_AVR8) + +		/* Non-USB Related Configuration Tokens: */ +//		#define DISABLE_TERMINAL_CODES + +		/* USB Class Driver Related Tokens: */ +//		#define HID_HOST_BOOT_PROTOCOL_ONLY +//		#define HID_STATETABLE_STACK_DEPTH       {Insert Value Here} +//		#define HID_USAGE_STACK_DEPTH            {Insert Value Here} +//		#define HID_MAX_COLLECTIONS              {Insert Value Here} +//		#define HID_MAX_REPORTITEMS              {Insert Value Here} +//		#define HID_MAX_REPORT_IDS               {Insert Value Here} +//		#define NO_CLASS_DRIVER_AUTOFLUSH + +		/* General USB Driver Related Tokens: */ +//		#define ORDERED_EP_CONFIG +//		#define USE_STATIC_OPTIONS               {Insert Value Here} +//		#define USB_DEVICE_ONLY +//		#define USB_HOST_ONLY +//		#define USB_STREAM_TIMEOUT_MS            {Insert Value Here} +//		#define NO_LIMITED_CONTROLLER_CONNECT +//		#define NO_SOF_EVENTS + +		/* USB Device Mode Driver Related Tokens: */ +//		#define USE_RAM_DESCRIPTORS +//		#define USE_FLASH_DESCRIPTORS +//		#define USE_EEPROM_DESCRIPTORS +//		#define NO_INTERNAL_SERIAL +//		#define FIXED_CONTROL_ENDPOINT_SIZE      {Insert Value Here} +//		#define DEVICE_STATE_AS_GPIOR            {Insert Value Here} +//		#define FIXED_NUM_CONFIGURATIONS         {Insert Value Here} +//		#define CONTROL_ONLY_DEVICE +//		#define INTERRUPT_CONTROL_ENDPOINT +//		#define NO_DEVICE_REMOTE_WAKEUP +//		#define NO_DEVICE_SELF_POWER + +		/* USB Host Mode Driver Related Tokens: */ +//		#define HOST_STATE_AS_GPIOR              {Insert Value Here} +//		#define USB_HOST_TIMEOUT_MS              {Insert Value Here} +//		#define HOST_DEVICE_SETTLE_DELAY_MS	     {Insert Value Here} +//		#define NO_AUTO_VBUS_MANAGEMENT +//		#define INVERTED_VBUS_ENABLE_LINE + +	#elif (ARCH == ARCH_XMEGA) + +		/* Non-USB Related Configuration Tokens: */ +//		#define DISABLE_TERMINAL_CODES + +		/* USB Class Driver Related Tokens: */ +//		#define HID_HOST_BOOT_PROTOCOL_ONLY +//		#define HID_STATETABLE_STACK_DEPTH       {Insert Value Here} +//		#define HID_USAGE_STACK_DEPTH            {Insert Value Here} +//		#define HID_MAX_COLLECTIONS              {Insert Value Here} +//		#define HID_MAX_REPORTITEMS              {Insert Value Here} +//		#define HID_MAX_REPORT_IDS               {Insert Value Here} +//		#define NO_CLASS_DRIVER_AUTOFLUSH + +		/* General USB Driver Related Tokens: */ +//		#define USE_STATIC_OPTIONS               {Insert Value Here} +//		#define USB_STREAM_TIMEOUT_MS            {Insert Value Here} +//		#define NO_LIMITED_CONTROLLER_CONNECT +//		#define NO_SOF_EVENTS + +		/* USB Device Mode Driver Related Tokens: */ +//		#define USE_RAM_DESCRIPTORS +//		#define USE_FLASH_DESCRIPTORS +//		#define USE_EEPROM_DESCRIPTORS +//		#define NO_INTERNAL_SERIAL +//		#define FIXED_CONTROL_ENDPOINT_SIZE      {Insert Value Here} +//		#define DEVICE_STATE_AS_GPIOR            {Insert Value Here} +//		#define FIXED_NUM_CONFIGURATIONS         {Insert Value Here} +//		#define CONTROL_ONLY_DEVICE +// 		#define MAX_ENDPOINT_INDEX               {Insert Value Here} +//		#define NO_DEVICE_REMOTE_WAKEUP +//		#define NO_DEVICE_SELF_POWER + +	#elif (ARCH == ARCH_UC3) + +		/* Non-USB Related Configuration Tokens: */ +//		#define DISABLE_TERMINAL_CODES + +		/* USB Class Driver Related Tokens: */ +//		#define HID_HOST_BOOT_PROTOCOL_ONLY +//		#define HID_STATETABLE_STACK_DEPTH       {Insert Value Here} +//		#define HID_USAGE_STACK_DEPTH            {Insert Value Here} +//		#define HID_MAX_COLLECTIONS              {Insert Value Here} +//		#define HID_MAX_REPORTITEMS              {Insert Value Here} +//		#define HID_MAX_REPORT_IDS               {Insert Value Here} +//		#define NO_CLASS_DRIVER_AUTOFLUSH + +		/* General USB Driver Related Tokens: */ +//		#define ORDERED_EP_CONFIG +//		#define USE_STATIC_OPTIONS               {Insert Value Here} +//		#define USB_DEVICE_ONLY +//		#define USB_HOST_ONLY +//		#define USB_STREAM_TIMEOUT_MS            {Insert Value Here} +//		#define NO_SOF_EVENTS + +		/* USB Device Mode Driver Related Tokens: */ +//		#define NO_INTERNAL_SERIAL +//		#define FIXED_CONTROL_ENDPOINT_SIZE      {Insert Value Here} +//		#define FIXED_NUM_CONFIGURATIONS         {Insert Value Here} +//		#define CONTROL_ONLY_DEVICE +//		#define INTERRUPT_CONTROL_ENDPOINT +//		#define NO_DEVICE_REMOTE_WAKEUP +//		#define NO_DEVICE_SELF_POWER + +		/* USB Host Mode Driver Related Tokens: */ +//		#define USB_HOST_TIMEOUT_MS              {Insert Value Here} +//		#define HOST_DEVICE_SETTLE_DELAY_MS	     {Insert Value Here} +//		#define NO_AUTO_VBUS_MANAGEMENT +//		#define INVERTED_VBUS_ENABLE_LINE + +	#else + +		#error Unsupported architecture for this LUFA configuration file. + +	#endif +#endif + diff --git a/protocol/lufa/LUFA-git/LUFA/CodeTemplates/WindowsINF/LUFA CDC-ACM.inf b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/WindowsINF/LUFA CDC-ACM.inf new file mode 100644 index 0000000000..212b5bbcb3 --- /dev/null +++ b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/WindowsINF/LUFA CDC-ACM.inf @@ -0,0 +1,64 @@ +;     Windows LUFA CDC ACM Setup File +; Copyright (c) 2000 Microsoft Corporation + +[DefaultInstall] +CopyINF="LUFA CDC-ACM.inf" + +[Version] +Signature="$Windows NT$" +Class=Ports +ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} +Provider=%MFGNAME% +DriverVer=7/1/2012,10.0.0.0 + +[Manufacturer] +%MFGNAME%=DeviceList, NTx86, NTamd64, NTia64 + +[SourceDisksNames] + +[SourceDisksFiles] + +[DestinationDirs] +DefaultDestDir=12 + +[DriverInstall] +Include=mdmcpq.inf +CopyFiles=FakeModemCopyFileSection +AddReg=DriverInstall.AddReg + +[DriverInstall.Services] +Include=mdmcpq.inf +AddService=usbser, 0x00000002, LowerFilter_Service_Inst + +[DriverInstall.AddReg] +HKR,,EnumPropPages32,,"msports.dll,SerialPortPropPageProvider" + +;------------------------------------------------------------------------------ +;  Vendor and Product ID Definitions +;------------------------------------------------------------------------------ +; When developing your USB device, the VID and PID used in the PC side +; application program and the firmware on the microcontroller must match. +; Modify the below line to use your VID and PID.  Use the format as shown below. +; Note: One INF file can be used for multiple devices with different VID and PIDs. +; For each supported device, append ",USB\VID_xxxx&PID_yyyy" to the end of the line. +;------------------------------------------------------------------------------ +[DeviceList] +%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_2044 + +[DeviceList.NTx86] +%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_2044 + +[DeviceList.NTamd64] +%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_2044 + +[DeviceList.NTia64] +%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_2044 + +;------------------------------------------------------------------------------ +;  String Definitions +;------------------------------------------------------------------------------ +;Modify these strings to customize your device +;------------------------------------------------------------------------------ +[Strings] +MFGNAME="http://www.lufa-lib.org" +DESCRIPTION="LUFA CDC-ACM Virtual Serial Port" diff --git a/protocol/lufa/LUFA-git/LUFA/CodeTemplates/WindowsINF/LUFA RNDIS.inf b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/WindowsINF/LUFA RNDIS.inf new file mode 100644 index 0000000000..73ca50e687 --- /dev/null +++ b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/WindowsINF/LUFA RNDIS.inf @@ -0,0 +1,59 @@ +;     Windows LUFA RNDIS Setup File +; Copyright (c) 2000 Microsoft Corporation + +[DefaultInstall] +CopyINF="LUFA RNDIS.inf" + +[Version] +Signature="$Windows NT$" +Class=Net +ClassGuid={4d36e972-e325-11ce-bfc1-08002be10318} +Provider=%MFGNAME% +DriverVer=7/1/2012,10.0.0.0 + +[Manufacturer] +%MFGNAME%=DeviceList, NTx86, NTamd64, NTia64 + +[ControlFlags] +ExcludeFromSelect=* + +[DriverInstall] +Characteristics=0x84 ; NCF_PHYSICAL + NCF_HAS_UI +BusType=15 +include=netrndis.inf +needs=Usb_Rndis.ndi +AddReg=Rndis_AddReg_Vista + +[DriverInstall.Services] +include=netrndis.inf +needs=Usb_Rndis.ndi.Services + +;------------------------------------------------------------------------------ +;  Vendor and Product ID Definitions +;------------------------------------------------------------------------------ +; When developing your USB device, the VID and PID used in the PC side +; application program and the firmware on the microcontroller must match. +; Modify the below line to use your VID and PID.  Use the format as shown below. +; Note: One INF file can be used for multiple devices with different VID and PIDs. +; For each supported device, append ",USB\VID_xxxx&PID_yyyy" to the end of the line. +;------------------------------------------------------------------------------ +[DeviceList] +%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204C + +[DeviceList.NTx86] +%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204C + +[DeviceList.NTamd64] +%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204C + +[DeviceList.NTia64] +%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204C + +;------------------------------------------------------------------------------ +;  String Definitions +;------------------------------------------------------------------------------ +;Modify these strings to customize your device +;------------------------------------------------------------------------------ +[Strings] +MFGNAME="http://www.lufa-lib.org" +DESCRIPTION="LUFA RNDIS USB Ethernet Adapter" diff --git a/protocol/lufa/LUFA-git/LUFA/CodeTemplates/makefile_template b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/makefile_template new file mode 100644 index 0000000000..efb6aa76f8 --- /dev/null +++ b/protocol/lufa/LUFA-git/LUFA/CodeTemplates/makefile_template @@ -0,0 +1,38 @@ +# +#             LUFA Library +#     Copyright (C) Dean Camera, 2014. +# +#  dean [at] fourwalledcubicle [dot] com +#           www.lufa-lib.org +# +# -------------------------------------- +#         LUFA Project Makefile. +# -------------------------------------- + +# Run "make help" for target help. + +MCU          = at90usb1287 +ARCH         = AVR8 +BOARD        = USBKEY +F_CPU        = 8000000 +F_USB        = $(F_CPU) +OPTIMIZATION = s +TARGET       = Target +SRC          = $(TARGET).c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS) $(LUFA_SRC_PLATFORM) +LUFA_PATH    = ../../LUFA +CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -IConfig +LD_FLAGS     = + +# Default target +all: + +# Include LUFA build script makefiles +include $(LUFA_PATH)/Build/lufa_core.mk +include $(LUFA_PATH)/Build/lufa_sources.mk +include $(LUFA_PATH)/Build/lufa_build.mk +include $(LUFA_PATH)/Build/lufa_cppcheck.mk +include $(LUFA_PATH)/Build/lufa_doxygen.mk +include $(LUFA_PATH)/Build/lufa_dfu.mk +include $(LUFA_PATH)/Build/lufa_hid.mk +include $(LUFA_PATH)/Build/lufa_avrdude.mk +include $(LUFA_PATH)/Build/lufa_atprogram.mk | 
