/* // * Copyright (c) 2007, Benedikt Sauter * All rights reserved. * * Short descripton of file: at90usb1287-hcdi.c * * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * Neither the name of the FH Augsburg nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "host.h" #include #include #include "at90usb1287.h" #include #include "uart.h" #include "wait.h" #include #include void at90usb1287_roothub_probe(); void at90usb1287_roothub_check(); void at90usb1287_start_transfer(); usb_device * device_on_downstream; /* cuurent transferdescriptor on port a and port b */ usb_transfer_descriptor * td_usba; usb_transfer_descriptor * td_usbb; usb_driver at90usb1287_roothub = { .name = "at90usb1287_roothub", .probe = at90usb1287_roothub_probe, .check = at90usb1287_roothub_check, .data = NULL, }; usb_device * device_on_downstream; /** * Find and initial root hub */ void at90usb1287_roothub_probe() { // called on n every new enumeration and at usb_register_driver // der sollte nach dem ersten aufruf igonriert werden #if DEBUG core.stdout("Probe: AT90USB1287 Root Hub\r\n"); #endif } /** * This function is called periodical, to notice * port changes after an hub */ void at90usb1287_roothub_check() { //USART_WriteHex(UHINT); //UHINT = 0x00; // disconnect if(UHINT & 0x02) { device_on_downstream=NULL; #if DEBUG core.stdout("Device: Removed!\r\n"); #endif //UHINT &= ~(1<pid) { case USB_PID_SETUP: break; case USB_PID_IN: break; case USB_PID_OUT: break; } }