X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/06d00bb99b5dd948c9407884cc07d1e82ea6878a..77a9df36a77d2523dd2bc24fa17f9f04c6c175c5:/LUFA/Drivers/USB/Core/DeviceStandardReq.c diff --git a/LUFA/Drivers/USB/Core/DeviceStandardReq.c b/LUFA/Drivers/USB/Core/DeviceStandardReq.c index ed781f6f3..c3a111e35 100644 --- a/LUFA/Drivers/USB/Core/DeviceStandardReq.c +++ b/LUFA/Drivers/USB/Core/DeviceStandardReq.c @@ -36,23 +36,23 @@ #define __INCLUDE_FROM_DEVICESTDREQ_C #include "DeviceStandardReq.h" -uint8_t USB_ConfigurationNumber; +uint8_t USB_Device_ConfigurationNumber; #if !defined(NO_DEVICE_SELF_POWER) -bool USB_CurrentlySelfPowered; +bool USB_Device_CurrentlySelfPowered; #endif #if !defined(NO_DEVICE_REMOTE_WAKEUP) -bool USB_RemoteWakeupEnabled; +bool USB_Device_RemoteWakeupEnabled; #endif void USB_Device_ProcessControlRequest(void) { - USB_ControlRequest.bmRequestType = Endpoint_Read_Byte(); - USB_ControlRequest.bRequest = Endpoint_Read_Byte(); - USB_ControlRequest.wValue = Endpoint_Read_Word_LE(); - USB_ControlRequest.wIndex = Endpoint_Read_Word_LE(); - USB_ControlRequest.wLength = Endpoint_Read_Word_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(); EVENT_USB_Device_ControlRequest(); @@ -114,20 +114,20 @@ void USB_Device_ProcessControlRequest(void) static void USB_Device_SetAddress(void) { - uint8_t DeviceAddress = (USB_ControlRequest.wValue & 0x7F); - - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) - { - Endpoint_ClearSETUP(); + uint8_t DeviceAddress = (USB_ControlRequest.wValue & 0x7F); + uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask(); + GlobalInterruptDisable(); + + Endpoint_ClearSETUP(); - Endpoint_ClearStatusStage(); + Endpoint_ClearStatusStage(); - while (!(Endpoint_IsINReady())); + while (!(Endpoint_IsINReady())); - USB_Device_SetDeviceAddress(DeviceAddress); - } - + USB_Device_SetDeviceAddress(DeviceAddress); USB_DeviceState = (DeviceAddress) ? DEVICE_STATE_Addressed : DEVICE_STATE_Default; + + SetGlobalInterruptMask(CurrentGlobalInt); } static void USB_Device_SetConfiguration(void) @@ -184,11 +184,11 @@ static void USB_Device_SetConfiguration(void) Endpoint_ClearSETUP(); - USB_ConfigurationNumber = (uint8_t)USB_ControlRequest.wValue; + USB_Device_ConfigurationNumber = (uint8_t)USB_ControlRequest.wValue; Endpoint_ClearStatusStage(); - if (USB_ConfigurationNumber) + if (USB_Device_ConfigurationNumber) USB_DeviceState = DEVICE_STATE_Configured; else USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered; @@ -200,7 +200,7 @@ static void USB_Device_GetConfiguration(void) { Endpoint_ClearSETUP(); - Endpoint_Write_Byte(USB_ConfigurationNumber); + Endpoint_Write_8(USB_Device_ConfigurationNumber); Endpoint_ClearIN(); Endpoint_ClearStatusStage(); @@ -285,12 +285,12 @@ static void USB_Device_GetStatus(void) #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_CurrentlySelfPowered) + if (USB_Device_CurrentlySelfPowered) CurrentStatus |= FEATURE_SELFPOWERED_ENABLED; #endif #if !defined(NO_DEVICE_REMOTE_WAKEUP) - if (USB_RemoteWakeupEnabled) + if (USB_Device_RemoteWakeupEnabled) CurrentStatus |= FEATURE_REMOTE_WAKEUP_ENABLED; #endif break; @@ -311,7 +311,7 @@ static void USB_Device_GetStatus(void) Endpoint_ClearSETUP(); - Endpoint_Write_Word_LE(CurrentStatus); + Endpoint_Write_16_LE(CurrentStatus); Endpoint_ClearIN(); Endpoint_ClearStatusStage(); @@ -324,7 +324,7 @@ static void USB_Device_ClearSetFeature(void) #if !defined(NO_DEVICE_REMOTE_WAKEUP) case REQREC_DEVICE: if ((uint8_t)USB_ControlRequest.wValue == FEATURE_SEL_DeviceRemoteWakeup) - USB_RemoteWakeupEnabled = (USB_ControlRequest.bRequest == REQ_SetFeature); + USB_Device_RemoteWakeupEnabled = (USB_ControlRequest.bRequest == REQ_SetFeature); else return;