--- /dev/null
+/*\r
+ LUFA Library\r
+ Copyright (C) Dean Camera, 2009.\r
+ \r
+ dean [at] fourwalledcubicle [dot] com\r
+ www.fourwalledcubicle.com\r
+*/\r
+\r
+/*\r
+ Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+ Permission to use, copy, modify, and distribute this software\r
+ and its documentation for any purpose and without fee is hereby\r
+ granted, provided that the above copyright notice appear in all\r
+ copies and that both that the copyright notice and this\r
+ permission notice and warranty disclaimer appear in supporting\r
+ documentation, and that the name of the author not be used in\r
+ advertising or publicity pertaining to distribution of the\r
+ software without specific, written prior permission.\r
+\r
+ The author disclaim all warranties with regard to this\r
+ software, including all implied warranties of merchantability\r
+ and fitness. In no event shall the author be liable for any\r
+ special, indirect or consequential damages or any damages\r
+ whatsoever resulting from loss of use, data or profits, whether\r
+ in an action of contract, negligence or other tortious action,\r
+ arising out of or in connection with the use or performance of\r
+ this software.\r
+*/\r
+\r
+/** \file\r
+ *\r
+ * USB Device Descriptors, for library use when in USB device mode. Descriptors are special \r
+ * computer-readable structures which the host requests upon device enumeration, to determine\r
+ * the device's capabilities and functions. \r
+ */\r
+\r
+#include "Descriptors.h"\r
+\r
+/** HID class report descriptor. This is a special descriptor constructed with values from the\r
+ * USBIF HID class specification to describe the reports and capabilities of the HID device. This\r
+ * descriptor is parsed by the host and its contents used to determine what data (and in what encoding)\r
+ * the device will send, and what it may be sent back from the host. Refer to the HID specification for\r
+ * more details on HID report descriptors.\r
+ */\r
+USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] =\r
+{\r
+ 0x05, 0x01, /* Usage Page (Generic Desktop) */\r
+ 0x09, 0x02, /* Usage (Mouse) */\r
+ 0xA1, 0x01, /* Collection (Application) */\r
+ 0x09, 0x01, /* Usage (Pointer) */\r
+ 0xA1, 0x00, /* Collection (Application) */\r
+ 0x95, 0x03, /* Report Count (3) */\r
+ 0x75, 0x01, /* Report Size (1) */\r
+ 0x05, 0x09, /* Usage Page (Button) */\r
+ 0x19, 0x01, /* Usage Minimum (Button 1) */\r
+ 0x29, 0x03, /* Usage Maximum (Button 3) */\r
+ 0x15, 0x00, /* Logical Minimum (0) */\r
+ 0x25, 0x01, /* Logical Maximum (1) */\r
+ 0x81, 0x02, /* Input (Data, Variable, Absolute) */\r
+ 0x95, 0x01, /* Report Count (1) */\r
+ 0x75, 0x05, /* Report Size (5) */\r
+ 0x81, 0x01, /* Input (Constant) */\r
+ 0x75, 0x08, /* Report Size (8) */\r
+ 0x95, 0x02, /* Report Count (2) */\r
+ 0x05, 0x01, /* Usage Page (Generic Desktop Control) */\r
+ 0x09, 0x30, /* Usage X */\r
+ 0x09, 0x31, /* Usage Y */\r
+ 0x15, 0x81, /* Logical Minimum (-127) */\r
+ 0x25, 0x7F, /* Logical Maximum (127) */\r
+ 0x81, 0x06, /* Input (Data, Variable, Relative) */\r
+ 0xC0, /* End Collection */\r
+ 0xC0 /* End Collection */\r
+};\r
+\r
+/** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall\r
+ * device characteristics, including the supported USB version, control endpoint size and the\r
+ * number of device configurations. The descriptor is read out by the USB host when the enumeration\r
+ * process begins.\r
+ */\r
+USB_Descriptor_Device_t PROGMEM DeviceDescriptor =\r
+{\r
+ .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},\r
+ \r
+ .USBSpecification = VERSION_BCD(01.10),\r
+ .Class = 0x00,\r
+ .SubClass = 0x00,\r
+ .Protocol = 0x00,\r
+ \r
+ .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,\r
+ \r
+ .VendorID = 0x03EB,\r
+ .ProductID = 0x2041,\r
+ .ReleaseNumber = 0x0000,\r
+ \r
+ .ManufacturerStrIndex = 0x01,\r
+ .ProductStrIndex = 0x02,\r
+ .SerialNumStrIndex = NO_DESCRIPTOR,\r
+ \r
+ .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS\r
+};\r
+\r
+/** Configuration descriptor structure. This descriptor, located in FLASH memory, describes the usage\r
+ * of the device in one of its supported configurations, including information about any device interfaces\r
+ * and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting\r
+ * a configuration so that the host may correctly communicate with the USB device.\r
+ */\r
+USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =\r
+{\r
+ .Config = \r
+ {\r
+ .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration},\r
+\r
+ .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t),\r
+ .TotalInterfaces = 1,\r
+ \r
+ .ConfigurationNumber = 1,\r
+ .ConfigurationStrIndex = NO_DESCRIPTOR,\r
+ \r
+ .ConfigAttributes = (USB_CONFIG_ATTR_BUSPOWERED | USB_CONFIG_ATTR_SELFPOWERED),\r
+ \r
+ .MaxPowerConsumption = USB_CONFIG_POWER_MA(100)\r
+ },\r
+ \r
+ .Interface = \r
+ {\r
+ .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},\r
+\r
+ .InterfaceNumber = 0x00,\r
+ .AlternateSetting = 0x00,\r
+ \r
+ .TotalEndpoints = 1,\r
+ \r
+ .Class = 0x03,\r
+ .SubClass = 0x01,\r
+ .Protocol = HID_BOOT_MOUSE_PROTOCOL,\r
+ \r
+ .InterfaceStrIndex = NO_DESCRIPTOR\r
+ },\r
+\r
+ .MouseHID = \r
+ {\r
+ .Header = {.Size = sizeof(USB_HID_Descriptor_t), .Type = DTYPE_HID},\r
+\r
+ .HIDSpec = VERSION_BCD(01.11),\r
+ .CountryCode = 0x00,\r
+ .TotalReportDescriptors = 1,\r
+ .HIDReportType = DTYPE_Report,\r
+ .HIDReportLength = sizeof(MouseReport)\r
+ },\r
+\r
+ .MouseEndpoint = \r
+ {\r
+ .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},\r
+\r
+ .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | MOUSE_EPNUM),\r
+ .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),\r
+ .EndpointSize = MOUSE_EPSIZE,\r
+ .PollingIntervalMS = 0x0A\r
+ }\r
+};\r
+\r
+/** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests\r
+ * the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate\r
+ * via the language ID table available at USB.org what languages the device supports for its string descriptors.\r
+ */\r
+USB_Descriptor_String_t PROGMEM LanguageString =\r
+{\r
+ .Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String},\r
+ \r
+ .UnicodeString = {LANGUAGE_ID_ENG}\r
+};\r
+\r
+/** Manufacturer descriptor string. This is a Unicode string containing the manufacturer's details in human readable\r
+ * form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device\r
+ * Descriptor.\r
+ */\r
+USB_Descriptor_String_t PROGMEM ManufacturerString =\r
+{\r
+ .Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},\r
+ \r
+ .UnicodeString = L"Dean Camera"\r
+};\r
+\r
+/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,\r
+ * and is read out upon request by the host when the appropriate string ID is requested, listed in the Device\r
+ * Descriptor.\r
+ */\r
+USB_Descriptor_String_t PROGMEM ProductString =\r
+{\r
+ .Header = {.Size = USB_STRING_LEN(15), .Type = DTYPE_String},\r
+ \r
+ .UnicodeString = L"LUFA Mouse Demo"\r
+};\r
+\r
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"\r
+ * documentation) by the application code so that the address and size of a requested descriptor can be given\r
+ * to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function\r
+ * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the\r
+ * USB host.\r
+ */\r
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+{\r
+ const uint8_t DescriptorType = (wValue >> 8);\r
+ const uint8_t DescriptorNumber = (wValue & 0xFF);\r
+\r
+ void* Address = NULL;\r
+ uint16_t Size = NO_DESCRIPTOR;\r
+\r
+ switch (DescriptorType)\r
+ {\r
+ case DTYPE_Device:\r
+ Address = (void*)&DeviceDescriptor;\r
+ Size = sizeof(USB_Descriptor_Device_t);\r
+ break;\r
+ case DTYPE_Configuration:\r
+ Address = (void*)&ConfigurationDescriptor;\r
+ Size = sizeof(USB_Descriptor_Configuration_t);\r
+ break;\r
+ case DTYPE_String:\r
+ switch (DescriptorNumber)\r
+ {\r
+ case 0x00:\r
+ Address = (void*)&LanguageString;\r
+ Size = pgm_read_byte(&LanguageString.Header.Size);\r
+ break;\r
+ case 0x01:\r
+ Address = (void*)&ManufacturerString;\r
+ Size = pgm_read_byte(&ManufacturerString.Header.Size);\r
+ break;\r
+ case 0x02:\r
+ Address = (void*)&ProductString;\r
+ Size = pgm_read_byte(&ProductString.Header.Size);\r
+ break;\r
+ }\r
+ \r
+ break;\r
+ case DTYPE_HID: \r
+ Address = (void*)&ConfigurationDescriptor.MouseHID;\r
+ Size = sizeof(USB_HID_Descriptor_t);\r
+ break;\r
+ case DTYPE_Report: \r
+ Address = (void*)&MouseReport;\r
+ Size = sizeof(MouseReport);\r
+ break;\r
+ }\r
+ \r
+ *DescriptorAddress = Address; \r
+ return Size;\r
+}\r
+\r
--- /dev/null
+/*\r
+ LUFA Library\r
+ Copyright (C) Dean Camera, 2009.\r
+ \r
+ dean [at] fourwalledcubicle [dot] com\r
+ www.fourwalledcubicle.com\r
+*/\r
+\r
+/*\r
+ Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+ Permission to use, copy, modify, and distribute this software\r
+ and its documentation for any purpose and without fee is hereby\r
+ granted, provided that the above copyright notice appear in all\r
+ copies and that both that the copyright notice and this\r
+ permission notice and warranty disclaimer appear in supporting\r
+ documentation, and that the name of the author not be used in\r
+ advertising or publicity pertaining to distribution of the\r
+ software without specific, written prior permission.\r
+\r
+ The author disclaim all warranties with regard to this\r
+ software, including all implied warranties of merchantability\r
+ and fitness. In no event shall the author be liable for any\r
+ special, indirect or consequential damages or any damages\r
+ whatsoever resulting from loss of use, data or profits, whether\r
+ in an action of contract, negligence or other tortious action,\r
+ arising out of or in connection with the use or performance of\r
+ this software.\r
+*/\r
+\r
+/** \file\r
+ *\r
+ * Header file for Descriptors.c.\r
+ */\r
+ \r
+#ifndef _DESCRIPTORS_H_\r
+#define _DESCRIPTORS_H_\r
+\r
+ /* Includes: */\r
+ #include <LUFA/Drivers/USB/USB.h>\r
+ #include <LUFA/Drivers/USB/Class/HID.h>\r
+\r
+ #include <avr/pgmspace.h>\r
+\r
+ /* Type Defines: */\r
+ /** Type define for the device configuration descriptor structure. This must be defined in the\r
+ * application code, as the configuration descriptor contains several sub-descriptors which\r
+ * vary between devices, and which describe the device's usage to the host.\r
+ */\r
+ typedef struct\r
+ {\r
+ USB_Descriptor_Configuration_Header_t Config;\r
+ USB_Descriptor_Interface_t Interface;\r
+ USB_HID_Descriptor_t MouseHID;\r
+ USB_Descriptor_Endpoint_t MouseEndpoint;\r
+ } USB_Descriptor_Configuration_t;\r
+ \r
+ /* Macros: */\r
+ /** Endpoint number of the Mouse HID reporting IN endpoint. */\r
+ #define MOUSE_EPNUM 1\r
+ \r
+ /** Size in bytes of the Mouse HID reporting IN endpoint. */\r
+ #define MOUSE_EPSIZE 8\r
+\r
+ /* Function Prototypes: */\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
+\r
+#endif\r
--- /dev/null
+/*\r
+ LUFA Library\r
+ Copyright (C) Dean Camera, 2009.\r
+ \r
+ dean [at] fourwalledcubicle [dot] com\r
+ www.fourwalledcubicle.com\r
+*/\r
+\r
+/*\r
+ Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+ Permission to use, copy, modify, and distribute this software\r
+ and its documentation for any purpose and without fee is hereby\r
+ granted, provided that the above copyright notice appear in all\r
+ copies and that both that the copyright notice and this\r
+ permission notice and warranty disclaimer appear in supporting\r
+ documentation, and that the name of the author not be used in\r
+ advertising or publicity pertaining to distribution of the\r
+ software without specific, written prior permission.\r
+\r
+ The author disclaim all warranties with regard to this\r
+ software, including all implied warranties of merchantability\r
+ and fitness. In no event shall the author be liable for any\r
+ special, indirect or consequential damages or any damages\r
+ whatsoever resulting from loss of use, data or profits, whether\r
+ in an action of contract, negligence or other tortious action,\r
+ arising out of or in connection with the use or performance of\r
+ this software.\r
+*/\r
+\r
+/** \file\r
+ *\r
+ * Device Mode USB Mouse functionality for the MouseHostDevice demo. This file contains the Device mode\r
+ * USB Mouse related code of the demo and is responsible for all the Device mode Mouse functionality.\r
+ */\r
+\r
+#include "DeviceFunctions.h"\r
+\r
+/** Buffer to hold the previously generated Mouse Device HID report, for comparison purposes inside the HID class driver. */\r
+uint8_t PrevMouseHIDReportBuffer[sizeof(USB_MouseReport_Data_t)];\r
+\r
+/** LUFA HID Class driver interface configuration and state information. This structure is\r
+ * passed to all HID Class driver functions, so that multiple instances of the same class\r
+ * within a device can be differentiated from one another.\r
+ */\r
+USB_ClassInfo_HID_Device_t Mouse_HID_Device_Interface =\r
+ {\r
+ .Config =\r
+ {\r
+ .InterfaceNumber = 0,\r
+\r
+ .ReportINEndpointNumber = MOUSE_EPNUM,\r
+ .ReportINEndpointSize = MOUSE_EPSIZE,\r
+\r
+ .PrevReportINBuffer = PrevMouseHIDReportBuffer,\r
+ .PrevReportINBufferSize = sizeof(PrevMouseHIDReportBuffer),\r
+ },\r
+ };\r
+ \r
+\r
+/** Event handler for the library USB WakeUp event. */\r
+void EVENT_USB_Device_Connect(void)\r
+{\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);\r
+}\r
+\r
+/** Event handler for the library USB Suspend event. */\r
+void EVENT_USB_Device_Disconnect(void)\r
+{\r
+ LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
+}\r
+\r
+/** Event handler for the library USB Configuration Changed event. */\r
+void EVENT_USB_Device_ConfigurationChanged(void)\r
+{\r
+ LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
+\r
+ if (!(HID_Device_ConfigureEndpoints(&Mouse_HID_Device_Interface)))\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+\r
+ USB_Device_EnableSOFEvents();\r
+}\r
+\r
+/** Event handler for the library USB Unhandled Control Request event. */\r
+void EVENT_USB_Device_UnhandledControlRequest(void)\r
+{\r
+ HID_Device_ProcessControlRequest(&Mouse_HID_Device_Interface);\r
+}\r
+\r
+/** Event handler for the USB device Start Of Frame event. */\r
+void EVENT_USB_Device_StartOfFrame(void)\r
+{\r
+ HID_Device_MillisecondElapsed(&Mouse_HID_Device_Interface);\r
+}\r
+\r
+/** HID class driver callback function for the creation of HID reports to the host.\r
+ *\r
+ * \param[in] HIDInterfaceInfo Pointer to the HID class interface configuration structure being referenced\r
+ * \param[in,out] ReportID Report ID requested by the host if non-zero, otherwise callback should set to the generated report ID\r
+ * \param[out] ReportData Pointer to a buffer where the created report should be stored\r
+ * \param[out] ReportSize Number of bytes written in the report (or zero if no report is to be sent\r
+ *\r
+ * \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent\r
+ */\r
+bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
+ void* ReportData, uint16_t* ReportSize)\r
+{\r
+ USB_MouseReport_Data_t* MouseReport = (USB_MouseReport_Data_t*)ReportData;\r
+ \r
+ uint8_t JoyStatus_LCL = Joystick_GetStatus();\r
+ uint8_t ButtonStatus_LCL = Buttons_GetStatus();\r
+\r
+ if (JoyStatus_LCL & JOY_UP)\r
+ MouseReport->Y = -1;\r
+ else if (JoyStatus_LCL & JOY_DOWN)\r
+ MouseReport->Y = 1;\r
+\r
+ if (JoyStatus_LCL & JOY_RIGHT)\r
+ MouseReport->X = 1;\r
+ else if (JoyStatus_LCL & JOY_LEFT)\r
+ MouseReport->X = -1;\r
+\r
+ if (JoyStatus_LCL & JOY_PRESS)\r
+ MouseReport->Button = (1 << 0);\r
+ \r
+ if (ButtonStatus_LCL & BUTTONS_BUTTON1)\r
+ MouseReport->Button |= (1 << 1);\r
+ \r
+ *ReportSize = sizeof(USB_MouseReport_Data_t);\r
+ return true;\r
+}\r
+\r
+/** HID class driver callback function for the processing of HID reports from the host.\r
+ *\r
+ * \param[in] HIDInterfaceInfo Pointer to the HID class interface configuration structure being referenced\r
+ * \param[in] ReportID Report ID of the received report from the host\r
+ * \param[in] ReportData Pointer to a buffer where the created report has been stored\r
+ * \param[in] ReportSize Size in bytes of the received HID report\r
+ */\r
+void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID,\r
+ const void* ReportData, const uint16_t ReportSize)\r
+{\r
+ // Unused (but mandatory for the HID class driver) in this demo, since there are no Host->Device reports\r
+}
\ No newline at end of file
--- /dev/null
+/*\r
+ LUFA Library\r
+ Copyright (C) Dean Camera, 2009.\r
+ \r
+ dean [at] fourwalledcubicle [dot] com\r
+ www.fourwalledcubicle.com\r
+*/\r
+\r
+/*\r
+ Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+ Permission to use, copy, modify, and distribute this software\r
+ and its documentation for any purpose and without fee is hereby\r
+ granted, provided that the above copyright notice appear in all\r
+ copies and that both that the copyright notice and this\r
+ permission notice and warranty disclaimer appear in supporting\r
+ documentation, and that the name of the author not be used in\r
+ advertising or publicity pertaining to distribution of the\r
+ software without specific, written prior permission.\r
+\r
+ The author disclaim all warranties with regard to this\r
+ software, including all implied warranties of merchantability\r
+ and fitness. In no event shall the author be liable for any\r
+ special, indirect or consequential damages or any damages\r
+ whatsoever resulting from loss of use, data or profits, whether\r
+ in an action of contract, negligence or other tortious action,\r
+ arising out of or in connection with the use or performance of\r
+ this software.\r
+*/\r
+\r
+/** \file\r
+ *\r
+ * Header file for DeviceFunctions.c.\r
+ */\r
+\r
+#ifndef _MOUSE_DEVICE_FUNCTIONS_H_\r
+#define _MOUSE_DEVICE_FUNCTIONS_H_\r
+\r
+ /* Includes: */\r
+ #include "MouseHostDevice.h"\r
+ \r
+ /* External Variables: */\r
+ extern USB_ClassInfo_HID_Device_t Mouse_HID_Device_Interface;\r
+ \r
+ /* Function Prototypes: */\r
+ void EVENT_USB_Device_Connect(void);\r
+ void EVENT_USB_Device_Disconnect(void);\r
+ void EVENT_USB_Device_ConfigurationChanged(void);\r
+ void EVENT_USB_Device_UnhandledControlRequest(void);\r
+ void EVENT_USB_Device_StartOfFrame(void);\r
+ \r
+#endif\r
--- /dev/null
+# Doxyfile 1.5.7.1\r
+\r
+# This file describes the settings to be used by the documentation system\r
+# doxygen (www.doxygen.org) for a project\r
+#\r
+# All text after a hash (#) is considered a comment and will be ignored\r
+# The format is:\r
+# TAG = value [value, ...]\r
+# For lists items can also be appended using:\r
+# TAG += value [value, ...]\r
+# Values that contain spaces should be placed between quotes (" ")\r
+\r
+#---------------------------------------------------------------------------\r
+# Project related configuration options\r
+#---------------------------------------------------------------------------\r
+\r
+# This tag specifies the encoding used for all characters in the config file \r
+# that follow. The default is UTF-8 which is also the encoding used for all \r
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the \r
+# iconv built into libc) for the transcoding. See \r
+# http://www.gnu.org/software/libiconv for the list of possible encodings.\r
+\r
+DOXYFILE_ENCODING = UTF-8\r
+\r
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded \r
+# by quotes) that should identify the project.\r
+\r
+PROJECT_NAME = "LUFA Library - Mouse Host/Device Dual Role Demo"\r
+\r
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. \r
+# This could be handy for archiving the generated documentation or \r
+# if some version control system is used.\r
+\r
+PROJECT_NUMBER = 0.0.0\r
+\r
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) \r
+# base path where the generated documentation will be put. \r
+# If a relative path is entered, it will be relative to the location \r
+# where doxygen was started. If left blank the current directory will be used.\r
+\r
+OUTPUT_DIRECTORY = ./Documentation/\r
+\r
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create \r
+# 4096 sub-directories (in 2 levels) under the output directory of each output \r
+# format and will distribute the generated files over these directories. \r
+# Enabling this option can be useful when feeding doxygen a huge amount of \r
+# source files, where putting all generated files in the same directory would \r
+# otherwise cause performance problems for the file system.\r
+\r
+CREATE_SUBDIRS = NO\r
+\r
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all \r
+# documentation generated by doxygen is written. Doxygen will use this \r
+# information to generate all constant output in the proper language. \r
+# The default language is English, other supported languages are: \r
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, \r
+# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, \r
+# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), \r
+# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, \r
+# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, \r
+# Spanish, Swedish, and Ukrainian.\r
+\r
+OUTPUT_LANGUAGE = English\r
+\r
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will \r
+# include brief member descriptions after the members that are listed in \r
+# the file and class documentation (similar to JavaDoc). \r
+# Set to NO to disable this.\r
+\r
+BRIEF_MEMBER_DESC = YES\r
+\r
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend \r
+# the brief description of a member or function before the detailed description. \r
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the \r
+# brief descriptions will be completely suppressed.\r
+\r
+REPEAT_BRIEF = YES\r
+\r
+# This tag implements a quasi-intelligent brief description abbreviator \r
+# that is used to form the text in various listings. Each string \r
+# in this list, if found as the leading text of the brief description, will be \r
+# stripped from the text and the result after processing the whole list, is \r
+# used as the annotated text. Otherwise, the brief description is used as-is. \r
+# If left blank, the following values are used ("$name" is automatically \r
+# replaced with the name of the entity): "The $name class" "The $name widget" \r
+# "The $name file" "is" "provides" "specifies" "contains" \r
+# "represents" "a" "an" "the"\r
+\r
+ABBREVIATE_BRIEF = "The $name class" \\r
+ "The $name widget" \\r
+ "The $name file" \\r
+ is \\r
+ provides \\r
+ specifies \\r
+ contains \\r
+ represents \\r
+ a \\r
+ an \\r
+ the\r
+\r
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then \r
+# Doxygen will generate a detailed section even if there is only a brief \r
+# description.\r
+\r
+ALWAYS_DETAILED_SEC = NO\r
+\r
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all \r
+# inherited members of a class in the documentation of that class as if those \r
+# members were ordinary class members. Constructors, destructors and assignment \r
+# operators of the base classes will not be shown.\r
+\r
+INLINE_INHERITED_MEMB = NO\r
+\r
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full \r
+# path before files name in the file list and in the header files. If set \r
+# to NO the shortest path that makes the file name unique will be used.\r
+\r
+FULL_PATH_NAMES = YES\r
+\r
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag \r
+# can be used to strip a user-defined part of the path. Stripping is \r
+# only done if one of the specified strings matches the left-hand part of \r
+# the path. The tag can be used to show relative paths in the file list. \r
+# If left blank the directory from which doxygen is run is used as the \r
+# path to strip.\r
+\r
+STRIP_FROM_PATH = \r
+\r
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of \r
+# the path mentioned in the documentation of a class, which tells \r
+# the reader which header file to include in order to use a class. \r
+# If left blank only the name of the header file containing the class \r
+# definition is used. Otherwise one should specify the include paths that \r
+# are normally passed to the compiler using the -I flag.\r
+\r
+STRIP_FROM_INC_PATH = \r
+\r
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter \r
+# (but less readable) file names. This can be useful is your file systems \r
+# doesn't support long names like on DOS, Mac, or CD-ROM.\r
+\r
+SHORT_NAMES = YES\r
+\r
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen \r
+# will interpret the first line (until the first dot) of a JavaDoc-style \r
+# comment as the brief description. If set to NO, the JavaDoc \r
+# comments will behave just like regular Qt-style comments \r
+# (thus requiring an explicit @brief command for a brief description.)\r
+\r
+JAVADOC_AUTOBRIEF = NO\r
+\r
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will \r
+# interpret the first line (until the first dot) of a Qt-style \r
+# comment as the brief description. If set to NO, the comments \r
+# will behave just like regular Qt-style comments (thus requiring \r
+# an explicit \brief command for a brief description.)\r
+\r
+QT_AUTOBRIEF = NO\r
+\r
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen \r
+# treat a multi-line C++ special comment block (i.e. a block of //! or /// \r
+# comments) as a brief description. This used to be the default behaviour. \r
+# The new default is to treat a multi-line C++ comment block as a detailed \r
+# description. Set this tag to YES if you prefer the old behaviour instead.\r
+\r
+MULTILINE_CPP_IS_BRIEF = NO\r
+\r
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented \r
+# member inherits the documentation from any documented member that it \r
+# re-implements.\r
+\r
+INHERIT_DOCS = YES\r
+\r
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce \r
+# a new page for each member. If set to NO, the documentation of a member will \r
+# be part of the file/class/namespace that contains it.\r
+\r
+SEPARATE_MEMBER_PAGES = NO\r
+\r
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. \r
+# Doxygen uses this value to replace tabs by spaces in code fragments.\r
+\r
+TAB_SIZE = 4\r
+\r
+# This tag can be used to specify a number of aliases that acts \r
+# as commands in the documentation. An alias has the form "name=value". \r
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to \r
+# put the command \sideeffect (or @sideeffect) in the documentation, which \r
+# will result in a user-defined paragraph with heading "Side Effects:". \r
+# You can put \n's in the value part of an alias to insert newlines.\r
+\r
+ALIASES = \r
+\r
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C \r
+# sources only. Doxygen will then generate output that is more tailored for C. \r
+# For instance, some of the names that are used will be different. The list \r
+# of all members will be omitted, etc.\r
+\r
+OPTIMIZE_OUTPUT_FOR_C = YES\r
+\r
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java \r
+# sources only. Doxygen will then generate output that is more tailored for \r
+# Java. For instance, namespaces will be presented as packages, qualified \r
+# scopes will look different, etc.\r
+\r
+OPTIMIZE_OUTPUT_JAVA = NO\r
+\r
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran \r
+# sources only. Doxygen will then generate output that is more tailored for \r
+# Fortran.\r
+\r
+OPTIMIZE_FOR_FORTRAN = NO\r
+\r
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL \r
+# sources. Doxygen will then generate output that is tailored for \r
+# VHDL.\r
+\r
+OPTIMIZE_OUTPUT_VHDL = NO\r
+\r
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want \r
+# to include (a tag file for) the STL sources as input, then you should \r
+# set this tag to YES in order to let doxygen match functions declarations and \r
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. \r
+# func(std::string) {}). This also make the inheritance and collaboration \r
+# diagrams that involve STL classes more complete and accurate.\r
+\r
+BUILTIN_STL_SUPPORT = NO\r
+\r
+# If you use Microsoft's C++/CLI language, you should set this option to YES to\r
+# enable parsing support.\r
+\r
+CPP_CLI_SUPPORT = NO\r
+\r
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. \r
+# Doxygen will parse them like normal C++ but will assume all classes use public \r
+# instead of private inheritance when no explicit protection keyword is present.\r
+\r
+SIP_SUPPORT = NO\r
+\r
+# For Microsoft's IDL there are propget and propput attributes to indicate getter \r
+# and setter methods for a property. Setting this option to YES (the default) \r
+# will make doxygen to replace the get and set methods by a property in the \r
+# documentation. This will only work if the methods are indeed getting or \r
+# setting a simple type. If this is not the case, or you want to show the \r
+# methods anyway, you should set this option to NO.\r
+\r
+IDL_PROPERTY_SUPPORT = YES\r
+\r
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC \r
+# tag is set to YES, then doxygen will reuse the documentation of the first \r
+# member in the group (if any) for the other members of the group. By default \r
+# all members of a group must be documented explicitly.\r
+\r
+DISTRIBUTE_GROUP_DOC = NO\r
+\r
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of \r
+# the same type (for instance a group of public functions) to be put as a \r
+# subgroup of that type (e.g. under the Public Functions section). Set it to \r
+# NO to prevent subgrouping. Alternatively, this can be done per class using \r
+# the \nosubgrouping command.\r
+\r
+SUBGROUPING = YES\r
+\r
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum \r
+# is documented as struct, union, or enum with the name of the typedef. So \r
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct \r
+# with name TypeT. When disabled the typedef will appear as a member of a file, \r
+# namespace, or class. And the struct will be named TypeS. This can typically \r
+# be useful for C code in case the coding convention dictates that all compound \r
+# types are typedef'ed and only the typedef is referenced, never the tag name.\r
+\r
+TYPEDEF_HIDES_STRUCT = NO\r
+\r
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to \r
+# determine which symbols to keep in memory and which to flush to disk.\r
+# When the cache is full, less often used symbols will be written to disk.\r
+# For small to medium size projects (<1000 input files) the default value is \r
+# probably good enough. For larger projects a too small cache size can cause \r
+# doxygen to be busy swapping symbols to and from disk most of the time \r
+# causing a significant performance penality. \r
+# If the system has enough physical memory increasing the cache will improve the \r
+# performance by keeping more symbols in memory. Note that the value works on \r
+# a logarithmic scale so increasing the size by one will rougly double the \r
+# memory usage. The cache size is given by this formula: \r
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, \r
+# corresponding to a cache size of 2^16 = 65536 symbols\r
+\r
+SYMBOL_CACHE_SIZE = 0\r
+\r
+#---------------------------------------------------------------------------\r
+# Build related configuration options\r
+#---------------------------------------------------------------------------\r
+\r
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in \r
+# documentation are documented, even if no documentation was available. \r
+# Private class members and static file members will be hidden unless \r
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES\r
+\r
+EXTRACT_ALL = YES\r
+\r
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class \r
+# will be included in the documentation.\r
+\r
+EXTRACT_PRIVATE = YES\r
+\r
+# If the EXTRACT_STATIC tag is set to YES all static members of a file \r
+# will be included in the documentation.\r
+\r
+EXTRACT_STATIC = YES\r
+\r
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) \r
+# defined locally in source files will be included in the documentation. \r
+# If set to NO only classes defined in header files are included.\r
+\r
+EXTRACT_LOCAL_CLASSES = YES\r
+\r
+# This flag is only useful for Objective-C code. When set to YES local \r
+# methods, which are defined in the implementation section but not in \r
+# the interface are included in the documentation. \r
+# If set to NO (the default) only methods in the interface are included.\r
+\r
+EXTRACT_LOCAL_METHODS = NO\r
+\r
+# If this flag is set to YES, the members of anonymous namespaces will be \r
+# extracted and appear in the documentation as a namespace called \r
+# 'anonymous_namespace{file}', where file will be replaced with the base \r
+# name of the file that contains the anonymous namespace. By default \r
+# anonymous namespace are hidden.\r
+\r
+EXTRACT_ANON_NSPACES = NO\r
+\r
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all \r
+# undocumented members of documented classes, files or namespaces. \r
+# If set to NO (the default) these members will be included in the \r
+# various overviews, but no documentation section is generated. \r
+# This option has no effect if EXTRACT_ALL is enabled.\r
+\r
+HIDE_UNDOC_MEMBERS = NO\r
+\r
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all \r
+# undocumented classes that are normally visible in the class hierarchy. \r
+# If set to NO (the default) these classes will be included in the various \r
+# overviews. This option has no effect if EXTRACT_ALL is enabled.\r
+\r
+HIDE_UNDOC_CLASSES = NO\r
+\r
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all \r
+# friend (class|struct|union) declarations. \r
+# If set to NO (the default) these declarations will be included in the \r
+# documentation.\r
+\r
+HIDE_FRIEND_COMPOUNDS = NO\r
+\r
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any \r
+# documentation blocks found inside the body of a function. \r
+# If set to NO (the default) these blocks will be appended to the \r
+# function's detailed documentation block.\r
+\r
+HIDE_IN_BODY_DOCS = NO\r
+\r
+# The INTERNAL_DOCS tag determines if documentation \r
+# that is typed after a \internal command is included. If the tag is set \r
+# to NO (the default) then the documentation will be excluded. \r
+# Set it to YES to include the internal documentation.\r
+\r
+INTERNAL_DOCS = NO\r
+\r
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate \r
+# file names in lower-case letters. If set to YES upper-case letters are also \r
+# allowed. This is useful if you have classes or files whose names only differ \r
+# in case and if your file system supports case sensitive file names. Windows \r
+# and Mac users are advised to set this option to NO.\r
+\r
+CASE_SENSE_NAMES = NO\r
+\r
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen \r
+# will show members with their full class and namespace scopes in the \r
+# documentation. If set to YES the scope will be hidden.\r
+\r
+HIDE_SCOPE_NAMES = NO\r
+\r
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen \r
+# will put a list of the files that are included by a file in the documentation \r
+# of that file.\r
+\r
+SHOW_INCLUDE_FILES = YES\r
+\r
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] \r
+# is inserted in the documentation for inline members.\r
+\r
+INLINE_INFO = YES\r
+\r
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen \r
+# will sort the (detailed) documentation of file and class members \r
+# alphabetically by member name. If set to NO the members will appear in \r
+# declaration order.\r
+\r
+SORT_MEMBER_DOCS = YES\r
+\r
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the \r
+# brief documentation of file, namespace and class members alphabetically \r
+# by member name. If set to NO (the default) the members will appear in \r
+# declaration order.\r
+\r
+SORT_BRIEF_DOCS = NO\r
+\r
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the \r
+# hierarchy of group names into alphabetical order. If set to NO (the default) \r
+# the group names will appear in their defined order.\r
+\r
+SORT_GROUP_NAMES = NO\r
+\r
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be \r
+# sorted by fully-qualified names, including namespaces. If set to \r
+# NO (the default), the class list will be sorted only by class name, \r
+# not including the namespace part. \r
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.\r
+# Note: This option applies only to the class list, not to the \r
+# alphabetical list.\r
+\r
+SORT_BY_SCOPE_NAME = NO\r
+\r
+# The GENERATE_TODOLIST tag can be used to enable (YES) or \r
+# disable (NO) the todo list. This list is created by putting \todo \r
+# commands in the documentation.\r
+\r
+GENERATE_TODOLIST = NO\r
+\r
+# The GENERATE_TESTLIST tag can be used to enable (YES) or \r
+# disable (NO) the test list. This list is created by putting \test \r
+# commands in the documentation.\r
+\r
+GENERATE_TESTLIST = NO\r
+\r
+# The GENERATE_BUGLIST tag can be used to enable (YES) or \r
+# disable (NO) the bug list. This list is created by putting \bug \r
+# commands in the documentation.\r
+\r
+GENERATE_BUGLIST = NO\r
+\r
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or \r
+# disable (NO) the deprecated list. This list is created by putting \r
+# \deprecated commands in the documentation.\r
+\r
+GENERATE_DEPRECATEDLIST= YES\r
+\r
+# The ENABLED_SECTIONS tag can be used to enable conditional \r
+# documentation sections, marked by \if sectionname ... \endif.\r
+\r
+ENABLED_SECTIONS = \r
+\r
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines \r
+# the initial value of a variable or define consists of for it to appear in \r
+# the documentation. If the initializer consists of more lines than specified \r
+# here it will be hidden. Use a value of 0 to hide initializers completely. \r
+# The appearance of the initializer of individual variables and defines in the \r
+# documentation can be controlled using \showinitializer or \hideinitializer \r
+# command in the documentation regardless of this setting.\r
+\r
+MAX_INITIALIZER_LINES = 30\r
+\r
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated \r
+# at the bottom of the documentation of classes and structs. If set to YES the \r
+# list will mention the files that were used to generate the documentation.\r
+\r
+SHOW_USED_FILES = YES\r
+\r
+# If the sources in your project are distributed over multiple directories \r
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy \r
+# in the documentation. The default is NO.\r
+\r
+SHOW_DIRECTORIES = YES\r
+\r
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.\r
+# This will remove the Files entry from the Quick Index and from the \r
+# Folder Tree View (if specified). The default is YES.\r
+\r
+SHOW_FILES = YES\r
+\r
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the \r
+# Namespaces page. This will remove the Namespaces entry from the Quick Index\r
+# and from the Folder Tree View (if specified). The default is YES.\r
+\r
+SHOW_NAMESPACES = YES\r
+\r
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that \r
+# doxygen should invoke to get the current version for each file (typically from \r
+# the version control system). Doxygen will invoke the program by executing (via \r
+# popen()) the command <command> <input-file>, where <command> is the value of \r
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file \r
+# provided by doxygen. Whatever the program writes to standard output \r
+# is used as the file version. See the manual for examples.\r
+\r
+FILE_VERSION_FILTER = \r
+\r
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by \r
+# doxygen. The layout file controls the global structure of the generated output files \r
+# in an output format independent way. The create the layout file that represents \r
+# doxygen's defaults, run doxygen with the -l option. You can optionally specify a \r
+# file name after the option, if omitted DoxygenLayout.xml will be used as the name \r
+# of the layout file.\r
+\r
+LAYOUT_FILE = \r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to warning and progress messages\r
+#---------------------------------------------------------------------------\r
+\r
+# The QUIET tag can be used to turn on/off the messages that are generated \r
+# by doxygen. Possible values are YES and NO. If left blank NO is used.\r
+\r
+QUIET = YES\r
+\r
+# The WARNINGS tag can be used to turn on/off the warning messages that are \r
+# generated by doxygen. Possible values are YES and NO. If left blank \r
+# NO is used.\r
+\r
+WARNINGS = YES\r
+\r
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings \r
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will \r
+# automatically be disabled.\r
+\r
+WARN_IF_UNDOCUMENTED = YES\r
+\r
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for \r
+# potential errors in the documentation, such as not documenting some \r
+# parameters in a documented function, or documenting parameters that \r
+# don't exist or using markup commands wrongly.\r
+\r
+WARN_IF_DOC_ERROR = YES\r
+\r
+# This WARN_NO_PARAMDOC option can be abled to get warnings for \r
+# functions that are documented, but have no documentation for their parameters \r
+# or return value. If set to NO (the default) doxygen will only warn about \r
+# wrong or incomplete parameter documentation, but not about the absence of \r
+# documentation.\r
+\r
+WARN_NO_PARAMDOC = YES\r
+\r
+# The WARN_FORMAT tag determines the format of the warning messages that \r
+# doxygen can produce. The string should contain the $file, $line, and $text \r
+# tags, which will be replaced by the file and line number from which the \r
+# warning originated and the warning text. Optionally the format may contain \r
+# $version, which will be replaced by the version of the file (if it could \r
+# be obtained via FILE_VERSION_FILTER)\r
+\r
+WARN_FORMAT = "$file:$line: $text"\r
+\r
+# The WARN_LOGFILE tag can be used to specify a file to which warning \r
+# and error messages should be written. If left blank the output is written \r
+# to stderr.\r
+\r
+WARN_LOGFILE = \r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to the input files\r
+#---------------------------------------------------------------------------\r
+\r
+# The INPUT tag can be used to specify the files and/or directories that contain \r
+# documented source files. You may enter file names like "myfile.cpp" or \r
+# directories like "/usr/src/myproject". Separate the files or directories \r
+# with spaces.\r
+\r
+INPUT = ./\r
+\r
+# This tag can be used to specify the character encoding of the source files \r
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is \r
+# also the default input encoding. Doxygen uses libiconv (or the iconv built \r
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for \r
+# the list of possible encodings.\r
+\r
+INPUT_ENCODING = UTF-8\r
+\r
+# If the value of the INPUT tag contains directories, you can use the \r
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp \r
+# and *.h) to filter out the source-files in the directories. If left \r
+# blank the following patterns are tested: \r
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx \r
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90\r
+\r
+FILE_PATTERNS = *.h \\r
+ *.c \\r
+ *.txt\r
+\r
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories \r
+# should be searched for input files as well. Possible values are YES and NO. \r
+# If left blank NO is used.\r
+\r
+RECURSIVE = YES\r
+\r
+# The EXCLUDE tag can be used to specify files and/or directories that should \r
+# excluded from the INPUT source files. This way you can easily exclude a \r
+# subdirectory from a directory tree whose root is specified with the INPUT tag.\r
+\r
+EXCLUDE = Documentation/\r
+\r
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or \r
+# directories that are symbolic links (a Unix filesystem feature) are excluded \r
+# from the input.\r
+\r
+EXCLUDE_SYMLINKS = NO\r
+\r
+# If the value of the INPUT tag contains directories, you can use the \r
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude \r
+# certain files from those directories. Note that the wildcards are matched \r
+# against the file with absolute path, so to exclude all test directories \r
+# for example use the pattern */test/*\r
+\r
+EXCLUDE_PATTERNS = */LowLevel/USBMode.h\r
+\r
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names \r
+# (namespaces, classes, functions, etc.) that should be excluded from the \r
+# output. The symbol name can be a fully qualified name, a word, or if the \r
+# wildcard * is used, a substring. Examples: ANamespace, AClass, \r
+# AClass::ANamespace, ANamespace::*Test\r
+\r
+EXCLUDE_SYMBOLS = __*\r
+\r
+# The EXAMPLE_PATH tag can be used to specify one or more files or \r
+# directories that contain example code fragments that are included (see \r
+# the \include command).\r
+\r
+EXAMPLE_PATH = \r
+\r
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the \r
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp \r
+# and *.h) to filter out the source-files in the directories. If left \r
+# blank all files are included.\r
+\r
+EXAMPLE_PATTERNS = *\r
+\r
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be \r
+# searched for input files to be used with the \include or \dontinclude \r
+# commands irrespective of the value of the RECURSIVE tag. \r
+# Possible values are YES and NO. If left blank NO is used.\r
+\r
+EXAMPLE_RECURSIVE = NO\r
+\r
+# The IMAGE_PATH tag can be used to specify one or more files or \r
+# directories that contain image that are included in the documentation (see \r
+# the \image command).\r
+\r
+IMAGE_PATH = \r
+\r
+# The INPUT_FILTER tag can be used to specify a program that doxygen should \r
+# invoke to filter for each input file. Doxygen will invoke the filter program \r
+# by executing (via popen()) the command <filter> <input-file>, where <filter> \r
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an \r
+# input file. Doxygen will then use the output that the filter program writes \r
+# to standard output. If FILTER_PATTERNS is specified, this tag will be \r
+# ignored.\r
+\r
+INPUT_FILTER = \r
+\r
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern \r
+# basis. Doxygen will compare the file name with each pattern and apply the \r
+# filter if there is a match. The filters are a list of the form: \r
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further \r
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER \r
+# is applied to all files.\r
+\r
+FILTER_PATTERNS = \r
+\r
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using \r
+# INPUT_FILTER) will be used to filter the input files when producing source \r
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).\r
+\r
+FILTER_SOURCE_FILES = NO\r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to source browsing\r
+#---------------------------------------------------------------------------\r
+\r
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will \r
+# be generated. Documented entities will be cross-referenced with these sources. \r
+# Note: To get rid of all source code in the generated output, make sure also \r
+# VERBATIM_HEADERS is set to NO.\r
+\r
+SOURCE_BROWSER = NO\r
+\r
+# Setting the INLINE_SOURCES tag to YES will include the body \r
+# of functions and classes directly in the documentation.\r
+\r
+INLINE_SOURCES = NO\r
+\r
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct \r
+# doxygen to hide any special comment blocks from generated source code \r
+# fragments. Normal C and C++ comments will always remain visible.\r
+\r
+STRIP_CODE_COMMENTS = YES\r
+\r
+# If the REFERENCED_BY_RELATION tag is set to YES \r
+# then for each documented function all documented \r
+# functions referencing it will be listed.\r
+\r
+REFERENCED_BY_RELATION = NO\r
+\r
+# If the REFERENCES_RELATION tag is set to YES \r
+# then for each documented function all documented entities \r
+# called/used by that function will be listed.\r
+\r
+REFERENCES_RELATION = NO\r
+\r
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)\r
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from\r
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will\r
+# link to the source code. Otherwise they will link to the documentstion.\r
+\r
+REFERENCES_LINK_SOURCE = NO\r
+\r
+# If the USE_HTAGS tag is set to YES then the references to source code \r
+# will point to the HTML generated by the htags(1) tool instead of doxygen \r
+# built-in source browser. The htags tool is part of GNU's global source \r
+# tagging system (see http://www.gnu.org/software/global/global.html). You \r
+# will need version 4.8.6 or higher.\r
+\r
+USE_HTAGS = NO\r
+\r
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen \r
+# will generate a verbatim copy of the header file for each class for \r
+# which an include is specified. Set to NO to disable this.\r
+\r
+VERBATIM_HEADERS = NO\r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to the alphabetical class index\r
+#---------------------------------------------------------------------------\r
+\r
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index \r
+# of all compounds will be generated. Enable this if the project \r
+# contains a lot of classes, structs, unions or interfaces.\r
+\r
+ALPHABETICAL_INDEX = YES\r
+\r
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then \r
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns \r
+# in which this list will be split (can be a number in the range [1..20])\r
+\r
+COLS_IN_ALPHA_INDEX = 5\r
+\r
+# In case all classes in a project start with a common prefix, all \r
+# classes will be put under the same header in the alphabetical index. \r
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that \r
+# should be ignored while generating the index headers.\r
+\r
+IGNORE_PREFIX = \r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to the HTML output\r
+#---------------------------------------------------------------------------\r
+\r
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will \r
+# generate HTML output.\r
+\r
+GENERATE_HTML = YES\r
+\r
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. \r
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be \r
+# put in front of it. If left blank `html' will be used as the default path.\r
+\r
+HTML_OUTPUT = html\r
+\r
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for \r
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank \r
+# doxygen will generate files with .html extension.\r
+\r
+HTML_FILE_EXTENSION = .html\r
+\r
+# The HTML_HEADER tag can be used to specify a personal HTML header for \r
+# each generated HTML page. If it is left blank doxygen will generate a \r
+# standard header.\r
+\r
+HTML_HEADER = \r
+\r
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for \r
+# each generated HTML page. If it is left blank doxygen will generate a \r
+# standard footer.\r
+\r
+HTML_FOOTER = \r
+\r
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading \r
+# style sheet that is used by each HTML page. It can be used to \r
+# fine-tune the look of the HTML output. If the tag is left blank doxygen \r
+# will generate a default style sheet. Note that doxygen will try to copy \r
+# the style sheet file to the HTML output directory, so don't put your own \r
+# stylesheet in the HTML output directory as well, or it will be erased!\r
+\r
+HTML_STYLESHEET = \r
+\r
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, \r
+# files or namespaces will be aligned in HTML using tables. If set to \r
+# NO a bullet list will be used.\r
+\r
+HTML_ALIGN_MEMBERS = YES\r
+\r
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML \r
+# documentation will contain sections that can be hidden and shown after the \r
+# page has loaded. For this to work a browser that supports \r
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox \r
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).\r
+\r
+HTML_DYNAMIC_SECTIONS = YES\r
+\r
+# If the GENERATE_DOCSET tag is set to YES, additional index files \r
+# will be generated that can be used as input for Apple's Xcode 3 \r
+# integrated development environment, introduced with OSX 10.5 (Leopard). \r
+# To create a documentation set, doxygen will generate a Makefile in the \r
+# HTML output directory. Running make will produce the docset in that \r
+# directory and running "make install" will install the docset in \r
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find \r
+# it at startup. \r
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.\r
+\r
+GENERATE_DOCSET = NO\r
+\r
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the \r
+# feed. A documentation feed provides an umbrella under which multiple \r
+# documentation sets from a single provider (such as a company or product suite) \r
+# can be grouped.\r
+\r
+DOCSET_FEEDNAME = "Doxygen generated docs"\r
+\r
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that \r
+# should uniquely identify the documentation set bundle. This should be a \r
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen \r
+# will append .docset to the name.\r
+\r
+DOCSET_BUNDLE_ID = org.doxygen.Project\r
+\r
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files \r
+# will be generated that can be used as input for tools like the \r
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) \r
+# of the generated HTML documentation.\r
+\r
+GENERATE_HTMLHELP = NO\r
+\r
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can \r
+# be used to specify the file name of the resulting .chm file. You \r
+# can add a path in front of the file if the result should not be \r
+# written to the html output directory.\r
+\r
+CHM_FILE = \r
+\r
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can \r
+# be used to specify the location (absolute path including file name) of \r
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run \r
+# the HTML help compiler on the generated index.hhp.\r
+\r
+HHC_LOCATION = \r
+\r
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag \r
+# controls if a separate .chi index file is generated (YES) or that \r
+# it should be included in the master .chm file (NO).\r
+\r
+GENERATE_CHI = NO\r
+\r
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING\r
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file\r
+# content.\r
+\r
+CHM_INDEX_ENCODING = \r
+\r
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag \r
+# controls whether a binary table of contents is generated (YES) or a \r
+# normal table of contents (NO) in the .chm file.\r
+\r
+BINARY_TOC = NO\r
+\r
+# The TOC_EXPAND flag can be set to YES to add extra items for group members \r
+# to the contents of the HTML help documentation and to the tree view.\r
+\r
+TOC_EXPAND = YES\r
+\r
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER \r
+# are set, an additional index file will be generated that can be used as input for \r
+# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated \r
+# HTML documentation.\r
+\r
+GENERATE_QHP = NO\r
+\r
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can \r
+# be used to specify the file name of the resulting .qch file. \r
+# The path specified is relative to the HTML output folder.\r
+\r
+QCH_FILE = \r
+\r
+# The QHP_NAMESPACE tag specifies the namespace to use when generating \r
+# Qt Help Project output. For more information please see \r
+# <a href="http://doc.trolltech.com/qthelpproject.html#namespace">Qt Help Project / Namespace</a>.\r
+\r
+QHP_NAMESPACE = org.doxygen.Project\r
+\r
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating \r
+# Qt Help Project output. For more information please see \r
+# <a href="http://doc.trolltech.com/qthelpproject.html#virtual-folders">Qt Help Project / Virtual Folders</a>.\r
+\r
+QHP_VIRTUAL_FOLDER = doc\r
+\r
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can \r
+# be used to specify the location of Qt's qhelpgenerator. \r
+# If non-empty doxygen will try to run qhelpgenerator on the generated \r
+# .qhp file .\r
+\r
+QHG_LOCATION = \r
+\r
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at \r
+# top of each HTML page. The value NO (the default) enables the index and \r
+# the value YES disables it.\r
+\r
+DISABLE_INDEX = NO\r
+\r
+# This tag can be used to set the number of enum values (range [1..20]) \r
+# that doxygen will group on one line in the generated HTML documentation.\r
+\r
+ENUM_VALUES_PER_LINE = 1\r
+\r
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index\r
+# structure should be generated to display hierarchical information.\r
+# If the tag value is set to FRAME, a side panel will be generated\r
+# containing a tree-like index structure (just like the one that \r
+# is generated for HTML Help). For this to work a browser that supports \r
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, \r
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are \r
+# probably better off using the HTML help feature. Other possible values \r
+# for this tag are: HIERARCHIES, which will generate the Groups, Directories,\r
+# and Class Hierarchy pages using a tree view instead of an ordered list;\r
+# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which\r
+# disables this behavior completely. For backwards compatibility with previous\r
+# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE\r
+# respectively.\r
+\r
+GENERATE_TREEVIEW = YES\r
+\r
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be \r
+# used to set the initial width (in pixels) of the frame in which the tree \r
+# is shown.\r
+\r
+TREEVIEW_WIDTH = 250\r
+\r
+# Use this tag to change the font size of Latex formulas included \r
+# as images in the HTML documentation. The default is 10. Note that \r
+# when you change the font size after a successful doxygen run you need \r
+# to manually remove any form_*.png images from the HTML output directory \r
+# to force them to be regenerated.\r
+\r
+FORMULA_FONTSIZE = 10\r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to the LaTeX output\r
+#---------------------------------------------------------------------------\r
+\r
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will \r
+# generate Latex output.\r
+\r
+GENERATE_LATEX = NO\r
+\r
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. \r
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be \r
+# put in front of it. If left blank `latex' will be used as the default path.\r
+\r
+LATEX_OUTPUT = latex\r
+\r
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be \r
+# invoked. If left blank `latex' will be used as the default command name.\r
+\r
+LATEX_CMD_NAME = latex\r
+\r
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to \r
+# generate index for LaTeX. If left blank `makeindex' will be used as the \r
+# default command name.\r
+\r
+MAKEINDEX_CMD_NAME = makeindex\r
+\r
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact \r
+# LaTeX documents. This may be useful for small projects and may help to \r
+# save some trees in general.\r
+\r
+COMPACT_LATEX = NO\r
+\r
+# The PAPER_TYPE tag can be used to set the paper type that is used \r
+# by the printer. Possible values are: a4, a4wide, letter, legal and \r
+# executive. If left blank a4wide will be used.\r
+\r
+PAPER_TYPE = a4wide\r
+\r
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX \r
+# packages that should be included in the LaTeX output.\r
+\r
+EXTRA_PACKAGES = \r
+\r
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for \r
+# the generated latex document. The header should contain everything until \r
+# the first chapter. If it is left blank doxygen will generate a \r
+# standard header. Notice: only use this tag if you know what you are doing!\r
+\r
+LATEX_HEADER = \r
+\r
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated \r
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will \r
+# contain links (just like the HTML output) instead of page references \r
+# This makes the output suitable for online browsing using a pdf viewer.\r
+\r
+PDF_HYPERLINKS = YES\r
+\r
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of \r
+# plain latex in the generated Makefile. Set this option to YES to get a \r
+# higher quality PDF documentation.\r
+\r
+USE_PDFLATEX = YES\r
+\r
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. \r
+# command to the generated LaTeX files. This will instruct LaTeX to keep \r
+# running if errors occur, instead of asking the user for help. \r
+# This option is also used when generating formulas in HTML.\r
+\r
+LATEX_BATCHMODE = NO\r
+\r
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not \r
+# include the index chapters (such as File Index, Compound Index, etc.) \r
+# in the output.\r
+\r
+LATEX_HIDE_INDICES = NO\r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to the RTF output\r
+#---------------------------------------------------------------------------\r
+\r
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output \r
+# The RTF output is optimized for Word 97 and may not look very pretty with \r
+# other RTF readers or editors.\r
+\r
+GENERATE_RTF = NO\r
+\r
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. \r
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be \r
+# put in front of it. If left blank `rtf' will be used as the default path.\r
+\r
+RTF_OUTPUT = rtf\r
+\r
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact \r
+# RTF documents. This may be useful for small projects and may help to \r
+# save some trees in general.\r
+\r
+COMPACT_RTF = NO\r
+\r
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated \r
+# will contain hyperlink fields. The RTF file will \r
+# contain links (just like the HTML output) instead of page references. \r
+# This makes the output suitable for online browsing using WORD or other \r
+# programs which support those fields. \r
+# Note: wordpad (write) and others do not support links.\r
+\r
+RTF_HYPERLINKS = NO\r
+\r
+# Load stylesheet definitions from file. Syntax is similar to doxygen's \r
+# config file, i.e. a series of assignments. You only have to provide \r
+# replacements, missing definitions are set to their default value.\r
+\r
+RTF_STYLESHEET_FILE = \r
+\r
+# Set optional variables used in the generation of an rtf document. \r
+# Syntax is similar to doxygen's config file.\r
+\r
+RTF_EXTENSIONS_FILE = \r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to the man page output\r
+#---------------------------------------------------------------------------\r
+\r
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will \r
+# generate man pages\r
+\r
+GENERATE_MAN = NO\r
+\r
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. \r
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be \r
+# put in front of it. If left blank `man' will be used as the default path.\r
+\r
+MAN_OUTPUT = man\r
+\r
+# The MAN_EXTENSION tag determines the extension that is added to \r
+# the generated man pages (default is the subroutine's section .3)\r
+\r
+MAN_EXTENSION = .3\r
+\r
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, \r
+# then it will generate one additional man file for each entity \r
+# documented in the real man page(s). These additional files \r
+# only source the real man page, but without them the man command \r
+# would be unable to find the correct page. The default is NO.\r
+\r
+MAN_LINKS = NO\r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to the XML output\r
+#---------------------------------------------------------------------------\r
+\r
+# If the GENERATE_XML tag is set to YES Doxygen will \r
+# generate an XML file that captures the structure of \r
+# the code including all documentation.\r
+\r
+GENERATE_XML = NO\r
+\r
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. \r
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be \r
+# put in front of it. If left blank `xml' will be used as the default path.\r
+\r
+XML_OUTPUT = xml\r
+\r
+# The XML_SCHEMA tag can be used to specify an XML schema, \r
+# which can be used by a validating XML parser to check the \r
+# syntax of the XML files.\r
+\r
+XML_SCHEMA = \r
+\r
+# The XML_DTD tag can be used to specify an XML DTD, \r
+# which can be used by a validating XML parser to check the \r
+# syntax of the XML files.\r
+\r
+XML_DTD = \r
+\r
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will \r
+# dump the program listings (including syntax highlighting \r
+# and cross-referencing information) to the XML output. Note that \r
+# enabling this will significantly increase the size of the XML output.\r
+\r
+XML_PROGRAMLISTING = YES\r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options for the AutoGen Definitions output\r
+#---------------------------------------------------------------------------\r
+\r
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will \r
+# generate an AutoGen Definitions (see autogen.sf.net) file \r
+# that captures the structure of the code including all \r
+# documentation. Note that this feature is still experimental \r
+# and incomplete at the moment.\r
+\r
+GENERATE_AUTOGEN_DEF = NO\r
+\r
+#---------------------------------------------------------------------------\r
+# configuration options related to the Perl module output\r
+#---------------------------------------------------------------------------\r
+\r
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will \r
+# generate a Perl module file that captures the structure of \r
+# the code including all documentation. Note that this \r
+# feature is still experimental and incomplete at the \r
+# moment.\r
+\r
+GENERATE_PERLMOD = NO\r
+\r
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate \r
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able \r
+# to generate PDF and DVI output from the Perl module output.\r
+\r
+PERLMOD_LATEX = NO\r
+\r
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be \r
+# nicely formatted so it can be parsed by a human reader. This is useful \r
+# if you want to understand what is going on. On the other hand, if this \r
+# tag is set to NO the size of the Perl module output will be much smaller \r
+# and Perl will parse it just the same.\r
+\r
+PERLMOD_PRETTY = YES\r
+\r
+# The names of the make variables in the generated doxyrules.make file \r
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. \r
+# This is useful so different doxyrules.make files included by the same \r
+# Makefile don't overwrite each other's variables.\r
+\r
+PERLMOD_MAKEVAR_PREFIX = \r
+\r
+#---------------------------------------------------------------------------\r
+# Configuration options related to the preprocessor \r
+#---------------------------------------------------------------------------\r
+\r
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will \r
+# evaluate all C-preprocessor directives found in the sources and include \r
+# files.\r
+\r
+ENABLE_PREPROCESSING = YES\r
+\r
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro \r
+# names in the source code. If set to NO (the default) only conditional \r
+# compilation will be performed. Macro expansion can be done in a controlled \r
+# way by setting EXPAND_ONLY_PREDEF to YES.\r
+\r
+MACRO_EXPANSION = YES\r
+\r
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES \r
+# then the macro expansion is limited to the macros specified with the \r
+# PREDEFINED and EXPAND_AS_DEFINED tags.\r
+\r
+EXPAND_ONLY_PREDEF = YES\r
+\r
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files \r
+# in the INCLUDE_PATH (see below) will be search if a #include is found.\r
+\r
+SEARCH_INCLUDES = YES\r
+\r
+# The INCLUDE_PATH tag can be used to specify one or more directories that \r
+# contain include files that are not input files but should be processed by \r
+# the preprocessor.\r
+\r
+INCLUDE_PATH = \r
+\r
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard \r
+# patterns (like *.h and *.hpp) to filter out the header-files in the \r
+# directories. If left blank, the patterns specified with FILE_PATTERNS will \r
+# be used.\r
+\r
+INCLUDE_FILE_PATTERNS = \r
+\r
+# The PREDEFINED tag can be used to specify one or more macro names that \r
+# are defined before the preprocessor is started (similar to the -D option of \r
+# gcc). The argument of the tag is a list of macros of the form: name \r
+# or name=definition (no spaces). If the definition and the = are \r
+# omitted =1 is assumed. To prevent a macro definition from being \r
+# undefined via #undef or recursively expanded use the := operator \r
+# instead of the = operator.\r
+\r
+PREDEFINED = __DOXYGEN__\r
+\r
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then \r
+# this tag can be used to specify a list of macro names that should be expanded. \r
+# The macro definition that is found in the sources will be used. \r
+# Use the PREDEFINED tag if you want to use a different macro definition.\r
+\r
+EXPAND_AS_DEFINED = BUTTLOADTAG\r
+\r
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then \r
+# doxygen's preprocessor will remove all function-like macros that are alone \r
+# on a line, have an all uppercase name, and do not end with a semicolon. Such \r
+# function macros are typically used for boiler-plate code, and will confuse \r
+# the parser if not removed.\r
+\r
+SKIP_FUNCTION_MACROS = YES\r
+\r
+#---------------------------------------------------------------------------\r
+# Configuration::additions related to external references \r
+#---------------------------------------------------------------------------\r
+\r
+# The TAGFILES option can be used to specify one or more tagfiles. \r
+# Optionally an initial location of the external documentation \r
+# can be added for each tagfile. The format of a tag file without \r
+# this location is as follows: \r
+# TAGFILES = file1 file2 ... \r
+# Adding location for the tag files is done as follows: \r
+# TAGFILES = file1=loc1 "file2 = loc2" ... \r
+# where "loc1" and "loc2" can be relative or absolute paths or \r
+# URLs. If a location is present for each tag, the installdox tool \r
+# does not have to be run to correct the links.\r
+# Note that each tag file must have a unique name\r
+# (where the name does NOT include the path)\r
+# If a tag file is not located in the directory in which doxygen \r
+# is run, you must also specify the path to the tagfile here.\r
+\r
+TAGFILES = \r
+\r
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create \r
+# a tag file that is based on the input files it reads.\r
+\r
+GENERATE_TAGFILE = \r
+\r
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed \r
+# in the class index. If set to NO only the inherited external classes \r
+# will be listed.\r
+\r
+ALLEXTERNALS = NO\r
+\r
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed \r
+# in the modules index. If set to NO, only the current project's groups will \r
+# be listed.\r
+\r
+EXTERNAL_GROUPS = YES\r
+\r
+# The PERL_PATH should be the absolute path and name of the perl script \r
+# interpreter (i.e. the result of `which perl').\r
+\r
+PERL_PATH = /usr/bin/perl\r
+\r
+#---------------------------------------------------------------------------\r
+# Configuration options related to the dot tool \r
+#---------------------------------------------------------------------------\r
+\r
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will \r
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base \r
+# or super classes. Setting the tag to NO turns the diagrams off. Note that \r
+# this option is superseded by the HAVE_DOT option below. This is only a \r
+# fallback. It is recommended to install and use dot, since it yields more \r
+# powerful graphs.\r
+\r
+CLASS_DIAGRAMS = NO\r
+\r
+# You can define message sequence charts within doxygen comments using the \msc \r
+# command. Doxygen will then run the mscgen tool (see \r
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the \r
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where \r
+# the mscgen tool resides. If left empty the tool is assumed to be found in the \r
+# default search path.\r
+\r
+MSCGEN_PATH = \r
+\r
+# If set to YES, the inheritance and collaboration graphs will hide \r
+# inheritance and usage relations if the target is undocumented \r
+# or is not a class.\r
+\r
+HIDE_UNDOC_RELATIONS = YES\r
+\r
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is \r
+# available from the path. This tool is part of Graphviz, a graph visualization \r
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section \r
+# have no effect if this option is set to NO (the default)\r
+\r
+HAVE_DOT = NO\r
+\r
+# By default doxygen will write a font called FreeSans.ttf to the output \r
+# directory and reference it in all dot files that doxygen generates. This \r
+# font does not include all possible unicode characters however, so when you need \r
+# these (or just want a differently looking font) you can specify the font name \r
+# using DOT_FONTNAME. You need need to make sure dot is able to find the font, \r
+# which can be done by putting it in a standard location or by setting the \r
+# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory \r
+# containing the font.\r
+\r
+DOT_FONTNAME = FreeSans\r
+\r
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. \r
+# The default size is 10pt.\r
+\r
+DOT_FONTSIZE = 10\r
+\r
+# By default doxygen will tell dot to use the output directory to look for the \r
+# FreeSans.ttf font (which doxygen will put there itself). If you specify a \r
+# different font using DOT_FONTNAME you can set the path where dot \r
+# can find it using this tag.\r
+\r
+DOT_FONTPATH = \r
+\r
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen \r
+# will generate a graph for each documented class showing the direct and \r
+# indirect inheritance relations. Setting this tag to YES will force the \r
+# the CLASS_DIAGRAMS tag to NO.\r
+\r
+CLASS_GRAPH = NO\r
+\r
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen \r
+# will generate a graph for each documented class showing the direct and \r
+# indirect implementation dependencies (inheritance, containment, and \r
+# class references variables) of the class with other documented classes.\r
+\r
+COLLABORATION_GRAPH = NO\r
+\r
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen \r
+# will generate a graph for groups, showing the direct groups dependencies\r
+\r
+GROUP_GRAPHS = NO\r
+\r
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and \r
+# collaboration diagrams in a style similar to the OMG's Unified Modeling \r
+# Language.\r
+\r
+UML_LOOK = NO\r
+\r
+# If set to YES, the inheritance and collaboration graphs will show the \r
+# relations between templates and their instances.\r
+\r
+TEMPLATE_RELATIONS = NO\r
+\r
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT \r
+# tags are set to YES then doxygen will generate a graph for each documented \r
+# file showing the direct and indirect include dependencies of the file with \r
+# other documented files.\r
+\r
+INCLUDE_GRAPH = NO\r
+\r
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and \r
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each \r
+# documented header file showing the documented files that directly or \r
+# indirectly include this file.\r
+\r
+INCLUDED_BY_GRAPH = NO\r
+\r
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then \r
+# doxygen will generate a call dependency graph for every global function \r
+# or class method. Note that enabling this option will significantly increase \r
+# the time of a run. So in most cases it will be better to enable call graphs \r
+# for selected functions only using the \callgraph command.\r
+\r
+CALL_GRAPH = NO\r
+\r
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then \r
+# doxygen will generate a caller dependency graph for every global function \r
+# or class method. Note that enabling this option will significantly increase \r
+# the time of a run. So in most cases it will be better to enable caller \r
+# graphs for selected functions only using the \callergraph command.\r
+\r
+CALLER_GRAPH = NO\r
+\r
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen \r
+# will graphical hierarchy of all classes instead of a textual one.\r
+\r
+GRAPHICAL_HIERARCHY = NO\r
+\r
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES \r
+# then doxygen will show the dependencies a directory has on other directories \r
+# in a graphical way. The dependency relations are determined by the #include\r
+# relations between the files in the directories.\r
+\r
+DIRECTORY_GRAPH = NO\r
+\r
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images \r
+# generated by dot. Possible values are png, jpg, or gif\r
+# If left blank png will be used.\r
+\r
+DOT_IMAGE_FORMAT = png\r
+\r
+# The tag DOT_PATH can be used to specify the path where the dot tool can be \r
+# found. If left blank, it is assumed the dot tool can be found in the path.\r
+\r
+DOT_PATH = \r
+\r
+# The DOTFILE_DIRS tag can be used to specify one or more directories that \r
+# contain dot files that are included in the documentation (see the \r
+# \dotfile command).\r
+\r
+DOTFILE_DIRS = \r
+\r
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of \r
+# nodes that will be shown in the graph. If the number of nodes in a graph \r
+# becomes larger than this value, doxygen will truncate the graph, which is \r
+# visualized by representing a node as a red box. Note that doxygen if the \r
+# number of direct children of the root node in a graph is already larger than \r
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note \r
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.\r
+\r
+DOT_GRAPH_MAX_NODES = 15\r
+\r
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the \r
+# graphs generated by dot. A depth value of 3 means that only nodes reachable \r
+# from the root by following a path via at most 3 edges will be shown. Nodes \r
+# that lay further from the root node will be omitted. Note that setting this \r
+# option to 1 or 2 may greatly reduce the computation time needed for large \r
+# code bases. Also note that the size of a graph can be further restricted by \r
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.\r
+\r
+MAX_DOT_GRAPH_DEPTH = 2\r
+\r
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent \r
+# background. This is disabled by default, because dot on Windows does not \r
+# seem to support this out of the box. Warning: Depending on the platform used, \r
+# enabling this option may lead to badly anti-aliased labels on the edges of \r
+# a graph (i.e. they become hard to read).\r
+\r
+DOT_TRANSPARENT = YES\r
+\r
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output \r
+# files in one run (i.e. multiple -o and -T options on the command line). This \r
+# makes dot run faster, but since only newer versions of dot (>1.8.10) \r
+# support this, this feature is disabled by default.\r
+\r
+DOT_MULTI_TARGETS = NO\r
+\r
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will \r
+# generate a legend page explaining the meaning of the various boxes and \r
+# arrows in the dot generated graphs.\r
+\r
+GENERATE_LEGEND = YES\r
+\r
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will \r
+# remove the intermediate dot files that are used to generate \r
+# the various graphs.\r
+\r
+DOT_CLEANUP = YES\r
+\r
+#---------------------------------------------------------------------------\r
+# Configuration::additions related to the search engine \r
+#---------------------------------------------------------------------------\r
+\r
+# The SEARCHENGINE tag specifies whether or not a search engine should be \r
+# used. If set to NO the values of all tags below this one will be ignored.\r
+\r
+SEARCHENGINE = NO\r
--- /dev/null
+/*\r
+ LUFA Library\r
+ Copyright (C) Dean Camera, 2009.\r
+ \r
+ dean [at] fourwalledcubicle [dot] com\r
+ www.fourwalledcubicle.com\r
+*/\r
+\r
+/*\r
+ Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+ Permission to use, copy, modify, and distribute this software\r
+ and its documentation for any purpose and without fee is hereby\r
+ granted, provided that the above copyright notice appear in all\r
+ copies and that both that the copyright notice and this\r
+ permission notice and warranty disclaimer appear in supporting\r
+ documentation, and that the name of the author not be used in\r
+ advertising or publicity pertaining to distribution of the\r
+ software without specific, written prior permission.\r
+\r
+ The author disclaim all warranties with regard to this\r
+ software, including all implied warranties of merchantability\r
+ and fitness. In no event shall the author be liable for any\r
+ special, indirect or consequential damages or any damages\r
+ whatsoever resulting from loss of use, data or profits, whether\r
+ in an action of contract, negligence or other tortious action,\r
+ arising out of or in connection with the use or performance of\r
+ this software.\r
+*/\r
+\r
+/** \file\r
+ *\r
+ * Host Mode USB Mouse functionality for the MouseHostDevice demo. This file contains the Host mode\r
+ * USB Mouse related code of the demo and is responsible for all the Host mode Mouse functionality.\r
+ */\r
+ \r
+#include "HostFunctions.h"\r
+\r
+/** LUFA HID Class driver interface configuration and state information. This structure is\r
+ * passed to all HID Class driver functions, so that multiple instances of the same class\r
+ * within a device can be differentiated from one another.\r
+ */\r
+USB_ClassInfo_HID_Host_t Mouse_HID_Host_Interface =\r
+ {\r
+ .Config =\r
+ {\r
+ .DataINPipeNumber = 1,\r
+ .DataOUTPipeNumber = 2,\r
+ \r
+ .HIDInterfaceProtocol = HID_BOOT_MOUSE_PROTOCOL,\r
+ },\r
+ };\r
+ \r
+\r
+/** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and\r
+ * starts the library USB task to begin the enumeration and USB management process.\r
+ */\r
+void EVENT_USB_Host_DeviceAttached(void)\r
+{\r
+ puts_P(PSTR("Device Attached.\r\n"));\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);\r
+}\r
+\r
+/** Event handler for the USB_DeviceUnattached event. This indicates that a device has been removed from the host, and\r
+ * stops the library USB task management process.\r
+ */\r
+void EVENT_USB_Host_DeviceUnattached(void)\r
+{\r
+ puts_P(PSTR("\r\nDevice Unattached.\r\n"));\r
+ LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
+}\r
+\r
+/** Event handler for the USB_DeviceEnumerationComplete event. This indicates that a device has been successfully\r
+ * enumerated by the host and is now ready to be used by the application.\r
+ */\r
+void EVENT_USB_Host_DeviceEnumerationComplete(void)\r
+{\r
+ LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
+}\r
+\r
+/** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */\r
+void EVENT_USB_Host_HostError(const uint8_t ErrorCode)\r
+{\r
+ USB_ShutDown();\r
+\r
+ printf_P(PSTR(ESC_FG_RED "Host Mode Error\r\n"\r
+ " -- Error Code %d\r\n" ESC_FG_WHITE), ErrorCode);\r
+\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+ for(;;);\r
+}\r
+\r
+/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while\r
+ * enumerating an attached USB device.\r
+ */\r
+void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode)\r
+{\r
+ printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"\r
+ " -- Error Code %d\r\n"\r
+ " -- Sub Error Code %d\r\n"\r
+ " -- In State %d\r\n" ESC_FG_WHITE), ErrorCode, SubErrorCode, USB_HostState);\r
+ \r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+}\r
+\r
+/** Host state machine task. This task handles the enumeration and control of USB Mice while in USB Host mode,\r
+ * setting up the appropriate data pipes and processing reports from the attached device.\r
+ */\r
+void MouseHostTask(void)\r
+{\r
+ switch (USB_HostState)\r
+ {\r
+ case HOST_STATE_Addressed:\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);\r
+ \r
+ uint16_t ConfigDescriptorSize;\r
+ uint8_t ConfigDescriptorData[512];\r
+\r
+ if (USB_GetDeviceConfigDescriptor(1, &ConfigDescriptorSize, ConfigDescriptorData,\r
+ sizeof(ConfigDescriptorData)) != HOST_GETCONFIG_Successful)\r
+ {\r
+ printf("Error Retrieving Configuration Descriptor.\r\n");\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+ break;\r
+ }\r
+\r
+ if (HID_Host_ConfigurePipes(&Mouse_HID_Host_Interface,\r
+ ConfigDescriptorSize, ConfigDescriptorData) != HID_ENUMERROR_NoError)\r
+ {\r
+ printf("Attached Device Not a Valid Mouse.\r\n");\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+ break;\r
+ }\r
+ \r
+ if (USB_Host_SetDeviceConfiguration(1) != HOST_SENDCONTROL_Successful)\r
+ {\r
+ printf("Error Setting Device Configuration.\r\n");\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+ break;\r
+ }\r
+\r
+ if (HID_Host_SetBootProtocol(&Mouse_HID_Host_Interface) != 0)\r
+ {\r
+ printf("Could not Set Boot Protocol Mode.\r\n");\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+ break;\r
+ }\r
+ \r
+ printf("Mouse Enumerated.\r\n");\r
+ USB_HostState = HOST_STATE_Configured;\r
+ break;\r
+ case HOST_STATE_Configured:\r
+ if (HID_Host_IsReportReceived(&Mouse_HID_Host_Interface))\r
+ { \r
+ uint8_t LEDMask = LEDS_NO_LEDS;\r
+ \r
+ USB_MouseReport_Data_t MouseReport;\r
+ HID_Host_ReceiveReport(&Mouse_HID_Host_Interface, &MouseReport);\r
+ \r
+ printf_P(PSTR("dX:%2d dY:%2d Button:%d\r\n"), MouseReport.X,\r
+ MouseReport.Y,\r
+ MouseReport.Button);\r
+ if (MouseReport.X > 0)\r
+ LEDMask |= LEDS_LED1;\r
+ else if (MouseReport.X < 0)\r
+ LEDMask |= LEDS_LED2;\r
+ \r
+ if (MouseReport.Y > 0)\r
+ LEDMask |= LEDS_LED3;\r
+ else if (MouseReport.Y < 0)\r
+ LEDMask |= LEDS_LED4;\r
+\r
+ if (MouseReport.Button)\r
+ LEDMask = LEDS_ALL_LEDS;\r
+\r
+ LEDs_SetAllLEDs(LEDMask);\r
+ }\r
+\r
+ break;\r
+ }\r
+}\r
--- /dev/null
+/*\r
+ LUFA Library\r
+ Copyright (C) Dean Camera, 2009.\r
+ \r
+ dean [at] fourwalledcubicle [dot] com\r
+ www.fourwalledcubicle.com\r
+*/\r
+\r
+/*\r
+ Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+ Permission to use, copy, modify, and distribute this software\r
+ and its documentation for any purpose and without fee is hereby\r
+ granted, provided that the above copyright notice appear in all\r
+ copies and that both that the copyright notice and this\r
+ permission notice and warranty disclaimer appear in supporting\r
+ documentation, and that the name of the author not be used in\r
+ advertising or publicity pertaining to distribution of the\r
+ software without specific, written prior permission.\r
+\r
+ The author disclaim all warranties with regard to this\r
+ software, including all implied warranties of merchantability\r
+ and fitness. In no event shall the author be liable for any\r
+ special, indirect or consequential damages or any damages\r
+ whatsoever resulting from loss of use, data or profits, whether\r
+ in an action of contract, negligence or other tortious action,\r
+ arising out of or in connection with the use or performance of\r
+ this software.\r
+*/\r
+\r
+/** \file\r
+ *\r
+ * Header file for HostFunctions.c.\r
+ */\r
+\r
+#ifndef _MOUSE_HOST_FUNCTIONS_H_\r
+#define _MOUSE_HOST_FUNCTIONS_H_\r
+\r
+ /* Includes: */\r
+ #include "MouseHostDevice.h"\r
+ \r
+ /* External Variables: */\r
+ extern USB_ClassInfo_HID_Host_t Mouse_HID_Host_Interface;\r
+\r
+ /* Function Prototypes: */\r
+ void MouseHostTask(void);\r
+ \r
+ void EVENT_USB_Host_HostError(const uint8_t ErrorCode);\r
+ void EVENT_USB_Host_DeviceAttached(void);\r
+ void EVENT_USB_Host_DeviceUnattached(void);\r
+ void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode);\r
+ void EVENT_USB_Host_DeviceEnumerationComplete(void);\r
+\r
+#endif\r
--- /dev/null
+/*\r
+ LUFA Library\r
+ Copyright (C) Dean Camera, 2009.\r
+ \r
+ dean [at] fourwalledcubicle [dot] com\r
+ www.fourwalledcubicle.com\r
+*/\r
+\r
+/*\r
+ Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+ Permission to use, copy, modify, and distribute this software\r
+ and its documentation for any purpose and without fee is hereby\r
+ granted, provided that the above copyright notice appear in all\r
+ copies and that both that the copyright notice and this\r
+ permission notice and warranty disclaimer appear in supporting\r
+ documentation, and that the name of the author not be used in\r
+ advertising or publicity pertaining to distribution of the\r
+ software without specific, written prior permission.\r
+\r
+ The author disclaim all warranties with regard to this\r
+ software, including all implied warranties of merchantability\r
+ and fitness. In no event shall the author be liable for any\r
+ special, indirect or consequential damages or any damages\r
+ whatsoever resulting from loss of use, data or profits, whether\r
+ in an action of contract, negligence or other tortious action,\r
+ arising out of or in connection with the use or performance of\r
+ this software.\r
+*/\r
+\r
+/** \file\r
+ *\r
+ * Main source file for the MouseHostDevice demo. This file contains the main tasks of\r
+ * the demo and is responsible for the overall control flow of the demo.\r
+ */\r
+ \r
+#include "MouseHostDevice.h"\r
+ \r
+/** Main program entry point. This routine configures the hardware required by the application, then\r
+ * starts the scheduler to run the application tasks.\r
+ */\r
+int main(void)\r
+{\r
+ SetupHardware();\r
+\r
+ puts_P(PSTR(ESC_FG_CYAN "Mouse Host/Device Demo running.\r\n" ESC_FG_WHITE));\r
+\r
+ LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
+\r
+ for (;;)\r
+ {\r
+ /* Determine which USB mode we are currently in */\r
+ if (USB_CurrentMode == USB_MODE_HOST)\r
+ {\r
+ MouseHostTask();\r
+ HID_Host_USBTask(&Mouse_HID_Host_Interface);\r
+ }\r
+ else\r
+ {\r
+ HID_Device_USBTask(&Mouse_HID_Device_Interface);\r
+ }\r
+\r
+ USB_USBTask();\r
+ }\r
+}\r
+\r
+/** Configures the board hardware and chip peripherals for the demo's functionality. */\r
+void SetupHardware(void)\r
+{\r
+ /* Disable watchdog if enabled by bootloader/fuses */\r
+ MCUSR &= ~(1 << WDRF);\r
+ wdt_disable();\r
+\r
+ /* Disable clock division */\r
+ clock_prescale_set(clock_div_1);\r
+\r
+ /* Hardware Initialization */\r
+ SerialStream_Init(9600, false);\r
+ LEDs_Init();\r
+ Joystick_Init();\r
+ Buttons_Init();\r
+ USB_Init(USB_MODE_UID);\r
+}\r
--- /dev/null
+/*\r
+ LUFA Library\r
+ Copyright (C) Dean Camera, 2009.\r
+ \r
+ dean [at] fourwalledcubicle [dot] com\r
+ www.fourwalledcubicle.com\r
+*/\r
+\r
+/*\r
+ Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+ Permission to use, copy, modify, and distribute this software\r
+ and its documentation for any purpose and without fee is hereby\r
+ granted, provided that the above copyright notice appear in all\r
+ copies and that both that the copyright notice and this\r
+ permission notice and warranty disclaimer appear in supporting\r
+ documentation, and that the name of the author not be used in\r
+ advertising or publicity pertaining to distribution of the\r
+ software without specific, written prior permission.\r
+\r
+ The author disclaim all warranties with regard to this\r
+ software, including all implied warranties of merchantability\r
+ and fitness. In no event shall the author be liable for any\r
+ special, indirect or consequential damages or any damages\r
+ whatsoever resulting from loss of use, data or profits, whether\r
+ in an action of contract, negligence or other tortious action,\r
+ arising out of or in connection with the use or performance of\r
+ this software.\r
+*/\r
+\r
+/** \file\r
+ *\r
+ * Header file for MouseHost.c.\r
+ */\r
+\r
+#ifndef _MOUSE_HOST_DEVICE_H_\r
+#define _MOUSE_HOST_DEVICE_H_\r
+\r
+ /* Includes: */\r
+ #include <avr/io.h>\r
+ #include <avr/wdt.h>\r
+ #include <avr/pgmspace.h>\r
+ #include <avr/power.h>\r
+ #include <stdio.h>\r
+\r
+ #include <LUFA/Version.h>\r
+ #include <LUFA/Drivers/Misc/TerminalCodes.h>\r
+ #include <LUFA/Drivers/Peripheral/SerialStream.h>\r
+ #include <LUFA/Drivers/Board/LEDs.h>\r
+ #include <LUFA/Drivers/Board/Joystick.h>\r
+ #include <LUFA/Drivers/Board/Buttons.h>\r
+ #include <LUFA/Drivers/USB/USB.h>\r
+ #include <LUFA/Drivers/USB/Class/HID.h>\r
+ \r
+ #include "Descriptors.h"\r
+ #include "DeviceFunctions.h"\r
+ #include "HostFunctions.h"\r
+ \r
+ /* Macros: */\r
+ /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */\r
+ #define LEDMASK_USB_NOTREADY LEDS_LED1\r
+\r
+ /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */\r
+ #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3)\r
+\r
+ /** LED mask for the library LED driver, to indicate that the USB interface is ready. */\r
+ #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4)\r
+\r
+ /** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */\r
+ #define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3)\r
+ \r
+ /* Function Prototypes: */\r
+ void SetupHardware(void);\r
+ \r
+#endif\r
--- /dev/null
+/** \file\r
+ *\r
+ * This file contains special DoxyGen information for the generation of the main page and other special\r
+ * documentation pages. It is not a project source file.\r
+ */\r
+ \r
+/** \mainpage Mouse Host/Device Dual Role Demo\r
+ *\r
+ * \section SSec_Compat Demo Compatibility:\r
+ *\r
+ * The following table indicates what microcontrollers are compatible with this demo.\r
+ *\r
+ * - AT90USB1287\r
+ * - AT90USB647\r
+ *\r
+ * \section SSec_Info USB Information:\r
+ *\r
+ * The following table gives a rundown of the USB utilization of this demo.\r
+ *\r
+ * <table>\r
+ * <tr>\r
+ * <td><b>USB Mode:</b></td>\r
+ * <td>Host/Device</td>\r
+ * </tr>\r
+ * <tr>\r
+ * <td><b>USB Class:</b></td>\r
+ * <td>Human Interface Device (HID)</td>\r
+ * </tr>\r
+ * <tr> \r
+ * <td><b>USB Subclass:</b></td>\r
+ * <td>N/A</td>\r
+ * </tr>\r
+ * <tr>\r
+ * <td><b>Relevant Standards:</b></td>\r
+ * <td>USBIF HID Specification, USBIF HID Usage Tables</td>\r
+ * </tr>\r
+ * <tr>\r
+ * <td><b>Usable Speeds:</b></td>\r
+ * <td>Low Speed Mode, Full Speed Mode</td>\r
+ * </tr>\r
+ * </table>\r
+ *\r
+ * \section SSec_Description Project Description: \r
+ *\r
+ * Mouse host/device dual role demonstration application. This gives a simple\r
+ * reference application for implementing a dual role USB Mouse, for USB mice\r
+ * using the standard mouse boot protocol HID profile.\r
+ * \r
+ * <b>When in host mode:</b>\r
+ * Mouse movement and button presses are displayed on the board LEDs,\r
+ * as well as printed out the serial terminal as formatted dY, dY and\r
+ * button status information.\r
+ * \r
+ * This uses a naive method where the mouse is set to Boot Protocol mode, so\r
+ * that the report structure is fixed and known. A better implementation\r
+ * uses the HID report parser for correct report data processing across\r
+ * all compatible mice with advanced characteristics, as shown in the\r
+ * MouseHostWithParser Host demo application.\r
+ * \r
+ * Currently only single interface mice are supported. \r
+ *\r
+ * <b>When in device mode:</b>\r
+ * Upon enumeration the system will automatically enumerate and function\r
+ * as a mouse when the USB connection to a host is present. To use\r
+ * the mouse, move the joystick to move the pointer, and push the\r
+ * joystick inwards to simulate a left-button click. The HWB serves as\r
+ * the right mouse button.\r
+ *\r
+ * \section SSec_Options Project Options\r
+ *\r
+ * The following defines can be found in this demo, which can control the demo behaviour when defined, or changed in value.\r
+ *\r
+ * <table>\r
+ * <tr>\r
+ * <td>\r
+ * None\r
+ * </td>\r
+ * </tr>\r
+ * </table>\r
+ */\r
--- /dev/null
+# Hey Emacs, this is a -*- makefile -*-\r
+#----------------------------------------------------------------------------\r
+# WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.\r
+# >> Modified for use with the LUFA project. <<\r
+#\r
+# Released to the Public Domain\r
+#\r
+# Additional material for this makefile was written by:\r
+# Peter Fleury\r
+# Tim Henigan\r
+# Colin O'Flynn\r
+# Reiner Patommel\r
+# Markus Pfaff\r
+# Sander Pool\r
+# Frederik Rouleau\r
+# Carlos Lamas\r
+# Dean Camera\r
+# Opendous Inc.\r
+# Denver Gingerich\r
+#\r
+#----------------------------------------------------------------------------\r
+# On command line:\r
+#\r
+# make all = Make software.\r
+#\r
+# make clean = Clean out built project files.\r
+#\r
+# make coff = Convert ELF to AVR COFF.\r
+#\r
+# make extcoff = Convert ELF to AVR Extended COFF.\r
+#\r
+# make program = Download the hex file to the device, using avrdude.\r
+# Please customize the avrdude settings below first!\r
+#\r
+# make dfu = Download the hex file to the device, using dfu-programmer (must\r
+# have dfu-programmer installed).\r
+#\r
+# make flip = Download the hex file to the device, using Atmel FLIP (must\r
+# have Atmel FLIP installed).\r
+#\r
+# make dfu-ee = Download the eeprom file to the device, using dfu-programmer\r
+# (must have dfu-programmer installed).\r
+#\r
+# make flip-ee = Download the eeprom file to the device, using Atmel FLIP\r
+# (must have Atmel FLIP installed).\r
+#\r
+# make doxygen = Generate DoxyGen documentation for the project (must have\r
+# DoxyGen installed)\r
+#\r
+# make debug = Start either simulavr or avarice as specified for debugging, \r
+# with avr-gdb or avr-insight as the front end for debugging.\r
+#\r
+# make filename.s = Just compile filename.c into the assembler code only.\r
+#\r
+# make filename.i = Create a preprocessed source file for use in submitting\r
+# bug reports to the GCC project.\r
+#\r
+# To rebuild project do "make clean" then "make all".\r
+#----------------------------------------------------------------------------\r
+\r
+\r
+# MCU name\r
+MCU = at90usb1287\r
+\r
+\r
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring\r
+# LUFA board drivers). If USER is selected, put custom board drivers in a directory called \r
+# "Board" inside the application directory.\r
+BOARD = USBKEY\r
+\r
+\r
+# Processor frequency.\r
+# This will define a symbol, F_CPU, in all source code files equal to the \r
+# processor frequency in Hz. You can then use this symbol in your source code to \r
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done\r
+# automatically to create a 32-bit value in your source code.\r
+#\r
+# This will be an integer division of F_CLOCK below, as it is sourced by\r
+# F_CLOCK after it has run through any CPU prescalers. Note that this value\r
+# does not *change* the processor frequency - it should merely be updated to\r
+# reflect the processor speed set externally so that the code can use accurate\r
+# software delays.\r
+F_CPU = 8000000\r
+\r
+\r
+# Input clock frequency.\r
+# This will define a symbol, F_CLOCK, in all source code files equal to the \r
+# input clock frequency (before any prescaling is performed) in Hz. This value may\r
+# differ from F_CPU if prescaling is used on the latter, and is required as the\r
+# raw input clock is fed directly to the PLL sections of the AVR for high speed\r
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'\r
+# at the end, this will be done automatically to create a 32-bit value in your\r
+# source code.\r
+#\r
+# If no clock division is performed on the input clock inside the AVR (via the\r
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.\r
+F_CLOCK = $(F_CPU)\r
+\r
+\r
+# Output format. (can be srec, ihex, binary)\r
+FORMAT = ihex\r
+\r
+\r
+# Target file name (without extension).\r
+TARGET = MouseHostDevice\r
+\r
+\r
+# Object files directory\r
+# To put object files in current directory, use a dot (.), do NOT make\r
+# this an empty or blank macro!\r
+OBJDIR = .\r
+\r
+\r
+# Path to the LUFA library\r
+LUFA_PATH = ../../../..\r
+\r
+\r
+# LUFA library compile-time options\r
+LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8\r
+LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1\r
+LUFA_OPTS += -D USE_FLASH_DESCRIPTORS\r
+LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"\r
+\r
+\r
+# List C source files here. (C dependencies are automatically generated.)\r
+SRC = $(TARGET).c \\r
+ Descriptors.c \\r
+ DeviceFunctions.c \\r
+ HostFunctions.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/Class/Device/HID.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/Class/Host/HID.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/Class/Host/HIDParser.c \\r
+ \r
+\r
+# List C++ source files here. (C dependencies are automatically generated.)\r
+CPPSRC = \r
+\r
+\r
+# List Assembler source files here.\r
+# Make them always end in a capital .S. Files ending in a lowercase .s\r
+# will not be considered source files but generated files (assembler\r
+# output from the compiler), and will be deleted upon "make clean"!\r
+# Even though the DOS/Win* filesystem matches both .s and .S the same,\r
+# it will preserve the spelling of the filenames, and gcc itself does\r
+# care about how the name is spelled on its command-line.\r
+ASRC =\r
+\r
+\r
+# Optimization level, can be [0, 1, 2, 3, s]. \r
+# 0 = turn off optimization. s = optimize for size.\r
+# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)\r
+OPT = s\r
+\r
+\r
+# Debugging format.\r
+# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.\r
+# AVR Studio 4.10 requires dwarf-2.\r
+# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.\r
+DEBUG = dwarf-2\r
+\r
+\r
+# List any extra directories to look for include files here.\r
+# Each directory must be seperated by a space.\r
+# Use forward slashes for directory separators.\r
+# For a directory that has spaces, enclose it in quotes.\r
+EXTRAINCDIRS = $(LUFA_PATH)/\r
+\r
+\r
+# Compiler flag to set the C Standard level.\r
+# c89 = "ANSI" C\r
+# gnu89 = c89 plus GCC extensions\r
+# c99 = ISO C99 standard (not yet fully implemented)\r
+# gnu99 = c99 plus GCC extensions\r
+CSTANDARD = -std=gnu99\r
+\r
+\r
+# Place -D or -U options here for C sources\r
+CDEFS = -DF_CPU=$(F_CPU)UL -DF_CLOCK=$(F_CLOCK)UL -DBOARD=BOARD_$(BOARD) $(LUFA_OPTS)\r
+\r
+\r
+# Place -D or -U options here for ASM sources\r
+ADEFS = -DF_CPU=$(F_CPU)\r
+\r
+\r
+# Place -D or -U options here for C++ sources\r
+CPPDEFS = -DF_CPU=$(F_CPU)UL\r
+#CPPDEFS += -D__STDC_LIMIT_MACROS\r
+#CPPDEFS += -D__STDC_CONSTANT_MACROS\r
+\r
+\r
+\r
+#---------------- Compiler Options C ----------------\r
+# -g*: generate debugging information\r
+# -O*: optimization level\r
+# -f...: tuning, see GCC manual and avr-libc documentation\r
+# -Wall...: warning level\r
+# -Wa,...: tell GCC to pass this to the assembler.\r
+# -adhlns...: create assembler listing\r
+CFLAGS = -g$(DEBUG)\r
+CFLAGS += $(CDEFS)\r
+CFLAGS += -O$(OPT)\r
+CFLAGS += -funsigned-char\r
+CFLAGS += -funsigned-bitfields\r
+CFLAGS += -ffunction-sections\r
+CFLAGS += -fno-inline-small-functions\r
+CFLAGS += -fpack-struct\r
+CFLAGS += -fshort-enums\r
+CFLAGS += -Wall\r
+CFLAGS += -Wstrict-prototypes\r
+CFLAGS += -Wundef\r
+#CFLAGS += -fno-unit-at-a-time\r
+#CFLAGS += -Wunreachable-code\r
+#CFLAGS += -Wsign-compare\r
+CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)\r
+CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))\r
+CFLAGS += $(CSTANDARD)\r
+\r
+\r
+#---------------- Compiler Options C++ ----------------\r
+# -g*: generate debugging information\r
+# -O*: optimization level\r
+# -f...: tuning, see GCC manual and avr-libc documentation\r
+# -Wall...: warning level\r
+# -Wa,...: tell GCC to pass this to the assembler.\r
+# -adhlns...: create assembler listing\r
+CPPFLAGS = -g$(DEBUG)\r
+CPPFLAGS += $(CPPDEFS)\r
+CPPFLAGS += -O$(OPT)\r
+CPPFLAGS += -funsigned-char\r
+CPPFLAGS += -funsigned-bitfields\r
+CPPFLAGS += -fpack-struct\r
+CPPFLAGS += -fshort-enums\r
+CPPFLAGS += -fno-exceptions\r
+CPPFLAGS += -Wall\r
+CFLAGS += -Wundef\r
+#CPPFLAGS += -mshort-calls\r
+#CPPFLAGS += -fno-unit-at-a-time\r
+#CPPFLAGS += -Wstrict-prototypes\r
+#CPPFLAGS += -Wunreachable-code\r
+#CPPFLAGS += -Wsign-compare\r
+CPPFLAGS += -Wa,-adhlns=$(<:%.cpp=$(OBJDIR)/%.lst)\r
+CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))\r
+#CPPFLAGS += $(CSTANDARD)\r
+\r
+\r
+#---------------- Assembler Options ----------------\r
+# -Wa,...: tell GCC to pass this to the assembler.\r
+# -adhlns: create listing\r
+# -gstabs: have the assembler create line number information; note that\r
+# for use in COFF files, additional information about filenames\r
+# and function names needs to be present in the assembler source\r
+# files -- see avr-libc docs [FIXME: not yet described there]\r
+# -listing-cont-lines: Sets the maximum number of continuation lines of hex \r
+# dump that will be displayed for a given single line of source input.\r
+ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:%.S=$(OBJDIR)/%.lst),-gstabs,--listing-cont-lines=100\r
+\r
+\r
+#---------------- Library Options ----------------\r
+# Minimalistic printf version\r
+PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min\r
+\r
+# Floating point printf version (requires MATH_LIB = -lm below)\r
+PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt\r
+\r
+# If this is left blank, then it will use the Standard printf version.\r
+PRINTF_LIB = \r
+#PRINTF_LIB = $(PRINTF_LIB_MIN)\r
+#PRINTF_LIB = $(PRINTF_LIB_FLOAT)\r
+\r
+\r
+# Minimalistic scanf version\r
+SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min\r
+\r
+# Floating point + %[ scanf version (requires MATH_LIB = -lm below)\r
+SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt\r
+\r
+# If this is left blank, then it will use the Standard scanf version.\r
+SCANF_LIB = \r
+#SCANF_LIB = $(SCANF_LIB_MIN)\r
+#SCANF_LIB = $(SCANF_LIB_FLOAT)\r
+\r
+\r
+MATH_LIB = -lm\r
+\r
+\r
+# List any extra directories to look for libraries here.\r
+# Each directory must be seperated by a space.\r
+# Use forward slashes for directory separators.\r
+# For a directory that has spaces, enclose it in quotes.\r
+EXTRALIBDIRS = \r
+\r
+\r
+\r
+#---------------- External Memory Options ----------------\r
+\r
+# 64 KB of external RAM, starting after internal RAM (ATmega128!),\r
+# used for variables (.data/.bss) and heap (malloc()).\r
+#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff\r
+\r
+# 64 KB of external RAM, starting after internal RAM (ATmega128!),\r
+# only used for heap (malloc()).\r
+#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff\r
+\r
+EXTMEMOPTS =\r
+\r
+\r
+\r
+#---------------- Linker Options ----------------\r
+# -Wl,...: tell GCC to pass this to linker.\r
+# -Map: create map file\r
+# --cref: add cross reference to map file\r
+LDFLAGS = -Wl,-Map=$(TARGET).map,--cref\r
+LDFLAGS += -Wl,--relax \r
+LDFLAGS += -Wl,--gc-sections\r
+LDFLAGS += $(EXTMEMOPTS)\r
+LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))\r
+LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)\r
+#LDFLAGS += -T linker_script.x\r
+\r
+\r
+\r
+#---------------- Programming Options (avrdude) ----------------\r
+\r
+# Programming hardware: alf avr910 avrisp bascom bsd \r
+# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500\r
+#\r
+# Type: avrdude -c ?\r
+# to get a full listing.\r
+#\r
+AVRDUDE_PROGRAMMER = jtagmkII\r
+\r
+# com1 = serial port. Use lpt1 to connect to parallel port.\r
+AVRDUDE_PORT = usb\r
+\r
+AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex\r
+#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep\r
+\r
+\r
+# Uncomment the following if you want avrdude's erase cycle counter.\r
+# Note that this counter needs to be initialized first using -Yn,\r
+# see avrdude manual.\r
+#AVRDUDE_ERASE_COUNTER = -y\r
+\r
+# Uncomment the following if you do /not/ wish a verification to be\r
+# performed after programming the device.\r
+#AVRDUDE_NO_VERIFY = -V\r
+\r
+# Increase verbosity level. Please use this when submitting bug\r
+# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> \r
+# to submit bug reports.\r
+#AVRDUDE_VERBOSE = -v -v\r
+\r
+AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)\r
+AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)\r
+AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)\r
+AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)\r
+\r
+\r
+\r
+#---------------- Debugging Options ----------------\r
+\r
+# For simulavr only - target MCU frequency.\r
+DEBUG_MFREQ = $(F_CPU)\r
+\r
+# Set the DEBUG_UI to either gdb or insight.\r
+# DEBUG_UI = gdb\r
+DEBUG_UI = insight\r
+\r
+# Set the debugging back-end to either avarice, simulavr.\r
+DEBUG_BACKEND = avarice\r
+#DEBUG_BACKEND = simulavr\r
+\r
+# GDB Init Filename.\r
+GDBINIT_FILE = __avr_gdbinit\r
+\r
+# When using avarice settings for the JTAG\r
+JTAG_DEV = /dev/com1\r
+\r
+# Debugging port used to communicate between GDB / avarice / simulavr.\r
+DEBUG_PORT = 4242\r
+\r
+# Debugging host used to communicate between GDB / avarice / simulavr, normally\r
+# just set to localhost unless doing some sort of crazy debugging when \r
+# avarice is running on a different computer.\r
+DEBUG_HOST = localhost\r
+\r
+\r
+\r
+#============================================================================\r
+\r
+\r
+# Define programs and commands.\r
+SHELL = sh\r
+CC = avr-gcc\r
+OBJCOPY = avr-objcopy\r
+OBJDUMP = avr-objdump\r
+SIZE = avr-size\r
+AR = avr-ar rcs\r
+NM = avr-nm\r
+AVRDUDE = avrdude\r
+REMOVE = rm -f\r
+REMOVEDIR = rm -rf\r
+COPY = cp\r
+WINSHELL = cmd\r
+\r
+# Define Messages\r
+# English\r
+MSG_ERRORS_NONE = Errors: none\r
+MSG_BEGIN = -------- begin --------\r
+MSG_END = -------- end --------\r
+MSG_SIZE_BEFORE = Size before: \r
+MSG_SIZE_AFTER = Size after:\r
+MSG_COFF = Converting to AVR COFF:\r
+MSG_EXTENDED_COFF = Converting to AVR Extended COFF:\r
+MSG_FLASH = Creating load file for Flash:\r
+MSG_EEPROM = Creating load file for EEPROM:\r
+MSG_EXTENDED_LISTING = Creating Extended Listing:\r
+MSG_SYMBOL_TABLE = Creating Symbol Table:\r
+MSG_LINKING = Linking:\r
+MSG_COMPILING = Compiling C:\r
+MSG_COMPILING_CPP = Compiling C++:\r
+MSG_ASSEMBLING = Assembling:\r
+MSG_CLEANING = Cleaning project:\r
+MSG_CREATING_LIBRARY = Creating library:\r
+\r
+\r
+\r
+\r
+# Define all object files.\r
+OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o) \r
+\r
+# Define all listing files.\r
+LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst) \r
+\r
+\r
+# Compiler flags to generate dependency files.\r
+GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d\r
+\r
+\r
+# Combine all necessary flags and optional flags.\r
+# Add target processor to flags.\r
+ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)\r
+ALL_CPPFLAGS = -mmcu=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS)\r
+ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)\r
+\r
+\r
+\r
+\r
+\r
+# Default target.\r
+all: begin gccversion sizebefore build checkinvalidevents showliboptions showtarget sizeafter end\r
+\r
+# Change the build target to build a HEX file or a library.\r
+build: elf hex eep lss sym\r
+#build: lib\r
+\r
+\r
+elf: $(TARGET).elf\r
+hex: $(TARGET).hex\r
+eep: $(TARGET).eep\r
+lss: $(TARGET).lss\r
+sym: $(TARGET).sym\r
+LIBNAME=lib$(TARGET).a\r
+lib: $(LIBNAME)\r
+\r
+\r
+\r
+# Eye candy.\r
+# AVR Studio 3.x does not check make's exit code but relies on\r
+# the following magic strings to be generated by the compile job.\r
+begin:\r
+ @echo\r
+ @echo $(MSG_BEGIN)\r
+\r
+end:\r
+ @echo $(MSG_END)\r
+ @echo\r
+\r
+\r
+# Display size of file.\r
+HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex\r
+ELFSIZE = $(SIZE) $(MCU_FLAG) $(FORMAT_FLAG) $(TARGET).elf\r
+MCU_FLAG = $(shell $(SIZE) --help | grep -- --mcu > /dev/null && echo --mcu=$(MCU) )\r
+FORMAT_FLAG = $(shell $(SIZE) --help | grep -- --format=.*avr > /dev/null && echo --format=avr )\r
+\r
+sizebefore:\r
+ @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \\r
+ 2>/dev/null; echo; fi\r
+\r
+sizeafter:\r
+ @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \\r
+ 2>/dev/null; echo; fi\r
+\r
+$(LUFA_PATH)/LUFA/LUFA_Events.lst:\r
+ @make -C $(LUFA_PATH)/LUFA/ LUFA_Events.lst\r
+\r
+checkinvalidevents: $(LUFA_PATH)/LUFA/LUFA_Events.lst\r
+ @echo\r
+ @echo Checking for invalid events...\r
+ @$(shell) avr-nm $(TARGET).elf | sed -n -e 's/^.*EVENT_/EVENT_/p' | \\r
+ grep -F -v --file=$(LUFA_PATH)/LUFA/LUFA_Events.lst > InvalidEvents.tmp || true\r
+ @sed -n -e 's/^/ WARNING - INVALID EVENT NAME: /p' InvalidEvents.tmp\r
+ @if test -s InvalidEvents.tmp; then exit 1; fi\r
+ \r
+showliboptions:\r
+ @echo\r
+ @echo ---- Compile Time Library Options ----\r
+ @for i in $(LUFA_OPTS:-D%=%); do \\r
+ echo $$i; \\r
+ done\r
+ @echo --------------------------------------\r
+\r
+showtarget:\r
+ @echo\r
+ @echo --------- Target Information ---------\r
+ @echo AVR Model: $(MCU)\r
+ @echo Board: $(BOARD)\r
+ @echo Clock: $(F_CPU)Hz CPU, $(F_CLOCK)Hz Master\r
+ @echo --------------------------------------\r
+ \r
+\r
+# Display compiler version information.\r
+gccversion : \r
+ @$(CC) --version\r
+\r
+\r
+# Program the device. \r
+program: $(TARGET).hex $(TARGET).eep\r
+ $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)\r
+\r
+flip: $(TARGET).hex\r
+ batchisp -hardware usb -device $(MCU) -operation erase f\r
+ batchisp -hardware usb -device $(MCU) -operation loadbuffer $(TARGET).hex program\r
+ batchisp -hardware usb -device $(MCU) -operation start reset 0\r
+\r
+dfu: $(TARGET).hex\r
+ dfu-programmer $(MCU) erase\r
+ dfu-programmer $(MCU) flash --debug 1 $(TARGET).hex\r
+ dfu-programmer $(MCU) reset\r
+\r
+flip-ee: $(TARGET).hex $(TARGET).eep\r
+ $(COPY) $(TARGET).eep $(TARGET)eep.hex\r
+ batchisp -hardware usb -device $(MCU) -operation memory EEPROM erase\r
+ batchisp -hardware usb -device $(MCU) -operation memory EEPROM loadbuffer $(TARGET)eep.hex program\r
+ batchisp -hardware usb -device $(MCU) -operation start reset 0\r
+ $(REMOVE) $(TARGET)eep.hex\r
+\r
+dfu-ee: $(TARGET).hex $(TARGET).eep\r
+ dfu-programmer $(MCU) flash-eeprom --debug 1 --suppress-bootloader-mem $(TARGET).eep\r
+ dfu-programmer $(MCU) reset\r
+\r
+\r
+# Generate avr-gdb config/init file which does the following:\r
+# define the reset signal, load the target file, connect to target, and set \r
+# a breakpoint at main().\r
+gdb-config: \r
+ @$(REMOVE) $(GDBINIT_FILE)\r
+ @echo define reset >> $(GDBINIT_FILE)\r
+ @echo SIGNAL SIGHUP >> $(GDBINIT_FILE)\r
+ @echo end >> $(GDBINIT_FILE)\r
+ @echo file $(TARGET).elf >> $(GDBINIT_FILE)\r
+ @echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE)\r
+ifeq ($(DEBUG_BACKEND),simulavr)\r
+ @echo load >> $(GDBINIT_FILE)\r
+endif\r
+ @echo break main >> $(GDBINIT_FILE)\r
+\r
+debug: gdb-config $(TARGET).elf\r
+ifeq ($(DEBUG_BACKEND), avarice)\r
+ @echo Starting AVaRICE - Press enter when "waiting to connect" message displays.\r
+ @$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \\r
+ $(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)\r
+ @$(WINSHELL) /c pause\r
+\r
+else\r
+ @$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \\r
+ $(DEBUG_MFREQ) --port $(DEBUG_PORT)\r
+endif\r
+ @$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)\r
+\r
+\r
+\r
+\r
+# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.\r
+COFFCONVERT = $(OBJCOPY) --debugging\r
+COFFCONVERT += --change-section-address .data-0x800000\r
+COFFCONVERT += --change-section-address .bss-0x800000\r
+COFFCONVERT += --change-section-address .noinit-0x800000\r
+COFFCONVERT += --change-section-address .eeprom-0x810000\r
+\r
+\r
+\r
+coff: $(TARGET).elf\r
+ @echo\r
+ @echo $(MSG_COFF) $(TARGET).cof\r
+ $(COFFCONVERT) -O coff-avr $< $(TARGET).cof\r
+\r
+\r
+extcoff: $(TARGET).elf\r
+ @echo\r
+ @echo $(MSG_EXTENDED_COFF) $(TARGET).cof\r
+ $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof\r
+\r
+\r
+\r
+# Create final output files (.hex, .eep) from ELF output file.\r
+%.hex: %.elf\r
+ @echo\r
+ @echo $(MSG_FLASH) $@\r
+ $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@\r
+\r
+%.eep: %.elf\r
+ @echo\r
+ @echo $(MSG_EEPROM) $@\r
+ -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \\r
+ --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) $< $@ || exit 0\r
+\r
+# Create extended listing file from ELF output file.\r
+%.lss: %.elf\r
+ @echo\r
+ @echo $(MSG_EXTENDED_LISTING) $@\r
+ $(OBJDUMP) -h -z -S $< > $@\r
+\r
+# Create a symbol table from ELF output file.\r
+%.sym: %.elf\r
+ @echo\r
+ @echo $(MSG_SYMBOL_TABLE) $@\r
+ $(NM) -n $< > $@\r
+\r
+\r
+\r
+# Create library from object files.\r
+.SECONDARY : $(TARGET).a\r
+.PRECIOUS : $(OBJ)\r
+%.a: $(OBJ)\r
+ @echo\r
+ @echo $(MSG_CREATING_LIBRARY) $@\r
+ $(AR) $@ $(OBJ)\r
+\r
+\r
+# Link: create ELF output file from object files.\r
+.SECONDARY : $(TARGET).elf\r
+.PRECIOUS : $(OBJ)\r
+%.elf: $(OBJ)\r
+ @echo\r
+ @echo $(MSG_LINKING) $@\r
+ $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)\r
+\r
+\r
+# Compile: create object files from C source files.\r
+$(OBJDIR)/%.o : %.c\r
+ @echo\r
+ @echo $(MSG_COMPILING) $<\r
+ $(CC) -c $(ALL_CFLAGS) $< -o $@ \r
+\r
+\r
+# Compile: create object files from C++ source files.\r
+$(OBJDIR)/%.o : %.cpp\r
+ @echo\r
+ @echo $(MSG_COMPILING_CPP) $<\r
+ $(CC) -c $(ALL_CPPFLAGS) $< -o $@ \r
+\r
+\r
+# Compile: create assembler files from C source files.\r
+%.s : %.c\r
+ $(CC) -S $(ALL_CFLAGS) $< -o $@\r
+\r
+\r
+# Compile: create assembler files from C++ source files.\r
+%.s : %.cpp\r
+ $(CC) -S $(ALL_CPPFLAGS) $< -o $@\r
+\r
+\r
+# Assemble: create object files from assembler source files.\r
+$(OBJDIR)/%.o : %.S\r
+ @echo\r
+ @echo $(MSG_ASSEMBLING) $<\r
+ $(CC) -c $(ALL_ASFLAGS) $< -o $@\r
+\r
+\r
+# Create preprocessed source for use in sending a bug report.\r
+%.i : %.c\r
+ $(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@ \r
+ \r
+\r
+# Target: clean project.\r
+clean: begin clean_list clean_binary end\r
+\r
+clean_binary:\r
+ $(REMOVE) $(TARGET).hex\r
+ \r
+clean_list:\r
+ @echo $(MSG_CLEANING)\r
+ $(REMOVE) $(TARGET).eep\r
+ $(REMOVE) $(TARGET)eep.hex\r
+ $(REMOVE) $(TARGET).cof\r
+ $(REMOVE) $(TARGET).elf\r
+ $(REMOVE) $(TARGET).map\r
+ $(REMOVE) $(TARGET).sym\r
+ $(REMOVE) $(TARGET).lss\r
+ $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o)\r
+ $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst)\r
+ $(REMOVE) $(SRC:.c=.s)\r
+ $(REMOVE) $(SRC:.c=.d)\r
+ $(REMOVE) $(SRC:.c=.i)\r
+ $(REMOVE) InvalidEvents.tmp\r
+ $(REMOVEDIR) .dep\r
+\r
+doxygen:\r
+ @echo Generating Project Documentation...\r
+ @doxygen Doxygen.conf\r
+ @echo Documentation Generation Complete.\r
+\r
+clean_doxygen:\r
+ rm -rf Documentation\r
+\r
+# Create object files directory\r
+$(shell mkdir $(OBJDIR) 2>/dev/null)\r
+\r
+\r
+# Include the dependency files.\r
+-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)\r
+\r
+\r
+# Listing of phony targets.\r
+.PHONY : all checkinvalidevents showliboptions \\r
+showtarget begin finish end sizebefore sizeafter \\r
+gccversion build elf hex eep lss sym coff extcoff \\r
+program dfu flip flip-ee dfu-ee clean debug \\r
+clean_list clean_binary gdb-config doxygen
\ No newline at end of file
--- /dev/null
+#
+# LUFA Library
+# Copyright (C) Dean Camera, 2009.
+#
+# dean [at] fourwalledcubicle [dot] com
+# www.fourwalledcubicle.com
+#
+
+# Makefile to build all the LUFA Dual Role Demos. Call with "make all" to
+# rebuild all Dual Role demos.
+
+# Projects are pre-cleaned before each one is built, to ensure any
+# custom LUFA library build options are reflected in the compiled
+# code.
+
+all:
+ make -C MouseHostDevice clean
+ make -C MouseHostDevice all
+
+%:
+ make -C MouseHostDevice $@
--- /dev/null
+#
+# LUFA Library
+# Copyright (C) Dean Camera, 2009.
+#
+# dean [at] fourwalledcubicle [dot] com
+# www.fourwalledcubicle.com
+#
+
+# Makefile to build all the LUFA Class Driver and Low Level Demos. Call with
+# "make all" to rebuild all demos of both types.
+
+# Projects are pre-cleaned before each one is built, to ensure any
+# custom LUFA library build options are reflected in the compiled
+# code.
+
+%:
+ make -C ClassDriver/ $@
\r
\r
# MCU name\r
-MCU = at90usb647\r
+MCU = at90usb1287\r
\r
\r
# Target board (see library "Board Types" documentation, USER or blank for projects not requiring\r
\r
\r
# MCU name\r
-MCU = at90usb647\r
+MCU = at90usb1287\r
\r
\r
# Target board (see library "Board Types" documentation, USER or blank for projects not requiring\r
\r
\r
# MCU name\r
-MCU = at90usb647\r
+MCU = at90usb1287\r
\r
\r
# Target board (see library "Board Types" documentation, USER or blank for projects not requiring\r
\r
\r
# MCU name\r
-MCU = at90usb647\r
+MCU = at90usb1287\r
\r
\r
# Target board (see library "Board Types" documentation, USER or blank for projects not requiring\r
\r
\r
# MCU name\r
-MCU = at90usb647\r
+MCU = at90usb1287\r
\r
\r
# Target board (see library "Board Types" documentation, USER or blank for projects not requiring\r
\r
\r
# MCU name\r
-MCU = at90usb647\r
+MCU = at90usb1287\r
\r
\r
# Target board (see library "Board Types" documentation, USER or blank for projects not requiring\r
\r
\r
# MCU name\r
-MCU = at90usb647\r
+MCU = at90usb1287\r
\r
\r
# Target board (see library "Board Types" documentation, USER or blank for projects not requiring\r
+++ /dev/null
-/*\r
- LUFA Library\r
- Copyright (C) Dean Camera, 2009.\r
- \r
- dean [at] fourwalledcubicle [dot] com\r
- www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
- Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
- Permission to use, copy, modify, and distribute this software\r
- and its documentation for any purpose and without fee is hereby\r
- granted, provided that the above copyright notice appear in all\r
- copies and that both that the copyright notice and this\r
- permission notice and warranty disclaimer appear in supporting\r
- documentation, and that the name of the author not be used in\r
- advertising or publicity pertaining to distribution of the\r
- software without specific, written prior permission.\r
-\r
- The author disclaim all warranties with regard to this\r
- software, including all implied warranties of merchantability\r
- and fitness. In no event shall the author be liable for any\r
- special, indirect or consequential damages or any damages\r
- whatsoever resulting from loss of use, data or profits, whether\r
- in an action of contract, negligence or other tortious action,\r
- arising out of or in connection with the use or performance of\r
- this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- * USB Device Descriptors, for library use when in USB device mode. Descriptors are special \r
- * computer-readable structures which the host requests upon device enumeration, to determine\r
- * the device's capabilities and functions. \r
- */\r
-\r
-#include "Descriptors.h"\r
-\r
-/** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall\r
- * device characteristics, including the supported USB version, control endpoint size and the\r
- * number of device configurations. The descriptor is read out by the USB host when the enumeration\r
- * process begins.\r
- */\r
-USB_Descriptor_Device_t PROGMEM DeviceDescriptor =\r
-{\r
- .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},\r
- \r
- .USBSpecification = VERSION_BCD(01.10),\r
- .Class = 0x00,\r
- .SubClass = 0x00,\r
- .Protocol = 0x00,\r
- \r
- .Endpoint0Size = 8,\r
- \r
- .VendorID = 0x03EB,\r
- .ProductID = 0x2040,\r
- .ReleaseNumber = 0x0000,\r
- \r
- .ManufacturerStrIndex = 0x01,\r
- .ProductStrIndex = 0x02,\r
- .SerialNumStrIndex = NO_DESCRIPTOR,\r
- \r
- .NumberOfConfigurations = 1\r
-};\r
-\r
-/** Configuration descriptor structure. This descriptor, located in FLASH memory, describes the usage\r
- * of the device in one of its supported configurations, including information about any device interfaces\r
- * and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting\r
- * a configuration so that the host may correctly communicate with the USB device.\r
- */\r
-USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =\r
-{\r
- .Config = \r
- {\r
- .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration},\r
- \r
- .TotalConfigurationSize = ( sizeof(USB_Descriptor_Configuration_Header_t)\r
- + sizeof(USB_Descriptor_Interface_t) ),\r
-\r
- .TotalInterfaces = 1,\r
- \r
- .ConfigurationNumber = 1,\r
- .ConfigurationStrIndex = NO_DESCRIPTOR,\r
- \r
- .ConfigAttributes = (USB_CONFIG_ATTR_BUSPOWERED | USB_CONFIG_ATTR_SELFPOWERED),\r
- \r
- .MaxPowerConsumption = USB_CONFIG_POWER_MA(100)\r
- },\r
- \r
- .Interface = \r
- {\r
- .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},\r
-\r
- .InterfaceNumber = 1,\r
- .AlternateSetting = 0,\r
- \r
- .TotalEndpoints = 0,\r
- \r
- .Class = 0xFF,\r
- .SubClass = 0x00,\r
- .Protocol = 0x00,\r
- \r
- .InterfaceStrIndex = NO_DESCRIPTOR\r
- },\r
-};\r
-\r
-/** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests\r
- * the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate\r
- * via the language ID table available at USB.org what languages the device supports for its string descriptors.\r
- */ \r
-USB_Descriptor_String_t PROGMEM LanguageString =\r
-{\r
- .Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String},\r
- \r
- .UnicodeString = {LANGUAGE_ID_ENG}\r
-};\r
-\r
-/** Manufacturer descriptor string. This is a Unicode string containing the manufacturer's details in human readable\r
- * form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device\r
- * Descriptor.\r
- */\r
-USB_Descriptor_String_t PROGMEM ManufacturerString =\r
-{\r
- .Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},\r
- \r
- .UnicodeString = L"Dean Camera"\r
-};\r
-\r
-/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,\r
- * and is read out upon request by the host when the appropriate string ID is requested, listed in the Device\r
- * Descriptor.\r
- */\r
-USB_Descriptor_String_t PROGMEM ProductString =\r
-{\r
- .Header = {.Size = USB_STRING_LEN(9), .Type = DTYPE_String},\r
- \r
- .UnicodeString = L"LUFA Demo"\r
-};\r
-\r
-/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"\r
- * documentation) by the application code so that the address and size of a requested descriptor can be given\r
- * to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function\r
- * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the\r
- * USB host.\r
- */\r
-uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
-{\r
- const uint8_t DescriptorType = (wValue >> 8);\r
- const uint8_t DescriptorNumber = (wValue & 0xFF);\r
-\r
- void* Address = NULL;\r
- uint16_t Size = NO_DESCRIPTOR;\r
-\r
- switch (DescriptorType)\r
- {\r
- case DTYPE_Device:\r
- Address = (void*)&DeviceDescriptor;\r
- Size = sizeof(USB_Descriptor_Device_t);\r
- break;\r
- case DTYPE_Configuration: \r
- Address = (void*)&ConfigurationDescriptor;\r
- Size = sizeof(USB_Descriptor_Configuration_t);\r
- break;\r
- case DTYPE_String: \r
- switch (DescriptorNumber)\r
- {\r
- case 0x00: \r
- Address = (void*)&LanguageString;\r
- Size = pgm_read_byte(&LanguageString.Header.Size);\r
- break;\r
- case 0x01: \r
- Address = (void*)&ManufacturerString;\r
- Size = pgm_read_byte(&ManufacturerString.Header.Size);\r
- break;\r
- case 0x02: \r
- Address = (void*)&ProductString;\r
- Size = pgm_read_byte(&ProductString.Header.Size);\r
- break;\r
- }\r
- \r
- break;\r
- }\r
- \r
- *DescriptorAddress = Address;\r
- return Size;\r
-}\r
+++ /dev/null
-/*\r
- LUFA Library\r
- Copyright (C) Dean Camera, 2009.\r
- \r
- dean [at] fourwalledcubicle [dot] com\r
- www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
- Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
- Permission to use, copy, modify, and distribute this software\r
- and its documentation for any purpose and without fee is hereby\r
- granted, provided that the above copyright notice appear in all\r
- copies and that both that the copyright notice and this\r
- permission notice and warranty disclaimer appear in supporting\r
- documentation, and that the name of the author not be used in\r
- advertising or publicity pertaining to distribution of the\r
- software without specific, written prior permission.\r
-\r
- The author disclaim all warranties with regard to this\r
- software, including all implied warranties of merchantability\r
- and fitness. In no event shall the author be liable for any\r
- special, indirect or consequential damages or any damages\r
- whatsoever resulting from loss of use, data or profits, whether\r
- in an action of contract, negligence or other tortious action,\r
- arising out of or in connection with the use or performance of\r
- this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- * Header file for Descriptors.c.\r
- */\r
-\r
-#ifndef _DESCRIPTORS_H_\r
-#define _DESCRIPTORS_H_\r
-\r
- /* Includes: */\r
- #include <LUFA/Drivers/USB/USB.h>\r
-\r
- #include <avr/pgmspace.h>\r
-\r
- /* Type Defines: */\r
- /** Type define for the device configuration descriptor structure. This must be defined in the\r
- * application code, as the configuration descriptor contains several sub-descriptors which\r
- * vary between devices, and which describe the device's usage to the host.\r
- */\r
- typedef struct\r
- {\r
- USB_Descriptor_Configuration_Header_t Config; /**< Configuration descriptor header structure */\r
- USB_Descriptor_Interface_t Interface; /**< Interface descriptor, required for the device to enumerate */\r
- } USB_Descriptor_Configuration_t;\r
-\r
- /* Function Prototypes: */\r
- uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
-\r
-#endif\r
+++ /dev/null
-# Doxyfile 1.5.7.1\r
-\r
-# This file describes the settings to be used by the documentation system\r
-# doxygen (www.doxygen.org) for a project\r
-#\r
-# All text after a hash (#) is considered a comment and will be ignored\r
-# The format is:\r
-# TAG = value [value, ...]\r
-# For lists items can also be appended using:\r
-# TAG += value [value, ...]\r
-# Values that contain spaces should be placed between quotes (" ")\r
-\r
-#---------------------------------------------------------------------------\r
-# Project related configuration options\r
-#---------------------------------------------------------------------------\r
-\r
-# This tag specifies the encoding used for all characters in the config file \r
-# that follow. The default is UTF-8 which is also the encoding used for all \r
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the \r
-# iconv built into libc) for the transcoding. See \r
-# http://www.gnu.org/software/libiconv for the list of possible encodings.\r
-\r
-DOXYFILE_ENCODING = UTF-8\r
-\r
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded \r
-# by quotes) that should identify the project.\r
-\r
-PROJECT_NAME = "LUFA Library - Test Application Demo"\r
-\r
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. \r
-# This could be handy for archiving the generated documentation or \r
-# if some version control system is used.\r
-\r
-PROJECT_NUMBER = 0.0.0\r
-\r
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) \r
-# base path where the generated documentation will be put. \r
-# If a relative path is entered, it will be relative to the location \r
-# where doxygen was started. If left blank the current directory will be used.\r
-\r
-OUTPUT_DIRECTORY = ./Documentation/\r
-\r
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create \r
-# 4096 sub-directories (in 2 levels) under the output directory of each output \r
-# format and will distribute the generated files over these directories. \r
-# Enabling this option can be useful when feeding doxygen a huge amount of \r
-# source files, where putting all generated files in the same directory would \r
-# otherwise cause performance problems for the file system.\r
-\r
-CREATE_SUBDIRS = NO\r
-\r
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all \r
-# documentation generated by doxygen is written. Doxygen will use this \r
-# information to generate all constant output in the proper language. \r
-# The default language is English, other supported languages are: \r
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, \r
-# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, \r
-# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), \r
-# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, \r
-# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, \r
-# Spanish, Swedish, and Ukrainian.\r
-\r
-OUTPUT_LANGUAGE = English\r
-\r
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will \r
-# include brief member descriptions after the members that are listed in \r
-# the file and class documentation (similar to JavaDoc). \r
-# Set to NO to disable this.\r
-\r
-BRIEF_MEMBER_DESC = YES\r
-\r
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend \r
-# the brief description of a member or function before the detailed description. \r
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the \r
-# brief descriptions will be completely suppressed.\r
-\r
-REPEAT_BRIEF = YES\r
-\r
-# This tag implements a quasi-intelligent brief description abbreviator \r
-# that is used to form the text in various listings. Each string \r
-# in this list, if found as the leading text of the brief description, will be \r
-# stripped from the text and the result after processing the whole list, is \r
-# used as the annotated text. Otherwise, the brief description is used as-is. \r
-# If left blank, the following values are used ("$name" is automatically \r
-# replaced with the name of the entity): "The $name class" "The $name widget" \r
-# "The $name file" "is" "provides" "specifies" "contains" \r
-# "represents" "a" "an" "the"\r
-\r
-ABBREVIATE_BRIEF = "The $name class" \\r
- "The $name widget" \\r
- "The $name file" \\r
- is \\r
- provides \\r
- specifies \\r
- contains \\r
- represents \\r
- a \\r
- an \\r
- the\r
-\r
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then \r
-# Doxygen will generate a detailed section even if there is only a brief \r
-# description.\r
-\r
-ALWAYS_DETAILED_SEC = NO\r
-\r
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all \r
-# inherited members of a class in the documentation of that class as if those \r
-# members were ordinary class members. Constructors, destructors and assignment \r
-# operators of the base classes will not be shown.\r
-\r
-INLINE_INHERITED_MEMB = NO\r
-\r
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full \r
-# path before files name in the file list and in the header files. If set \r
-# to NO the shortest path that makes the file name unique will be used.\r
-\r
-FULL_PATH_NAMES = YES\r
-\r
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag \r
-# can be used to strip a user-defined part of the path. Stripping is \r
-# only done if one of the specified strings matches the left-hand part of \r
-# the path. The tag can be used to show relative paths in the file list. \r
-# If left blank the directory from which doxygen is run is used as the \r
-# path to strip.\r
-\r
-STRIP_FROM_PATH = \r
-\r
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of \r
-# the path mentioned in the documentation of a class, which tells \r
-# the reader which header file to include in order to use a class. \r
-# If left blank only the name of the header file containing the class \r
-# definition is used. Otherwise one should specify the include paths that \r
-# are normally passed to the compiler using the -I flag.\r
-\r
-STRIP_FROM_INC_PATH = \r
-\r
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter \r
-# (but less readable) file names. This can be useful is your file systems \r
-# doesn't support long names like on DOS, Mac, or CD-ROM.\r
-\r
-SHORT_NAMES = YES\r
-\r
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen \r
-# will interpret the first line (until the first dot) of a JavaDoc-style \r
-# comment as the brief description. If set to NO, the JavaDoc \r
-# comments will behave just like regular Qt-style comments \r
-# (thus requiring an explicit @brief command for a brief description.)\r
-\r
-JAVADOC_AUTOBRIEF = NO\r
-\r
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will \r
-# interpret the first line (until the first dot) of a Qt-style \r
-# comment as the brief description. If set to NO, the comments \r
-# will behave just like regular Qt-style comments (thus requiring \r
-# an explicit \brief command for a brief description.)\r
-\r
-QT_AUTOBRIEF = NO\r
-\r
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen \r
-# treat a multi-line C++ special comment block (i.e. a block of //! or /// \r
-# comments) as a brief description. This used to be the default behaviour. \r
-# The new default is to treat a multi-line C++ comment block as a detailed \r
-# description. Set this tag to YES if you prefer the old behaviour instead.\r
-\r
-MULTILINE_CPP_IS_BRIEF = NO\r
-\r
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented \r
-# member inherits the documentation from any documented member that it \r
-# re-implements.\r
-\r
-INHERIT_DOCS = YES\r
-\r
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce \r
-# a new page for each member. If set to NO, the documentation of a member will \r
-# be part of the file/class/namespace that contains it.\r
-\r
-SEPARATE_MEMBER_PAGES = NO\r
-\r
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. \r
-# Doxygen uses this value to replace tabs by spaces in code fragments.\r
-\r
-TAB_SIZE = 4\r
-\r
-# This tag can be used to specify a number of aliases that acts \r
-# as commands in the documentation. An alias has the form "name=value". \r
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to \r
-# put the command \sideeffect (or @sideeffect) in the documentation, which \r
-# will result in a user-defined paragraph with heading "Side Effects:". \r
-# You can put \n's in the value part of an alias to insert newlines.\r
-\r
-ALIASES = \r
-\r
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C \r
-# sources only. Doxygen will then generate output that is more tailored for C. \r
-# For instance, some of the names that are used will be different. The list \r
-# of all members will be omitted, etc.\r
-\r
-OPTIMIZE_OUTPUT_FOR_C = YES\r
-\r
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java \r
-# sources only. Doxygen will then generate output that is more tailored for \r
-# Java. For instance, namespaces will be presented as packages, qualified \r
-# scopes will look different, etc.\r
-\r
-OPTIMIZE_OUTPUT_JAVA = NO\r
-\r
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran \r
-# sources only. Doxygen will then generate output that is more tailored for \r
-# Fortran.\r
-\r
-OPTIMIZE_FOR_FORTRAN = NO\r
-\r
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL \r
-# sources. Doxygen will then generate output that is tailored for \r
-# VHDL.\r
-\r
-OPTIMIZE_OUTPUT_VHDL = NO\r
-\r
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want \r
-# to include (a tag file for) the STL sources as input, then you should \r
-# set this tag to YES in order to let doxygen match functions declarations and \r
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. \r
-# func(std::string) {}). This also make the inheritance and collaboration \r
-# diagrams that involve STL classes more complete and accurate.\r
-\r
-BUILTIN_STL_SUPPORT = NO\r
-\r
-# If you use Microsoft's C++/CLI language, you should set this option to YES to\r
-# enable parsing support.\r
-\r
-CPP_CLI_SUPPORT = NO\r
-\r
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. \r
-# Doxygen will parse them like normal C++ but will assume all classes use public \r
-# instead of private inheritance when no explicit protection keyword is present.\r
-\r
-SIP_SUPPORT = NO\r
-\r
-# For Microsoft's IDL there are propget and propput attributes to indicate getter \r
-# and setter methods for a property. Setting this option to YES (the default) \r
-# will make doxygen to replace the get and set methods by a property in the \r
-# documentation. This will only work if the methods are indeed getting or \r
-# setting a simple type. If this is not the case, or you want to show the \r
-# methods anyway, you should set this option to NO.\r
-\r
-IDL_PROPERTY_SUPPORT = YES\r
-\r
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC \r
-# tag is set to YES, then doxygen will reuse the documentation of the first \r
-# member in the group (if any) for the other members of the group. By default \r
-# all members of a group must be documented explicitly.\r
-\r
-DISTRIBUTE_GROUP_DOC = NO\r
-\r
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of \r
-# the same type (for instance a group of public functions) to be put as a \r
-# subgroup of that type (e.g. under the Public Functions section). Set it to \r
-# NO to prevent subgrouping. Alternatively, this can be done per class using \r
-# the \nosubgrouping command.\r
-\r
-SUBGROUPING = YES\r
-\r
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum \r
-# is documented as struct, union, or enum with the name of the typedef. So \r
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct \r
-# with name TypeT. When disabled the typedef will appear as a member of a file, \r
-# namespace, or class. And the struct will be named TypeS. This can typically \r
-# be useful for C code in case the coding convention dictates that all compound \r
-# types are typedef'ed and only the typedef is referenced, never the tag name.\r
-\r
-TYPEDEF_HIDES_STRUCT = NO\r
-\r
-# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to \r
-# determine which symbols to keep in memory and which to flush to disk.\r
-# When the cache is full, less often used symbols will be written to disk.\r
-# For small to medium size projects (<1000 input files) the default value is \r
-# probably good enough. For larger projects a too small cache size can cause \r
-# doxygen to be busy swapping symbols to and from disk most of the time \r
-# causing a significant performance penality. \r
-# If the system has enough physical memory increasing the cache will improve the \r
-# performance by keeping more symbols in memory. Note that the value works on \r
-# a logarithmic scale so increasing the size by one will rougly double the \r
-# memory usage. The cache size is given by this formula: \r
-# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, \r
-# corresponding to a cache size of 2^16 = 65536 symbols\r
-\r
-SYMBOL_CACHE_SIZE = 0\r
-\r
-#---------------------------------------------------------------------------\r
-# Build related configuration options\r
-#---------------------------------------------------------------------------\r
-\r
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in \r
-# documentation are documented, even if no documentation was available. \r
-# Private class members and static file members will be hidden unless \r
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES\r
-\r
-EXTRACT_ALL = YES\r
-\r
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class \r
-# will be included in the documentation.\r
-\r
-EXTRACT_PRIVATE = YES\r
-\r
-# If the EXTRACT_STATIC tag is set to YES all static members of a file \r
-# will be included in the documentation.\r
-\r
-EXTRACT_STATIC = YES\r
-\r
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) \r
-# defined locally in source files will be included in the documentation. \r
-# If set to NO only classes defined in header files are included.\r
-\r
-EXTRACT_LOCAL_CLASSES = YES\r
-\r
-# This flag is only useful for Objective-C code. When set to YES local \r
-# methods, which are defined in the implementation section but not in \r
-# the interface are included in the documentation. \r
-# If set to NO (the default) only methods in the interface are included.\r
-\r
-EXTRACT_LOCAL_METHODS = NO\r
-\r
-# If this flag is set to YES, the members of anonymous namespaces will be \r
-# extracted and appear in the documentation as a namespace called \r
-# 'anonymous_namespace{file}', where file will be replaced with the base \r
-# name of the file that contains the anonymous namespace. By default \r
-# anonymous namespace are hidden.\r
-\r
-EXTRACT_ANON_NSPACES = NO\r
-\r
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all \r
-# undocumented members of documented classes, files or namespaces. \r
-# If set to NO (the default) these members will be included in the \r
-# various overviews, but no documentation section is generated. \r
-# This option has no effect if EXTRACT_ALL is enabled.\r
-\r
-HIDE_UNDOC_MEMBERS = NO\r
-\r
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all \r
-# undocumented classes that are normally visible in the class hierarchy. \r
-# If set to NO (the default) these classes will be included in the various \r
-# overviews. This option has no effect if EXTRACT_ALL is enabled.\r
-\r
-HIDE_UNDOC_CLASSES = NO\r
-\r
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all \r
-# friend (class|struct|union) declarations. \r
-# If set to NO (the default) these declarations will be included in the \r
-# documentation.\r
-\r
-HIDE_FRIEND_COMPOUNDS = NO\r
-\r
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any \r
-# documentation blocks found inside the body of a function. \r
-# If set to NO (the default) these blocks will be appended to the \r
-# function's detailed documentation block.\r
-\r
-HIDE_IN_BODY_DOCS = NO\r
-\r
-# The INTERNAL_DOCS tag determines if documentation \r
-# that is typed after a \internal command is included. If the tag is set \r
-# to NO (the default) then the documentation will be excluded. \r
-# Set it to YES to include the internal documentation.\r
-\r
-INTERNAL_DOCS = NO\r
-\r
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate \r
-# file names in lower-case letters. If set to YES upper-case letters are also \r
-# allowed. This is useful if you have classes or files whose names only differ \r
-# in case and if your file system supports case sensitive file names. Windows \r
-# and Mac users are advised to set this option to NO.\r
-\r
-CASE_SENSE_NAMES = NO\r
-\r
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen \r
-# will show members with their full class and namespace scopes in the \r
-# documentation. If set to YES the scope will be hidden.\r
-\r
-HIDE_SCOPE_NAMES = NO\r
-\r
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen \r
-# will put a list of the files that are included by a file in the documentation \r
-# of that file.\r
-\r
-SHOW_INCLUDE_FILES = YES\r
-\r
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] \r
-# is inserted in the documentation for inline members.\r
-\r
-INLINE_INFO = YES\r
-\r
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen \r
-# will sort the (detailed) documentation of file and class members \r
-# alphabetically by member name. If set to NO the members will appear in \r
-# declaration order.\r
-\r
-SORT_MEMBER_DOCS = YES\r
-\r
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the \r
-# brief documentation of file, namespace and class members alphabetically \r
-# by member name. If set to NO (the default) the members will appear in \r
-# declaration order.\r
-\r
-SORT_BRIEF_DOCS = NO\r
-\r
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the \r
-# hierarchy of group names into alphabetical order. If set to NO (the default) \r
-# the group names will appear in their defined order.\r
-\r
-SORT_GROUP_NAMES = NO\r
-\r
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be \r
-# sorted by fully-qualified names, including namespaces. If set to \r
-# NO (the default), the class list will be sorted only by class name, \r
-# not including the namespace part. \r
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.\r
-# Note: This option applies only to the class list, not to the \r
-# alphabetical list.\r
-\r
-SORT_BY_SCOPE_NAME = NO\r
-\r
-# The GENERATE_TODOLIST tag can be used to enable (YES) or \r
-# disable (NO) the todo list. This list is created by putting \todo \r
-# commands in the documentation.\r
-\r
-GENERATE_TODOLIST = NO\r
-\r
-# The GENERATE_TESTLIST tag can be used to enable (YES) or \r
-# disable (NO) the test list. This list is created by putting \test \r
-# commands in the documentation.\r
-\r
-GENERATE_TESTLIST = NO\r
-\r
-# The GENERATE_BUGLIST tag can be used to enable (YES) or \r
-# disable (NO) the bug list. This list is created by putting \bug \r
-# commands in the documentation.\r
-\r
-GENERATE_BUGLIST = NO\r
-\r
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or \r
-# disable (NO) the deprecated list. This list is created by putting \r
-# \deprecated commands in the documentation.\r
-\r
-GENERATE_DEPRECATEDLIST= YES\r
-\r
-# The ENABLED_SECTIONS tag can be used to enable conditional \r
-# documentation sections, marked by \if sectionname ... \endif.\r
-\r
-ENABLED_SECTIONS = \r
-\r
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines \r
-# the initial value of a variable or define consists of for it to appear in \r
-# the documentation. If the initializer consists of more lines than specified \r
-# here it will be hidden. Use a value of 0 to hide initializers completely. \r
-# The appearance of the initializer of individual variables and defines in the \r
-# documentation can be controlled using \showinitializer or \hideinitializer \r
-# command in the documentation regardless of this setting.\r
-\r
-MAX_INITIALIZER_LINES = 30\r
-\r
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated \r
-# at the bottom of the documentation of classes and structs. If set to YES the \r
-# list will mention the files that were used to generate the documentation.\r
-\r
-SHOW_USED_FILES = YES\r
-\r
-# If the sources in your project are distributed over multiple directories \r
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy \r
-# in the documentation. The default is NO.\r
-\r
-SHOW_DIRECTORIES = YES\r
-\r
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page.\r
-# This will remove the Files entry from the Quick Index and from the \r
-# Folder Tree View (if specified). The default is YES.\r
-\r
-SHOW_FILES = YES\r
-\r
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the \r
-# Namespaces page. This will remove the Namespaces entry from the Quick Index\r
-# and from the Folder Tree View (if specified). The default is YES.\r
-\r
-SHOW_NAMESPACES = YES\r
-\r
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that \r
-# doxygen should invoke to get the current version for each file (typically from \r
-# the version control system). Doxygen will invoke the program by executing (via \r
-# popen()) the command <command> <input-file>, where <command> is the value of \r
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file \r
-# provided by doxygen. Whatever the program writes to standard output \r
-# is used as the file version. See the manual for examples.\r
-\r
-FILE_VERSION_FILTER = \r
-\r
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by \r
-# doxygen. The layout file controls the global structure of the generated output files \r
-# in an output format independent way. The create the layout file that represents \r
-# doxygen's defaults, run doxygen with the -l option. You can optionally specify a \r
-# file name after the option, if omitted DoxygenLayout.xml will be used as the name \r
-# of the layout file.\r
-\r
-LAYOUT_FILE = \r
-\r
-#---------------------------------------------------------------------------\r
-# configuration options related to warning and progress messages\r
-#---------------------------------------------------------------------------\r
-\r
-# The QUIET tag can be used to turn on/off the messages that are generated \r
-# by doxygen. Possible values are YES and NO. If left blank NO is used.\r
-\r
-QUIET = YES\r
-\r
-# The WARNINGS tag can be used to turn on/off the warning messages that are \r
-# generated by doxygen. Possible values are YES and NO. If left blank \r
-# NO is used.\r
-\r
-WARNINGS = YES\r
-\r
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings \r
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will \r
-# automatically be disabled.\r
-\r
-WARN_IF_UNDOCUMENTED = YES\r
-\r
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for \r
-# potential errors in the documentation, such as not documenting some \r
-# parameters in a documented function, or documenting parameters that \r
-# don't exist or using markup commands wrongly.\r
-\r
-WARN_IF_DOC_ERROR = YES\r
-\r
-# This WARN_NO_PARAMDOC option can be abled to get warnings for \r
-# functions that are documented, but have no documentation for their parameters \r
-# or return value. If set to NO (the default) doxygen will only warn about \r
-# wrong or incomplete parameter documentation, but not about the absence of \r
-# documentation.\r
-\r
-WARN_NO_PARAMDOC = YES\r
-\r
-# The WARN_FORMAT tag determines the format of the warning messages that \r
-# doxygen can produce. The string should contain the $file, $line, and $text \r
-# tags, which will be replaced by the file and line number from which the \r
-# warning originated and the warning text. Optionally the format may contain \r
-# $version, which will be replaced by the version of the file (if it could \r
-# be obtained via FILE_VERSION_FILTER)\r
-\r
-WARN_FORMAT = "$file:$line: $text"\r
-\r
-# The WARN_LOGFILE tag can be used to specify a file to which warning \r
-# and error messages should be written. If left blank the output is written \r
-# to stderr.\r
-\r
-WARN_LOGFILE = \r
-\r
-#---------------------------------------------------------------------------\r
-# configuration options related to the input files\r
-#---------------------------------------------------------------------------\r
-\r
-# The INPUT tag can be used to specify the files and/or directories that contain \r
-# documented source files. You may enter file names like "myfile.cpp" or \r
-# directories like "/usr/src/myproject". Separate the files or directories \r
-# with spaces.\r
-\r
-INPUT = ./\r
-\r
-# This tag can be used to specify the character encoding of the source files \r
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is \r
-# also the default input encoding. Doxygen uses libiconv (or the iconv built \r
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for \r
-# the list of possible encodings.\r
-\r
-INPUT_ENCODING = UTF-8\r
-\r
-# If the value of the INPUT tag contains directories, you can use the \r
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp \r
-# and *.h) to filter out the source-files in the directories. If left \r
-# blank the following patterns are tested: \r
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx \r
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90\r
-\r
-FILE_PATTERNS = *.h \\r
- *.c \\r
- *.txt\r
-\r
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories \r
-# should be searched for input files as well. Possible values are YES and NO. \r
-# If left blank NO is used.\r
-\r
-RECURSIVE = YES\r
-\r
-# The EXCLUDE tag can be used to specify files and/or directories that should \r
-# excluded from the INPUT source files. This way you can easily exclude a \r
-# subdirectory from a directory tree whose root is specified with the INPUT tag.\r
-\r
-EXCLUDE = Documentation/\r
-\r
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or \r
-# directories that are symbolic links (a Unix filesystem feature) are excluded \r
-# from the input.\r
-\r
-EXCLUDE_SYMLINKS = NO\r
-\r
-# If the value of the INPUT tag contains directories, you can use the \r
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude \r
-# certain files from those directories. Note that the wildcards are matched \r
-# against the file with absolute path, so to exclude all test directories \r
-# for example use the pattern */test/*\r
-\r
-EXCLUDE_PATTERNS = */LowLevel/USBMode.h\r
-\r
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names \r
-# (namespaces, classes, functions, etc.) that should be excluded from the \r
-# output. The symbol name can be a fully qualified name, a word, or if the \r
-# wildcard * is used, a substring. Examples: ANamespace, AClass, \r
-# AClass::ANamespace, ANamespace::*Test\r
-\r
-EXCLUDE_SYMBOLS = __*\r
-\r
-# The EXAMPLE_PATH tag can be used to specify one or more files or \r
-# directories that contain example code fragments that are included (see \r
-# the \include command).\r
-\r
-EXAMPLE_PATH = \r
-\r
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the \r
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp \r
-# and *.h) to filter out the source-files in the directories. If left \r
-# blank all files are included.\r
-\r
-EXAMPLE_PATTERNS = *\r
-\r
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be \r
-# searched for input files to be used with the \include or \dontinclude \r
-# commands irrespective of the value of the RECURSIVE tag. \r
-# Possible values are YES and NO. If left blank NO is used.\r
-\r
-EXAMPLE_RECURSIVE = NO\r
-\r
-# The IMAGE_PATH tag can be used to specify one or more files or \r
-# directories that contain image that are included in the documentation (see \r
-# the \image command).\r
-\r
-IMAGE_PATH = \r
-\r
-# The INPUT_FILTER tag can be used to specify a program that doxygen should \r
-# invoke to filter for each input file. Doxygen will invoke the filter program \r
-# by executing (via popen()) the command <filter> <input-file>, where <filter> \r
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an \r
-# input file. Doxygen will then use the output that the filter program writes \r
-# to standard output. If FILTER_PATTERNS is specified, this tag will be \r
-# ignored.\r
-\r
-INPUT_FILTER = \r
-\r
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern \r
-# basis. Doxygen will compare the file name with each pattern and apply the \r
-# filter if there is a match. The filters are a list of the form: \r
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further \r
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER \r
-# is applied to all files.\r
-\r
-FILTER_PATTERNS = \r
-\r
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using \r
-# INPUT_FILTER) will be used to filter the input files when producing source \r
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).\r
-\r
-FILTER_SOURCE_FILES = NO\r
-\r
-#---------------------------------------------------------------------------\r
-# configuration options related to source browsing\r
-#---------------------------------------------------------------------------\r
-\r
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will \r
-# be generated. Documented entities will be cross-referenced with these sources. \r
-# Note: To get rid of all source code in the generated output, make sure also \r
-# VERBATIM_HEADERS is set to NO.\r
-\r
-SOURCE_BROWSER = NO\r
-\r
-# Setting the INLINE_SOURCES tag to YES will include the body \r
-# of functions and classes directly in the documentation.\r
-\r
-INLINE_SOURCES = NO\r
-\r
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct \r
-# doxygen to hide any special comment blocks from generated source code \r
-# fragments. Normal C and C++ comments will always remain visible.\r
-\r
-STRIP_CODE_COMMENTS = YES\r
-\r
-# If the REFERENCED_BY_RELATION tag is set to YES \r
-# then for each documented function all documented \r
-# functions referencing it will be listed.\r
-\r
-REFERENCED_BY_RELATION = NO\r
-\r
-# If the REFERENCES_RELATION tag is set to YES \r
-# then for each documented function all documented entities \r
-# called/used by that function will be listed.\r
-\r
-REFERENCES_RELATION = NO\r
-\r
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)\r
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from\r
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will\r
-# link to the source code. Otherwise they will link to the documentstion.\r
-\r
-REFERENCES_LINK_SOURCE = NO\r
-\r
-# If the USE_HTAGS tag is set to YES then the references to source code \r
-# will point to the HTML generated by the htags(1) tool instead of doxygen \r
-# built-in source browser. The htags tool is part of GNU's global source \r
-# tagging system (see http://www.gnu.org/software/global/global.html). You \r
-# will need version 4.8.6 or higher.\r
-\r
-USE_HTAGS = NO\r
-\r
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen \r
-# will generate a verbatim copy of the header file for each class for \r
-# which an include is specified. Set to NO to disable this.\r
-\r
-VERBATIM_HEADERS = NO\r
-\r
-#---------------------------------------------------------------------------\r
-# configuration options related to the alphabetical class index\r
-#---------------------------------------------------------------------------\r
-\r
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index \r
-# of all compounds will be generated. Enable this if the project \r
-# contains a lot of classes, structs, unions or interfaces.\r
-\r
-ALPHABETICAL_INDEX = YES\r
-\r
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then \r
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns \r
-# in which this list will be split (can be a number in the range [1..20])\r
-\r
-COLS_IN_ALPHA_INDEX = 5\r
-\r
-# In case all classes in a project start with a common prefix, all \r
-# classes will be put under the same header in the alphabetical index. \r
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that \r
-# should be ignored while generating the index headers.\r
-\r
-IGNORE_PREFIX = \r
-\r
-#---------------------------------------------------------------------------\r
-# configuration options related to the HTML output\r
-#---------------------------------------------------------------------------\r
-\r
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will \r
-# generate HTML output.\r
-\r
-GENERATE_HTML = YES\r
-\r
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. \r
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be \r
-# put in front of it. If left blank `html' will be used as the default path.\r
-\r
-HTML_OUTPUT = html\r
-\r
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for \r
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank \r
-# doxygen will generate files with .html extension.\r
-\r
-HTML_FILE_EXTENSION = .html\r
-\r
-# The HTML_HEADER tag can be used to specify a personal HTML header for \r
-# each generated HTML page. If it is left blank doxygen will generate a \r
-# standard header.\r
-\r
-HTML_HEADER = \r
-\r
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for \r
-# each generated HTML page. If it is left blank doxygen will generate a \r
-# standard footer.\r
-\r
-HTML_FOOTER = \r
-\r
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading \r
-# style sheet that is used by each HTML page. It can be used to \r
-# fine-tune the look of the HTML output. If the tag is left blank doxygen \r
-# will generate a default style sheet. Note that doxygen will try to copy \r
-# the style sheet file to the HTML output directory, so don't put your own \r
-# stylesheet in the HTML output directory as well, or it will be erased!\r
-\r
-HTML_STYLESHEET = \r
-\r
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, \r
-# files or namespaces will be aligned in HTML using tables. If set to \r
-# NO a bullet list will be used.\r
-\r
-HTML_ALIGN_MEMBERS = YES\r
-\r
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML \r
-# documentation will contain sections that can be hidden and shown after the \r
-# page has loaded. For this to work a browser that supports \r
-# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox \r
-# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).\r
-\r
-HTML_DYNAMIC_SECTIONS = YES\r
-\r
-# If the GENERATE_DOCSET tag is set to YES, additional index files \r
-# will be generated that can be used as input for Apple's Xcode 3 \r
-# integrated development environment, introduced with OSX 10.5 (Leopard). \r
-# To create a documentation set, doxygen will generate a Makefile in the \r
-# HTML output directory. Running make will produce the docset in that \r
-# directory and running "make install" will install the docset in \r
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find \r
-# it at startup. \r
-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.\r
-\r
-GENERATE_DOCSET = NO\r
-\r
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the \r
-# feed. A documentation feed provides an umbrella under which multiple \r
-# documentation sets from a single provider (such as a company or product suite) \r
-# can be grouped.\r
-\r
-DOCSET_FEEDNAME = "Doxygen generated docs"\r
-\r
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that \r
-# should uniquely identify the documentation set bundle. This should be a \r
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen \r
-# will append .docset to the name.\r
-\r
-DOCSET_BUNDLE_ID = org.doxygen.Project\r
-\r
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files \r
-# will be generated that can be used as input for tools like the \r
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) \r
-# of the generated HTML documentation.\r
-\r
-GENERATE_HTMLHELP = NO\r
-\r
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can \r
-# be used to specify the file name of the resulting .chm file. You \r
-# can add a path in front of the file if the result should not be \r
-# written to the html output directory.\r
-\r
-CHM_FILE = \r
-\r
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can \r
-# be used to specify the location (absolute path including file name) of \r
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run \r
-# the HTML help compiler on the generated index.hhp.\r
-\r
-HHC_LOCATION = \r
-\r
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag \r
-# controls if a separate .chi index file is generated (YES) or that \r
-# it should be included in the master .chm file (NO).\r
-\r
-GENERATE_CHI = NO\r
-\r
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING\r
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file\r
-# content.\r
-\r
-CHM_INDEX_ENCODING = \r
-\r
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag \r
-# controls whether a binary table of contents is generated (YES) or a \r
-# normal table of contents (NO) in the .chm file.\r
-\r
-BINARY_TOC = NO\r
-\r
-# The TOC_EXPAND flag can be set to YES to add extra items for group members \r
-# to the contents of the HTML help documentation and to the tree view.\r
-\r
-TOC_EXPAND = YES\r
-\r
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER \r
-# are set, an additional index file will be generated that can be used as input for \r
-# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated \r
-# HTML documentation.\r
-\r
-GENERATE_QHP = NO\r
-\r
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can \r
-# be used to specify the file name of the resulting .qch file. \r
-# The path specified is relative to the HTML output folder.\r
-\r
-QCH_FILE = \r
-\r
-# The QHP_NAMESPACE tag specifies the namespace to use when generating \r
-# Qt Help Project output. For more information please see \r
-# <a href="http://doc.trolltech.com/qthelpproject.html#namespace">Qt Help Project / Namespace</a>.\r
-\r
-QHP_NAMESPACE = org.doxygen.Project\r
-\r
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating \r
-# Qt Help Project output. For more information please see \r
-# <a href="http://doc.trolltech.com/qthelpproject.html#virtual-folders">Qt Help Project / Virtual Folders</a>.\r
-\r
-QHP_VIRTUAL_FOLDER = doc\r
-\r
-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can \r
-# be used to specify the location of Qt's qhelpgenerator. \r
-# If non-empty doxygen will try to run qhelpgenerator on the generated \r
-# .qhp file .\r
-\r
-QHG_LOCATION = \r
-\r
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at \r
-# top of each HTML page. The value NO (the default) enables the index and \r
-# the value YES disables it.\r
-\r
-DISABLE_INDEX = NO\r
-\r
-# This tag can be used to set the number of enum values (range [1..20]) \r
-# that doxygen will group on one line in the generated HTML documentation.\r
-\r
-ENUM_VALUES_PER_LINE = 1\r
-\r
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index\r
-# structure should be generated to display hierarchical information.\r
-# If the tag value is set to FRAME, a side panel will be generated\r
-# containing a tree-like index structure (just like the one that \r
-# is generated for HTML Help). For this to work a browser that supports \r
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, \r
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are \r
-# probably better off using the HTML help feature. Other possible values \r
-# for this tag are: HIERARCHIES, which will generate the Groups, Directories,\r
-# and Class Hierarchy pages using a tree view instead of an ordered list;\r
-# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which\r
-# disables this behavior completely. For backwards compatibility with previous\r
-# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE\r
-# respectively.\r
-\r
-GENERATE_TREEVIEW = YES\r
-\r
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be \r
-# used to set the initial width (in pixels) of the frame in which the tree \r
-# is shown.\r
-\r
-TREEVIEW_WIDTH = 250\r
-\r
-# Use this tag to change the font size of Latex formulas included \r
-# as images in the HTML documentation. The default is 10. Note that \r
-# when you change the font size after a successful doxygen run you need \r
-# to manually remove any form_*.png images from the HTML output directory \r
-# to force them to be regenerated.\r
-\r
-FORMULA_FONTSIZE = 10\r
-\r
-#---------------------------------------------------------------------------\r
-# configuration options related to the LaTeX output\r
-#---------------------------------------------------------------------------\r
-\r
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will \r
-# generate Latex output.\r
-\r
-GENERATE_LATEX = NO\r
-\r
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. \r
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be \r
-# put in front of it. If left blank `latex' will be used as the default path.\r
-\r
-LATEX_OUTPUT = latex\r
-\r
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be \r
-# invoked. If left blank `latex' will be used as the default command name.\r
-\r
-LATEX_CMD_NAME = latex\r
-\r
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to \r
-# generate index for LaTeX. If left blank `makeindex' will be used as the \r
-# default command name.\r
-\r
-MAKEINDEX_CMD_NAME = makeindex\r
-\r
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact \r
-# LaTeX documents. This may be useful for small projects and may help to \r
-# save some trees in general.\r
-\r
-COMPACT_LATEX = NO\r
-\r
-# The PAPER_TYPE tag can be used to set the paper type that is used \r
-# by the printer. Possible values are: a4, a4wide, letter, legal and \r
-# executive. If left blank a4wide will be used.\r
-\r
-PAPER_TYPE = a4wide\r
-\r
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX \r
-# packages that should be included in the LaTeX output.\r
-\r
-EXTRA_PACKAGES = \r
-\r
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for \r
-# the generated latex document. The header should contain everything until \r
-# the first chapter. If it is left blank doxygen will generate a \r
-# standard header. Notice: only use this tag if you know what you are doing!\r
-\r
-LATEX_HEADER = \r
-\r
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated \r
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will \r
-# contain links (just like the HTML output) instead of page references \r
-# This makes the output suitable for online browsing using a pdf viewer.\r
-\r
-PDF_HYPERLINKS = YES\r
-\r
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of \r
-# plain latex in the generated Makefile. Set this option to YES to get a \r
-# higher quality PDF documentation.\r
-\r
-USE_PDFLATEX = YES\r
-\r
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. \r
-# command to the generated LaTeX files. This will instruct LaTeX to keep \r
-# running if errors occur, instead of asking the user for help. \r
-# This option is also used when generating formulas in HTML.\r
-\r
-LATEX_BATCHMODE = NO\r
-\r
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not \r
-# include the index chapters (such as File Index, Compound Index, etc.) \r
-# in the output.\r
-\r
-LATEX_HIDE_INDICES = NO\r
-\r
-#---------------------------------------------------------------------------\r
-# configuration options related to the RTF output\r
-#---------------------------------------------------------------------------\r
-\r
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output \r
-# The RTF output is optimized for Word 97 and may not look very pretty with \r
-# other RTF readers or editors.\r
-\r
-GENERATE_RTF = NO\r
-\r
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. \r
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be \r
-# put in front of it. If left blank `rtf' will be used as the default path.\r
-\r
-RTF_OUTPUT = rtf\r
-\r
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact \r
-# RTF documents. This may be useful for small projects and may help to \r
-# save some trees in general.\r
-\r
-COMPACT_RTF = NO\r
-\r
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated \r
-# will contain hyperlink fields. The RTF file will \r
-# contain links (just like the HTML output) instead of page references. \r
-# This makes the output suitable for online browsing using WORD or other \r
-# programs which support those fields. \r
-# Note: wordpad (write) and others do not support links.\r
-\r
-RTF_HYPERLINKS = NO\r
-\r
-# Load stylesheet definitions from file. Syntax is similar to doxygen's \r
-# config file, i.e. a series of assignments. You only have to provide \r
-# replacements, missing definitions are set to their default value.\r
-\r
-RTF_STYLESHEET_FILE = \r
-\r
-# Set optional variables used in the generation of an rtf document. \r
-# Syntax is similar to doxygen's config file.\r
-\r
-RTF_EXTENSIONS_FILE = \r
-\r
-#---------------------------------------------------------------------------\r
-# configuration options related to the man page output\r
-#---------------------------------------------------------------------------\r
-\r
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will \r
-# generate man pages\r
-\r
-GENERATE_MAN = NO\r
-\r
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. \r
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be \r
-# put in front of it. If left blank `man' will be used as the default path.\r
-\r
-MAN_OUTPUT = man\r
-\r
-# The MAN_EXTENSION tag determines the extension that is added to \r
-# the generated man pages (default is the subroutine's section .3)\r
-\r
-MAN_EXTENSION = .3\r
-\r
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output, \r
-# then it will generate one additional man file for each entity \r
-# documented in the real man page(s). These additional files \r
-# only source the real man page, but without them the man command \r
-# would be unable to find the correct page. The default is NO.\r
-\r
-MAN_LINKS = NO\r
-\r
-#---------------------------------------------------------------------------\r
-# configuration options related to the XML output\r
-#---------------------------------------------------------------------------\r
-\r
-# If the GENERATE_XML tag is set to YES Doxygen will \r
-# generate an XML file that captures the structure of \r
-# the code including all documentation.\r
-\r
-GENERATE_XML = NO\r
-\r
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. \r
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be \r
-# put in front of it. If left blank `xml' will be used as the default path.\r
-\r
-XML_OUTPUT = xml\r
-\r
-# The XML_SCHEMA tag can be used to specify an XML schema, \r
-# which can be used by a validating XML parser to check the \r
-# syntax of the XML files.\r
-\r
-XML_SCHEMA = \r
-\r
-# The XML_DTD tag can be used to specify an XML DTD, \r
-# which can be used by a validating XML parser to check the \r
-# syntax of the XML files.\r
-\r
-XML_DTD = \r
-\r
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will \r
-# dump the program listings (including syntax highlighting \r
-# and cross-referencing information) to the XML output. Note that \r
-# enabling this will significantly increase the size of the XML output.\r
-\r
-XML_PROGRAMLISTING = YES\r
-\r
-#---------------------------------------------------------------------------\r
-# configuration options for the AutoGen Definitions output\r
-#---------------------------------------------------------------------------\r
-\r
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will \r
-# generate an AutoGen Definitions (see autogen.sf.net) file \r
-# that captures the structure of the code including all \r
-# documentation. Note that this feature is still experimental \r
-# and incomplete at the moment.\r
-\r
-GENERATE_AUTOGEN_DEF = NO\r
-\r
-#---------------------------------------------------------------------------\r
-# configuration options related to the Perl module output\r
-#---------------------------------------------------------------------------\r
-\r
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will \r
-# generate a Perl module file that captures the structure of \r
-# the code including all documentation. Note that this \r
-# feature is still experimental and incomplete at the \r
-# moment.\r
-\r
-GENERATE_PERLMOD = NO\r
-\r
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate \r
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able \r
-# to generate PDF and DVI output from the Perl module output.\r
-\r
-PERLMOD_LATEX = NO\r
-\r
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be \r
-# nicely formatted so it can be parsed by a human reader. This is useful \r
-# if you want to understand what is going on. On the other hand, if this \r
-# tag is set to NO the size of the Perl module output will be much smaller \r
-# and Perl will parse it just the same.\r
-\r
-PERLMOD_PRETTY = YES\r
-\r
-# The names of the make variables in the generated doxyrules.make file \r
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. \r
-# This is useful so different doxyrules.make files included by the same \r
-# Makefile don't overwrite each other's variables.\r
-\r
-PERLMOD_MAKEVAR_PREFIX = \r
-\r
-#---------------------------------------------------------------------------\r
-# Configuration options related to the preprocessor \r
-#---------------------------------------------------------------------------\r
-\r
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will \r
-# evaluate all C-preprocessor directives found in the sources and include \r
-# files.\r
-\r
-ENABLE_PREPROCESSING = YES\r
-\r
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro \r
-# names in the source code. If set to NO (the default) only conditional \r
-# compilation will be performed. Macro expansion can be done in a controlled \r
-# way by setting EXPAND_ONLY_PREDEF to YES.\r
-\r
-MACRO_EXPANSION = YES\r
-\r
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES \r
-# then the macro expansion is limited to the macros specified with the \r
-# PREDEFINED and EXPAND_AS_DEFINED tags.\r
-\r
-EXPAND_ONLY_PREDEF = YES\r
-\r
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files \r
-# in the INCLUDE_PATH (see below) will be search if a #include is found.\r
-\r
-SEARCH_INCLUDES = YES\r
-\r
-# The INCLUDE_PATH tag can be used to specify one or more directories that \r
-# contain include files that are not input files but should be processed by \r
-# the preprocessor.\r
-\r
-INCLUDE_PATH = \r
-\r
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard \r
-# patterns (like *.h and *.hpp) to filter out the header-files in the \r
-# directories. If left blank, the patterns specified with FILE_PATTERNS will \r
-# be used.\r
-\r
-INCLUDE_FILE_PATTERNS = \r
-\r
-# The PREDEFINED tag can be used to specify one or more macro names that \r
-# are defined before the preprocessor is started (similar to the -D option of \r
-# gcc). The argument of the tag is a list of macros of the form: name \r
-# or name=definition (no spaces). If the definition and the = are \r
-# omitted =1 is assumed. To prevent a macro definition from being \r
-# undefined via #undef or recursively expanded use the := operator \r
-# instead of the = operator.\r
-\r
-PREDEFINED = __DOXYGEN__\r
-\r
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then \r
-# this tag can be used to specify a list of macro names that should be expanded. \r
-# The macro definition that is found in the sources will be used. \r
-# Use the PREDEFINED tag if you want to use a different macro definition.\r
-\r
-EXPAND_AS_DEFINED = BUTTLOADTAG\r
-\r
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then \r
-# doxygen's preprocessor will remove all function-like macros that are alone \r
-# on a line, have an all uppercase name, and do not end with a semicolon. Such \r
-# function macros are typically used for boiler-plate code, and will confuse \r
-# the parser if not removed.\r
-\r
-SKIP_FUNCTION_MACROS = YES\r
-\r
-#---------------------------------------------------------------------------\r
-# Configuration::additions related to external references \r
-#---------------------------------------------------------------------------\r
-\r
-# The TAGFILES option can be used to specify one or more tagfiles. \r
-# Optionally an initial location of the external documentation \r
-# can be added for each tagfile. The format of a tag file without \r
-# this location is as follows: \r
-# TAGFILES = file1 file2 ... \r
-# Adding location for the tag files is done as follows: \r
-# TAGFILES = file1=loc1 "file2 = loc2" ... \r
-# where "loc1" and "loc2" can be relative or absolute paths or \r
-# URLs. If a location is present for each tag, the installdox tool \r
-# does not have to be run to correct the links.\r
-# Note that each tag file must have a unique name\r
-# (where the name does NOT include the path)\r
-# If a tag file is not located in the directory in which doxygen \r
-# is run, you must also specify the path to the tagfile here.\r
-\r
-TAGFILES = \r
-\r
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create \r
-# a tag file that is based on the input files it reads.\r
-\r
-GENERATE_TAGFILE = \r
-\r
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed \r
-# in the class index. If set to NO only the inherited external classes \r
-# will be listed.\r
-\r
-ALLEXTERNALS = NO\r
-\r
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed \r
-# in the modules index. If set to NO, only the current project's groups will \r
-# be listed.\r
-\r
-EXTERNAL_GROUPS = YES\r
-\r
-# The PERL_PATH should be the absolute path and name of the perl script \r
-# interpreter (i.e. the result of `which perl').\r
-\r
-PERL_PATH = /usr/bin/perl\r
-\r
-#---------------------------------------------------------------------------\r
-# Configuration options related to the dot tool \r
-#---------------------------------------------------------------------------\r
-\r
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will \r
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base \r
-# or super classes. Setting the tag to NO turns the diagrams off. Note that \r
-# this option is superseded by the HAVE_DOT option below. This is only a \r
-# fallback. It is recommended to install and use dot, since it yields more \r
-# powerful graphs.\r
-\r
-CLASS_DIAGRAMS = NO\r
-\r
-# You can define message sequence charts within doxygen comments using the \msc \r
-# command. Doxygen will then run the mscgen tool (see \r
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the \r
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where \r
-# the mscgen tool resides. If left empty the tool is assumed to be found in the \r
-# default search path.\r
-\r
-MSCGEN_PATH = \r
-\r
-# If set to YES, the inheritance and collaboration graphs will hide \r
-# inheritance and usage relations if the target is undocumented \r
-# or is not a class.\r
-\r
-HIDE_UNDOC_RELATIONS = YES\r
-\r
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is \r
-# available from the path. This tool is part of Graphviz, a graph visualization \r
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section \r
-# have no effect if this option is set to NO (the default)\r
-\r
-HAVE_DOT = NO\r
-\r
-# By default doxygen will write a font called FreeSans.ttf to the output \r
-# directory and reference it in all dot files that doxygen generates. This \r
-# font does not include all possible unicode characters however, so when you need \r
-# these (or just want a differently looking font) you can specify the font name \r
-# using DOT_FONTNAME. You need need to make sure dot is able to find the font, \r
-# which can be done by putting it in a standard location or by setting the \r
-# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory \r
-# containing the font.\r
-\r
-DOT_FONTNAME = FreeSans\r
-\r
-# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. \r
-# The default size is 10pt.\r
-\r
-DOT_FONTSIZE = 10\r
-\r
-# By default doxygen will tell dot to use the output directory to look for the \r
-# FreeSans.ttf font (which doxygen will put there itself). If you specify a \r
-# different font using DOT_FONTNAME you can set the path where dot \r
-# can find it using this tag.\r
-\r
-DOT_FONTPATH = \r
-\r
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen \r
-# will generate a graph for each documented class showing the direct and \r
-# indirect inheritance relations. Setting this tag to YES will force the \r
-# the CLASS_DIAGRAMS tag to NO.\r
-\r
-CLASS_GRAPH = NO\r
-\r
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen \r
-# will generate a graph for each documented class showing the direct and \r
-# indirect implementation dependencies (inheritance, containment, and \r
-# class references variables) of the class with other documented classes.\r
-\r
-COLLABORATION_GRAPH = NO\r
-\r
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen \r
-# will generate a graph for groups, showing the direct groups dependencies\r
-\r
-GROUP_GRAPHS = NO\r
-\r
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and \r
-# collaboration diagrams in a style similar to the OMG's Unified Modeling \r
-# Language.\r
-\r
-UML_LOOK = NO\r
-\r
-# If set to YES, the inheritance and collaboration graphs will show the \r
-# relations between templates and their instances.\r
-\r
-TEMPLATE_RELATIONS = NO\r
-\r
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT \r
-# tags are set to YES then doxygen will generate a graph for each documented \r
-# file showing the direct and indirect include dependencies of the file with \r
-# other documented files.\r
-\r
-INCLUDE_GRAPH = NO\r
-\r
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and \r
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each \r
-# documented header file showing the documented files that directly or \r
-# indirectly include this file.\r
-\r
-INCLUDED_BY_GRAPH = NO\r
-\r
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then \r
-# doxygen will generate a call dependency graph for every global function \r
-# or class method. Note that enabling this option will significantly increase \r
-# the time of a run. So in most cases it will be better to enable call graphs \r
-# for selected functions only using the \callgraph command.\r
-\r
-CALL_GRAPH = NO\r
-\r
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then \r
-# doxygen will generate a caller dependency graph for every global function \r
-# or class method. Note that enabling this option will significantly increase \r
-# the time of a run. So in most cases it will be better to enable caller \r
-# graphs for selected functions only using the \callergraph command.\r
-\r
-CALLER_GRAPH = NO\r
-\r
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen \r
-# will graphical hierarchy of all classes instead of a textual one.\r
-\r
-GRAPHICAL_HIERARCHY = NO\r
-\r
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES \r
-# then doxygen will show the dependencies a directory has on other directories \r
-# in a graphical way. The dependency relations are determined by the #include\r
-# relations between the files in the directories.\r
-\r
-DIRECTORY_GRAPH = NO\r
-\r
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images \r
-# generated by dot. Possible values are png, jpg, or gif\r
-# If left blank png will be used.\r
-\r
-DOT_IMAGE_FORMAT = png\r
-\r
-# The tag DOT_PATH can be used to specify the path where the dot tool can be \r
-# found. If left blank, it is assumed the dot tool can be found in the path.\r
-\r
-DOT_PATH = \r
-\r
-# The DOTFILE_DIRS tag can be used to specify one or more directories that \r
-# contain dot files that are included in the documentation (see the \r
-# \dotfile command).\r
-\r
-DOTFILE_DIRS = \r
-\r
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of \r
-# nodes that will be shown in the graph. If the number of nodes in a graph \r
-# becomes larger than this value, doxygen will truncate the graph, which is \r
-# visualized by representing a node as a red box. Note that doxygen if the \r
-# number of direct children of the root node in a graph is already larger than \r
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note \r
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.\r
-\r
-DOT_GRAPH_MAX_NODES = 15\r
-\r
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the \r
-# graphs generated by dot. A depth value of 3 means that only nodes reachable \r
-# from the root by following a path via at most 3 edges will be shown. Nodes \r
-# that lay further from the root node will be omitted. Note that setting this \r
-# option to 1 or 2 may greatly reduce the computation time needed for large \r
-# code bases. Also note that the size of a graph can be further restricted by \r
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.\r
-\r
-MAX_DOT_GRAPH_DEPTH = 2\r
-\r
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent \r
-# background. This is disabled by default, because dot on Windows does not \r
-# seem to support this out of the box. Warning: Depending on the platform used, \r
-# enabling this option may lead to badly anti-aliased labels on the edges of \r
-# a graph (i.e. they become hard to read).\r
-\r
-DOT_TRANSPARENT = YES\r
-\r
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output \r
-# files in one run (i.e. multiple -o and -T options on the command line). This \r
-# makes dot run faster, but since only newer versions of dot (>1.8.10) \r
-# support this, this feature is disabled by default.\r
-\r
-DOT_MULTI_TARGETS = NO\r
-\r
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will \r
-# generate a legend page explaining the meaning of the various boxes and \r
-# arrows in the dot generated graphs.\r
-\r
-GENERATE_LEGEND = YES\r
-\r
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will \r
-# remove the intermediate dot files that are used to generate \r
-# the various graphs.\r
-\r
-DOT_CLEANUP = YES\r
-\r
-#---------------------------------------------------------------------------\r
-# Configuration::additions related to the search engine \r
-#---------------------------------------------------------------------------\r
-\r
-# The SEARCHENGINE tag specifies whether or not a search engine should be \r
-# used. If set to NO the values of all tags below this one will be ignored.\r
-\r
-SEARCHENGINE = NO\r
+++ /dev/null
-/*\r
- LUFA Library\r
- Copyright (C) Dean Camera, 2009.\r
- \r
- dean [at] fourwalledcubicle [dot] com\r
- www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
- Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
- Permission to use, copy, modify, and distribute this software\r
- and its documentation for any purpose and without fee is hereby\r
- granted, provided that the above copyright notice appear in all\r
- copies and that both that the copyright notice and this\r
- permission notice and warranty disclaimer appear in supporting\r
- documentation, and that the name of the author not be used in\r
- advertising or publicity pertaining to distribution of the\r
- software without specific, written prior permission.\r
-\r
- The author disclaim all warranties with regard to this\r
- software, including all implied warranties of merchantability\r
- and fitness. In no event shall the author be liable for any\r
- special, indirect or consequential damages or any damages\r
- whatsoever resulting from loss of use, data or profits, whether\r
- in an action of contract, negligence or other tortious action,\r
- arising out of or in connection with the use or performance of\r
- this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- * Main source file for the TestApp demo. This file contains the main tasks of the demo and\r
- * is responsible for the initial application hardware configuration.\r
- */\r
-\r
-#include "TestApp.h"\r
-\r
-/** Main program entry point. This routine configures the hardware required by the application, then\r
- * starts the scheduler to run the application tasks.\r
- */\r
-int main(void)\r
-{\r
- SetupHardware();\r
- \r
- puts_P(PSTR(ESC_FG_CYAN "LUFA Demo running.\r\n" ESC_FG_WHITE));\r
-\r
- for (;;)\r
- {\r
- CheckJoystick();\r
- CheckButton();\r
- CheckTemperature();\r
-\r
- /* Clear millisecond timer's Output Compare flag (logic 1 clears the flag) */\r
- TIFR0 |= (1 << OCF0A);\r
- \r
- USB_USBTask();\r
- }\r
-}\r
-\r
-void SetupHardware(void)\r
-{\r
- /* Disable watchdog if enabled by bootloader/fuses */\r
- MCUSR &= ~(1 << WDRF);\r
- wdt_disable();\r
-\r
- /* Disable clock division */\r
- clock_prescale_set(clock_div_1);\r
- \r
- /* Hardware initialization */\r
- SerialStream_Init(9600, false);\r
- ADC_Init(ADC_SINGLE_CONVERSION | ADC_PRESCALE_64);\r
- Temperature_Init();\r
- Joystick_Init();\r
- LEDs_Init();\r
- Buttons_Init();\r
- \r
- /* Millisecond timer initialization */\r
- OCR0A = 0x7D;\r
- TCCR0A = (1 << WGM01);\r
- TCCR0B = ((1 << CS01) | (1 << CS00));\r
-}\r
-\r
-/** Task responsible for checking the joystick position, and displaying the joystick position onto the\r
- * board LEDs.\r
- */\r
-void CheckJoystick(void)\r
-{\r
- uint8_t JoyStatus_LCL = Joystick_GetStatus();\r
- uint8_t LEDMask = LEDS_NO_LEDS;\r
- \r
- if (JoyStatus_LCL & JOY_UP)\r
- LEDMask |= LEDS_LED1;\r
- \r
- if (JoyStatus_LCL & JOY_DOWN)\r
- LEDMask |= LEDS_LED2;\r
-\r
- if (JoyStatus_LCL & JOY_LEFT)\r
- LEDMask |= LEDS_LED3;\r
-\r
- if (JoyStatus_LCL & JOY_RIGHT)\r
- LEDMask |= LEDS_LED4;\r
- \r
- if (JoyStatus_LCL & JOY_PRESS)\r
- LEDMask = LEDS_ALL_LEDS;\r
-\r
- LEDs_SetAllLEDs(LEDMask);\r
-}\r
-\r
-/** Task responsible for checking the current temperature via the temperature sensor mounted on the\r
- * board, and displaying it through the serial USART.\r
- */\r
-void CheckTemperature(void)\r
-{\r
- static uint16_t MSElapsed = 0;\r
-\r
- /* Timer 0's compare flag is set every millisecond */\r
- if (TIFR0 & (1 << OCF0A))\r
- MSElapsed++;\r
-\r
- /* Task runs every 10000 ticks, 10 seconds for this demo */\r
- if (MSElapsed == 10000)\r
- {\r
- printf_P(PSTR("Current temperature: %d Degrees Celcius\r\n\r\n"),\r
- (int8_t)Temperature_GetTemperature());\r
-\r
- MSElapsed = 0;\r
- } \r
-}\r
-\r
-/** Task responsible for checking the board's first button' position, and start-stopping other tasks and the USB\r
- * interface in response to user joystick movements.\r
- */\r
-void CheckButton(void)\r
-{\r
- static uint16_t DebounceMSElapsed = 0;\r
- static bool IsPressed;\r
- \r
- /* Timer 0's compare flag is set every millisecond */\r
- if (TIFR0 & (1 << OCF0A))\r
- DebounceMSElapsed++;\r
-\r
- if (Buttons_GetStatus() & BUTTONS_BUTTON1)\r
- {\r
- if (!(IsPressed) && (DebounceMSElapsed == 100))\r
- {\r
- IsPressed = true;\r
-\r
- if (USB_IsInitialized == true)\r
- {\r
- USB_ShutDown();\r
- puts_P(PSTR(ESC_FG_YELLOW "USB Power Off.\r\n" ESC_FG_WHITE));\r
- }\r
- else\r
- {\r
- puts_P(PSTR(ESC_FG_YELLOW "USB Power On.\r\n" ESC_FG_WHITE)); \r
- USB_Init(USB_MODE_UID, USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL);\r
- }\r
- }\r
- }\r
- else\r
- {\r
- DebounceMSElapsed = 0;\r
- IsPressed = false;\r
- }\r
-}\r
+++ /dev/null
-/*\r
- LUFA Library\r
- Copyright (C) Dean Camera, 2009.\r
- \r
- dean [at] fourwalledcubicle [dot] com\r
- www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
- Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
- Permission to use, copy, modify, and distribute this software\r
- and its documentation for any purpose and without fee is hereby\r
- granted, provided that the above copyright notice appear in all\r
- copies and that both that the copyright notice and this\r
- permission notice and warranty disclaimer appear in supporting\r
- documentation, and that the name of the author not be used in\r
- advertising or publicity pertaining to distribution of the\r
- software without specific, written prior permission.\r
-\r
- The author disclaim all warranties with regard to this\r
- software, including all implied warranties of merchantability\r
- and fitness. In no event shall the author be liable for any\r
- special, indirect or consequential damages or any damages\r
- whatsoever resulting from loss of use, data or profits, whether\r
- in an action of contract, negligence or other tortious action,\r
- arising out of or in connection with the use or performance of\r
- this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- * Header file for TestApp.c.\r
- */\r
-\r
-#ifndef _TESTAPP_H_\r
-#define _TESTAPP_H_\r
-\r
- /* Includes: */\r
- #include <avr/io.h>\r
- #include <avr/interrupt.h>\r
- #include <avr/wdt.h>\r
- #include <avr/power.h>\r
-\r
- #include <LUFA/Version.h>\r
- #include <LUFA/Drivers/USB/USB.h>\r
- #include <LUFA/Drivers/Misc/TerminalCodes.h>\r
- #include <LUFA/Drivers/Peripheral/ADC.h>\r
- #include <LUFA/Drivers/Peripheral/SerialStream.h>\r
- #include <LUFA/Drivers/Board/Joystick.h>\r
- #include <LUFA/Drivers/Board/LEDs.h>\r
- #include <LUFA/Drivers/Board/Buttons.h>\r
- #include <LUFA/Drivers/Board/Temperature.h>\r
- \r
- /* Function Prototypes: */\r
- void SetupHardware(void);\r
- \r
- void CheckJoystick(void);\r
- void CheckButton(void);\r
- void CheckTemperature(void);\r
-\r
-#endif\r
+++ /dev/null
-/** \file\r
- *\r
- * This file contains special DoxyGen information for the generation of the main page and other special\r
- * documentation pages. It is not a project source file.\r
- */\r
- \r
-/** \mainpage Test Application for the LUFA library\r
- *\r
- * \section SSec_Info USB Information:\r
- *\r
- * The following table gives a rundown of the USB utilization of this demo.\r
- *\r
- * <table>\r
- * <tr>\r
- * <td><b>USB Mode:</b></td>\r
- * <td>Host/Device (Dual Role)</td>\r
- * </tr>\r
- * <tr>\r
- * <td><b>USB Class:</b></td>\r
- * <td>N/A</td>\r
- * </tr>\r
- * <tr> \r
- * <td><b>USB Subclass:</b></td>\r
- * <td>N/A</td>\r
- * </tr>\r
- * <tr>\r
- * <td><b>Relevant Standards:</b></td>\r
- * <td>N/A</td>\r
- * </tr>\r
- * <tr>\r
- * <td><b>Usable Speeds:</b></td>\r
- * <td>Low Speed Mode, Full Speed Mode</td>\r
- * </tr>\r
- * </table>\r
- *\r
- * \section SSec_Description Project Description: \r
- *\r
- * Test application. Demonstrates several aspects of the LUFA\r
- * Library. On start-up the current temperature will be printed\r
- * through the USART every 10 seconds, and the current joystick\r
- * position will be indicated via the LEDs on the selected board.\r
- * Pressing the HWB will initiate the USB subsystem, enumerating\r
- * the device (which has <b>no actual functionality beyond\r
- * enumeration as a device or as a host in this demo</b>, and serves\r
- * only to demonstrate the USB portion of the library).\r
- * \r
- * Pressing the HWB a second time will turn off the USB system.\r
- *\r
- * When activated, the USB events will be printed through the\r
- * serial USART.\r
- *\r
- * \section SSec_Options Project Options\r
- *\r
- * The following defines can be found in this demo, which can control the demo behaviour when defined, or changed in value.\r
- *\r
- * <table>\r
- * <tr>\r
- * <td>\r
- * None\r
- * </td>\r
- * </tr>\r
- * </table>\r
- */\r
+++ /dev/null
-/*\r
- LUFA Library\r
- Copyright (C) Dean Camera, 2009.\r
- \r
- dean [at] fourwalledcubicle [dot] com\r
- www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
- Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
- Permission to use, copy, modify, and distribute this software\r
- and its documentation for any purpose and without fee is hereby\r
- granted, provided that the above copyright notice appear in all\r
- copies and that both that the copyright notice and this\r
- permission notice and warranty disclaimer appear in supporting\r
- documentation, and that the name of the author not be used in\r
- advertising or publicity pertaining to distribution of the\r
- software without specific, written prior permission.\r
-\r
- The author disclaim all warranties with regard to this\r
- software, including all implied warranties of merchantability\r
- and fitness. In no event shall the author be liable for any\r
- special, indirect or consequential damages or any damages\r
- whatsoever resulting from loss of use, data or profits, whether\r
- in an action of contract, negligence or other tortious action,\r
- arising out of or in connection with the use or performance of\r
- this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- * This file contains dummy handlers for all the possible USB events passed to the\r
- * application by the library (see library documentation for more details on USB events).\r
- *\r
- * Each event is caught and printed to the USART so that they may be monitored.\r
- */\r
- \r
-#define INCLUDE_FROM_TESTEVENTS_C\r
-#include "TestEvents.h"\r
-\r
-/** Simple routine which aborts the program execution when a fatal error occurs, and is passed to the\r
- * application via an event. When run, this function shuts down the USB interface, indicates an error\r
- * via the board LEDs, prints an error message to the USART and then enters an infinite loop, preventing\r
- * any more application code (other than interrupts) from executing.\r
- */\r
-static void Abort_Program(void)\r
-{\r
- USB_ShutDown();\r
-\r
- LEDs_SetAllLEDs(LEDS_LED1 | LEDS_LED3);\r
-\r
- puts_P(PSTR(ESC_FG_RED ESC_INVERSE_ON "\r\n**PROGRAM ABORT**" ESC_FG_WHITE));\r
- for (;;);\r
-}\r
-\r
-/** Event handler for the USB_UIDChange event. When fired, the event is logged to the USART. */\r
-void EVENT_USB_UIDChange(void)\r
-{\r
- char* ModeStrPtr;\r
-\r
- puts_P(PSTR(ESC_FG_RED EVENT_PREFIX "UID Change\r\n"));\r
-\r
- if (USB_CurrentMode == USB_MODE_DEVICE)\r
- ModeStrPtr = PSTR("DEVICE");\r
- else if (USB_CurrentMode == USB_MODE_HOST)\r
- ModeStrPtr = PSTR("HOST");\r
- else\r
- ModeStrPtr = PSTR("N/A");\r
-\r
- printf_P(PSTR(" -- New Mode %S\r\n" ESC_FG_WHITE), ModeStrPtr);\r
-}\r
-\r
-/**\r
- * Event handler for the USB_InitFailure event. When fired, the event is logged to the USART and the program\r
- * execution aborted.\r
- */\r
-void EVENT_USB_InitFailure(const uint8_t ErrorCode)\r
-{\r
- char* ModeStrPtr;\r
- \r
- puts_P(PSTR(ESC_FG_RED EVENT_PREFIX "Power On Fail\r\n"));\r
-\r
- if (USB_CurrentMode == USB_MODE_DEVICE)\r
- ModeStrPtr = PSTR("DEVICE");\r
- else if (USB_CurrentMode == USB_MODE_HOST)\r
- ModeStrPtr = PSTR("HOST");\r
- else\r
- ModeStrPtr = PSTR("N/A");\r
- \r
- printf_P(PSTR(" -- Mode %S\r\n"\r
- " -- Error Code %d\r\n" ESC_FG_WHITE), ModeStrPtr, ErrorCode);\r
-\r
- Abort_Program();\r
-}\r
-\r
-/** Event handler for the USB_Device_Connect event. When fired, the event is logged to the USART. */\r
-void EVENT_USB_Device_Connect(void)\r
-{\r
- puts_P(PSTR(ESC_FG_GREEN EVENT_PREFIX "USB Connect\r\n" ESC_FG_WHITE));\r
-}\r
-\r
-/** Event handler for the USB_Device_Disconnect event. When fired, the event is logged to the USART. */\r
-void EVENT_USB_Device_Disconnect(void)\r
-{\r
- puts_P(PSTR(ESC_FG_GREEN EVENT_PREFIX "USB Disconnect\r\n" ESC_FG_WHITE));\r
-}\r
-\r
-/** Event handler for the USB_Device_Suspend event. When fired, the event is logged to the USART. */\r
-void EVENT_USB_Device_Suspend(void)\r
-{\r
- puts_P(PSTR(ESC_FG_YELLOW EVENT_PREFIX "USB Sleep\r\n" ESC_FG_WHITE));\r
-}\r
-\r
-/** Event handler for the USB_Device_WakeUp event. When fired, the event is logged to the USART. */\r
-void EVENT_USB_Device_WakeUp(void)\r
-{\r
- puts_P(PSTR(ESC_FG_YELLOW EVENT_PREFIX "USB Wakeup\r\n" ESC_FG_WHITE));\r
-}\r
-\r
-/** Event handler for the USB_Device_Reset event. When fired, the event is logged to the USART. */\r
-void EVENT_USB_Device_Reset(void)\r
-{\r
- puts_P(PSTR(ESC_FG_YELLOW EVENT_PREFIX "USB Reset\r\n" ESC_FG_WHITE));\r
-}\r
-\r
-/** Event handler for the USB_Device_UnhandledControlRequest event. When fired, the event is logged to the USART. */\r
-void EVENT_USB_Device_UnhandledControlRequest(void)\r
-{\r
- printf_P(PSTR(ESC_FG_YELLOW EVENT_PREFIX "Ctrl Request\r\n"\r
- " -- Req Data %d\r\n"\r
- " -- Req Type %d\r\n"\r
- " -- Req Length %d\r\n" ESC_FG_WHITE), USB_ControlRequest.bRequest,\r
- USB_ControlRequest.bmRequestType,\r
- USB_ControlRequest.wLength);\r
-}\r
-\r
-/** Event handler for the USB_Device_ConfigurationChanged event. When fired, the event is logged to the USART. */\r
-void EVENT_USB_Device_ConfigurationChanged(void)\r
-{\r
- puts_P(PSTR(ESC_FG_YELLOW EVENT_PREFIX "Configuration Number Changed\r\n" ESC_FG_WHITE));\r
-}\r
-\r
-/**\r
- * Event handler for the USB_Host_HostError event. When fired, the event is logged to the USART and the program\r
- * execution aborted.\r
- */\r
-void EVENT_USB_Host_HostError(const uint8_t ErrorCode)\r
-{\r
- printf_P(PSTR(ESC_FG_RED EVENT_PREFIX "Host Mode Error\r\n"\r
- " -- Error Code %d\r\n" ESC_FG_WHITE), ErrorCode);\r
-\r
- Abort_Program();\r
-}\r
-\r
-/** Event handler for the USB_Host_DeviceEnumerationFailed event. When fired, the event is logged to the USART. */\r
-void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode)\r
-{\r
- printf_P(PSTR(ESC_FG_RED EVENT_PREFIX "Dev Enum Error\r\n"\r
- " -- Error Code %d\r\n"\r
- " -- Sub Error Code %d\r\n"\r
- " -- In State %d\r\n" ESC_FG_WHITE), ErrorCode, SubErrorCode, USB_HostState);\r
-}\r
-\r
-/** Event handler for the USB_Host_DeviceEnumerationComplete event. When fired, the event is logged to the USART. */\r
-void EVENT_USB_Host_DeviceEnumerationComplete(void)\r
-{\r
- puts_P(PSTR(ESC_FG_YELLOW EVENT_PREFIX "Device Enumeration Complete\r\n" ESC_FG_WHITE));\r
-}\r
-\r
-/** Event handler for the USB_Host_DeviceAttached event. When fired, the event is logged to the USART. */\r
-void EVENT_USB_Host_DeviceAttached(void)\r
-{\r
- puts_P(PSTR(ESC_FG_GREEN EVENT_PREFIX "Device Attached\r\n" ESC_FG_WHITE));\r
-}\r
-\r
-/** Event handler for the USB_Host_DeviceUnattached event. When fired, the event is logged to the USART. */\r
-void EVENT_USB_Host_DeviceUnattached(void)\r
-{\r
- puts_P(PSTR(ESC_FG_GREEN EVENT_PREFIX "Device Unattached\r\n" ESC_FG_WHITE));\r
-}\r
+++ /dev/null
-/*\r
- LUFA Library\r
- Copyright (C) Dean Camera, 2009.\r
- \r
- dean [at] fourwalledcubicle [dot] com\r
- www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
- Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
- Permission to use, copy, modify, and distribute this software\r
- and its documentation for any purpose and without fee is hereby\r
- granted, provided that the above copyright notice appear in all\r
- copies and that both that the copyright notice and this\r
- permission notice and warranty disclaimer appear in supporting\r
- documentation, and that the name of the author not be used in\r
- advertising or publicity pertaining to distribution of the\r
- software without specific, written prior permission.\r
-\r
- The author disclaim all warranties with regard to this\r
- software, including all implied warranties of merchantability\r
- and fitness. In no event shall the author be liable for any\r
- special, indirect or consequential damages or any damages\r
- whatsoever resulting from loss of use, data or profits, whether\r
- in an action of contract, negligence or other tortious action,\r
- arising out of or in connection with the use or performance of\r
- this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- * Header file for TestEvents.c.\r
- */\r
-\r
-#ifndef _TESTEVENTS_H_\r
-#define _TESTEVENTS_H_\r
-\r
- /* Includes: */\r
- #include <avr/io.h>\r
-\r
- #include <LUFA/Common/Common.h>\r
- #include <LUFA/Drivers/USB/USB.h>\r
- #include <LUFA/Drivers/Board/LEDs.h>\r
- #include <LUFA/Drivers/Peripheral/SerialStream.h>\r
- #include <LUFA/Drivers/Misc/TerminalCodes.h>
-\r
- /* Macros: */\r
- /** Prefix sent through the USART when an even fires before the actual event message. */\r
- #define EVENT_PREFIX ESC_INVERSE_ON "EVENT:" ESC_INVERSE_OFF " "\r
-\r
- /* Function Prototypes: */\r
- #if defined(INCLUDE_FROM_TESTEVENTS_C) || defined(__DOXYGEN__)\r
- static void Abort_Program(void) ATTR_NO_RETURN;\r
- #endif\r
-\r
- void EVENT_USB_InitFailure(const uint8_t ErrorCode);\r
- void EVENT_USB_UIDChange(void);\r
- void EVENT_USB_Host_HostError(const uint8_t ErrorCode);\r
- void EVENT_USB_Host_DeviceAttached(void);\r
- void EVENT_USB_Host_DeviceUnattached(void);\r
- void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode);\r
- void EVENT_USB_Host_DeviceEnumerationComplete(void);\r
- void EVENT_USB_Device_Connect(void);\r
- void EVENT_USB_Device_Disconnect(void);\r
- void EVENT_USB_Device_ConfigurationChanged(void);\r
- void EVENT_USB_Device_ConfigurationChanged(void);\r
- void EVENT_USB_Device_Suspend(void);\r
- void EVENT_USB_Device_WakeUp(void);\r
- void EVENT_USB_Device_Reset(void); \r
- \r
-#endif\r
+++ /dev/null
-# Hey Emacs, this is a -*- makefile -*-\r
-#----------------------------------------------------------------------------\r
-# WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.\r
-# >> Modified for use with the LUFA project. <<\r
-#\r
-# Released to the Public Domain\r
-#\r
-# Additional material for this makefile was written by:\r
-# Peter Fleury\r
-# Tim Henigan\r
-# Colin O'Flynn\r
-# Reiner Patommel\r
-# Markus Pfaff\r
-# Sander Pool\r
-# Frederik Rouleau\r
-# Carlos Lamas\r
-# Dean Camera\r
-# Opendous Inc.\r
-# Denver Gingerich\r
-#\r
-#----------------------------------------------------------------------------\r
-# On command line:\r
-#\r
-# make all = Make software.\r
-#\r
-# make clean = Clean out built project files.\r
-#\r
-# make coff = Convert ELF to AVR COFF.\r
-#\r
-# make extcoff = Convert ELF to AVR Extended COFF.\r
-#\r
-# make program = Download the hex file to the device, using avrdude.\r
-# Please customize the avrdude settings below first!\r
-#\r
-# make dfu = Download the hex file to the device, using dfu-programmer (must\r
-# have dfu-programmer installed).\r
-#\r
-# make flip = Download the hex file to the device, using Atmel FLIP (must\r
-# have Atmel FLIP installed).\r
-#\r
-# make dfu-ee = Download the eeprom file to the device, using dfu-programmer\r
-# (must have dfu-programmer installed).\r
-#\r
-# make flip-ee = Download the eeprom file to the device, using Atmel FLIP\r
-# (must have Atmel FLIP installed).\r
-#\r
-# make doxygen = Generate DoxyGen documentation for the project (must have\r
-# DoxyGen installed)\r
-#\r
-# make debug = Start either simulavr or avarice as specified for debugging, \r
-# with avr-gdb or avr-insight as the front end for debugging.\r
-#\r
-# make filename.s = Just compile filename.c into the assembler code only.\r
-#\r
-# make filename.i = Create a preprocessed source file for use in submitting\r
-# bug reports to the GCC project.\r
-#\r
-# To rebuild project do "make clean" then "make all".\r
-#----------------------------------------------------------------------------\r
-\r
-\r
-# MCU name\r
-MCU = at90usb1287\r
-\r
-\r
-# Target board (see library "Board Types" documentation, USER or blank for projects not requiring\r
-# LUFA board drivers). If USER is selected, put custom board drivers in a directory called \r
-# "Board" inside the application directory.\r
-BOARD = USBKEY\r
-\r
-\r
-# Processor frequency.\r
-# This will define a symbol, F_CPU, in all source code files equal to the \r
-# processor frequency in Hz. You can then use this symbol in your source code to \r
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done\r
-# automatically to create a 32-bit value in your source code.\r
-#\r
-# This will be an integer division of F_CLOCK below, as it is sourced by\r
-# F_CLOCK after it has run through any CPU prescalers. Note that this value\r
-# does not *change* the processor frequency - it should merely be updated to\r
-# reflect the processor speed set externally so that the code can use accurate\r
-# software delays.\r
-F_CPU = 8000000\r
-\r
-\r
-# Input clock frequency.\r
-# This will define a symbol, F_CLOCK, in all source code files equal to the \r
-# input clock frequency (before any prescaling is performed) in Hz. This value may\r
-# differ from F_CPU if prescaling is used on the latter, and is required as the\r
-# raw input clock is fed directly to the PLL sections of the AVR for high speed\r
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'\r
-# at the end, this will be done automatically to create a 32-bit value in your\r
-# source code.\r
-#\r
-# If no clock division is performed on the input clock inside the AVR (via the\r
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.\r
-F_CLOCK = $(F_CPU)\r
-\r
-\r
-# Output format. (can be srec, ihex, binary)\r
-FORMAT = ihex\r
-\r
-\r
-# Target file name (without extension).\r
-TARGET = TestApp\r
-\r
-\r
-# Object files directory\r
-# To put object files in current directory, use a dot (.), do NOT make\r
-# this an empty or blank macro!\r
-OBJDIR = .\r
-\r
-\r
-# Path to the LUFA library\r
-LUFA_PATH = ../../..\r
-\r
-\r
-# LUFA library compile-time options\r
-LUFA_OPTS = -D USE_FLASH_DESCRIPTORS\r
-\r
-\r
-# List C source files here. (C dependencies are automatically generated.)\r
-SRC = $(TARGET).c \\r
- TestEvents.c \\r
- Descriptors.c \\r
- $(LUFA_PATH)/LUFA/Drivers/Board/Temperature.c \\r
- $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c \\r
- $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
-\r
-\r
-# List C++ source files here. (C dependencies are automatically generated.)\r
-CPPSRC = \r
-\r
-\r
-# List Assembler source files here.\r
-# Make them always end in a capital .S. Files ending in a lowercase .s\r
-# will not be considered source files but generated files (assembler\r
-# output from the compiler), and will be deleted upon "make clean"!\r
-# Even though the DOS/Win* filesystem matches both .s and .S the same,\r
-# it will preserve the spelling of the filenames, and gcc itself does\r
-# care about how the name is spelled on its command-line.\r
-ASRC =\r
-\r
-\r
-# Optimization level, can be [0, 1, 2, 3, s]. \r
-# 0 = turn off optimization. s = optimize for size.\r
-# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)\r
-OPT = s\r
-\r
-\r
-# Debugging format.\r
-# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.\r
-# AVR Studio 4.10 requires dwarf-2.\r
-# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.\r
-DEBUG = dwarf-2\r
-\r
-\r
-# List any extra directories to look for include files here.\r
-# Each directory must be seperated by a space.\r
-# Use forward slashes for directory separators.\r
-# For a directory that has spaces, enclose it in quotes.\r
-EXTRAINCDIRS = $(LUFA_PATH)/\r
-\r
-\r
-# Compiler flag to set the C Standard level.\r
-# c89 = "ANSI" C\r
-# gnu89 = c89 plus GCC extensions\r
-# c99 = ISO C99 standard (not yet fully implemented)\r
-# gnu99 = c99 plus GCC extensions\r
-CSTANDARD = -std=gnu99\r
-\r
-\r
-# Place -D or -U options here for C sources\r
-CDEFS = -DF_CPU=$(F_CPU)UL -DF_CLOCK=$(F_CLOCK)UL -DBOARD=BOARD_$(BOARD) $(LUFA_OPTS)\r
-\r
-\r
-# Place -D or -U options here for ASM sources\r
-ADEFS = -DF_CPU=$(F_CPU)\r
-\r
-\r
-# Place -D or -U options here for C++ sources\r
-CPPDEFS = -DF_CPU=$(F_CPU)UL\r
-#CPPDEFS += -D__STDC_LIMIT_MACROS\r
-#CPPDEFS += -D__STDC_CONSTANT_MACROS\r
-\r
-\r
-\r
-#---------------- Compiler Options C ----------------\r
-# -g*: generate debugging information\r
-# -O*: optimization level\r
-# -f...: tuning, see GCC manual and avr-libc documentation\r
-# -Wall...: warning level\r
-# -Wa,...: tell GCC to pass this to the assembler.\r
-# -adhlns...: create assembler listing\r
-CFLAGS = -g$(DEBUG)\r
-CFLAGS += $(CDEFS)\r
-CFLAGS += -O$(OPT)\r
-CFLAGS += -funsigned-char\r
-CFLAGS += -funsigned-bitfields\r
-CFLAGS += -ffunction-sections\r
-CFLAGS += -fpack-struct\r
-CFLAGS += -fshort-enums\r
-CFLAGS += -Wall\r
-CFLAGS += -Wstrict-prototypes\r
-#CFLAGS += -mshort-calls\r
-CFLAGS += -Wundef\r
-#CFLAGS += -fno-unit-at-a-time\r
-#CFLAGS += -Wunreachable-code\r
-#CFLAGS += -Wsign-compare\r
-CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)\r
-CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))\r
-CFLAGS += $(CSTANDARD)\r
-\r
-\r
-#---------------- Compiler Options C++ ----------------\r
-# -g*: generate debugging information\r
-# -O*: optimization level\r
-# -f...: tuning, see GCC manual and avr-libc documentation\r
-# -Wall...: warning level\r
-# -Wa,...: tell GCC to pass this to the assembler.\r
-# -adhlns...: create assembler listing\r
-CPPFLAGS = -g$(DEBUG)\r
-CPPFLAGS += $(CPPDEFS)\r
-CPPFLAGS += -O$(OPT)\r
-CPPFLAGS += -funsigned-char\r
-CPPFLAGS += -funsigned-bitfields\r
-CPPFLAGS += -fpack-struct\r
-CPPFLAGS += -fshort-enums\r
-CPPFLAGS += -fno-exceptions\r
-CPPFLAGS += -Wall\r
-CFLAGS += -Wundef\r
-#CPPFLAGS += -mshort-calls\r
-#CPPFLAGS += -fno-unit-at-a-time\r
-#CPPFLAGS += -Wstrict-prototypes\r
-#CPPFLAGS += -Wunreachable-code\r
-#CPPFLAGS += -Wsign-compare\r
-CPPFLAGS += -Wa,-adhlns=$(<:%.cpp=$(OBJDIR)/%.lst)\r
-CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))\r
-#CPPFLAGS += $(CSTANDARD)\r
-\r
-\r
-#---------------- Assembler Options ----------------\r
-# -Wa,...: tell GCC to pass this to the assembler.\r
-# -adhlns: create listing\r
-# -gstabs: have the assembler create line number information; note that\r
-# for use in COFF files, additional information about filenames\r
-# and function names needs to be present in the assembler source\r
-# files -- see avr-libc docs [FIXME: not yet described there]\r
-# -listing-cont-lines: Sets the maximum number of continuation lines of hex \r
-# dump that will be displayed for a given single line of source input.\r
-ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:%.S=$(OBJDIR)/%.lst),-gstabs,--listing-cont-lines=100\r
-\r
-\r
-#---------------- Library Options ----------------\r
-# Minimalistic printf version\r
-PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min\r
-\r
-# Floating point printf version (requires MATH_LIB = -lm below)\r
-PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt\r
-\r
-# If this is left blank, then it will use the Standard printf version.\r
-PRINTF_LIB = \r
-#PRINTF_LIB = $(PRINTF_LIB_MIN)\r
-#PRINTF_LIB = $(PRINTF_LIB_FLOAT)\r
-\r
-\r
-# Minimalistic scanf version\r
-SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min\r
-\r
-# Floating point + %[ scanf version (requires MATH_LIB = -lm below)\r
-SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt\r
-\r
-# If this is left blank, then it will use the Standard scanf version.\r
-SCANF_LIB = \r
-#SCANF_LIB = $(SCANF_LIB_MIN)\r
-#SCANF_LIB = $(SCANF_LIB_FLOAT)\r
-\r
-\r
-MATH_LIB = -lm\r
-\r
-\r
-# List any extra directories to look for libraries here.\r
-# Each directory must be seperated by a space.\r
-# Use forward slashes for directory separators.\r
-# For a directory that has spaces, enclose it in quotes.\r
-EXTRALIBDIRS = \r
-\r
-\r
-\r
-#---------------- External Memory Options ----------------\r
-\r
-# 64 KB of external RAM, starting after internal RAM (ATmega128!),\r
-# used for variables (.data/.bss) and heap (malloc()).\r
-#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff\r
-\r
-# 64 KB of external RAM, starting after internal RAM (ATmega128!),\r
-# only used for heap (malloc()).\r
-#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff\r
-\r
-EXTMEMOPTS =\r
-\r
-\r
-\r
-#---------------- Linker Options ----------------\r
-# -Wl,...: tell GCC to pass this to linker.\r
-# -Map: create map file\r
-# --cref: add cross reference to map file\r
-LDFLAGS = -Wl,-Map=$(TARGET).map,--cref\r
-LDFLAGS += -Wl,--relax \r
-LDFLAGS += -Wl,--gc-sections\r
-LDFLAGS += $(EXTMEMOPTS)\r
-LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))\r
-LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)\r
-#LDFLAGS += -T linker_script.x\r
-\r
-\r
-\r
-#---------------- Programming Options (avrdude) ----------------\r
-\r
-# Programming hardware: alf avr910 avrisp bascom bsd \r
-# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500\r
-#\r
-# Type: avrdude -c ?\r
-# to get a full listing.\r
-#\r
-AVRDUDE_PROGRAMMER = jtagmkII\r
-\r
-# com1 = serial port. Use lpt1 to connect to parallel port.\r
-AVRDUDE_PORT = usb\r
-\r
-AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex\r
-#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep\r
-\r
-\r
-# Uncomment the following if you want avrdude's erase cycle counter.\r
-# Note that this counter needs to be initialized first using -Yn,\r
-# see avrdude manual.\r
-#AVRDUDE_ERASE_COUNTER = -y\r
-\r
-# Uncomment the following if you do /not/ wish a verification to be\r
-# performed after programming the device.\r
-#AVRDUDE_NO_VERIFY = -V\r
-\r
-# Increase verbosity level. Please use this when submitting bug\r
-# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> \r
-# to submit bug reports.\r
-#AVRDUDE_VERBOSE = -v -v\r
-\r
-AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)\r
-AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)\r
-AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)\r
-AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)\r
-\r
-\r
-\r
-#---------------- Debugging Options ----------------\r
-\r
-# For simulavr only - target MCU frequency.\r
-DEBUG_MFREQ = $(F_CPU)\r
-\r
-# Set the DEBUG_UI to either gdb or insight.\r
-# DEBUG_UI = gdb\r
-DEBUG_UI = insight\r
-\r
-# Set the debugging back-end to either avarice, simulavr.\r
-DEBUG_BACKEND = avarice\r
-#DEBUG_BACKEND = simulavr\r
-\r
-# GDB Init Filename.\r
-GDBINIT_FILE = __avr_gdbinit\r
-\r
-# When using avarice settings for the JTAG\r
-JTAG_DEV = /dev/com1\r
-\r
-# Debugging port used to communicate between GDB / avarice / simulavr.\r
-DEBUG_PORT = 4242\r
-\r
-# Debugging host used to communicate between GDB / avarice / simulavr, normally\r
-# just set to localhost unless doing some sort of crazy debugging when \r
-# avarice is running on a different computer.\r
-DEBUG_HOST = localhost\r
-\r
-\r
-\r
-#============================================================================\r
-\r
-\r
-# Define programs and commands.\r
-SHELL = sh\r
-CC = avr-gcc\r
-OBJCOPY = avr-objcopy\r
-OBJDUMP = avr-objdump\r
-SIZE = avr-size\r
-AR = avr-ar rcs\r
-NM = avr-nm\r
-AVRDUDE = avrdude\r
-REMOVE = rm -f\r
-REMOVEDIR = rm -rf\r
-COPY = cp\r
-WINSHELL = cmd\r
-\r
-# Define Messages\r
-# English\r
-MSG_ERRORS_NONE = Errors: none\r
-MSG_BEGIN = -------- begin --------\r
-MSG_END = -------- end --------\r
-MSG_SIZE_BEFORE = Size before: \r
-MSG_SIZE_AFTER = Size after:\r
-MSG_COFF = Converting to AVR COFF:\r
-MSG_EXTENDED_COFF = Converting to AVR Extended COFF:\r
-MSG_FLASH = Creating load file for Flash:\r
-MSG_EEPROM = Creating load file for EEPROM:\r
-MSG_EXTENDED_LISTING = Creating Extended Listing:\r
-MSG_SYMBOL_TABLE = Creating Symbol Table:\r
-MSG_LINKING = Linking:\r
-MSG_COMPILING = Compiling C:\r
-MSG_COMPILING_CPP = Compiling C++:\r
-MSG_ASSEMBLING = Assembling:\r
-MSG_CLEANING = Cleaning project:\r
-MSG_CREATING_LIBRARY = Creating library:\r
-\r
-\r
-\r
-\r
-# Define all object files.\r
-OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o) \r
-\r
-# Define all listing files.\r
-LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst) \r
-\r
-\r
-# Compiler flags to generate dependency files.\r
-GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d\r
-\r
-\r
-# Combine all necessary flags and optional flags.\r
-# Add target processor to flags.\r
-ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)\r
-ALL_CPPFLAGS = -mmcu=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS)\r
-ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)\r
-\r
-\r
-\r
-\r
-\r
-# Default target.\r
-all: begin gccversion sizebefore build checkinvalidevents showliboptions showtarget sizeafter end\r
-\r
-# Change the build target to build a HEX file or a library.\r
-build: elf hex eep lss sym\r
-#build: lib\r
-\r
-\r
-elf: $(TARGET).elf\r
-hex: $(TARGET).hex\r
-eep: $(TARGET).eep\r
-lss: $(TARGET).lss\r
-sym: $(TARGET).sym\r
-LIBNAME=lib$(TARGET).a\r
-lib: $(LIBNAME)\r
-\r
-\r
-\r
-# Eye candy.\r
-# AVR Studio 3.x does not check make's exit code but relies on\r
-# the following magic strings to be generated by the compile job.\r
-begin:\r
- @echo\r
- @echo $(MSG_BEGIN)\r
-\r
-end:\r
- @echo $(MSG_END)\r
- @echo\r
-\r
-\r
-# Display size of file.\r
-HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex\r
-ELFSIZE = $(SIZE) $(MCU_FLAG) $(FORMAT_FLAG) $(TARGET).elf\r
-MCU_FLAG = $(shell $(SIZE) --help | grep -- --mcu > /dev/null && echo --mcu=$(MCU) )\r
-FORMAT_FLAG = $(shell $(SIZE) --help | grep -- --format=.*avr > /dev/null && echo --format=avr )\r
-\r
-sizebefore:\r
- @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \\r
- 2>/dev/null; echo; fi\r
-\r
-sizeafter:\r
- @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \\r
- 2>/dev/null; echo; fi\r
-\r
-$(LUFA_PATH)/LUFA/LUFA_Events.lst:\r
- @make -C $(LUFA_PATH)/LUFA/ LUFA_Events.lst\r
-\r
-checkinvalidevents: $(LUFA_PATH)/LUFA/LUFA_Events.lst\r
- @echo\r
- @echo Checking for invalid events...\r
- @$(shell) avr-nm $(TARGET).elf | sed -n -e 's/^.*EVENT_/EVENT_/p' | \\r
- grep -F -v --file=$(LUFA_PATH)/LUFA/LUFA_Events.lst > InvalidEvents.tmp || true\r
- @sed -n -e 's/^/ WARNING - INVALID EVENT NAME: /p' InvalidEvents.tmp\r
- @if test -s InvalidEvents.tmp; then exit 1; fi\r
- \r
-showliboptions:\r
- @echo\r
- @echo ---- Compile Time Library Options ----\r
- @for i in $(LUFA_OPTS:-D%=%); do \\r
- echo $$i; \\r
- done\r
- @echo --------------------------------------\r
-\r
-showtarget:\r
- @echo\r
- @echo --------- Target Information ---------\r
- @echo AVR Model: $(MCU)\r
- @echo Board: $(BOARD)\r
- @echo Clock: $(F_CPU)Hz CPU, $(F_CLOCK)Hz Master\r
- @echo --------------------------------------\r
- \r
-\r
-# Display compiler version information.\r
-gccversion : \r
- @$(CC) --version\r
-\r
-\r
-# Program the device. \r
-program: $(TARGET).hex $(TARGET).eep\r
- $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)\r
-\r
-flip: $(TARGET).hex\r
- batchisp -hardware usb -device $(MCU) -operation erase f\r
- batchisp -hardware usb -device $(MCU) -operation loadbuffer $(TARGET).hex program\r
- batchisp -hardware usb -device $(MCU) -operation start reset 0\r
-\r
-dfu: $(TARGET).hex\r
- dfu-programmer $(MCU) erase\r
- dfu-programmer $(MCU) flash --debug 1 $(TARGET).hex\r
- dfu-programmer $(MCU) reset\r
-\r
-flip-ee: $(TARGET).hex $(TARGET).eep\r
- $(COPY) $(TARGET).eep $(TARGET)eep.hex\r
- batchisp -hardware usb -device $(MCU) -operation memory EEPROM erase\r
- batchisp -hardware usb -device $(MCU) -operation memory EEPROM loadbuffer $(TARGET)eep.hex program\r
- batchisp -hardware usb -device $(MCU) -operation start reset 0\r
- $(REMOVE) $(TARGET)eep.hex\r
-\r
-dfu-ee: $(TARGET).hex $(TARGET).eep\r
- dfu-programmer $(MCU) flash-eeprom --debug 1 --suppress-bootloader-mem $(TARGET).eep\r
- dfu-programmer $(MCU) reset\r
-\r
-\r
-# Generate avr-gdb config/init file which does the following:\r
-# define the reset signal, load the target file, connect to target, and set \r
-# a breakpoint at main().\r
-gdb-config: \r
- @$(REMOVE) $(GDBINIT_FILE)\r
- @echo define reset >> $(GDBINIT_FILE)\r
- @echo SIGNAL SIGHUP >> $(GDBINIT_FILE)\r
- @echo end >> $(GDBINIT_FILE)\r
- @echo file $(TARGET).elf >> $(GDBINIT_FILE)\r
- @echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE)\r
-ifeq ($(DEBUG_BACKEND),simulavr)\r
- @echo load >> $(GDBINIT_FILE)\r
-endif\r
- @echo break main >> $(GDBINIT_FILE)\r
-\r
-debug: gdb-config $(TARGET).elf\r
-ifeq ($(DEBUG_BACKEND), avarice)\r
- @echo Starting AVaRICE - Press enter when "waiting to connect" message displays.\r
- @$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \\r
- $(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)\r
- @$(WINSHELL) /c pause\r
-\r
-else\r
- @$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \\r
- $(DEBUG_MFREQ) --port $(DEBUG_PORT)\r
-endif\r
- @$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)\r
-\r
-\r
-\r
-\r
-# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.\r
-COFFCONVERT = $(OBJCOPY) --debugging\r
-COFFCONVERT += --change-section-address .data-0x800000\r
-COFFCONVERT += --change-section-address .bss-0x800000\r
-COFFCONVERT += --change-section-address .noinit-0x800000\r
-COFFCONVERT += --change-section-address .eeprom-0x810000\r
-\r
-\r
-\r
-coff: $(TARGET).elf\r
- @echo\r
- @echo $(MSG_COFF) $(TARGET).cof\r
- $(COFFCONVERT) -O coff-avr $< $(TARGET).cof\r
-\r
-\r
-extcoff: $(TARGET).elf\r
- @echo\r
- @echo $(MSG_EXTENDED_COFF) $(TARGET).cof\r
- $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof\r
-\r
-\r
-\r
-# Create final output files (.hex, .eep) from ELF output file.\r
-%.hex: %.elf\r
- @echo\r
- @echo $(MSG_FLASH) $@\r
- $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@\r
-\r
-%.eep: %.elf\r
- @echo\r
- @echo $(MSG_EEPROM) $@\r
- -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \\r
- --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) $< $@ || exit 0\r
-\r
-# Create extended listing file from ELF output file.\r
-%.lss: %.elf\r
- @echo\r
- @echo $(MSG_EXTENDED_LISTING) $@\r
- $(OBJDUMP) -h -z -S $< > $@\r
-\r
-# Create a symbol table from ELF output file.\r
-%.sym: %.elf\r
- @echo\r
- @echo $(MSG_SYMBOL_TABLE) $@\r
- $(NM) -n $< > $@\r
-\r
-\r
-\r
-# Create library from object files.\r
-.SECONDARY : $(TARGET).a\r
-.PRECIOUS : $(OBJ)\r
-%.a: $(OBJ)\r
- @echo\r
- @echo $(MSG_CREATING_LIBRARY) $@\r
- $(AR) $@ $(OBJ)\r
-\r
-\r
-# Link: create ELF output file from object files.\r
-.SECONDARY : $(TARGET).elf\r
-.PRECIOUS : $(OBJ)\r
-%.elf: $(OBJ)\r
- @echo\r
- @echo $(MSG_LINKING) $@\r
- $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)\r
-\r
-\r
-# Compile: create object files from C source files.\r
-$(OBJDIR)/%.o : %.c\r
- @echo\r
- @echo $(MSG_COMPILING) $<\r
- $(CC) -c $(ALL_CFLAGS) $< -o $@ \r
-\r
-\r
-# Compile: create object files from C++ source files.\r
-$(OBJDIR)/%.o : %.cpp\r
- @echo\r
- @echo $(MSG_COMPILING_CPP) $<\r
- $(CC) -c $(ALL_CPPFLAGS) $< -o $@ \r
-\r
-\r
-# Compile: create assembler files from C source files.\r
-%.s : %.c\r
- $(CC) -S $(ALL_CFLAGS) $< -o $@\r
-\r
-\r
-# Compile: create assembler files from C++ source files.\r
-%.s : %.cpp\r
- $(CC) -S $(ALL_CPPFLAGS) $< -o $@\r
-\r
-\r
-# Assemble: create object files from assembler source files.\r
-$(OBJDIR)/%.o : %.S\r
- @echo\r
- @echo $(MSG_ASSEMBLING) $<\r
- $(CC) -c $(ALL_ASFLAGS) $< -o $@\r
-\r
-\r
-# Create preprocessed source for use in sending a bug report.\r
-%.i : %.c\r
- $(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@ \r
- \r
-\r
-# Target: clean project.\r
-clean: begin clean_list clean_binary end\r
-\r
-clean_binary:\r
- $(REMOVE) $(TARGET).hex\r
- \r
-clean_list:\r
- @echo $(MSG_CLEANING)\r
- $(REMOVE) $(TARGET).eep\r
- $(REMOVE) $(TARGET)eep.hex\r
- $(REMOVE) $(TARGET).cof\r
- $(REMOVE) $(TARGET).elf\r
- $(REMOVE) $(TARGET).map\r
- $(REMOVE) $(TARGET).sym\r
- $(REMOVE) $(TARGET).lss\r
- $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o)\r
- $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst)\r
- $(REMOVE) $(SRC:.c=.s)\r
- $(REMOVE) $(SRC:.c=.d)\r
- $(REMOVE) $(SRC:.c=.i)\r
- $(REMOVE) InvalidEvents.tmp\r
- $(REMOVEDIR) .dep\r
-\r
-doxygen:\r
- @echo Generating Project Documentation...\r
- @doxygen Doxygen.conf\r
- @echo Documentation Generation Complete.\r
-\r
-clean_doxygen:\r
- rm -rf Documentation\r
-\r
-# Create object files directory\r
-$(shell mkdir $(OBJDIR) 2>/dev/null)\r
-\r
-\r
-# Include the dependency files.\r
--include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)\r
-\r
-\r
-# Listing of phony targets.\r
-.PHONY : all checkinvalidevents showliboptions \\r
-showtarget begin finish end sizebefore sizeafter \\r
-gccversion build elf hex eep lss sym coff extcoff \\r
-program dfu flip flip-ee dfu-ee clean debug \\r
-clean_list clean_binary gdb-config doxygen
\ No newline at end of file
+++ /dev/null
-#
-# LUFA Library
-# Copyright (C) Dean Camera, 2009.
-#
-# dean [at] fourwalledcubicle [dot] com
-# www.fourwalledcubicle.com
-#
-
-# Makefile to build all the LUFA OTG Demos. Call with "make all" to
-# rebuild all OTG demos.
-
-# Projects are pre-cleaned before each one is built, to ensure any
-# custom LUFA library build options are reflected in the compiled
-# code.
-
-all:
- make -C TestApp clean
- make -C TestApp all
-
-%:
- make -C TestApp $@
\ No newline at end of file
%:
make -C Device/ $@
make -C Host/ $@
- make -C OTG/ $@
+ make -C DualRole/ $@