#include #include "usb_debug.h" // the time remaining before we transmit any partially full // packet, or send a zero length packet. volatile uint8_t debug_flush_timer=0; // transmit a character. 0 returned on success, -1 on error int8_t usb_debug_putchar(uint8_t c) { static uint8_t previous_timeout=0; uint8_t timeout, intr_state; // if we're not online (enumerated and configured), error if (!usb_configured()) return -1; // interrupts are disabled so these functions can be // used from the main program or interrupt context, // even both in the same program! intr_state = SREG; cli(); UENUM = DEBUG_TX_ENDPOINT; // if we gave up due to timeout before, don't wait again if (previous_timeout) { if (!(UEINTX & (1<