Add default project template to the Doxygen manual of the library.
[pub/USBasp.git] / LUFA / Drivers / USB / Core / DeviceStandardReq.c
index c3a111e..f5e1cca 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2011.
+     Copyright (C) Dean Camera, 2012.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2012  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
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
@@ -48,11 +48,18 @@ bool    USB_Device_RemoteWakeupEnabled;
 
 void USB_Device_ProcessControlRequest(void)
 {
 
 void USB_Device_ProcessControlRequest(void)
 {
+       #if defined(ARCH_BIG_ENDIAN)
        USB_ControlRequest.bmRequestType = Endpoint_Read_8();
        USB_ControlRequest.bRequest      = Endpoint_Read_8();
        USB_ControlRequest.wValue        = Endpoint_Read_16_LE();
        USB_ControlRequest.wIndex        = Endpoint_Read_16_LE();
        USB_ControlRequest.wLength       = Endpoint_Read_16_LE();
        USB_ControlRequest.bmRequestType = Endpoint_Read_8();
        USB_ControlRequest.bRequest      = Endpoint_Read_8();
        USB_ControlRequest.wValue        = Endpoint_Read_16_LE();
        USB_ControlRequest.wIndex        = Endpoint_Read_16_LE();
        USB_ControlRequest.wLength       = Endpoint_Read_16_LE();
+       #else
+       uint8_t* RequestHeader = (uint8_t*)&USB_ControlRequest;
+
+       for (uint8_t RequestHeaderByte = 0; RequestHeaderByte < sizeof(USB_Request_Header_t); RequestHeaderByte++)
+         *(RequestHeader++) = Endpoint_Read_8();
+       #endif
 
        EVENT_USB_Device_ControlRequest();
 
 
        EVENT_USB_Device_ControlRequest();
 
@@ -117,7 +124,7 @@ static void USB_Device_SetAddress(void)
        uint8_t    DeviceAddress    = (USB_ControlRequest.wValue & 0x7F);
        uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
        GlobalInterruptDisable();
        uint8_t    DeviceAddress    = (USB_ControlRequest.wValue & 0x7F);
        uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
        GlobalInterruptDisable();
-                               
+
        Endpoint_ClearSETUP();
 
        Endpoint_ClearStatusStage();
        Endpoint_ClearSETUP();
 
        Endpoint_ClearStatusStage();
@@ -126,7 +133,7 @@ static void USB_Device_SetAddress(void)
 
        USB_Device_SetDeviceAddress(DeviceAddress);
        USB_DeviceState = (DeviceAddress) ? DEVICE_STATE_Addressed : DEVICE_STATE_Default;
 
        USB_Device_SetDeviceAddress(DeviceAddress);
        USB_DeviceState = (DeviceAddress) ? DEVICE_STATE_Addressed : DEVICE_STATE_Default;
-       
+
        SetGlobalInterruptMask(CurrentGlobalInt);
 }
 
        SetGlobalInterruptMask(CurrentGlobalInt);
 }
 
@@ -149,7 +156,7 @@ static void USB_Device_SetConfiguration(void)
                        uint8_t MemoryAddressSpace;
                #endif
        #endif
                        uint8_t MemoryAddressSpace;
                #endif
        #endif
-       
+
        if (CALLBACK_USB_GetDescriptor((DTYPE_Device << 8), 0, (void*)&DevDescriptorPtr
        #if defined(ARCH_HAS_MULTI_ADDRESS_SPACE) && \
            !(defined(USE_FLASH_DESCRIPTORS) || defined(USE_EEPROM_DESCRIPTORS) || defined(USE_RAM_DESCRIPTORS))
        if (CALLBACK_USB_GetDescriptor((DTYPE_Device << 8), 0, (void*)&DevDescriptorPtr
        #if defined(ARCH_HAS_MULTI_ADDRESS_SPACE) && \
            !(defined(USE_FLASH_DESCRIPTORS) || defined(USE_EEPROM_DESCRIPTORS) || defined(USE_RAM_DESCRIPTORS))
@@ -178,7 +185,7 @@ static void USB_Device_SetConfiguration(void)
        }
        #else
        if ((uint8_t)USB_ControlRequest.wValue > DevDescriptorPtr->NumberOfConfigurations)
        }
        #else
        if ((uint8_t)USB_ControlRequest.wValue > DevDescriptorPtr->NumberOfConfigurations)
-         return;       
+         return;
        #endif
        #endif
 
        #endif
        #endif
 
@@ -217,7 +224,7 @@ static void USB_Device_GetInternalSerialDescriptor(void)
 
        SignatureDescriptor.Header.Type = DTYPE_String;
        SignatureDescriptor.Header.Size = USB_STRING_LEN(INTERNAL_SERIAL_LENGTH_BITS / 4);
 
        SignatureDescriptor.Header.Type = DTYPE_String;
        SignatureDescriptor.Header.Size = USB_STRING_LEN(INTERNAL_SERIAL_LENGTH_BITS / 4);
-       
+
        USB_Device_GetSerialString(SignatureDescriptor.UnicodeString);
 
        Endpoint_ClearSETUP();
        USB_Device_GetSerialString(SignatureDescriptor.UnicodeString);
 
        Endpoint_ClearSETUP();
@@ -282,7 +289,6 @@ static void USB_Device_GetStatus(void)
 
        switch (USB_ControlRequest.bmRequestType)
        {
 
        switch (USB_ControlRequest.bmRequestType)
        {
-               #if !defined(NO_DEVICE_SELF_POWER) || !defined(NO_DEVICE_REMOTE_WAKEUP)
                case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE):
                        #if !defined(NO_DEVICE_SELF_POWER)
                        if (USB_Device_CurrentlySelfPowered)
                case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE):
                        #if !defined(NO_DEVICE_SELF_POWER)
                        if (USB_Device_CurrentlySelfPowered)
@@ -294,17 +300,16 @@ static void USB_Device_GetStatus(void)
                          CurrentStatus |= FEATURE_REMOTE_WAKEUP_ENABLED;
                        #endif
                        break;
                          CurrentStatus |= FEATURE_REMOTE_WAKEUP_ENABLED;
                        #endif
                        break;
-               #endif
-               #if !defined(CONTROL_ONLY_DEVICE)
                case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_ENDPOINT):
                case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_ENDPOINT):
+                       #if !defined(CONTROL_ONLY_DEVICE)
                        Endpoint_SelectEndpoint((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK);
 
                        CurrentStatus = Endpoint_IsStalled();
 
                        Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
                        Endpoint_SelectEndpoint((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK);
 
                        CurrentStatus = Endpoint_IsStalled();
 
                        Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
+                       #endif
 
                        break;
 
                        break;
-               #endif
                default:
                        return;
        }
                default:
                        return;
        }