- /* 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