X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/06d00bb99b5dd948c9407884cc07d1e82ea6878a..2e76ad721e494f3a14ece73100ea9a2144c6fe8e:/LUFA/Drivers/USB/Core/DeviceStandardReq.c diff --git a/LUFA/Drivers/USB/Core/DeviceStandardReq.c b/LUFA/Drivers/USB/Core/DeviceStandardReq.c index ed781f6f3..f9c64b6f8 100644 --- a/LUFA/Drivers/USB/Core/DeviceStandardReq.c +++ b/LUFA/Drivers/USB/Core/DeviceStandardReq.c @@ -48,11 +48,11 @@ bool USB_RemoteWakeupEnabled; 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) @@ -200,7 +200,7 @@ static void USB_Device_GetConfiguration(void) { Endpoint_ClearSETUP(); - Endpoint_Write_Byte(USB_ConfigurationNumber); + Endpoint_Write_8(USB_ConfigurationNumber); Endpoint_ClearIN(); Endpoint_ClearStatusStage(); @@ -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();