X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/51566d1a811f43dc39f38cb597de44ba9363d974..6bbd2a99c216bd47aeeaa53ab3687cb045a37e5a:/LUFA/Drivers/USB/Class/Host/HID.c diff --git a/LUFA/Drivers/USB/Class/Host/HID.c b/LUFA/Drivers/USB/Class/Host/HID.c index 22b2de1cb..741f56a18 100644 --- a/LUFA/Drivers/USB/Class/Host/HID.c +++ b/LUFA/Drivers/USB/Class/Host/HID.c @@ -36,7 +36,7 @@ #warning The HID Host mode Class driver is currently incomplete and is for preview purposes only. -uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo, uint16_t ConfigDescriptorSize, +uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo, uint16_t ConfigDescriptorSize, uint8_t* ConfigDescriptorData) { uint8_t FoundEndpoints = 0; @@ -75,7 +75,7 @@ uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo, uint if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData, DComp_HID_Host_NextHIDInterfaceEndpoint) != DESCRIPTOR_SEARCH_COMP_Found) { - if (FoundEndpoints == (1 << HID_FOUND_DATAPIPE_IN)) + if (FoundEndpoints & HID_FOUND_DATAPIPE_IN) break; return HID_ENUMERROR_EndpointsNotFound; @@ -149,12 +149,13 @@ static uint8_t DComp_HID_Host_NextHIDInterfaceEndpoint(void* CurrentDescriptor) return DESCRIPTOR_SEARCH_NotFound; } -void HID_Host_USBTask(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo) +void HID_Host_USBTask(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo) { } -uint8_t HID_Host_ReceiveReport(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo, bool ControlRequest, uint8_t* ReportID, void* Buffer) +uint8_t HID_Host_ReceiveReport(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo, const bool ControlRequest, + uint8_t* ReportID, void* Buffer) { if ((USB_HostState != HOST_STATE_Configured) || !(HIDInterfaceInfo->State.IsActive)) return false; @@ -199,14 +200,16 @@ uint8_t HID_Host_ReceiveReport(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo, bool if ((ErrorCode = Pipe_Read_Stream_LE(Buffer, ReportSize, NO_STREAM_CALLBACK)) != PIPE_RWSTREAM_NoError) return ErrorCode; - + + Pipe_ClearIN(); Pipe_Freeze(); return PIPE_RWSTREAM_NoError; } } -uint8_t HID_Host_SendReport(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo, uint8_t ReportID, void* Buffer, uint16_t ReportSize) +uint8_t HID_Host_SendReport(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo, uint8_t ReportID, void* Buffer, + const uint16_t ReportSize) { if ((USB_HostState != HOST_STATE_Configured) || !(HIDInterfaceInfo->State.IsActive)) return false; @@ -239,13 +242,14 @@ uint8_t HID_Host_SendReport(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo, uint8_t if ((ErrorCode = Pipe_Write_Stream_LE(Buffer, ReportSize, NO_STREAM_CALLBACK)) != PIPE_RWSTREAM_NoError) return ErrorCode; + Pipe_ClearOUT(); Pipe_Freeze(); return PIPE_RWSTREAM_NoError; } } -bool HID_Host_IsReportReceived(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo) +bool HID_Host_IsReportReceived(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo) { if ((USB_HostState != HOST_STATE_Configured) || !(HIDInterfaceInfo->State.IsActive)) return false; @@ -255,25 +259,22 @@ bool HID_Host_IsReportReceived(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo) Pipe_SelectPipe(HIDInterfaceInfo->Config.DataINPipeNumber); Pipe_Unfreeze(); - ReportReceived = Pipe_IsReadWriteAllowed(); + ReportReceived = Pipe_IsINReceived(); Pipe_Freeze(); return ReportReceived; } -uint8_t USB_HID_Host_SetBootProtocol(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo) +uint8_t USB_HID_Host_SetBootProtocol(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo) { - if ((USB_HostState != HOST_STATE_Configured) || !(HIDInterfaceInfo->State.IsActive)) - return false; - uint8_t ErrorCode; USB_ControlRequest = (USB_Request_Header_t) { .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE), .bRequest = REQ_SetProtocol, - .wValue = 1, + .wValue = 0, .wIndex = HIDInterfaceInfo->State.InterfaceNumber, .wLength = 0, }; @@ -291,11 +292,8 @@ uint8_t USB_HID_Host_SetBootProtocol(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo) return HOST_SENDCONTROL_Successful; } -uint8_t USB_HID_Host_SetReportProtocol(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo) +uint8_t USB_HID_Host_SetReportProtocol(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo) { - if ((USB_HostState != HOST_STATE_Configured) || !(HIDInterfaceInfo->State.IsActive)) - return false; - uint8_t ErrorCode; uint8_t HIDReportData[HIDInterfaceInfo->State.HIDReportSize]; @@ -318,7 +316,7 @@ uint8_t USB_HID_Host_SetReportProtocol(USB_ClassInfo_HID_Host_t* HIDInterfaceInf { .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE), .bRequest = REQ_SetProtocol, - .wValue = 0, + .wValue = 1, .wIndex = HIDInterfaceInfo->State.InterfaceNumber, .wLength = 0, };