Update Studio Integration DLL, to include package logging.
[pub/USBasp.git] / Projects / MissileLauncher / ConfigDescriptor.c
index c7ddbcb..295caa5 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2010.
+     Copyright (C) Dean Camera, 2015.
 
   dean [at] fourwalledcubicle [dot] com
-      www.fourwalledcubicle.com
+           www.lufa-lib.org
 */
 
 /*
-  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2015  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
@@ -18,7 +18,7 @@
   advertising or publicity pertaining to distribution of the
   software without specific, written prior permission.
 
-  The author disclaim all warranties with regard to this
+  The author disclaims all warranties with regard to this
   software, including all implied warranties of merchantability
   and fitness.  In no event shall the author be liable for any
   special, indirect or consequential damages or any damages
@@ -82,7 +82,7 @@ uint8_t ProcessConfigurationDescriptor(void)
 
                        /* Get the next HID interface from the configuration descriptor */
                        if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
-                                                                                 DComp_NextHIDInterface) != DESCRIPTOR_SEARCH_COMP_Found)
+                                                     DComp_NextHIDInterface) != DESCRIPTOR_SEARCH_COMP_Found)
                        {
                                /* Descriptor not found, error out */
                                return NoCompatibleInterfaceFound;
@@ -102,23 +102,21 @@ uint8_t ProcessConfigurationDescriptor(void)
                USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Endpoint_t);
 
                /* If the endpoint is a IN type endpoint */
-               if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)
-                 DataINEndpoint = EndpointData;
+               if ((EndpointData->EndpointAddress & ENDPOINT_DIR_MASK) == ENDPOINT_DIR_IN)
+                 DataINEndpoint  = EndpointData;
                else
                  DataOUTEndpoint = EndpointData;
        }
 
        /* Configure the HID data IN pipe */
-       Pipe_ConfigurePipe(HID_DATA_IN_PIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN,
-                          DataINEndpoint->EndpointAddress, DataINEndpoint->EndpointSize, PIPE_BANK_SINGLE);
+       Pipe_ConfigurePipe(HID_DATA_IN_PIPE, EP_TYPE_INTERRUPT, DataINEndpoint->EndpointAddress, DataINEndpoint->EndpointSize, 1);
        Pipe_SetInterruptPeriod(DataINEndpoint->PollingIntervalMS);
 
        /* Check if the HID interface contained an optional OUT data endpoint */
        if (DataOUTEndpoint)
        {
                /* Configure the HID data OUT pipe */
-               Pipe_ConfigurePipe(HID_DATA_OUT_PIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_OUT,
-                                                  DataOUTEndpoint->EndpointAddress, DataOUTEndpoint->EndpointSize, PIPE_BANK_SINGLE);
+               Pipe_ConfigurePipe(HID_DATA_OUT_PIPE, EP_TYPE_INTERRUPT, DataOUTEndpoint->EndpointAddress, DataOUTEndpoint->EndpointSize, 1);
        }
 
        /* Valid data found, return success */
@@ -135,11 +133,15 @@ uint8_t ProcessConfigurationDescriptor(void)
  */
 uint8_t DComp_NextHIDInterface(void* CurrentDescriptor)
 {
+       USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);
+
        /* Determine if the current descriptor is an interface descriptor */
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)
+       if (Header->Type == DTYPE_Interface)
        {
+               USB_Descriptor_Interface_t* Interface = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Interface_t);
+
                /* Check the HID descriptor class and protocol, break out if correct class/protocol interface found */
-               if (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class == HID_CLASS)
+               if (Interface->Class == HID_CLASS)
                {
                        /* Indicate that the descriptor being searched for has been found */
                        return DESCRIPTOR_SEARCH_Found;
@@ -161,19 +163,23 @@ uint8_t DComp_NextHIDInterface(void* CurrentDescriptor)
  */
 uint8_t DComp_NextHIDInterfaceDataEndpoint(void* CurrentDescriptor)
 {
+       USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);
+
        /* Determine the type of the current descriptor */
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)
+       if (Header->Type == DTYPE_Endpoint)
        {
                /* Indicate that the descriptor being searched for has been found */
                return DESCRIPTOR_SEARCH_Found;
        }
-       else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)
+       else if (Header->Type == DTYPE_Interface)
        {
                /* Indicate that the search has failed prematurely and should be aborted */
                return DESCRIPTOR_SEARCH_Fail;
        }
-
-       /* Current descriptor does not match what this comparator is looking for */
-       return DESCRIPTOR_SEARCH_NotFound;
+       else
+       {
+               /* Current descriptor does not match what this comparator is looking for */
+               return DESCRIPTOR_SEARCH_NotFound;
+       }
 }