forked from mfulz_github/qmk_firmware
Cache the USB_DeviceState variable internally in the library core when multiple checks are required in a single loop iteration, to reduce compiled code size.
This commit is contained in:
parent
93793679c9
commit
3ae9e6042f
|
@ -8,13 +8,14 @@ uint8_t TEMPLATE_FUNC_NAME (void* Buffer,
|
||||||
|
|
||||||
while (Length)
|
while (Length)
|
||||||
{
|
{
|
||||||
if (Endpoint_IsSETUPReceived())
|
uint8_t USB_DeviceState_LCL = USB_DeviceState;
|
||||||
return ENDPOINT_RWCSTREAM_HostAborted;
|
|
||||||
|
|
||||||
if (USB_DeviceState == DEVICE_STATE_Unattached)
|
if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
|
||||||
return ENDPOINT_RWCSTREAM_DeviceDisconnected;
|
return ENDPOINT_RWCSTREAM_DeviceDisconnected;
|
||||||
else if (USB_DeviceState == DEVICE_STATE_Suspended)
|
else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
|
||||||
return ENDPOINT_RWCSTREAM_BusSuspended;
|
return ENDPOINT_RWCSTREAM_BusSuspended;
|
||||||
|
else if (Endpoint_IsSETUPReceived())
|
||||||
|
return ENDPOINT_RWCSTREAM_HostAborted;
|
||||||
|
|
||||||
if (Endpoint_IsOUTReceived())
|
if (Endpoint_IsOUTReceived())
|
||||||
{
|
{
|
||||||
|
@ -30,9 +31,11 @@ uint8_t TEMPLATE_FUNC_NAME (void* Buffer,
|
||||||
|
|
||||||
while (!(Endpoint_IsINReady()))
|
while (!(Endpoint_IsINReady()))
|
||||||
{
|
{
|
||||||
if (USB_DeviceState == DEVICE_STATE_Unattached)
|
uint8_t USB_DeviceState_LCL = USB_DeviceState;
|
||||||
|
|
||||||
|
if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
|
||||||
return ENDPOINT_RWCSTREAM_DeviceDisconnected;
|
return ENDPOINT_RWCSTREAM_DeviceDisconnected;
|
||||||
else if (USB_DeviceState == DEVICE_STATE_Suspended)
|
else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
|
||||||
return ENDPOINT_RWCSTREAM_BusSuspended;
|
return ENDPOINT_RWCSTREAM_BusSuspended;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,16 +11,16 @@ uint8_t TEMPLATE_FUNC_NAME (const void* Buffer,
|
||||||
|
|
||||||
while (Length || LastPacketFull)
|
while (Length || LastPacketFull)
|
||||||
{
|
{
|
||||||
if (Endpoint_IsSETUPReceived())
|
uint8_t USB_DeviceState_LCL = USB_DeviceState;
|
||||||
return ENDPOINT_RWCSTREAM_HostAborted;
|
|
||||||
|
|
||||||
if (Endpoint_IsOUTReceived())
|
if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
|
||||||
break;
|
|
||||||
|
|
||||||
if (USB_DeviceState == DEVICE_STATE_Unattached)
|
|
||||||
return ENDPOINT_RWCSTREAM_DeviceDisconnected;
|
return ENDPOINT_RWCSTREAM_DeviceDisconnected;
|
||||||
else if (USB_DeviceState == DEVICE_STATE_Suspended)
|
else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
|
||||||
return ENDPOINT_RWCSTREAM_BusSuspended;
|
return ENDPOINT_RWCSTREAM_BusSuspended;
|
||||||
|
else if (Endpoint_IsSETUPReceived())
|
||||||
|
return ENDPOINT_RWCSTREAM_HostAborted;
|
||||||
|
else if (Endpoint_IsOUTReceived())
|
||||||
|
break;
|
||||||
|
|
||||||
if (Endpoint_IsINReady())
|
if (Endpoint_IsINReady())
|
||||||
{
|
{
|
||||||
|
@ -40,9 +40,11 @@ uint8_t TEMPLATE_FUNC_NAME (const void* Buffer,
|
||||||
|
|
||||||
while (!(Endpoint_IsOUTReceived()))
|
while (!(Endpoint_IsOUTReceived()))
|
||||||
{
|
{
|
||||||
if (USB_DeviceState == DEVICE_STATE_Unattached)
|
uint8_t USB_DeviceState_LCL = USB_DeviceState;
|
||||||
|
|
||||||
|
if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
|
||||||
return ENDPOINT_RWCSTREAM_DeviceDisconnected;
|
return ENDPOINT_RWCSTREAM_DeviceDisconnected;
|
||||||
else if (USB_DeviceState == DEVICE_STATE_Suspended)
|
else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
|
||||||
return ENDPOINT_RWCSTREAM_BusSuspended;
|
return ENDPOINT_RWCSTREAM_BusSuspended;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -115,9 +115,11 @@ uint8_t Endpoint_WaitUntilReady(void)
|
||||||
return ENDPOINT_READYWAIT_NoError;
|
return ENDPOINT_READYWAIT_NoError;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (USB_DeviceState == DEVICE_STATE_Unattached)
|
uint8_t USB_DeviceState_LCL = USB_DeviceState;
|
||||||
|
|
||||||
|
if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
|
||||||
return ENDPOINT_READYWAIT_DeviceDisconnected;
|
return ENDPOINT_READYWAIT_DeviceDisconnected;
|
||||||
else if (USB_DeviceState == DEVICE_STATE_Suspended)
|
else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
|
||||||
return ENDPOINT_READYWAIT_BusSuspended;
|
return ENDPOINT_READYWAIT_BusSuspended;
|
||||||
else if (Endpoint_IsStalled())
|
else if (Endpoint_IsStalled())
|
||||||
return ENDPOINT_READYWAIT_EndpointStalled;
|
return ENDPOINT_READYWAIT_EndpointStalled;
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
* handling of USB Start of Frame events while in USB Host mode
|
* handling of USB Start of Frame events while in USB Host mode
|
||||||
* - Added new PRNT_Host_BytesReceived(), PRNT_Host_ReceiveByte(), PRNT_Host_SendByte() and PRNT_Host_Flush() functions to the
|
* - Added new PRNT_Host_BytesReceived(), PRNT_Host_ReceiveByte(), PRNT_Host_SendByte() and PRNT_Host_Flush() functions to the
|
||||||
* Print Host Class driver
|
* Print Host Class driver
|
||||||
* - Added class specific descriptor type defines with standard USB-IF element naming
|
* - Added class specific descriptor alternative struct type defines with standard USB-IF element naming
|
||||||
* - Added new project makefile template to the library and moved board driver stub files into in a new "CodeTemplates" directory
|
* - Added new project makefile template to the library and moved board driver stub files into in a new "CodeTemplates" directory
|
||||||
* - Added board hardware driver support for the Linnix UDIP development board
|
* - Added board hardware driver support for the Linnix UDIP development board
|
||||||
* - Added board hardware driver support for the Busware BUI development board
|
* - Added board hardware driver support for the Busware BUI development board
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
* - Changed over all demos, drivers and internal functions to use the current frame number over the Start of Frame flag where possible
|
* - Changed over all demos, drivers and internal functions to use the current frame number over the Start of Frame flag where possible
|
||||||
* to free up the Start of Frame flag for interrupt use in the user application
|
* to free up the Start of Frame flag for interrupt use in the user application
|
||||||
* - All project makefiles now correctly clean intermediate build files from assembly and C++ sources (thanks to Daniel Czigany)
|
* - All project makefiles now correctly clean intermediate build files from assembly and C++ sources (thanks to Daniel Czigany)
|
||||||
* - Removed the EVENT_USB_InitFailure() event, not specifying a USB mode now defaults to UID selection mode
|
* - Removed the EVENT_USB_InitFailure() event, not specifying a USB mode correctly now defaults to UID selection mode
|
||||||
* - Renamed and moved class driver common constant definitions to make the naming scheme more uniform
|
* - Renamed and moved class driver common constant definitions to make the naming scheme more uniform
|
||||||
* - Changed default value for the reset polarity parameter in the AVRISP-MKII project so that it defaults to active low drive
|
* - Changed default value for the reset polarity parameter in the AVRISP-MKII project so that it defaults to active low drive
|
||||||
* - Changed configuration descriptor parser for all host mode projects and class drivers to ensure better compatibility with devices
|
* - Changed configuration descriptor parser for all host mode projects and class drivers to ensure better compatibility with devices
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
* into difficulties or need some advice. In addition, you can also email the library author to receive personalized
|
* into difficulties or need some advice. In addition, you can also email the library author to receive personalized
|
||||||
* support when you need it (subject to author's schedule).
|
* support when you need it (subject to author's schedule).
|
||||||
*
|
*
|
||||||
* <small>* Atmel Stack Mouse Device Demo 4292 bytes, LUFA Mouse Low Level Device Demo 3372 bytes, under identical build
|
* <small>* Atmel Stack Mouse Device Demo 4292 bytes, LUFA Mouse Low Level Device Demo 3332 bytes, under identical build
|
||||||
* environments</small>
|
* environments</small>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue