usb_task.h

Go to the documentation of this file.
00001 /*This file has been prepared for Doxygen automatic documentation generation.*/
00013 
00014 /* Copyright (c) 2007, Atmel Corporation All rights reserved.
00015  *
00016  * Redistribution and use in source and binary forms, with or without
00017  * modification, are permitted provided that the following conditions are met:
00018  *
00019  * 1. Redistributions of source code must retain the above copyright notice,
00020  * this list of conditions and the following disclaimer.
00021  *
00022  * 2. Redistributions in binary form must reproduce the above copyright notice,
00023  * this list of conditions and the following disclaimer in the documentation
00024  * and/or other materials provided with the distribution.
00025  *
00026  * 3. The name of ATMEL may not be used to endorse or promote products derived
00027  * from this software without specific prior written permission.
00028  *
00029  * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED
00030  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
00031  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND
00032  * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT,
00033  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
00034  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00035  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00036  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00037  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
00038  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00039  */
00040 
00041 #ifndef _USB_TASK_H_
00042 #define _USB_TASK_H_
00043 
00046 
00047 //_____ I N C L U D E S ____________________________________________________
00048 
00049 
00050 //_____ M A C R O S ________________________________________________________
00051 
00055 #define Usb_send_event(x)               (g_usb_event |= (1<<x))
00056 #define Usb_ack_event(x)                (g_usb_event &= ~(1<<x))
00057 #define Usb_clear_all_event()           (g_usb_event = 0)
00058 #define Is_usb_event(x)                 ((g_usb_event & (1<<x)) ? TRUE : FALSE)
00059 #define Is_not_usb_event(x)             ((g_usb_event & (1<<x)) ? FALSE: TRUE)
00060 #define Is_host_emergency_exit()        (Is_usb_event(EVT_HOST_DISCONNECTION) || Is_usb_event(EVT_USB_DEVICE_FUNCTION))
00061 #define Is_usb_device()                 (g_usb_mode==USB_MODE_DEVICE ? TRUE : FALSE)
00062 #define Is_usb_host()                   (g_usb_mode==USB_MODE_HOST   ? TRUE : FALSE)
00063 
00064 #define EVT_USB_POWERED               1         // USB plugged
00065 #define EVT_USB_UNPOWERED             2         // USB un-plugged
00066 #define EVT_USB_DEVICE_FUNCTION       3         // USB in device
00067 #define EVT_USB_HOST_FUNCTION         4         // USB in host
00068 #define EVT_USB_SUSPEND               5         // USB suspend
00069 #define EVT_USB_WAKE_UP               6         // USB wake up
00070 #define EVT_USB_RESUME                7         // USB resume
00071 #define EVT_USB_RESET                 8         // USB reset
00072 #define EVT_HOST_SOF                  9         // Host start of frame sent
00073 #define EVT_HOST_HWUP                 10        // Host wakeup detected
00074 #define EVT_HOST_DISCONNECTION        11        // The target device is disconnected
00076 
00079    #define GET_STATUS                     0x00
00080    #define GET_DEVICE                     0x01
00081    #define CLEAR_FEATURE                  0x01           
00082    #define GET_STRING                     0x03
00083    #define SET_FEATURE                    0x03           
00084    #define SET_ADDRESS                    0x05
00085    #define GET_DESCRIPTOR                 0x06
00086    #define SET_DESCRIPTOR                 0x07
00087    #define GET_CONFIGURATION              0x08
00088    #define SET_CONFIGURATION              0x09
00089    #define GET_INTERFACE                  0x0A
00090    #define SET_INTERFACE                  0x0B
00091    #define SYNCH_FRAME                    0x0C
00092 
00093    #define GET_DEVICE_DESCRIPTOR             1
00094    #define GET_CONFIGURATION_DESCRIPTOR      4
00095 
00096    #define REQUEST_DEVICE_STATUS          0x80
00097    #define REQUEST_INTERFACE_STATUS       0x81
00098    #define REQUEST_ENDPOINT_STATUS        0x82
00099    #define ZERO_TYPE                      0x00
00100    #define INTERFACE_TYPE                 0x01
00101    #define ENDPOINT_TYPE                  0x02
00102 
00103                      // Descriptor Types
00104    #define DEVICE_DESCRIPTOR                     0x01
00105    #define CONFIGURATION_DESCRIPTOR              0x02
00106    #define STRING_DESCRIPTOR                     0x03
00107    #define INTERFACE_DESCRIPTOR                  0x04
00108    #define ENDPOINT_DESCRIPTOR                   0x05
00109    #define DEVICE_QUALIFIER_DESCRIPTOR           0x06
00110    #define OTHER_SPEED_CONFIGURATION_DESCRIPTOR  0x07
00111 
00112 
00113 
00114                     // Standard Features
00115    #define FEATURE_DEVICE_REMOTE_WAKEUP   0x01
00116    #define FEATURE_ENDPOINT_HALT          0x00
00117 
00118    #define TEST_J                         0x01
00119    #define TEST_K                         0x02
00120    #define TEST_SEO_NAK                   0x03
00121    #define TEST_PACKET                    0x04
00122    #define TEST_FORCE_ENABLE              0x05
00123 
00124 
00125                      // Device Status
00126    #define BUS_POWERED                       0
00127    #define SELF_POWERED                      1
00128 
00130 
00131 #define USB_MODE_UNDEFINED            0x00
00132 #define USB_MODE_HOST                 0x01
00133 #define USB_MODE_DEVICE               0x02
00134 
00135 //_____ D E C L A R A T I O N S ____________________________________________
00136 
00137 extern volatile U16 g_usb_event;
00138 extern U8 g_usb_mode;
00139 extern U8 usb_remote_wup_feature;
00140 
00154 void usb_task_init     (void);
00155 
00166 void usb_task          (void);
00167 
00168 extern volatile U8 private_sof_counter;
00169 
00170 
00171 
00173 
00174 #endif /* _USB_TASK_H_ */
00175 

Generated on Mon May 5 15:57:55 2008 for ATMEL by  doxygen 1.5.1-p1