X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/c8942ef4699362747efd6580975a7f61757a4cd6..40db485c7967c584eb9fe855e744ed0dc6fe8bae:/Demos/Host/LowLevel/VirtualSerialHost/ConfigDescriptor.c diff --git a/Demos/Host/LowLevel/VirtualSerialHost/ConfigDescriptor.c b/Demos/Host/LowLevel/VirtualSerialHost/ConfigDescriptor.c index 7d9fb38c0..d702771eb 100644 --- a/Demos/Host/LowLevel/VirtualSerialHost/ConfigDescriptor.c +++ b/Demos/Host/LowLevel/VirtualSerialHost/ConfigDescriptor.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 @@ -34,7 +34,7 @@ * needed to communication with an attached USB device. Descriptors are special computer-readable structures * which the host requests upon device enumeration, to determine the device's capabilities and functions. */ - + #include "ConfigDescriptor.h" /** Reads and processes an attached device's descriptors, to determine compatibility and pipe configurations. This @@ -50,7 +50,7 @@ uint8_t ProcessConfigurationDescriptor(void) uint8_t ConfigDescriptorData[512]; void* CurrConfigLocation = ConfigDescriptorData; uint16_t CurrConfigBytesRem; - + USB_Descriptor_Interface_t* CDCControlInterface = NULL; USB_Descriptor_Endpoint_t* DataINEndpoint = NULL; USB_Descriptor_Endpoint_t* DataOUTEndpoint = NULL; @@ -85,7 +85,7 @@ uint8_t ProcessConfigurationDescriptor(void) { /* Descriptor not found, error out */ return NoCompatibleInterfaceFound; - } + } /* Clear any found endpoints */ DataINEndpoint = NULL; @@ -111,7 +111,7 @@ uint8_t ProcessConfigurationDescriptor(void) /* Skip the remainder of the loop as we have not found an endpoint yet */ continue; } - + /* Retrieve the endpoint address from the endpoint descriptor */ USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Endpoint_t); @@ -129,7 +129,7 @@ uint8_t ProcessConfigurationDescriptor(void) DataOUTEndpoint = EndpointData; } } - + /* Configure the CDC data IN pipe */ Pipe_ConfigurePipe(CDC_DATA_IN_PIPE, EP_TYPE_BULK, PIPE_TOKEN_IN, DataINEndpoint->EndpointAddress, DataINEndpoint->EndpointSize, PIPE_BANK_SINGLE); @@ -160,14 +160,14 @@ uint8_t DComp_NextCDCControlInterface(void* CurrentDescriptor) if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface) { /* Check the CDC descriptor class, subclass and protocol, break out if correct control interface found */ - if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class == CDC_CONTROL_CLASS) && - (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).SubClass == CDC_CONTROL_SUBCLASS) && - (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == CDC_CONTROL_PROTOCOL)) + if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class == CDC_CSCP_CDCClass) && + (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).SubClass == CDC_CSCP_ACMSubclass) && + (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == CDC_CSCP_ATCommandProtocol)) { return DESCRIPTOR_SEARCH_Found; } } - + return DESCRIPTOR_SEARCH_NotFound; } @@ -184,14 +184,14 @@ uint8_t DComp_NextCDCDataInterface(void* CurrentDescriptor) if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface) { /* Check the CDC descriptor class, subclass and protocol, break out if correct data interface found */ - if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class == CDC_DATA_CLASS) && - (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).SubClass == CDC_DATA_SUBCLASS) && - (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == CDC_DATA_PROTOCOL)) + if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class == CDC_CSCP_CDCDataClass) && + (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).SubClass == CDC_CSCP_NoDataSubclass) && + (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == CDC_CSCP_NoDataProtocol)) { return DESCRIPTOR_SEARCH_Found; } } - + return DESCRIPTOR_SEARCH_NotFound; } @@ -211,7 +211,7 @@ uint8_t DComp_NextCDCDataInterfaceEndpoint(void* CurrentDescriptor) { uint8_t EndpointType = (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Endpoint_t).Attributes & EP_TYPE_MASK); - + if ((EndpointType == EP_TYPE_BULK) || (EndpointType == EP_TYPE_INTERRUPT)) return DESCRIPTOR_SEARCH_Found; } @@ -222,3 +222,4 @@ uint8_t DComp_NextCDCDataInterfaceEndpoint(void* CurrentDescriptor) return DESCRIPTOR_SEARCH_NotFound; } +