annotate usb.h @ 35:fed32b382de2

Tidy up, hide details behind macros to make it more obvious what we talk to do do things. Convert constants to my preferred format.
author darius
date Tue, 23 Oct 2007 10:54:01 +0930
parents 4e417d84365e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
1 /*
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
2 * Copyright (c) 2003 Bernd Walter
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
3 * All rights reserved.
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
4 */
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
5
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
6 /* Example Source Code for USB Enumeration using a PDIUSBD11 connected to a PIC16F87x
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
7 * Copyright 2001 Craig Peacock, Craig.Peacock@beyondlogic.org
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
8 * 31th December 2001 http://www.beyondlogic.org
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
9 */
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
10
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
11 typedef struct {
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
12 uint8_t bmRequestType;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
13 uint8_t bRequest;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
14 uint16_t wValue;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
15 uint16_t wIndex;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
16 uint16_t wLength;
31
4e417d84365e - Rename some more functions to be consistent.
darius
parents: 23
diff changeset
17 } __attribute__ ((packed)) USB_SETUP_REQUEST;
23
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
18
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
19 typedef struct {
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
20 uint8_t bLength;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
21 uint8_t bDescriptorType;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
22 uint16_t bcdUSB;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
23 uint8_t bDeviceClass;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
24 uint8_t bDeviceSubClass;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
25 uint8_t bDeviceProtocol;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
26 uint8_t bMaxPacketSize0;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
27 uint16_t idVendor;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
28 uint16_t idProduct;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
29 uint16_t bcdDevice;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
30 uint8_t iManufacturer;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
31 uint8_t iProduct;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
32 uint8_t iSerialNumber;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
33 uint8_t bNumConfigurations;
31
4e417d84365e - Rename some more functions to be consistent.
darius
parents: 23
diff changeset
34 } __attribute__ ((packed)) USB_DEVICE_DESCRIPTOR;
23
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
35
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
36 typedef struct {
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
37 uint8_t bLength;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
38 uint8_t bDescriptorType;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
39 uint8_t bEndpointAddress;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
40 uint8_t bmAttributes;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
41 uint16_t wMaxPacketSize;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
42 uint8_t bInterval;
31
4e417d84365e - Rename some more functions to be consistent.
darius
parents: 23
diff changeset
43 } __attribute__ ((packed)) USB_ENDPOINT_DESCRIPTOR;
23
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
44
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
45 typedef struct {
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
46 uint8_t bLength;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
47 uint8_t bDescriptorType;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
48 uint16_t wTotalLength;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
49 uint8_t bNumInterfaces;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
50 uint8_t bConfigurationValue;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
51 uint8_t iConfiguration;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
52 uint8_t bmAttributes;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
53 uint8_t MaxPower;
31
4e417d84365e - Rename some more functions to be consistent.
darius
parents: 23
diff changeset
54 } __attribute__ ((packed)) USB_CONFIGURATION_DESCRIPTOR;
23
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
55
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
56 typedef struct {
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
57 uint8_t bLength;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
58 uint8_t bDescriptorType;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
59 uint8_t bInterfaceNumber;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
60 uint8_t bAlternateSetting;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
61 uint8_t bNumEndpoints;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
62 uint8_t bInterfaceClass;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
63 uint8_t bInterfaceSubClass;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
64 uint8_t bInterfaceProtocol;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
65 uint8_t iInterface;
31
4e417d84365e - Rename some more functions to be consistent.
darius
parents: 23
diff changeset
66 } __attribute__ ((packed)) USB_INTERFACE_DESCRIPTOR;
23
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
67
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
68 typedef struct {
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
69 uint8_t bLength;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
70 uint8_t bDescriptorType;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
71 uint16_t wHIDClassSpecComp;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
72 uint8_t bCountry;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
73 uint8_t bNumDescriptors;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
74 uint8_t b1stDescType;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
75 uint16_t w1stDescLength;
31
4e417d84365e - Rename some more functions to be consistent.
darius
parents: 23
diff changeset
76 } __attribute__ ((packed)) USB_HID_DESCRIPTOR;
23
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
77
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
78 typedef struct {
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
79 USB_CONFIGURATION_DESCRIPTOR ConfigDescriptor;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
80 USB_INTERFACE_DESCRIPTOR InterfaceDescriptor0;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
81 USB_ENDPOINT_DESCRIPTOR EndpointDescriptor00;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
82 USB_ENDPOINT_DESCRIPTOR EndpointDescriptor01;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
83 USB_INTERFACE_DESCRIPTOR InterfaceDescriptor1;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
84 USB_ENDPOINT_DESCRIPTOR EndpointDescriptor10;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
85 USB_ENDPOINT_DESCRIPTOR EndpointDescriptor11;
31
4e417d84365e - Rename some more functions to be consistent.
darius
parents: 23
diff changeset
86 } __attribute__ ((packed)) USB_CONFIG_DATA;
23
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
87
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
88 typedef struct {
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
89 uint8_t bLength;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
90 uint8_t bDescriptorType;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
91 char bString[];
31
4e417d84365e - Rename some more functions to be consistent.
darius
parents: 23
diff changeset
92 } __attribute__ ((packed)) STRING_DESCRIPTOR;
23
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
93
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
94 typedef struct {
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
95 uint8_t bLength;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
96 uint8_t bDescriptorType;
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
97 uint16_t wLANGID0;
31
4e417d84365e - Rename some more functions to be consistent.
darius
parents: 23
diff changeset
98 } __attribute__ ((packed)) LANGID_DESCRIPTOR;
23
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
99
35
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
100 #define D12_SET_ADDRESS_ENABLE 0xd0
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
101 #define D12_SET_ENDPOINT_ENABLE 0xd8
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
102 #define D12_SET_MODE 0xf3
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
103 #define D12_SET_DMA 0xfb
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
104 #define D12_READ_INTERRUPT_REGISTER 0xf4
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
105 #define D12_READ_BUFFER 0xf0
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
106 #define D12_WRITE_BUFFER 0xf0
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
107 #define D12_ACK_SETUP 0xf2
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
108 #define D12_CLEAR_BUFFER 0xf2
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
109 #define D12_VALIDATE_BUFFER 0xfa
23
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
110 #define D12_READ_LAST_TRANSACTION 0x40
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
111 #define D12_SET_ENDPOINT_STATUS 0x40
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
112 #define D12_READ_ENDPOINT_STATUS 0x80
35
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
113 #define D12_READ_CHIP_ID 0xfd
23
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
114
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
115 #define D12_ENDPOINT_EP0_OUT 0x00
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
116 #define D12_ENDPOINT_EP0_IN 0x01
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
117 #define D12_ENDPOINT_EP1_OUT 0x02
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
118 #define D12_ENDPOINT_EP1_IN 0x03
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
119 #define D12_ENDPOINT_EP2_OUT 0x04
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
120 #define D12_ENDPOINT_EP2_IN 0x05
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
121
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
122 #define D12_INT_EP0_OUT 0x01
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
123 #define D12_INT_EP0_IN 0x02
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
124 #define D12_INT_EP1_OUT 0x04
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
125 #define D12_INT_EP1_IN 0x08
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
126 #define D12_INT_EP2_OUT 0x10
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
127 #define D12_INT_EP2_IN 0x20
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
128 #define D12_INT_BUS_RESET 0x40
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
129 #define D12_INT_SUSPEND 0x80
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
130
31
4e417d84365e - Rename some more functions to be consistent.
darius
parents: 23
diff changeset
131 #define D12_LAST_TRAN_OK 0x01
4e417d84365e - Rename some more functions to be consistent.
darius
parents: 23
diff changeset
132 #define D12_LAST_TRAN_ERRMSK 0x1e
23
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
133 #define D12_LAST_TRAN_SETUP 0x20
31
4e417d84365e - Rename some more functions to be consistent.
darius
parents: 23
diff changeset
134 #define D12_LAST_TRAN_DATA 0x40
4e417d84365e - Rename some more functions to be consistent.
darius
parents: 23
diff changeset
135 #define D12_LAST_TRAN_OFLOW 0x80
23
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
136
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
137 #define STANDARD_DEVICE_REQUEST 0x00
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
138 #define STANDARD_INTERFACE_REQUEST 0x01
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
139 #define STANDARD_ENDPOINT_REQUEST 0x02
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
140 #define VENDOR_DEVICE_REQUEST 0x40
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
141 #define VENDOR_INTERFACE_REQUEST 0x41
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
142 #define VENDOR_ENDPOINT_REQUEST 0x42
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
143
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
144 #define GET_STATUS 0
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
145 #define CLEAR_FEATURE 1
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
146 #define SET_FEATURE 3
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
147 #define SET_ADDRESS 5
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
148 #define GET_DESCRIPTOR 6
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
149 #define SET_DESCRIPTOR 7
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
150 #define GET_CONFIGURATION 8
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
151 #define SET_CONFIGURATION 9
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
152 #define GET_INTERFACE 10
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
153 #define SET_INTERFACE 11
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
154 #define SYNCH_FRAME 12
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
155
31
4e417d84365e - Rename some more functions to be consistent.
darius
parents: 23
diff changeset
156 #define VENDOR_DOTEMP 125
23
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
157 #define VENDOR_UPDATE 126
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
158 #define VENDOR_RESET 127
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
159
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
160 #define ENDPOINT_HALT 0
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
161
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
162 #define TYPE_DEVICE_DESCRIPTOR 1
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
163 #define TYPE_CONFIGURATION_DESCRIPTOR 2
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
164 #define TYPE_STRING_DESCRIPTOR 3
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
165 #define TYPE_INTERFACE_DESCRIPTOR 4
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
166 #define TYPE_ENDPOINT_DESCRIPTOR 5
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
167 #define TYPE_HID_DESCRIPTOR 0x21
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
168
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
169 #define USB_ENDPOINT_TYPE_CONTROL 0x00
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
170 #define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
171 #define USB_ENDPOINT_TYPE_BULK 0x02
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
172 #define USB_ENDPOINT_TYPE_INTERRUPT 0x03
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
173
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
174 /* Function prototypes */
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
175 uint8_t d12_get_data(void);
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
176 void d12_set_data(uint8_t data);
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
177 void d12_set_cmd(uint8_t cmd);
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
178 void d12_write_cmd(uint8_t command, const uint8_t *buffer, uint8_t count);
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
179 void d12_read_cmd(uint8_t command, uint8_t *buffer, uint8_t count);
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
180 uint8_t d12_read_endpt(uint8_t endpt, uint8_t *buffer);
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
181
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
182 void d12_ep0_irq(void);
31
4e417d84365e - Rename some more functions to be consistent.
darius
parents: 23
diff changeset
183 void d12_handle_setup(void);
4e417d84365e - Rename some more functions to be consistent.
darius
parents: 23
diff changeset
184 void d12_getdescriptor(USB_SETUP_REQUEST *setuppkt);
4e417d84365e - Rename some more functions to be consistent.
darius
parents: 23
diff changeset
185 void d12_stallendpt(uint8_t ep);
23
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
186 uint8_t d12_read_endpt(uint8_t endpt, uint8_t *buffer);
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
187 void d12_write_endpt(uint8_t endpt, const uint8_t *buffer, uint8_t bytes);
31
4e417d84365e - Rename some more functions to be consistent.
darius
parents: 23
diff changeset
188 void d12_send_data_ep0(void);
4e417d84365e - Rename some more functions to be consistent.
darius
parents: 23
diff changeset
189 void d12_receive_data_ep1(void);
23
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
190 void d12_send_data_ep2(void);
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
191 void d12_receive_data_ep2(void);
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
192
35
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
193 void reset(void);
23
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
194
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
195 void usb_init(void);
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
196 void usb_intr(void);
845934a4e7fe Add code to talk to a Phillips PDIUSBB12.
darius
parents:
diff changeset
197 void usb_gendata(void);
35
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
198
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
199 /*
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
200 * The PDIUSBD12 is wired up like so
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
201 *
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
202 * PDI AVR
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
203 * ======================
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
204 * D7:0 <=> PA7:0
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
205 * RD_N <= PB0
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
206 * INT_N => PB1
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
207 * WR_N <= PB2
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
208 * A0 <= PB3 (0 = data, 1 = cmd)
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
209 * SUSPEND <=> PB4
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
210 */
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
211
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
212 #define PDIPORT PORTA
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
213 #define PDIDDR PORTA
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
214 #define PDICTL PORTB
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
215 #define PDIRD PB0
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
216 #define PDIINT PB1
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
217 #define PDIWR PB2
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
218 #define PDIA0 PB3
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
219 #define PDISUSP PB4
fed32b382de2 Tidy up, hide details behind macros to make it more obvious what we
darius
parents: 31
diff changeset
220