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 "host_driver.h"
#include "vusb.h" #include "vusb.h"
#include "bootloader.h" #include "bootloader.h"
#include <util/delay.h>
static uint8_t vusb_keyboard_leds = 0; static uint8_t vusb_keyboard_leds = 0;
@ -46,9 +47,12 @@ typedef struct {
static keyboard_report_t keyboard_report; // sent to PC static keyboard_report_t keyboard_report; // sent to PC
#define VUSB_TRANSFER_KEYBOARD_MAX_TRIES 10
/* transfer keyboard report from buffer */ /* transfer keyboard report from buffer */
void vusb_transfer_keyboard(void) void vusb_transfer_keyboard(void)
{ {
for (int i = 0; i < VUSB_TRANSFER_KEYBOARD_MAX_TRIES; i++) {
if (usbInterruptIsReady()) { if (usbInterruptIsReady()) {
if (kbuf_head != kbuf_tail) { if (kbuf_head != kbuf_tail) {
usbSetInterrupt((void *)&kbuf[kbuf_tail], sizeof(report_keyboard_t)); usbSetInterrupt((void *)&kbuf[kbuf_tail], sizeof(report_keyboard_t));
@ -59,9 +63,10 @@ void vusb_transfer_keyboard(void)
print(")\n"); print(")\n");
} }
} }
} else { break;
}
usbPoll(); usbPoll();
vusb_transfer_keyboard(); _delay_ms(1);
} }
} }