Fri, 17 Nov 2017 10:13:31 +0100
proper configuration, homing and planner optimization
2 | 1 | /* |
2 | LUFA Library | |
3 | Copyright (C) Dean Camera, 2010. | |
4 | ||
5 | dean [at] fourwalledcubicle [dot] com | |
6 | www.fourwalledcubicle.com | |
7 | */ | |
8 | ||
9 | /* | |
10 | Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) | |
11 | ||
12 | Permission to use, copy, modify, distribute, and sell this | |
13 | software and its documentation for any purpose is hereby granted | |
14 | without fee, provided that the above copyright notice appear in | |
15 | all copies and that both that the copyright notice and this | |
16 | permission notice and warranty disclaimer appear in supporting | |
17 | documentation, and that the name of the author not be used in | |
18 | advertising or publicity pertaining to distribution of the | |
19 | software without specific, written prior permission. | |
20 | ||
21 | The author disclaim all warranties with regard to this | |
22 | software, including all implied warranties of merchantability | |
23 | and fitness. In no event shall the author be liable for any | |
24 | special, indirect or consequential damages or any damages | |
25 | whatsoever resulting from loss of use, data or profits, whether | |
26 | in an action of contract, negligence or other tortious action, | |
27 | arising out of or in connection with the use or performance of | |
28 | this software. | |
29 | */ | |
30 | ||
31 | /** \file | |
32 | * | |
33 | * Header file for Descriptors.c. | |
34 | */ | |
35 | ||
36 | #ifndef _DESCRIPTORS_H_ | |
37 | #define _DESCRIPTORS_H_ | |
38 | ||
39 | /* Includes: */ | |
40 | #include <LUFA/Drivers/USB/USB.h> | |
41 | ||
42 | /* Product-specific definitions: */ | |
43 | #define ARDUINO_UNO_PID 0x0001 | |
44 | #define ARDUINO_MEGA2560_PID 0x0010 | |
45 | ||
46 | /* Macros: */ | |
47 | /** Descriptor type value for a DFU class functional descriptor. */ | |
48 | #define DTYPE_DFUFunctional 0x21 | |
49 | ||
50 | /** DFU attribute mask, indicating that the DFU device will detach and re-attach when a DFU_DETACH | |
51 | * command is issued, rather than the host issuing a USB Reset. | |
52 | */ | |
53 | #define ATTR_WILL_DETATCH (1 << 3) | |
54 | ||
55 | /** DFU attribute mask, indicating that the DFU device can communicate during the manifestation phase | |
56 | * (memory programming phase). | |
57 | */ | |
58 | #define ATTR_MANEFESTATION_TOLLERANT (1 << 2) | |
59 | ||
60 | /** DFU attribute mask, indicating that the DFU device can accept DFU_UPLOAD requests to send data from | |
61 | * the device to the host. | |
62 | */ | |
63 | #define ATTR_CAN_UPLOAD (1 << 1) | |
64 | ||
65 | /** DFU attribute mask, indicating that the DFU device can accept DFU_DNLOAD requests to send data from | |
66 | * the host to the device. | |
67 | */ | |
68 | #define ATTR_CAN_DOWNLOAD (1 << 0) | |
69 | ||
70 | #if defined(__AVR_AT90USB1287__) | |
71 | #define PRODUCT_ID_CODE 0x2FFB | |
72 | #define AVR_SIGNATURE_1 0x1E | |
73 | #define AVR_SIGNATURE_2 0x97 | |
74 | #define AVR_SIGNATURE_3 0x82 | |
75 | #elif defined(__AVR_AT90USB1286__) | |
76 | #define PRODUCT_ID_CODE 0x2FFB | |
77 | #define AVR_SIGNATURE_1 0x1E | |
78 | #define AVR_SIGNATURE_2 0x97 | |
79 | #define AVR_SIGNATURE_3 0x82 | |
80 | #elif defined(__AVR_AT90USB647__) | |
81 | #define PRODUCT_ID_CODE 0x2FF9 | |
82 | #define AVR_SIGNATURE_1 0x1E | |
83 | #define AVR_SIGNATURE_2 0x96 | |
84 | #define AVR_SIGNATURE_3 0x82 | |
85 | #elif defined(__AVR_AT90USB646__) | |
86 | #define PRODUCT_ID_CODE 0x2FF9 | |
87 | #define AVR_SIGNATURE_1 0x1E | |
88 | #define AVR_SIGNATURE_2 0x96 | |
89 | #define AVR_SIGNATURE_3 0x82 | |
90 | #elif defined(__AVR_ATmega32U6__) | |
91 | #define PRODUCT_ID_CODE 0x2FFB | |
92 | #define AVR_SIGNATURE_1 0x1E | |
93 | #define AVR_SIGNATURE_2 0x95 | |
94 | #define AVR_SIGNATURE_3 0x88 | |
95 | #elif defined(__AVR_ATmega32U4__) | |
96 | #define PRODUCT_ID_CODE 0x2FF4 | |
97 | #define AVR_SIGNATURE_1 0x1E | |
98 | #define AVR_SIGNATURE_2 0x95 | |
99 | #define AVR_SIGNATURE_3 0x87 | |
100 | #elif defined(__AVR_ATmega32U2__) | |
101 | #define PRODUCT_ID_CODE 0x2FF0 | |
102 | #define AVR_SIGNATURE_1 0x1E | |
103 | #define AVR_SIGNATURE_2 0x95 | |
104 | #define AVR_SIGNATURE_3 0x8A | |
105 | #elif defined(__AVR_ATmega16U4__) | |
106 | #define PRODUCT_ID_CODE 0x2FF3 | |
107 | #define AVR_SIGNATURE_1 0x1E | |
108 | #define AVR_SIGNATURE_2 0x94 | |
109 | #define AVR_SIGNATURE_3 0x88 | |
110 | #elif defined(__AVR_ATmega16U2__) | |
111 | #define PRODUCT_ID_CODE 0x2FEF | |
112 | #define AVR_SIGNATURE_1 0x1E | |
113 | #define AVR_SIGNATURE_2 0x94 | |
114 | #define AVR_SIGNATURE_3 0x89 | |
115 | #elif defined(__AVR_AT90USB162__) | |
116 | #define PRODUCT_ID_CODE 0x2FFA | |
117 | #define AVR_SIGNATURE_1 0x1E | |
118 | #define AVR_SIGNATURE_2 0x94 | |
119 | #define AVR_SIGNATURE_3 0x82 | |
120 | #elif defined(__AVR_AT90USB82__) | |
121 | #define PRODUCT_ID_CODE 0x2FEE | |
122 | #define AVR_SIGNATURE_1 0x1E | |
123 | #define AVR_SIGNATURE_2 0x93 | |
124 | #define AVR_SIGNATURE_3 0x89 | |
125 | #elif defined(__AVR_ATmega8U2__) | |
126 | #define PRODUCT_ID_CODE 0x2FF7 | |
127 | #define AVR_SIGNATURE_1 0x1E | |
128 | #define AVR_SIGNATURE_2 0x93 | |
129 | #define AVR_SIGNATURE_3 0x82 | |
130 | #else | |
131 | #error The selected AVR part is not currently supported by this bootloader. | |
132 | #endif | |
133 | ||
134 | #if !defined(PRODUCT_ID_CODE) | |
135 | #error Current AVR model is not supported by this bootloader. | |
136 | #endif | |
137 | ||
138 | /* Type Defines: */ | |
139 | /** Type define for a DFU class function descriptor. This descriptor gives DFU class information | |
140 | * to the host when read, indicating the DFU device's capabilities. | |
141 | */ | |
142 | typedef struct | |
143 | { | |
144 | USB_Descriptor_Header_t Header; /**< Standard descriptor header structure */ | |
145 | ||
146 | uint8_t Attributes; /**< DFU device attributes, a mask comprising of the | |
147 | * ATTR_* macros listed in this source file | |
148 | */ | |
149 | uint16_t DetachTimeout; /**< Timeout in milliseconds between a USB_DETACH | |
150 | * command being issued and the device detaching | |
151 | * from the USB bus | |
152 | */ | |
153 | uint16_t TransferSize; /**< Maximum number of bytes the DFU device can accept | |
154 | * from the host in a transaction | |
155 | */ | |
156 | uint16_t DFUSpecification; /**< BCD packed DFU specification number this DFU | |
157 | * device complies with | |
158 | */ | |
159 | } USB_DFU_Functional_Descriptor_t; | |
160 | ||
161 | /** Type define for the device configuration descriptor structure. This must be defined in the | |
162 | * application code, as the configuration descriptor contains several sub-descriptors which | |
163 | * vary between devices, and which describe the device's usage to the host. | |
164 | */ | |
165 | typedef struct | |
166 | { | |
167 | USB_Descriptor_Configuration_Header_t Config; | |
168 | USB_Descriptor_Interface_t DFU_Interface; | |
169 | USB_DFU_Functional_Descriptor_t DFU_Functional; | |
170 | } USB_Descriptor_Configuration_t; | |
171 | ||
172 | /* Function Prototypes: */ | |
173 | uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | |
174 | const uint8_t wIndex, | |
175 | void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); | |
176 | ||
177 | #endif |