\r
#include "MouseHost.h"\r
\r
-/* Project Tags, for reading out using the ButtLoad project */\r
-BUTTLOADTAG(ProjName, "LUFA Mouse Host App");\r
-BUTTLOADTAG(BuildTime, __TIME__);\r
-BUTTLOADTAG(BuildDate, __DATE__);\r
-BUTTLOADTAG(LUFAVersion, "LUFA V" LUFA_VERSION_STRING);\r
-\r
/* Scheduler Task List */\r
TASK_LIST\r
{\r
Pipe_SelectPipe(MOUSE_DATAPIPE); \r
\r
#if !defined(INTERRUPT_DATA_PIPE)\r
- /* Unfreeze mouse data pipe */\r
+ /* Unfreeze keyboard data pipe */\r
Pipe_Unfreeze();\r
#endif\r
\r
- /* Ensure pipe contains data and is ready to be read before continuing */\r
- if (!(Pipe_ReadWriteAllowed()))\r
+ /* Check to see if a packet has been received */\r
+ if (!(Pipe_IsINReceived()))\r
{\r
#if !defined(INTERRUPT_DATA_PIPE)\r
- /* Refreeze mouse data pipe */\r
+ /* Refreeze HID data IN pipe */\r
Pipe_Freeze();\r
#endif\r
-\r
+ \r
return;\r
}\r
\r
- /* Read in mouse report data */\r
- Pipe_Read_Stream_LE(&MouseReport, sizeof(MouseReport)); \r
- \r
- /* Clear the IN endpoint, ready for next data packet */\r
- Pipe_ClearCurrentBank();\r
+ /* Ensure pipe contains data before trying to read from it */\r
+ if (Pipe_IsReadWriteAllowed())\r
+ {\r
+ /* Read in mouse report data */\r
+ Pipe_Read_Stream_LE(&MouseReport, sizeof(MouseReport)); \r
+\r
+ /* Alter status LEDs according to mouse X movement */\r
+ if (MouseReport.X > 0)\r
+ LEDMask |= LEDS_LED1;\r
+ else if (MouseReport.X < 0)\r
+ LEDMask |= LEDS_LED2;\r
+ \r
+ /* Alter status LEDs according to mouse Y movement */\r
+ if (MouseReport.Y > 0)\r
+ LEDMask |= LEDS_LED3;\r
+ else if (MouseReport.Y < 0)\r
+ LEDMask |= LEDS_LED4;\r
+\r
+ /* Alter status LEDs according to mouse button position */\r
+ if (MouseReport.Button)\r
+ LEDMask = LEDS_ALL_LEDS;\r
\r
- /* Alter status LEDs according to mouse X movement */\r
- if (MouseReport.X > 0)\r
- LEDMask |= LEDS_LED1;\r
- else if (MouseReport.X < 0)\r
- LEDMask |= LEDS_LED2;\r
+ LEDs_SetAllLEDs(LEDMask);\r
\r
- /* Alter status LEDs according to mouse Y movement */\r
- if (MouseReport.Y > 0)\r
- LEDMask |= LEDS_LED3;\r
- else if (MouseReport.Y < 0)\r
- LEDMask |= LEDS_LED4;\r
-\r
- /* Alter status LEDs according to mouse button position */\r
- if (MouseReport.Button)\r
- LEDMask = LEDS_ALL_LEDS;\r
- \r
- LEDs_SetAllLEDs(LEDMask);\r
- \r
- /* Print mouse report data through the serial port */\r
- printf_P(PSTR("dX:%2d dY:%2d Button:%d\r\n"), MouseReport.X,\r
- MouseReport.Y,\r
- MouseReport.Button);\r
+ /* Print mouse report data through the serial port */\r
+ printf_P(PSTR("dX:%2d dY:%2d Button:%d\r\n"), MouseReport.X,\r
+ MouseReport.Y,\r
+ MouseReport.Button);\r
+ }\r
+\r
+ /* Clear the IN endpoint, ready for next data packet */\r
+ Pipe_ClearIN();\r
\r
#if !defined(INTERRUPT_DATA_PIPE)\r
/* Refreeze mouse data pipe */\r