- Was causing lock-ups until the serial port was read
- Also checking each of the NKRO key types in each send loop
USBKeys_Changed &= ~USBKeyChangeState_Modifiers; // Mark sent
}
// Check main key section
USBKeys_Changed &= ~USBKeyChangeState_Modifiers; // Mark sent
}
// Check main key section
- else if ( USBKeys_Changed & USBKeyChangeState_MainKeys )
+ if ( USBKeys_Changed & USBKeyChangeState_MainKeys )
USBKeys_Changed &= ~USBKeyChangeState_MainKeys; // Mark sent
}
// Check secondary key section
USBKeys_Changed &= ~USBKeyChangeState_MainKeys; // Mark sent
}
// Check secondary key section
- else if ( USBKeys_Changed & USBKeyChangeState_SecondaryKeys )
+ if ( USBKeys_Changed & USBKeyChangeState_SecondaryKeys )
USBKeys_Changed &= ~USBKeyChangeState_SecondaryKeys; // Mark sent
}
// Check tertiary key section
USBKeys_Changed &= ~USBKeyChangeState_SecondaryKeys; // Mark sent
}
// Check tertiary key section
- else if ( USBKeys_Changed & USBKeyChangeState_TertiaryKeys )
+ if ( USBKeys_Changed & USBKeyChangeState_TertiaryKeys )
USBKeys_Changed &= ~USBKeyChangeState_TertiaryKeys; // Mark sent
}
// Check system control keys
USBKeys_Changed &= ~USBKeyChangeState_TertiaryKeys; // Mark sent
}
// Check system control keys
- else if ( USBKeys_Changed & USBKeyChangeState_System )
+ if ( USBKeys_Changed & USBKeyChangeState_System )
{
UEDATX = 0x06; // ID
UEDATX = USBKeys_SysCtrl;
{
UEDATX = 0x06; // ID
UEDATX = USBKeys_SysCtrl;
USBKeys_Changed &= ~USBKeyChangeState_System; // Mark sent
}
// Check consumer control keys
USBKeys_Changed &= ~USBKeyChangeState_System; // Mark sent
}
// Check consumer control keys
- else if ( USBKeys_Changed & USBKeyChangeState_Consumer )
+ if ( USBKeys_Changed & USBKeyChangeState_Consumer )
{
UEDATX = 0x07; // ID
UEDATX = (uint8_t)(USBKeys_ConsCtrl & 0x00FF);
{
UEDATX = 0x07; // ID
UEDATX = (uint8_t)(USBKeys_ConsCtrl & 0x00FF);
}
// transmit a character. 0 returned on success, -1 on error
}
// transmit a character. 0 returned on success, -1 on error
-int8_t usb_serial_putchar(uint8_t c)
+int8_t usb_serial_putchar( uint8_t c )
{
uint8_t timeout, intr_state;
{
uint8_t timeout, intr_state;
// transmit a character, but do not wait if the buffer is full,
// 0 returned on success, -1 on buffer full or error
// transmit a character, but do not wait if the buffer is full,
// 0 returned on success, -1 on buffer full or error
-int8_t usb_serial_putchar_nowait(uint8_t c)
+int8_t usb_serial_putchar_nowait( uint8_t c )
// controller in the PC will not allocate bandwitdh without a pending read request.
// (thanks to Victor Suarez for testing and feedback and initial code)
// controller in the PC will not allocate bandwitdh without a pending read request.
// (thanks to Victor Suarez for testing and feedback and initial code)
-int8_t usb_serial_write(const char *buffer, uint16_t size)
+int8_t usb_serial_write( const char *buffer, uint16_t size )
{
uint8_t timeout, intr_state, write_size;
{
uint8_t timeout, intr_state, write_size;
cli();
UENUM = CDC_TX_ENDPOINT;
// if we gave up due to timeout before, don't wait again
cli();
UENUM = CDC_TX_ENDPOINT;
// if we gave up due to timeout before, don't wait again
if (transmit_previous_timeout) {
if (!(UEINTX & (1<<RWAL))) {
SREG = intr_state;
if (transmit_previous_timeout) {
if (!(UEINTX & (1<<RWAL))) {
SREG = intr_state;
}
transmit_previous_timeout = 0;
}
}
transmit_previous_timeout = 0;
}
// each iteration of this loop transmits a packet
while (size) {
// wait for the FIFO to be ready to accept data
// each iteration of this loop transmits a packet
while (size) {
// wait for the FIFO to be ready to accept data
// This doesn't actually transmit the data - that is impossible!
// USB devices only transmit when the host allows, so the best
// we can do is release the FIFO buffer for when the host wants it
// This doesn't actually transmit the data - that is impossible!
// USB devices only transmit when the host allows, so the best
// we can do is release the FIFO buffer for when the host wants it
-void usb_serial_flush_output(void)
+void usb_serial_flush_output()
// it remains buffered (either here or on the host) and can not be
// lost because you weren't listening at the right time, like it
// would in real serial communication.
// it remains buffered (either here or on the host) and can not be
// lost because you weren't listening at the right time, like it
// would in real serial communication.
-int8_t usb_serial_set_control(uint8_t signals)
+int8_t usb_serial_set_control( uint8_t signals )