X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/e5e7eaee7af719cee00a8c2cb6fb4649dde0aa05..526e398986583e2fb65c0a36a2fbf2ce153446e5:/Demos/Device/KeyboardMouse/KeyboardMouse.c?ds=sidebyside diff --git a/Demos/Device/KeyboardMouse/KeyboardMouse.c b/Demos/Device/KeyboardMouse/KeyboardMouse.c index 9cae69a5e..5c9332849 100644 --- a/Demos/Device/KeyboardMouse/KeyboardMouse.c +++ b/Demos/Device/KeyboardMouse/KeyboardMouse.c @@ -139,17 +139,15 @@ EVENT_HANDLER(USB_UnhandledControlPacket) uint8_t ReportSize; /* Handle HID Class specific requests */ - switch (bRequest) + switch (USB_ControlRequest.bRequest) { case REQ_GetReport: - if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE)) + if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE)) { - Endpoint_Discard_Word(); - - uint16_t wIndex = Endpoint_Read_Word_LE(); - + Endpoint_ClearSETUP(); + /* Determine if it is the mouse or the keyboard data that is being requested */ - if (!(wIndex)) + if (!(USB_ControlRequest.wIndex)) { ReportData = (uint8_t*)&KeyboardReportData; ReportSize = sizeof(KeyboardReportData); @@ -160,17 +158,8 @@ EVENT_HANDLER(USB_UnhandledControlPacket) ReportSize = sizeof(MouseReportData); } - /* Read in the number of bytes in the report to send to the host */ - uint16_t wLength = Endpoint_Read_Word_LE(); - - /* If trying to send more bytes than exist to the host, clamp the value at the report size */ - if (wLength > ReportSize) - wLength = ReportSize; - - Endpoint_ClearSETUP(); - /* Write the report data to the control endpoint */ - Endpoint_Write_Control_Stream_LE(ReportData, wLength); + Endpoint_Write_Control_Stream_LE(ReportData, ReportSize); /* Clear the report data afterwards */ memset(ReportData, 0, ReportSize); @@ -181,7 +170,7 @@ EVENT_HANDLER(USB_UnhandledControlPacket) break; case REQ_SetReport: - if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) + if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) { Endpoint_ClearSETUP(); @@ -251,8 +240,8 @@ TASK(USB_Keyboard) { uint8_t JoyStatus_LCL = Joystick_GetStatus(); - /* Check if HWB is not pressed, if so mouse mode enabled */ - if (!(HWB_GetStatus())) + /* Check if board button is not pressed, if so mouse mode enabled */ + if (!(Buttons_GetStatus() & BUTTONS_BUTTON1)) { if (JoyStatus_LCL & JOY_UP) KeyboardReportData.KeyCode[0] = 0x04; // A @@ -322,8 +311,8 @@ TASK(USB_Mouse) { uint8_t JoyStatus_LCL = Joystick_GetStatus(); - /* Check if HWB is pressed, if so mouse mode enabled */ - if (HWB_GetStatus()) + /* Check if board button is pressed, if so mouse mode enabled */ + if (Buttons_GetStatus() & BUTTONS_BUTTON1) { if (JoyStatus_LCL & JOY_UP) MouseReportData.Y = 1;