otg_user_task.h

Go to the documentation of this file.
00001 // ******************************************************************
00002 // * Header file for OTG HID Demonstrationpackage for AT90USB647/1287
00003 // ******************************************************************
00004 
00005 extern void otg_user_task_init(void);
00006 extern void otg_user_task(void);
00007 extern void Led_print_otg_status(void);
00008 
00009 // USB/OTG status constants
00010 // ========================
00011 #define   SESSION_HOST    0xF0
00012 #define   SESSION_DEVICE  0x0F
00013 #define   SESSION_OFF     0x00
00014 
00015 #define   USB_NEW_PACKET  0xFF
00016 #define   USB_READ_PACKET 0x00
00017 
00018 #define   OTG_MOUSE_SPEED 15
00019 
00020 #define   Clear_usb_report()          (Usb_report[0]=0, Usb_report[1]=0, Usb_report[2]=0, Usb_report[3]=0)
00021 
00022 
00023 #if (TARGET_BOARD == STK525)
00024   // STK525 LEDs :
00025   #define   Led_usb_connected_on()      Led0_on()
00026   #define   Led_usb_connected_off()     Led0_off()
00027   
00028   #define   Led_hid_toggle()            Led1_toggle()
00029   #define   Led_hid_off()               Led1_off()
00030   
00031   #define   Led_unsupported_on()        Led2_on()
00032   #define   Led_unsupported_off()       Led2_off()
00033   
00034   #define   Led_noresponse_on()         Led3_on()
00035   #define   Led_noresponse_off()        Led3_off()
00036 #elif (TARGET_BOARD == USBKEY)
00037   // USB Key LEDs :
00038   #define   Led_usb_connected_on()      Led1_on()
00039   #define   Led_usb_connected_off()     Led1_off()
00040   
00041   #define   Led_hid_toggle()            Led2_toggle()
00042   #define   Led_hid_off()               Led2_off()
00043   
00044   #define   Led_unsupported_on()        Led3_on()
00045   #define   Led_unsupported_off()       Led3_off()
00046   
00047   #define   Led_noresponse_on()         Led0_on()
00048   #define   Led_noresponse_off()        Led0_off()
00049 #endif
00050 
00051 
00052 // **************************
00053 // **  TIME-OUT Management **
00054 // **************************
00055 
00056 #define   Timer_select(ts)      Timer16_select(ts)
00057 #define   TIMER_DELAY           TIMER16_3
00058 
00059 // User can configure Timer3 to generate DELAY (mutliple of 1 millisecond)
00060 // Max delay : 2100 ms
00061 #define   Delay_config(ms)      (Timer16_set_clock(TIMER16_CLKIO_BY_256), \
00062                                 Timer16_set_mode_output_a(TIMER16_COMP_MODE_NORMAL), \
00063                                 Timer16_set_waveform_mode(TIMER16_WGM_CTC_OCR), \
00064                                 Timer16_set_compare_a((U16)(31)*(U16)(ms)))
00065 #define   Delay_reset()         (Timer16_set_counter(0x0000), Timer16_clear_compare_a_it())
00066 #define   Is_delay_end()        (Timer16_get_compare_a_it())
00067 #define   Is_not_delay_end()    (!(Timer16_get_compare_a_it()))
00068 
00069 
00070 // A macro is also defined to simplify pushbutton debouncing
00071 #define   Bp_delay_debounce()   { Timer_select(TIMER_DELAY); Delay_config(20); \
00072                                   Delay_reset(); while (Is_not_delay_end());}
00073 
00074 //_____ M A C R O S ________________________________________________________
00075 
00085 #define host_hid_set_idle()                (usb_request.bmRequestType = 0x21,\
00086                                            usb_request.bRequest      = 0x0A,\
00087                                            usb_request.wValue        = 0,\
00088                                            usb_request.wIndex        = 0,\
00089                                            usb_request.wLength       = 0,\
00090                                            usb_request.uncomplete_read = FALSE,\
00091                                            host_send_control(data_stage))
00092 
00102 #define host_get_hid_repport_descriptor()  (usb_request.bmRequestType = 0x81,\
00103                                            usb_request.bRequest      = 0x06,\
00104                                            usb_request.wValue        = 0x2200,\
00105                                            usb_request.wIndex        = 0,\
00106                                            usb_request.wLength       = SIZEOF_DATA_STAGE,\
00107                                            usb_request.uncomplete_read = FALSE,\
00108                                            host_send_control(data_stage))
00109 

Generated on Mon Feb 19 09:31:47 2007 for Atmel by  doxygen 1.5.1-p1