changeset 240:f0d97a9a4c1b

Adding timeout to virtual serial port writes - Was causing lock-ups until the serial port was read - Also checking each of the NKRO key types in each send loop
author Jacob Alexander <haata@kiibohd.com>
date Sat, 04 Oct 2014 14:50:42 -0700
parents 2a4c99da1276
children 9f62492034c7
files Output/pjrcUSB/avr/usb_keyboard_serial.c
diffstat 1 files changed, 12 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/Output/pjrcUSB/avr/usb_keyboard_serial.c	Thu Oct 02 22:09:34 2014 -0700
+++ b/Output/pjrcUSB/avr/usb_keyboard_serial.c	Sat Oct 04 14:50:42 2014 -0700
@@ -114,7 +114,7 @@
 			USBKeys_Changed &= ~USBKeyChangeState_Modifiers; // Mark sent
 		}
 		// Check main key section
-		else if ( USBKeys_Changed & USBKeyChangeState_MainKeys )
+		if ( USBKeys_Changed & USBKeyChangeState_MainKeys )
 		{
 			UEDATX = 0x03; // ID
 
@@ -127,7 +127,7 @@
 			USBKeys_Changed &= ~USBKeyChangeState_MainKeys; // Mark sent
 		}
 		// Check secondary key section
-		else if ( USBKeys_Changed & USBKeyChangeState_SecondaryKeys )
+		if ( USBKeys_Changed & USBKeyChangeState_SecondaryKeys )
 		{
 			UEDATX = 0x04; // ID
 
@@ -140,7 +140,7 @@
 			USBKeys_Changed &= ~USBKeyChangeState_SecondaryKeys; // Mark sent
 		}
 		// Check tertiary key section
-		else if ( USBKeys_Changed & USBKeyChangeState_TertiaryKeys )
+		if ( USBKeys_Changed & USBKeyChangeState_TertiaryKeys )
 		{
 			UEDATX = 0x05; // ID
 
@@ -153,7 +153,7 @@
 			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;
@@ -162,7 +162,7 @@
 			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);
@@ -253,7 +253,7 @@
 }
 
 // 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;
 
@@ -304,7 +304,7 @@
 
 // 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 )
 {
 	uint8_t intr_state;
 
@@ -338,7 +338,7 @@
 // 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;
 
@@ -351,7 +351,7 @@
 	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;
@@ -359,7 +359,7 @@
 		}
 		transmit_previous_timeout = 0;
 	}
-	*/
+
 	// each iteration of this loop transmits a packet
 	while (size) {
 		// wait for the FIFO to be ready to accept data
@@ -474,7 +474,7 @@
 // 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()
 {
 	uint8_t intr_state;
 
@@ -521,7 +521,7 @@
 // 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 )
 {
 	uint8_t intr_state;