Loop based vusb_transfer_keyboard
This commit is contained in:
		
							parent
							
								
									8a27703ef4
								
							
						
					
					
						commit
						095b28e006
					
				@ -27,6 +27,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#include "host_driver.h"
 | 
			
		||||
#include "vusb.h"
 | 
			
		||||
#include "bootloader.h"
 | 
			
		||||
#include <util/delay.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static uint8_t vusb_keyboard_leds = 0;
 | 
			
		||||
@ -46,9 +47,12 @@ typedef struct {
 | 
			
		||||
 | 
			
		||||
static keyboard_report_t keyboard_report; // sent to PC
 | 
			
		||||
 | 
			
		||||
#define VUSB_TRANSFER_KEYBOARD_MAX_TRIES 10
 | 
			
		||||
 | 
			
		||||
/* transfer keyboard report from buffer */
 | 
			
		||||
void vusb_transfer_keyboard(void)
 | 
			
		||||
{
 | 
			
		||||
    for (int i = 0; i < VUSB_TRANSFER_KEYBOARD_MAX_TRIES; i++) {
 | 
			
		||||
        if (usbInterruptIsReady()) {
 | 
			
		||||
            if (kbuf_head != kbuf_tail) {
 | 
			
		||||
                usbSetInterrupt((void *)&kbuf[kbuf_tail], sizeof(report_keyboard_t));
 | 
			
		||||
@ -59,9 +63,10 @@ void vusb_transfer_keyboard(void)
 | 
			
		||||
                    print(")\n");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
    } else {
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
        usbPoll();
 | 
			
		||||
      vusb_transfer_keyboard();
 | 
			
		||||
        _delay_ms(1);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user