X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/8f6b4ddf764c3a54e42d00a7502c82c5c3e71b1c..526e398986583e2fb65c0a36a2fbf2ce153446e5:/Demos/Device/KeyboardMouse/KeyboardMouse.c?ds=inline diff --git a/Demos/Device/KeyboardMouse/KeyboardMouse.c b/Demos/Device/KeyboardMouse/KeyboardMouse.c index 71e23ab1e..5c9332849 100644 --- a/Demos/Device/KeyboardMouse/KeyboardMouse.c +++ b/Demos/Device/KeyboardMouse/KeyboardMouse.c @@ -40,9 +40,9 @@ /* Scheduler Task List */ TASK_LIST { - { Task: USB_USBTask , TaskStatus: TASK_STOP }, - { Task: USB_Mouse , TaskStatus: TASK_RUN }, - { Task: USB_Keyboard , TaskStatus: TASK_RUN }, + { .Task = USB_USBTask , .TaskStatus = TASK_STOP }, + { .Task = USB_Mouse , .TaskStatus = TASK_RUN }, + { .Task = USB_Keyboard , .TaskStatus = TASK_RUN }, }; /* Global Variables */ @@ -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,30 +158,21 @@ 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_ClearControlSETUP(); - /* 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); /* Finalize the stream transfer to send the last packet or clear the host abort */ - Endpoint_ClearControlOUT(); + Endpoint_ClearOUT(); } break; case REQ_SetReport: - if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) + if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) { - Endpoint_ClearControlSETUP(); + Endpoint_ClearSETUP(); /* Wait until the LED report has been sent by the host */ while (!(Endpoint_IsOUTReceived())); @@ -205,11 +194,11 @@ EVENT_HANDLER(USB_UnhandledControlPacket) LEDs_SetAllLEDs(LEDMask); /* Clear the endpoint data */ - Endpoint_ClearControlOUT(); + Endpoint_ClearOUT(); /* Acknowledge status stage */ while (!(Endpoint_IsINReady())); - Endpoint_ClearControlIN(); + Endpoint_ClearIN(); } break; @@ -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;