1
0

Fix the way of sending out IN packet.

This fixes problem that it losts keycode when send keycodes in row in layer.c.
Undef CONSOLE_ENABLE build option makes this problem clear.
This commit is contained in:
tmk 2012-08-28 20:55:52 +09:00
parent 9660bae5b1
commit ec5c5eb360

View File

@ -344,14 +344,14 @@ static void send_keyboard(report_keyboard_t *report)
Endpoint_SelectEndpoint(KEYBOARD_IN_EPNUM); Endpoint_SelectEndpoint(KEYBOARD_IN_EPNUM);
/* Check if Keyboard Endpoint Ready for Read/Write */ /* Check if Keyboard Endpoint Ready for Read/Write */
if (Endpoint_IsReadWriteAllowed()) while (!Endpoint_IsReadWriteAllowed()) ;
{
/* Write Keyboard Report Data */ /* Write Keyboard Report Data */
Endpoint_Write_Stream_LE(report, sizeof(report_keyboard_t), NULL); Endpoint_Write_Stream_LE(report, sizeof(report_keyboard_t), NULL);
/* Finalize the stream transfer to send the last packet */ /* Finalize the stream transfer to send the last packet */
Endpoint_ClearIN(); Endpoint_ClearIN();
}
keyboard_report_sent = *report; keyboard_report_sent = *report;
} }
@ -362,14 +362,13 @@ static void send_mouse(report_mouse_t *report)
Endpoint_SelectEndpoint(MOUSE_IN_EPNUM); Endpoint_SelectEndpoint(MOUSE_IN_EPNUM);
/* Check if Mouse Endpoint Ready for Read/Write */ /* Check if Mouse Endpoint Ready for Read/Write */
if (Endpoint_IsReadWriteAllowed()) while (!Endpoint_IsReadWriteAllowed()) ;
{
/* Write Mouse Report Data */ /* Write Mouse Report Data */
Endpoint_Write_Stream_LE(report, sizeof(report_mouse_t), NULL); Endpoint_Write_Stream_LE(report, sizeof(report_mouse_t), NULL);
/* Finalize the stream transfer to send the last packet */ /* Finalize the stream transfer to send the last packet */
Endpoint_ClearIN(); Endpoint_ClearIN();
}
#endif #endif
} }
@ -380,11 +379,10 @@ static void send_system(uint16_t data)
.usage = data .usage = data
}; };
Endpoint_SelectEndpoint(EXTRAKEY_IN_EPNUM); Endpoint_SelectEndpoint(EXTRAKEY_IN_EPNUM);
if (Endpoint_IsReadWriteAllowed()) { while (!Endpoint_IsReadWriteAllowed()) ;
Endpoint_Write_Stream_LE(&r, sizeof(report_extra_t), NULL); Endpoint_Write_Stream_LE(&r, sizeof(report_extra_t), NULL);
Endpoint_ClearIN(); Endpoint_ClearIN();
} }
}
static void send_consumer(uint16_t data) static void send_consumer(uint16_t data)
{ {
@ -393,11 +391,10 @@ static void send_consumer(uint16_t data)
.usage = data .usage = data
}; };
Endpoint_SelectEndpoint(EXTRAKEY_IN_EPNUM); Endpoint_SelectEndpoint(EXTRAKEY_IN_EPNUM);
if (Endpoint_IsReadWriteAllowed()) { while (!Endpoint_IsReadWriteAllowed()) ;
Endpoint_Write_Stream_LE(&r, sizeof(report_extra_t), NULL); Endpoint_Write_Stream_LE(&r, sizeof(report_extra_t), NULL);
Endpoint_ClearIN(); Endpoint_ClearIN();
} }
}
/******************************************************************************* /*******************************************************************************