These are the examples provided for [[/users/frank26080115/libraries/LPC1700CMSIS_Lib/]] Note, the entire "program" is not compilable!

Committer:
frank26080115
Date:
Sun Mar 20 05:38:56 2011 +0000
Revision:
0:bf7b9fba3924

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frank26080115 0:bf7b9fba3924 1 /*----------------------------------------------------------------------------
frank26080115 0:bf7b9fba3924 2 * U S B - K e r n e l
frank26080115 0:bf7b9fba3924 3 *----------------------------------------------------------------------------
frank26080115 0:bf7b9fba3924 4 * Name: USBUSER.C
frank26080115 0:bf7b9fba3924 5 * Purpose: USB Custom User Module
frank26080115 0:bf7b9fba3924 6 * Version: V1.10
frank26080115 0:bf7b9fba3924 7 *----------------------------------------------------------------------------
frank26080115 0:bf7b9fba3924 8 * This software is supplied "AS IS" without any warranties, express,
frank26080115 0:bf7b9fba3924 9 * implied or statutory, including but not limited to the implied
frank26080115 0:bf7b9fba3924 10 * warranties of fitness for purpose, satisfactory quality and
frank26080115 0:bf7b9fba3924 11 * noninfringement. Keil extends you a royalty-free right to reproduce
frank26080115 0:bf7b9fba3924 12 * and distribute executable files created using this software for use
frank26080115 0:bf7b9fba3924 13 * on NXP Semiconductors LPC family microcontroller devices only. Nothing
frank26080115 0:bf7b9fba3924 14 * else gives you the right to use this software.
frank26080115 0:bf7b9fba3924 15 *
frank26080115 0:bf7b9fba3924 16 * Copyright (c) 2005-2009 Keil Software.
frank26080115 0:bf7b9fba3924 17 *---------------------------------------------------------------------------*/
frank26080115 0:bf7b9fba3924 18
frank26080115 0:bf7b9fba3924 19 #include "LPC17xx.h"
frank26080115 0:bf7b9fba3924 20 #include "lpc_types.h"
frank26080115 0:bf7b9fba3924 21
frank26080115 0:bf7b9fba3924 22 #include "usb.h"
frank26080115 0:bf7b9fba3924 23 #include "usbcfg.h"
frank26080115 0:bf7b9fba3924 24 #include "usbhw.h"
frank26080115 0:bf7b9fba3924 25 #include "usbcore.h"
frank26080115 0:bf7b9fba3924 26 #include "usbuser.h"
frank26080115 0:bf7b9fba3924 27
frank26080115 0:bf7b9fba3924 28 #include "demo.h"
frank26080115 0:bf7b9fba3924 29
frank26080115 0:bf7b9fba3924 30
frank26080115 0:bf7b9fba3924 31 /*
frank26080115 0:bf7b9fba3924 32 * USB Power Event Callback
frank26080115 0:bf7b9fba3924 33 * Called automatically on USB Power Event
frank26080115 0:bf7b9fba3924 34 * Parameter: power: On(TRUE)/Off(FALSE)
frank26080115 0:bf7b9fba3924 35 */
frank26080115 0:bf7b9fba3924 36
frank26080115 0:bf7b9fba3924 37 #if USB_POWER_EVENT
frank26080115 0:bf7b9fba3924 38 void USB_Power_Event (uint32_t power) {
frank26080115 0:bf7b9fba3924 39 }
frank26080115 0:bf7b9fba3924 40 #endif
frank26080115 0:bf7b9fba3924 41
frank26080115 0:bf7b9fba3924 42
frank26080115 0:bf7b9fba3924 43 /*
frank26080115 0:bf7b9fba3924 44 * USB Reset Event Callback
frank26080115 0:bf7b9fba3924 45 * Called automatically on USB Reset Event
frank26080115 0:bf7b9fba3924 46 */
frank26080115 0:bf7b9fba3924 47
frank26080115 0:bf7b9fba3924 48 #if USB_RESET_EVENT
frank26080115 0:bf7b9fba3924 49 void USB_Reset_Event (void) {
frank26080115 0:bf7b9fba3924 50 USB_ResetCore();
frank26080115 0:bf7b9fba3924 51 }
frank26080115 0:bf7b9fba3924 52 #endif
frank26080115 0:bf7b9fba3924 53
frank26080115 0:bf7b9fba3924 54
frank26080115 0:bf7b9fba3924 55 /*
frank26080115 0:bf7b9fba3924 56 * USB Suspend Event Callback
frank26080115 0:bf7b9fba3924 57 * Called automatically on USB Suspend Event
frank26080115 0:bf7b9fba3924 58 */
frank26080115 0:bf7b9fba3924 59
frank26080115 0:bf7b9fba3924 60 #if USB_SUSPEND_EVENT
frank26080115 0:bf7b9fba3924 61 void USB_Suspend_Event (void) {
frank26080115 0:bf7b9fba3924 62 }
frank26080115 0:bf7b9fba3924 63 #endif
frank26080115 0:bf7b9fba3924 64
frank26080115 0:bf7b9fba3924 65
frank26080115 0:bf7b9fba3924 66 /*
frank26080115 0:bf7b9fba3924 67 * USB Resume Event Callback
frank26080115 0:bf7b9fba3924 68 * Called automatically on USB Resume Event
frank26080115 0:bf7b9fba3924 69 */
frank26080115 0:bf7b9fba3924 70
frank26080115 0:bf7b9fba3924 71 #if USB_RESUME_EVENT
frank26080115 0:bf7b9fba3924 72 void USB_Resume_Event (void) {
frank26080115 0:bf7b9fba3924 73 }
frank26080115 0:bf7b9fba3924 74 #endif
frank26080115 0:bf7b9fba3924 75
frank26080115 0:bf7b9fba3924 76
frank26080115 0:bf7b9fba3924 77 /*
frank26080115 0:bf7b9fba3924 78 * USB Remote Wakeup Event Callback
frank26080115 0:bf7b9fba3924 79 * Called automatically on USB Remote Wakeup Event
frank26080115 0:bf7b9fba3924 80 */
frank26080115 0:bf7b9fba3924 81
frank26080115 0:bf7b9fba3924 82 #if USB_WAKEUP_EVENT
frank26080115 0:bf7b9fba3924 83 void USB_WakeUp_Event (void) {
frank26080115 0:bf7b9fba3924 84 }
frank26080115 0:bf7b9fba3924 85 #endif
frank26080115 0:bf7b9fba3924 86
frank26080115 0:bf7b9fba3924 87
frank26080115 0:bf7b9fba3924 88 /*
frank26080115 0:bf7b9fba3924 89 * USB Start of Frame Event Callback
frank26080115 0:bf7b9fba3924 90 * Called automatically on USB Start of Frame Event
frank26080115 0:bf7b9fba3924 91 */
frank26080115 0:bf7b9fba3924 92
frank26080115 0:bf7b9fba3924 93 #if USB_SOF_EVENT
frank26080115 0:bf7b9fba3924 94 void USB_SOF_Event (void) {
frank26080115 0:bf7b9fba3924 95 }
frank26080115 0:bf7b9fba3924 96 #endif
frank26080115 0:bf7b9fba3924 97
frank26080115 0:bf7b9fba3924 98
frank26080115 0:bf7b9fba3924 99 /*
frank26080115 0:bf7b9fba3924 100 * USB Error Event Callback
frank26080115 0:bf7b9fba3924 101 * Called automatically on USB Error Event
frank26080115 0:bf7b9fba3924 102 * Parameter: error: Error Code
frank26080115 0:bf7b9fba3924 103 */
frank26080115 0:bf7b9fba3924 104
frank26080115 0:bf7b9fba3924 105 #if USB_ERROR_EVENT
frank26080115 0:bf7b9fba3924 106 void USB_Error_Event (uint32_t error) {
frank26080115 0:bf7b9fba3924 107 }
frank26080115 0:bf7b9fba3924 108 #endif
frank26080115 0:bf7b9fba3924 109
frank26080115 0:bf7b9fba3924 110
frank26080115 0:bf7b9fba3924 111 /*
frank26080115 0:bf7b9fba3924 112 * USB Set Configuration Event Callback
frank26080115 0:bf7b9fba3924 113 * Called automatically on USB Set Configuration Request
frank26080115 0:bf7b9fba3924 114 */
frank26080115 0:bf7b9fba3924 115
frank26080115 0:bf7b9fba3924 116 #if USB_CONFIGURE_EVENT
frank26080115 0:bf7b9fba3924 117 void USB_Configure_Event (void) {
frank26080115 0:bf7b9fba3924 118
frank26080115 0:bf7b9fba3924 119 if (USB_Configuration) { /* Check if USB is configured */
frank26080115 0:bf7b9fba3924 120 GetInReport();
frank26080115 0:bf7b9fba3924 121 USB_WriteEP(0x81, &InReport, sizeof(InReport));
frank26080115 0:bf7b9fba3924 122 }
frank26080115 0:bf7b9fba3924 123 }
frank26080115 0:bf7b9fba3924 124 #endif
frank26080115 0:bf7b9fba3924 125
frank26080115 0:bf7b9fba3924 126
frank26080115 0:bf7b9fba3924 127 /*
frank26080115 0:bf7b9fba3924 128 * USB Set Interface Event Callback
frank26080115 0:bf7b9fba3924 129 * Called automatically on USB Set Interface Request
frank26080115 0:bf7b9fba3924 130 */
frank26080115 0:bf7b9fba3924 131
frank26080115 0:bf7b9fba3924 132 #if USB_INTERFACE_EVENT
frank26080115 0:bf7b9fba3924 133 void USB_Interface_Event (void) {
frank26080115 0:bf7b9fba3924 134 }
frank26080115 0:bf7b9fba3924 135 #endif
frank26080115 0:bf7b9fba3924 136
frank26080115 0:bf7b9fba3924 137
frank26080115 0:bf7b9fba3924 138 /*
frank26080115 0:bf7b9fba3924 139 * USB Set/Clear Feature Event Callback
frank26080115 0:bf7b9fba3924 140 * Called automatically on USB Set/Clear Feature Request
frank26080115 0:bf7b9fba3924 141 */
frank26080115 0:bf7b9fba3924 142
frank26080115 0:bf7b9fba3924 143 #if USB_FEATURE_EVENT
frank26080115 0:bf7b9fba3924 144 void USB_Feature_Event (void) {
frank26080115 0:bf7b9fba3924 145 }
frank26080115 0:bf7b9fba3924 146 #endif
frank26080115 0:bf7b9fba3924 147
frank26080115 0:bf7b9fba3924 148
frank26080115 0:bf7b9fba3924 149 #define P_EP(n) ((USB_EP_EVENT & (1 << (n))) ? USB_EndPoint##n : NULL)
frank26080115 0:bf7b9fba3924 150
frank26080115 0:bf7b9fba3924 151 /* USB Endpoint Events Callback Pointers */
frank26080115 0:bf7b9fba3924 152 void (* const USB_P_EP[16]) (uint32_t event) = {
frank26080115 0:bf7b9fba3924 153 P_EP(0),
frank26080115 0:bf7b9fba3924 154 P_EP(1),
frank26080115 0:bf7b9fba3924 155 P_EP(2),
frank26080115 0:bf7b9fba3924 156 P_EP(3),
frank26080115 0:bf7b9fba3924 157 P_EP(4),
frank26080115 0:bf7b9fba3924 158 P_EP(5),
frank26080115 0:bf7b9fba3924 159 P_EP(6),
frank26080115 0:bf7b9fba3924 160 P_EP(7),
frank26080115 0:bf7b9fba3924 161 P_EP(8),
frank26080115 0:bf7b9fba3924 162 P_EP(9),
frank26080115 0:bf7b9fba3924 163 P_EP(10),
frank26080115 0:bf7b9fba3924 164 P_EP(11),
frank26080115 0:bf7b9fba3924 165 P_EP(12),
frank26080115 0:bf7b9fba3924 166 P_EP(13),
frank26080115 0:bf7b9fba3924 167 P_EP(14),
frank26080115 0:bf7b9fba3924 168 P_EP(15),
frank26080115 0:bf7b9fba3924 169 };
frank26080115 0:bf7b9fba3924 170
frank26080115 0:bf7b9fba3924 171
frank26080115 0:bf7b9fba3924 172 /*
frank26080115 0:bf7b9fba3924 173 * USB Endpoint 1 Event Callback
frank26080115 0:bf7b9fba3924 174 * Called automatically on USB Endpoint 1 Event
frank26080115 0:bf7b9fba3924 175 * Parameter: event
frank26080115 0:bf7b9fba3924 176 */
frank26080115 0:bf7b9fba3924 177
frank26080115 0:bf7b9fba3924 178 void USB_EndPoint1 (uint32_t event) {
frank26080115 0:bf7b9fba3924 179
frank26080115 0:bf7b9fba3924 180 switch (event) {
frank26080115 0:bf7b9fba3924 181 case USB_EVT_IN:
frank26080115 0:bf7b9fba3924 182 GetInReport();
frank26080115 0:bf7b9fba3924 183 USB_WriteEP(0x81, &InReport, sizeof(InReport));
frank26080115 0:bf7b9fba3924 184 break;
frank26080115 0:bf7b9fba3924 185 }
frank26080115 0:bf7b9fba3924 186 }
frank26080115 0:bf7b9fba3924 187
frank26080115 0:bf7b9fba3924 188
frank26080115 0:bf7b9fba3924 189 /*
frank26080115 0:bf7b9fba3924 190 * USB Endpoint 2 Event Callback
frank26080115 0:bf7b9fba3924 191 * Called automatically on USB Endpoint 2 Event
frank26080115 0:bf7b9fba3924 192 * Parameter: event
frank26080115 0:bf7b9fba3924 193 */
frank26080115 0:bf7b9fba3924 194
frank26080115 0:bf7b9fba3924 195 void USB_EndPoint2 (uint32_t event) {
frank26080115 0:bf7b9fba3924 196 switch (event) {
frank26080115 0:bf7b9fba3924 197 case USB_EVT_IN:
frank26080115 0:bf7b9fba3924 198 GetInReport();
frank26080115 0:bf7b9fba3924 199 USB_WriteEP(0x82, &InReport, sizeof(InReport));
frank26080115 0:bf7b9fba3924 200 break;
frank26080115 0:bf7b9fba3924 201 }
frank26080115 0:bf7b9fba3924 202 }
frank26080115 0:bf7b9fba3924 203
frank26080115 0:bf7b9fba3924 204
frank26080115 0:bf7b9fba3924 205 /*
frank26080115 0:bf7b9fba3924 206 * USB Endpoint 3 Event Callback
frank26080115 0:bf7b9fba3924 207 * Called automatically on USB Endpoint 3 Event
frank26080115 0:bf7b9fba3924 208 * Parameter: event
frank26080115 0:bf7b9fba3924 209 */
frank26080115 0:bf7b9fba3924 210
frank26080115 0:bf7b9fba3924 211 void USB_EndPoint3 (uint32_t event) {
frank26080115 0:bf7b9fba3924 212 switch (event) {
frank26080115 0:bf7b9fba3924 213 case USB_EVT_IN:
frank26080115 0:bf7b9fba3924 214 GetInReport();
frank26080115 0:bf7b9fba3924 215 USB_WriteEP(0x83, &InReport, sizeof(InReport));
frank26080115 0:bf7b9fba3924 216 break;
frank26080115 0:bf7b9fba3924 217 }
frank26080115 0:bf7b9fba3924 218 }
frank26080115 0:bf7b9fba3924 219
frank26080115 0:bf7b9fba3924 220
frank26080115 0:bf7b9fba3924 221 /*
frank26080115 0:bf7b9fba3924 222 * USB Endpoint 4 Event Callback
frank26080115 0:bf7b9fba3924 223 * Called automatically on USB Endpoint 4 Event
frank26080115 0:bf7b9fba3924 224 * Parameter: event
frank26080115 0:bf7b9fba3924 225 */
frank26080115 0:bf7b9fba3924 226
frank26080115 0:bf7b9fba3924 227 void USB_EndPoint4 (uint32_t event) {
frank26080115 0:bf7b9fba3924 228 }
frank26080115 0:bf7b9fba3924 229
frank26080115 0:bf7b9fba3924 230
frank26080115 0:bf7b9fba3924 231 /*
frank26080115 0:bf7b9fba3924 232 * USB Endpoint 5 Event Callback
frank26080115 0:bf7b9fba3924 233 * Called automatically on USB Endpoint 5 Event
frank26080115 0:bf7b9fba3924 234 * Parameter: event
frank26080115 0:bf7b9fba3924 235 */
frank26080115 0:bf7b9fba3924 236
frank26080115 0:bf7b9fba3924 237 void USB_EndPoint5 (uint32_t event) {
frank26080115 0:bf7b9fba3924 238 }
frank26080115 0:bf7b9fba3924 239
frank26080115 0:bf7b9fba3924 240
frank26080115 0:bf7b9fba3924 241 /*
frank26080115 0:bf7b9fba3924 242 * USB Endpoint 6 Event Callback
frank26080115 0:bf7b9fba3924 243 * Called automatically on USB Endpoint 6 Event
frank26080115 0:bf7b9fba3924 244 * Parameter: event
frank26080115 0:bf7b9fba3924 245 */
frank26080115 0:bf7b9fba3924 246
frank26080115 0:bf7b9fba3924 247 void USB_EndPoint6 (uint32_t event) {
frank26080115 0:bf7b9fba3924 248 }
frank26080115 0:bf7b9fba3924 249
frank26080115 0:bf7b9fba3924 250
frank26080115 0:bf7b9fba3924 251 /*
frank26080115 0:bf7b9fba3924 252 * USB Endpoint 7 Event Callback
frank26080115 0:bf7b9fba3924 253 * Called automatically on USB Endpoint 7 Event
frank26080115 0:bf7b9fba3924 254 * Parameter: event
frank26080115 0:bf7b9fba3924 255 */
frank26080115 0:bf7b9fba3924 256
frank26080115 0:bf7b9fba3924 257 void USB_EndPoint7 (uint32_t event) {
frank26080115 0:bf7b9fba3924 258 }
frank26080115 0:bf7b9fba3924 259
frank26080115 0:bf7b9fba3924 260
frank26080115 0:bf7b9fba3924 261 /*
frank26080115 0:bf7b9fba3924 262 * USB Endpoint 8 Event Callback
frank26080115 0:bf7b9fba3924 263 * Called automatically on USB Endpoint 8 Event
frank26080115 0:bf7b9fba3924 264 * Parameter: event
frank26080115 0:bf7b9fba3924 265 */
frank26080115 0:bf7b9fba3924 266
frank26080115 0:bf7b9fba3924 267 void USB_EndPoint8 (uint32_t event) {
frank26080115 0:bf7b9fba3924 268 }
frank26080115 0:bf7b9fba3924 269
frank26080115 0:bf7b9fba3924 270
frank26080115 0:bf7b9fba3924 271 /*
frank26080115 0:bf7b9fba3924 272 * USB Endpoint 9 Event Callback
frank26080115 0:bf7b9fba3924 273 * Called automatically on USB Endpoint 9 Event
frank26080115 0:bf7b9fba3924 274 * Parameter: event
frank26080115 0:bf7b9fba3924 275 */
frank26080115 0:bf7b9fba3924 276
frank26080115 0:bf7b9fba3924 277 void USB_EndPoint9 (uint32_t event) {
frank26080115 0:bf7b9fba3924 278 }
frank26080115 0:bf7b9fba3924 279
frank26080115 0:bf7b9fba3924 280
frank26080115 0:bf7b9fba3924 281 /*
frank26080115 0:bf7b9fba3924 282 * USB Endpoint 10 Event Callback
frank26080115 0:bf7b9fba3924 283 * Called automatically on USB Endpoint 10 Event
frank26080115 0:bf7b9fba3924 284 * Parameter: event
frank26080115 0:bf7b9fba3924 285 */
frank26080115 0:bf7b9fba3924 286
frank26080115 0:bf7b9fba3924 287 void USB_EndPoint10 (uint32_t event) {
frank26080115 0:bf7b9fba3924 288 }
frank26080115 0:bf7b9fba3924 289
frank26080115 0:bf7b9fba3924 290
frank26080115 0:bf7b9fba3924 291 /*
frank26080115 0:bf7b9fba3924 292 * USB Endpoint 11 Event Callback
frank26080115 0:bf7b9fba3924 293 * Called automatically on USB Endpoint 11 Event
frank26080115 0:bf7b9fba3924 294 * Parameter: event
frank26080115 0:bf7b9fba3924 295 */
frank26080115 0:bf7b9fba3924 296
frank26080115 0:bf7b9fba3924 297 void USB_EndPoint11 (uint32_t event) {
frank26080115 0:bf7b9fba3924 298 }
frank26080115 0:bf7b9fba3924 299
frank26080115 0:bf7b9fba3924 300
frank26080115 0:bf7b9fba3924 301 /*
frank26080115 0:bf7b9fba3924 302 * USB Endpoint 12 Event Callback
frank26080115 0:bf7b9fba3924 303 * Called automatically on USB Endpoint 12 Event
frank26080115 0:bf7b9fba3924 304 * Parameter: event
frank26080115 0:bf7b9fba3924 305 */
frank26080115 0:bf7b9fba3924 306
frank26080115 0:bf7b9fba3924 307 void USB_EndPoint12 (uint32_t event) {
frank26080115 0:bf7b9fba3924 308 }
frank26080115 0:bf7b9fba3924 309
frank26080115 0:bf7b9fba3924 310
frank26080115 0:bf7b9fba3924 311 /*
frank26080115 0:bf7b9fba3924 312 * USB Endpoint 13 Event Callback
frank26080115 0:bf7b9fba3924 313 * Called automatically on USB Endpoint 13 Event
frank26080115 0:bf7b9fba3924 314 * Parameter: event
frank26080115 0:bf7b9fba3924 315 */
frank26080115 0:bf7b9fba3924 316
frank26080115 0:bf7b9fba3924 317 void USB_EndPoint13 (uint32_t event) {
frank26080115 0:bf7b9fba3924 318 }
frank26080115 0:bf7b9fba3924 319
frank26080115 0:bf7b9fba3924 320
frank26080115 0:bf7b9fba3924 321 /*
frank26080115 0:bf7b9fba3924 322 * USB Endpoint 14 Event Callback
frank26080115 0:bf7b9fba3924 323 * Called automatically on USB Endpoint 14 Event
frank26080115 0:bf7b9fba3924 324 * Parameter: event
frank26080115 0:bf7b9fba3924 325 */
frank26080115 0:bf7b9fba3924 326
frank26080115 0:bf7b9fba3924 327 void USB_EndPoint14 (uint32_t event) {
frank26080115 0:bf7b9fba3924 328 }
frank26080115 0:bf7b9fba3924 329
frank26080115 0:bf7b9fba3924 330
frank26080115 0:bf7b9fba3924 331 /*
frank26080115 0:bf7b9fba3924 332 * USB Endpoint 15 Event Callback
frank26080115 0:bf7b9fba3924 333 * Called automatically on USB Endpoint 15 Event
frank26080115 0:bf7b9fba3924 334 * Parameter: event
frank26080115 0:bf7b9fba3924 335 */
frank26080115 0:bf7b9fba3924 336
frank26080115 0:bf7b9fba3924 337 void USB_EndPoint15 (uint32_t event) {
frank26080115 0:bf7b9fba3924 338 }