#ifndef usb_serial_h__
#define usb_serial_h__
#include <stdint.h>
#ifdef __cplusplus
extern "C"{
#endif
#define VENDOR_ID 0x16C0
#define PRODUCT_ID 0x0486
#define RAWHID_USAGE_PAGE 0xFFAB
#define RAWHID_USAGE 0x0200
#define RAWHID_TX_INTERVAL 1
#define RAWHID_RX_INTERVAL 1
#define DEBUG_TX_INTERVAL 1
#define DEBUG_RX_INTERVAL 2
#define TRANSMIT_FLUSH_TIMEOUT 4
#define TRANSMIT_TIMEOUT 25
#define STR_PRODUCT L"Teensyduino RawHID Device"
#define STR_RAWHID L"Teensyduino RawHID"
#define STR_DEBUG L"Emulated Arduino Serial"
#define ENDPOINT0_SIZE 64
#define RAWHID_INTERFACE 0
#define RAWHID_TX_ENDPOINT 3
#define RAWHID_TX_BUFFER EP_DOUBLE_BUFFER
#define RAWHID_TX_SIZE 64
#define RAWHID_RX_ENDPOINT 4
#define RAWHID_RX_BUFFER EP_DOUBLE_BUFFER
#define RAWHID_RX_SIZE 64
#define DEBUG_INTERFACE 1
#define DEBUG_TX_ENDPOINT 1
#define DEBUG_TX_SIZE 64
#define DEBUG_TX_BUFFER EP_DOUBLE_BUFFER
#define DEBUG_RX_ENDPOINT 2
#define DEBUG_RX_SIZE 32
#define DEBUG_RX_BUFFER EP_DOUBLE_BUFFER
#define NUM_ENDPOINTS 5
#define NUM_INTERFACE 2
void usb_init(void); void usb_shutdown(void);
extern volatile uint8_t usb_configuration;
extern volatile uint8_t usb_suspended;
extern volatile uint8_t debug_flush_timer;
extern volatile uint16_t rawhid_rx_timeout_count;
extern volatile uint16_t rawhid_tx_timeout_count;
#ifdef __cplusplus
} #endif
#endif