#ifndef usb_serial_h__ #define usb_serial_h__ #include #ifdef __cplusplus extern "C"{ #endif /************************************************************************** * * Configurable Options * **************************************************************************/ #define VENDOR_ID 0x16C0 #define PRODUCT_ID 0x0482 #define TRANSMIT_FLUSH_TIMEOUT 4 /* in milliseconds */ #define TRANSMIT_TIMEOUT 25 /* in milliseconds */ /************************************************************************** * * Endpoint Buffer Configuration * **************************************************************************/ // These buffer sizes are best for most applications, but perhaps if you // want more buffering on some endpoint at the expense of others, this // is where you can make such changes. The AT90USB162 has only 176 bytes // of DPRAM (USB buffers) and only endpoints 3 & 4 can double buffer. // 0: control 32 64 // 1: debug IN 64 64x2 // 2: debug OUT 32 32x2 // 3: keyboard IN 8x2 8x2 // 4: mouse + joystick IN (IDs) 16x2 16x2 // 5: joystick 16x2 // 6: #if defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__) // Some operating systems, especially Windows, may cache USB device // info. Changes to the device name may not update on the same // computer unless the vendor or product ID numbers change, or the // "bcdDevice" revision code is increased. #define STR_PRODUCT L"Teensy Keyboard/Mouse/Joystick" #define ENDPOINT0_SIZE 64 #define DEBUG_INTERFACE 2 #define DEBUG_TX_ENDPOINT 1 #define DEBUG_TX_SIZE 64 #define DEBUG_TX_BUFFER EP_DOUBLE_BUFFER #define DEBUG_TX_INTERVAL 1 #define DEBUG_RX_ENDPOINT 2 #define DEBUG_RX_SIZE 32 #define DEBUG_RX_BUFFER EP_DOUBLE_BUFFER #define DEBUG_RX_INTERVAL 2 #define KEYBOARD_INTERFACE 0 #define KEYBOARD_ENDPOINT 3 #define KEYBOARD_SIZE 8 #define KEYBOARD_BUFFER EP_DOUBLE_BUFFER #define KEYBOARD_INTERVAL 1 #define MOUSE_INTERFACE 1 #define MOUSE_ENDPOINT 4 #define MOUSE_SIZE 8 #define MOUSE_BUFFER EP_DOUBLE_BUFFER #define MOUSE_INTERVAL 1 #define JOYSTICK_INTERFACE 3 #define JOYSTICK_ENDPOINT 5 #define JOYSTICK_SIZE 16 #define JOYSTICK_BUFFER EP_DOUBLE_BUFFER #define JOYSTICK_INTERVAL 2 #define NUM_ENDPOINTS 7 #define NUM_INTERFACE 4 #elif defined(__AVR_AT90USB162__) #define STR_PRODUCT L"Teensy Keyboard/Mouse" #define ENDPOINT0_SIZE 32 #define DEBUG_INTERFACE 2 #define DEBUG_TX_ENDPOINT 1 #define DEBUG_TX_SIZE 64 #define DEBUG_TX_BUFFER EP_SINGLE_BUFFER #define DEBUG_TX_INTERVAL 2 #define DEBUG_RX_ENDPOINT 2 #define DEBUG_RX_SIZE 32 #define DEBUG_RX_BUFFER EP_SINGLE_BUFFER #define DEBUG_RX_INTERVAL 8 #define KEYBOARD_INTERFACE 0 #define KEYBOARD_ENDPOINT 3 #define KEYBOARD_SIZE 8 #define KEYBOARD_BUFFER EP_DOUBLE_BUFFER #define KEYBOARD_INTERVAL 1 #define MOUSE_INTERFACE 1 #define MOUSE_ENDPOINT 4 #define MOUSE_SIZE 8 #define MOUSE_BUFFER EP_DOUBLE_BUFFER #define MOUSE_INTERVAL 8 #define NUM_ENDPOINTS 5 #define NUM_INTERFACE 3 #endif // setup void usb_init(void); // initialize everything void usb_shutdown(void); // shut off USB // variables extern volatile uint8_t usb_configuration; extern volatile uint8_t usb_suspended; extern volatile uint8_t debug_flush_timer; extern uint8_t keyboard_report_data[]; extern uint8_t keyboard_idle_count; extern volatile uint8_t keyboard_leds; extern uint8_t mouse_buttons; #ifdef JOYSTICK_INTERFACE extern uint8_t joystick_report_data[12]; #endif #ifdef __cplusplus } // extern "C" #endif #endif