X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/b8dfa976ce796ede92dfefa6a39eb0a3b08acdce..3c1b28cf5ff16fede61f2abf37d5616f3e661036:/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.c diff --git a/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.c b/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.c index c54bb158f..f932a32f3 100644 --- a/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.c +++ b/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2010. + Copyright (C) Dean Camera, 2012. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com) Copyright 2010 Denver Gingerich (denver [at] ossguy [dot] com) Permission to use, copy, modify, distribute, and sell this @@ -38,10 +38,10 @@ #include "KeyboardMouse.h" /** Global structure to hold the current keyboard interface HID report, for transmission to the host */ -USB_KeyboardReport_Data_t KeyboardReportData; +static USB_KeyboardReport_Data_t KeyboardReportData; /** Global structure to hold the current mouse interface HID report, for transmission to the host */ -USB_MouseReport_Data_t MouseReportData; +static USB_MouseReport_Data_t MouseReportData; /** Main program entry point. This routine configures the hardware required by the application, then @@ -104,24 +104,21 @@ void EVENT_USB_Device_ConfigurationChanged(void) bool ConfigSuccess = true; /* Setup Keyboard HID Report Endpoints */ - ConfigSuccess &= Endpoint_ConfigureEndpoint(KEYBOARD_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, - HID_EPSIZE, ENDPOINT_BANK_SINGLE); - ConfigSuccess &= Endpoint_ConfigureEndpoint(KEYBOARD_OUT_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT, - HID_EPSIZE, ENDPOINT_BANK_SINGLE); + ConfigSuccess &= Endpoint_ConfigureEndpoint(KEYBOARD_IN_EPADDR, EP_TYPE_INTERRUPT, HID_EPSIZE, 1); + ConfigSuccess &= Endpoint_ConfigureEndpoint(KEYBOARD_OUT_EPADDR, EP_TYPE_INTERRUPT, HID_EPSIZE, 1); /* Setup Mouse HID Report Endpoint */ - ConfigSuccess &= Endpoint_ConfigureEndpoint(MOUSE_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, - HID_EPSIZE, ENDPOINT_BANK_SINGLE); + ConfigSuccess &= Endpoint_ConfigureEndpoint(MOUSE_IN_EPADDR, EP_TYPE_INTERRUPT, HID_EPSIZE, 1); /* Indicate endpoint configuration success or failure */ LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR); } -/** Event handler for the USB_UnhandledControlPacket event. This is used to catch standard and class specific - * control requests that are not handled internally by the USB library (including the HID commands, which are - * all issued via the control endpoint), so that they can be handled appropriately for the application. +/** Event handler for the USB_ControlRequest event. This is used to catch and process control requests sent to + * the device from the USB host before passing along unhandled control requests to the library for processing + * internally. */ -void EVENT_USB_Device_UnhandledControlRequest(void) +void EVENT_USB_Device_ControlRequest(void) { uint8_t* ReportData; uint8_t ReportSize; @@ -168,7 +165,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void) } /* Read in the LED report from the host */ - uint8_t LEDStatus = Endpoint_Read_Byte(); + uint8_t LEDStatus = Endpoint_Read_8(); Endpoint_ClearOUT(); Endpoint_ClearStatusStage(); @@ -184,7 +181,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void) /** Processes a given Keyboard LED report from the host, and sets the board LEDs to match. Since the Keyboard * LED report can be sent through either the control endpoint (via a HID SetReport request) or the HID OUT * endpoint, the processing code is placed here to avoid duplicating it and potentially having different - * behaviour depending on the method used to sent it. + * behavior depending on the method used to sent it. */ void Keyboard_ProcessLEDReport(const uint8_t LEDStatus) { @@ -219,7 +216,7 @@ void Keyboard_HID_Task(void) if (!(Buttons_GetStatus() & BUTTONS_BUTTON1)) { /* Make sent key uppercase by indicating that the left shift key is pressed */ - KeyboardReportData.Modifier = HID_KEYBOARD_MODIFER_LEFTSHIFT; + KeyboardReportData.Modifier = HID_KEYBOARD_MODIFIER_LEFTSHIFT; if (JoyStatus_LCL & JOY_UP) KeyboardReportData.KeyCode[0] = HID_KEYBOARD_SC_A; @@ -236,13 +233,13 @@ void Keyboard_HID_Task(void) } /* Select the Keyboard Report Endpoint */ - Endpoint_SelectEndpoint(KEYBOARD_IN_EPNUM); + Endpoint_SelectEndpoint(KEYBOARD_IN_EPADDR); /* Check if Keyboard Endpoint Ready for Read/Write */ if (Endpoint_IsReadWriteAllowed()) { /* Write Keyboard Report Data */ - Endpoint_Write_Stream_LE(&KeyboardReportData, sizeof(KeyboardReportData)); + Endpoint_Write_Stream_LE(&KeyboardReportData, sizeof(KeyboardReportData), NULL); /* Finalize the stream transfer to send the last packet */ Endpoint_ClearIN(); @@ -252,13 +249,13 @@ void Keyboard_HID_Task(void) } /* Select the Keyboard LED Report Endpoint */ - Endpoint_SelectEndpoint(KEYBOARD_OUT_EPNUM); + Endpoint_SelectEndpoint(KEYBOARD_OUT_EPADDR); /* Check if Keyboard LED Endpoint Ready for Read/Write */ if (Endpoint_IsReadWriteAllowed()) { /* Read in and process the LED report from the host */ - Keyboard_ProcessLEDReport(Endpoint_Read_Byte()); + Keyboard_ProcessLEDReport(Endpoint_Read_8()); /* Handshake the OUT Endpoint - clear endpoint and ready for next report */ Endpoint_ClearOUT(); @@ -290,17 +287,17 @@ void Mouse_HID_Task(void) MouseReportData.X = -1; if (JoyStatus_LCL & JOY_PRESS) - MouseReportData.Button = (1 << 0); + MouseReportData.Button |= (1 << 0); } /* Select the Mouse Report Endpoint */ - Endpoint_SelectEndpoint(MOUSE_IN_EPNUM); + Endpoint_SelectEndpoint(MOUSE_IN_EPADDR); /* Check if Mouse Endpoint Ready for Read/Write */ if (Endpoint_IsReadWriteAllowed()) { /* Write Mouse Report Data */ - Endpoint_Write_Stream_LE(&MouseReportData, sizeof(MouseReportData)); + Endpoint_Write_Stream_LE(&MouseReportData, sizeof(MouseReportData), NULL); /* Finalize the stream transfer to send the last packet */ Endpoint_ClearIN();