00001
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #ifndef _USB_TASK_H_
00042 #define _USB_TASK_H_
00043
00046
00047
00048
00049
00050
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
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
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
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
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
00175