Update TODO list
[trut64.git] / avr / usbdescriptors.h
blob878304b06d1140a49191f8f7d4557f1d1daaba96
1 /*
2 * Copyright (C) 2007 Anton Blad
3 * Copyright (C) 2007 Fredrik Kuivinen
4 * Copyright (C) 2007 Jakob Rosén
6 * This file is licensed under GPL v2.
7 */
9 #ifndef USBDESCRIPTORS_H
10 #define USBDESCRIPTORS_H
12 #include <avr/pgmspace.h>
14 #include "trutproto.h"
16 #define USB_LANGID 0x0809 // English (United Kingdom)
18 extern uint8_t ep_sizes[NUM_EPS];
20 typedef struct
22 uint8_t length;
23 uint8_t descriptorType;
24 uint16_t usb;
25 uint8_t deviceClass;
26 uint8_t deviceSubClass;
27 uint8_t deviceProtocol;
28 uint8_t maxPacketSize;
29 uint16_t vendorID;
30 uint16_t productID;
31 uint16_t device;
32 uint8_t manufacturer;
33 uint8_t product;
34 uint8_t serialNumber;
35 uint8_t numConfigurations;
36 } usb_device_descriptor;
38 typedef struct
40 uint8_t length;
41 uint8_t descriptorType;
42 uint16_t totalLength;
43 uint8_t numInterfaces;
44 uint8_t configurationValue;
45 uint8_t configuration;
46 uint8_t attributes;
47 uint8_t maxPower;
48 } usb_configuration_descriptor;
50 typedef struct
52 uint8_t length;
53 uint8_t descriptorType;
54 uint8_t interfaceNumber;
55 uint8_t alternateSetting;
56 uint8_t numEndpoints;
57 uint8_t interfaceClass;
58 uint8_t interfaceSubClass;
59 uint8_t interfaceProtocol;
60 uint8_t interface;
61 } usb_interface_descriptor;
63 typedef struct
65 uint8_t length;
66 uint8_t descriptorType;
67 uint8_t endpointAddress;
68 uint8_t attributes;
69 uint16_t maxPacketSize;
70 uint8_t interval;
71 } usb_endpoint_descriptor;
73 typedef struct
75 usb_configuration_descriptor configuration;
76 usb_interface_descriptor interface_0;
77 usb_endpoint_descriptor if1_endpoint_1;
78 usb_endpoint_descriptor if1_endpoint_2;
79 usb_interface_descriptor interface_1_setting_0;
80 usb_endpoint_descriptor if1_endpoint_3_bulkout;
81 usb_interface_descriptor interface_1_setting_1;
82 usb_endpoint_descriptor if1_endpoint_3_bulkin;
83 usb_interface_descriptor interface_1_setting_2;
84 usb_endpoint_descriptor if1_endpoint_3_introut;
85 usb_interface_descriptor interface_1_setting_3;
86 usb_endpoint_descriptor if1_endpoint_3_intrin;
87 } configuration_descriptor_1;
89 typedef struct
91 uint8_t length;
92 uint8_t descriptorType;
93 uint16_t language00;
94 } string_descriptor_0;
96 #define USB_NUMSTRINGS 9
97 extern PGM_P PROGMEM string_descriptors[USB_NUMSTRINGS];
99 extern usb_device_descriptor PROGMEM device_descriptor;
100 extern configuration_descriptor_1 PROGMEM configuration_1;
101 extern string_descriptor_0 PROGMEM string_languages;
103 #endif