Device mode class driver callbacks are now fired before the control request status...
[pub/USBasp.git] / Demos / Device / ClassDriver / KeyboardMouse / KeyboardMouse.c
index ec17bf6..94f27bd 100644 (file)
@@ -8,7 +8,6 @@
 \r
 /*\r
   Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
 \r
 /*\r
   Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-  Copyright 2010  Denver Gingerich (denver [at] ossguy [dot] com)\r
          \r
   Permission to use, copy, modify, distribute, and sell this \r
   software and its documentation for any purpose is hereby granted\r
          \r
   Permission to use, copy, modify, distribute, and sell this \r
   software and its documentation for any purpose is hereby granted\r
@@ -72,13 +71,13 @@ USB_ClassInfo_HID_Device_t Mouse_HID_Interface =
        {\r
                .Config =\r
                        {\r
        {\r
                .Config =\r
                        {\r
-                               .InterfaceNumber         = 0,\r
+                               .InterfaceNumber              = 1,\r
 \r
 \r
-                               .ReportINEndpointNumber  = MOUSE_IN_EPNUM,\r
-                               .ReportINEndpointSize    = HID_EPSIZE,\r
+                               .ReportINEndpointNumber       = MOUSE_IN_EPNUM,\r
+                               .ReportINEndpointSize         = HID_EPSIZE,\r
 \r
 \r
-                               .PrevReportINBuffer      = PrevMouseHIDReportBuffer,\r
-                               .PrevReportINBufferSize  = sizeof(PrevMouseHIDReportBuffer),\r
+                               .PrevReportINBuffer           = PrevMouseHIDReportBuffer,\r
+                               .PrevReportINBufferSize       = sizeof(PrevMouseHIDReportBuffer),\r
                        },              \r
        };\r
 \r
                        },              \r
        };\r
 \r
@@ -90,6 +89,7 @@ int main(void)
        SetupHardware();\r
 \r
        LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
        SetupHardware();\r
 \r
        LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
+       sei();\r
 \r
        for (;;)\r
        {\r
 \r
        for (;;)\r
        {\r
@@ -180,6 +180,8 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
                if (!(ButtonStatus_LCL & BUTTONS_BUTTON1))\r
                  return 0;\r
                \r
                if (!(ButtonStatus_LCL & BUTTONS_BUTTON1))\r
                  return 0;\r
                \r
+               KeyboardReport->Modifier = HID_KEYBOARD_MODIFER_LEFTSHIFT;\r
+\r
                if (JoyStatus_LCL & JOY_UP)\r
                  KeyboardReport->KeyCode[0] = 0x04; // A\r
                else if (JoyStatus_LCL & JOY_DOWN)\r
                if (JoyStatus_LCL & JOY_UP)\r
                  KeyboardReport->KeyCode[0] = 0x04; // A\r
                else if (JoyStatus_LCL & JOY_DOWN)\r
@@ -215,7 +217,7 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
                  MouseReport->X =  1;\r
 \r
                if (JoyStatus_LCL & JOY_PRESS)\r
                  MouseReport->X =  1;\r
 \r
                if (JoyStatus_LCL & JOY_PRESS)\r
-                 MouseReport->Button  = (1 << 0);\r
+                 MouseReport->Button |= (1 << 0);\r
                \r
                *ReportSize = sizeof(USB_MouseReport_Data_t);\r
                return true;            \r
                \r
                *ReportSize = sizeof(USB_MouseReport_Data_t);\r
                return true;            \r
@@ -237,13 +239,13 @@ void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDI
                uint8_t  LEDMask   = LEDS_NO_LEDS;\r
                uint8_t* LEDReport = (uint8_t*)ReportData;\r
 \r
                uint8_t  LEDMask   = LEDS_NO_LEDS;\r
                uint8_t* LEDReport = (uint8_t*)ReportData;\r
 \r
-               if (*LEDReport & 0x01) // NUM Lock\r
+               if (*LEDReport & HID_KEYBOARD_LED_NUMLOCK)\r
                  LEDMask |= LEDS_LED1;\r
                \r
                  LEDMask |= LEDS_LED1;\r
                \r
-               if (*LEDReport & 0x02) // CAPS Lock\r
+               if (*LEDReport & HID_KEYBOARD_LED_CAPSLOCK)\r
                  LEDMask |= LEDS_LED3;\r
 \r
                  LEDMask |= LEDS_LED3;\r
 \r
-               if (*LEDReport & 0x04) // SCROLL Lock\r
+               if (*LEDReport & HID_KEYBOARD_LED_SCROLLLOCK)\r
                  LEDMask |= LEDS_LED4;\r
                  \r
                LEDs_SetAllLEDs(LEDMask);\r
                  LEDMask |= LEDS_LED4;\r
                  \r
                LEDs_SetAllLEDs(LEDMask);\r