X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/c1be3073939c71d17c92fcbce4e1690d0a1443f0..4f74075fad7f1e7a35d04ff534d9d6a57d2b97fc:/LUFA/Drivers/USB/HighLevel/USBTask.h diff --git a/LUFA/Drivers/USB/HighLevel/USBTask.h b/LUFA/Drivers/USB/HighLevel/USBTask.h index 768057aef..4c9b717a4 100644 --- a/LUFA/Drivers/USB/HighLevel/USBTask.h +++ b/LUFA/Drivers/USB/HighLevel/USBTask.h @@ -34,19 +34,21 @@ /* Includes: */ #include #include - #include #include - #include #include "../LowLevel/LowLevel.h" - #include "StdRequestType.h" - #include "USBMode.h" #include "Events.h" + #include "StdRequestType.h" #include "StdDescriptors.h" + #include "USBMode.h" + + #if defined(USB_CAN_BE_DEVICE) + #include "../LowLevel/DevChapter9.h" + #endif #if defined(USB_CAN_BE_HOST) #include "../LowLevel/HostChapter9.h" - #endif + #endif /* Enable C linkage for C++ Compilers: */ #if defined(__cplusplus) @@ -66,7 +68,7 @@ extern volatile bool USB_IsInitialized; /** Structure containing the last received Control request when in Device mode (for use in user-applications - * inside of the \ref EVENT_USB_UnhandledControlPacket() event, or for filling up with a control request to issue when + * inside of the \ref EVENT_USB_Device_UnhandledControlRequest() event, or for filling up with a control request to issue when * in Host mode before calling \ref USB_Host_SendControlRequest(). * * \ingroup Group_USBManagement @@ -74,7 +76,7 @@ extern USB_Request_Header_t USB_ControlRequest; #if defined(USB_CAN_BE_HOST) || defined(__DOXYGEN__) - #if !defined(HOST_STATE_AS_GPIOR1) || defined(__DOXYGEN__) + #if !defined(HOST_STATE_AS_GPIOR) || defined(__DOXYGEN__) /** Indicates the current host state machine state. When in host mode, this indicates the state * via one of the values of the \ref USB_Host_States_t enum values. * @@ -82,10 +84,11 @@ * \ref HOST_STATE_Configured and \ref HOST_STATE_Suspended states which are not implemented by * the library. * - * To reduce program size and speed up checks of this global, it can be placed into the AVR's GPIOR1 - * hardware register instead of RAM by defining the HOST_STATE_AS_GPIOR1 token in the project - * makefile and passing it to the compiler via the -D switch. When defined, the GPIOR1 register should - * not be used in the user application except implicitly via the library APIs. + * To reduce program size and speed up checks of this global, it can be placed into one of the AVR's + * GPIOR hardware registers instead of RAM by defining the HOST_STATE_AS_GPIOR token to a value + * between 0 and 2 in the project makefile and passing it to the compiler via the -D switch. When + * defined, the corresponding GPIOR register should not be used in the user application except + * implicitly via the library APIs. * * \note This global is only present if the user application can be a USB host. * @@ -95,23 +98,26 @@ */ extern volatile uint8_t USB_HostState; #else - #define USB_HostState GPIOR1 + #define _GET_HOST_GPIOR_NAME2(y) GPIOR ## y + #define _GET_HOST_GPIOR_NAME(x) _GET_HOST_GPIOR_NAME2(x) + #define USB_HostState _GET_HOST_GPIOR_NAME(HOST_STATE_AS_GPIOR) #endif #endif #if defined(USB_CAN_BE_DEVICE) || defined(__DOXYGEN__) - #if !defined(DEVICE_STATE_AS_GPIOR0) || defined(__DOXYGEN__) + #if !defined(DEVICE_STATE_AS_GPIOR) || defined(__DOXYGEN__) /** Indicates the current device state machine state. When in device mode, this indicates the state * via one of the values of the \ref USB_Device_States_t enum values. * * This value should not be altered by the user application as it is handled automatically by the * library. The only exception to this rule is if the NO_LIMITED_CONTROLLER_CONNECT token is used - * (see \ref EVENT_USB_Connect() and \ref EVENT_USB_Disconnect() events). + * (see \ref EVENT_USB_Device_Connect() and \ref EVENT_USB_Device_Disconnect() events). * - * To reduce program size and speed up checks of this global, it can be placed into the AVR's GPIOR0 - * hardware register instead of RAM by defining the DEVICE_STATE_AS_GPIOR0 token in the project - * makefile and passing it to the compiler via the -D switch. When defined, the GPIOR0 register should - * not be used in the user application except implicitly via the library APIs. + * To reduce program size and speed up checks of this global, it can be placed into one of the AVR's + * GPIOR hardware registers instead of RAM by defining the DEVICE_STATE_AS_GPIOR token to a value + * between 0 and 2 in the project makefile and passing it to the compiler via the -D switch. When + * defined, the corresponding GPIOR register should not be used in the user application except + * implicitly via the library APIs. * * \note This global is only present if the user application can be a USB device. * @@ -124,7 +130,9 @@ */ extern volatile uint8_t USB_DeviceState; #else - #define USB_DeviceState GPIOR0 + #define _GET_DEVICE_GPIOR_NAME2(y) GPIOR ## y + #define _GET_DEVICE_GPIOR_NAME(x) _GET_DEVICE_GPIOR_NAME2(x) + #define USB_DeviceState _GET_DEVICE_GPIOR_NAME(DEVICE_STATE_AS_GPIOR) #endif #endif @@ -137,12 +145,12 @@ * The USB task must be serviced within 30ms while in device mode, or within 1ms while in host mode. * The task may be serviced at all times, or (for minimum CPU consumption): * - * - In device mode, it may be disabled at start-up, enabled on the firing of the \ref EVENT_USB_Connect() event - * and disabled again on the firing of the \ref EVENT_USB_Disconnect() event. + * - In device mode, it may be disabled at start-up, enabled on the firing of the \ref EVENT_USB_Device_Connect() + * event and disabled again on the firing of the \ref EVENT_USB_Device_Disconnect() event. * - * - In host mode, it may be disabled at start-up, enabled on the firing of the \ref EVENT_USB_DeviceAttached() - * event and disabled again on the firing of the \ref EVENT_USB_DeviceEnumerationComplete() or - * \ref EVENT_USB_DeviceEnumerationFailed() events. + * - In host mode, it may be disabled at start-up, enabled on the firing of the \ref EVENT_USB_Host_DeviceAttached() + * event and disabled again on the firing of the \ref EVENT_USB_Host_DeviceEnumerationComplete() or + * \ref EVENT_USB_Host_DeviceEnumerationFailed() events. * * If in device mode (only), the control endpoint can instead be managed via interrupts entirely by the library * by defining the INTERRUPT_CONTROL_ENDPOINT token and passing it to the compiler via the -D switch. @@ -167,7 +175,9 @@ #endif /* Macros: */ - #define HOST_TASK_NONBLOCK_WAIT(duration, nextstate) {USB_HostState = HOST_STATE_WaitForDevice; WaitMSRemaining = duration; PostWaitState = nextstate; } + #define HOST_TASK_NONBLOCK_WAIT(duration, nextstate) MACROS{ USB_HostState = HOST_STATE_WaitForDevice; \ + WaitMSRemaining = (duration); \ + PostWaitState = (nextstate); }MACROE #endif /* Disable C linkage for C++ Compilers: */