X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/071e02c6b6b4837fa9cf0b6d4c749994e02638d7..ec537fd84d6ad3fd0dfa1b55efa2c2d554c1db48:/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.c diff --git a/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.c b/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.c index f477ac276..91a126266 100644 --- a/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.c +++ b/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.c @@ -1,21 +1,21 @@ /* LUFA Library Copyright (C) Dean Camera, 2010. - + dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com + www.lufa-lib.org */ /* Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - Permission to use, copy, modify, distribute, and sell this + Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in + without fee, provided that the above copyright notice appear in all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the software without specific, written prior permission. The author disclaim all warranties with regard to this @@ -33,7 +33,7 @@ * Main source file for the GenericHIDHost demo. This file contains the main tasks of * the demo and is responsible for the initial application hardware configuration. */ - + #include "GenericHIDHost.h" /** Main program entry point. This routine configures the hardware required by the application, then @@ -112,7 +112,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode) /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while * enumerating an attached USB device. */ -void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) +void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, + const uint8_t SubErrorCode) { printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" " -- Error Code %d\r\n" @@ -136,10 +137,10 @@ void ReadNextReport(void) { /* Refreeze HID data IN pipe */ Pipe_Freeze(); - + return; } - + /* Ensure pipe contains data before trying to read from it */ if (Pipe_IsReadWriteAllowed()) { @@ -147,17 +148,17 @@ void ReadNextReport(void) /* Read in HID report data */ Pipe_Read_Stream_LE(&ReportINData, sizeof(ReportINData)); - + /* Print report data through the serial port */ for (uint16_t CurrByte = 0; CurrByte < sizeof(ReportINData); CurrByte++) printf_P(PSTR("0x%02X "), ReportINData[CurrByte]); - + puts_P(PSTR("\r\n")); } - + /* Clear the IN endpoint, ready for next data packet */ Pipe_ClearIN(); - + /* Refreeze HID data IN pipe */ Pipe_Freeze(); } @@ -165,15 +166,18 @@ void ReadNextReport(void) /** Writes a report to the attached device. * * \param[in] ReportOUTData Buffer containing the report to send to the device - * \param[in] ReportIndex Index of the report in the device (zero if the device does not use multiple reports) - * \param[in] ReportType Type of report to send, either REPORT_TYPE_OUT or REPORT_TYPE_FEATURE - * \param[in] ReportLength Length of the report to send + * \param[in] ReportIndex Index of the report in the device (zero if the device does not use multiple reports) + * \param[in] ReportType Type of report to send, either REPORT_TYPE_OUT or REPORT_TYPE_FEATURE + * \param[in] ReportLength Length of the report to send */ -void WriteNextReport(uint8_t* ReportOUTData, uint8_t ReportIndex, uint8_t ReportType, uint16_t ReportLength) +void WriteNextReport(uint8_t* ReportOUTData, + const uint8_t ReportIndex, + const uint8_t ReportType, + uint16_t ReportLength) { /* Select the HID data OUT pipe */ Pipe_SelectPipe(HID_DATA_OUT_PIPE); - + /* Not all HID devices have an OUT endpoint (some require OUT reports to be sent over the * control endpoint instead) - check to see if the OUT endpoint has been initialized */ if (Pipe_IsConfigured() && (ReportType == REPORT_TYPE_OUT)) @@ -185,17 +189,17 @@ void WriteNextReport(uint8_t* ReportOUTData, uint8_t ReportIndex, uint8_t Report { /* Refreeze the data OUT pipe */ Pipe_Freeze(); - + return; } - + /* If the report index is used, send it before the report data */ if (ReportIndex) Pipe_Write_Byte(ReportIndex); /* Write out HID report data */ - Pipe_Write_Stream_LE(ReportOUTData, ReportLength); - + Pipe_Write_Stream_LE(ReportOUTData, ReportLength); + /* Clear the OUT endpoint, send last data packet */ Pipe_ClearOUT(); @@ -208,7 +212,7 @@ void WriteNextReport(uint8_t* ReportOUTData, uint8_t ReportIndex, uint8_t Report USB_ControlRequest = (USB_Request_Header_t) { .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE), - .bRequest = REQ_SetReport, + .bRequest = HID_REQ_SetReport, .wValue = ((ReportType << 8) | ReportIndex), .wIndex = 0, .wLength = ReportLength, @@ -234,7 +238,7 @@ void HID_Host_Task(void) { case HOST_STATE_Addressed: puts_P(PSTR("Getting Config Data.\r\n")); - + /* Get and process the configuration descriptor data */ if ((ErrorCode = ProcessConfigurationDescriptor()) != SuccessfulConfigRead) { @@ -244,7 +248,7 @@ void HID_Host_Task(void) puts_P(PSTR(ESC_FG_RED "Invalid Device.\r\n")); printf_P(PSTR(" -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode); - + /* Indicate error status */ LEDs_SetAllLEDs(LEDMASK_USB_ERROR); @@ -261,12 +265,12 @@ void HID_Host_Task(void) /* Indicate error status */ LEDs_SetAllLEDs(LEDMASK_USB_ERROR); - + /* Wait until USB device disconnected */ USB_HostState = HOST_STATE_WaitForDeviceRemoval; break; } - + puts_P(PSTR("HID Device Enumerated.\r\n")); USB_HostState = HOST_STATE_Configured; @@ -277,3 +281,4 @@ void HID_Host_Task(void) break; } } +