Loop based vusb_transfer_keyboard

This commit is contained in:
Rasmus Schults 2018-04-08 00:07:26 +03:00 committed by Jack Humbert
parent 8a27703ef4
commit 095b28e006
1 changed files with 16 additions and 11 deletions

View File

@ -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);
}
}