00001 /* 00002 LPCUSB, an USB device driver for LPC microcontrollers 00003 Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) 00004 00005 Redistribution and use in source and binary forms, with or without 00006 modification, are permitted provided that the following conditions are met: 00007 00008 1. Redistributions of source code must retain the above copyright 00009 notice, this list of conditions and the following disclaimer. 00010 2. Redistributions in binary form must reproduce the above copyright 00011 notice, this list of conditions and the following disclaimer in the 00012 documentation and/or other materials provided with the distribution. 00013 3. The name of the author may not be used to endorse or promote products 00014 derived from this software without specific prior written permission. 00015 00016 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 00017 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 00018 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 00019 IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 00020 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 00021 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 00022 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 00023 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00024 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 00025 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00026 */ 00027 00028 00033 #include "type.h" 00034 #include "debug.h" 00035 00036 #include "usbhw_lpc.h" 00037 #include "usbapi.h" 00038 00039 00041 static U8 abStdReqData[8]; 00042 00043 00049 static void HandleUsbReset(U8 bDevStatus) 00050 { 00051 if (bDevStatus & DEV_STATUS_RESET) { 00052 DBG("\n!"); 00053 } 00054 } 00055 00056 00063 BOOL USBInit(void) 00064 { 00065 // init hardware 00066 USBHwInit(); 00067 00068 // register bus reset handler 00069 USBHwRegisterDevIntHandler(HandleUsbReset); 00070 00071 // register control transfer handler on EP0 00072 USBHwRegisterEPIntHandler(0x00, USBHandleControlTransfer); 00073 USBHwRegisterEPIntHandler(0x80, USBHandleControlTransfer); 00074 00075 // setup control endpoints 00076 USBHwEPConfig(0x00, MAX_PACKET_SIZE0); 00077 USBHwEPConfig(0x80, MAX_PACKET_SIZE0); 00078 00079 // register standard request handler 00080 USBRegisterRequestHandler(REQTYPE_TYPE_STANDARD, USBHandleStandardRequest, abStdReqData); 00081 00082 return TRUE; 00083 } 00084