From 292a631b62dc06454447110f54757cc2236b6e08 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Thu, 7 Oct 2010 11:55:20 +0000 Subject: [PATCH] Added new NO_SOF_EVENTS compile time option, enabled in the bootloaders to reduce the compiled binary size. --- Bootloaders/CDC/makefile | 1 + Bootloaders/DFU/makefile | 1 + LUFA.pnproj | 2 +- LUFA/Drivers/Board/CULV3/Buttons.h | 4 +-- LUFA/Drivers/Board/CULV3/LEDs.h | 2 +- LUFA/Drivers/USB/LowLevel/Device.h | 42 ++++++++++++---------- LUFA/Drivers/USB/LowLevel/Host.h | 44 ++++++++++++++---------- LUFA/Drivers/USB/LowLevel/USBInterrupt.c | 4 +++ LUFA/ManPages/CompileTimeTokens.txt | 5 +++ 9 files changed, 64 insertions(+), 41 deletions(-) diff --git a/Bootloaders/CDC/makefile b/Bootloaders/CDC/makefile index 44667b3975..c23424b9f0 100644 --- a/Bootloaders/CDC/makefile +++ b/Bootloaders/CDC/makefile @@ -122,6 +122,7 @@ LUFA_OPTS += -D NO_INTERNAL_SERIAL LUFA_OPTS += -D NO_DEVICE_SELF_POWER LUFA_OPTS += -D NO_DEVICE_REMOTE_WAKEUP LUFA_OPTS += -D NO_STREAM_CALLBACKS +LUFA_OPTS += -D NO_SOF_EVENTS # Create the LUFA source path variables by including the LUFA root makefile diff --git a/Bootloaders/DFU/makefile b/Bootloaders/DFU/makefile index 16933002da..4a44562ddf 100644 --- a/Bootloaders/DFU/makefile +++ b/Bootloaders/DFU/makefile @@ -123,6 +123,7 @@ LUFA_OPTS += -D NO_INTERNAL_SERIAL LUFA_OPTS += -D NO_DEVICE_SELF_POWER LUFA_OPTS += -D NO_DEVICE_REMOTE_WAKEUP LUFA_OPTS += -D NO_STREAM_CALLBACKS +LUFA_OPTS += -D NO_SOF_EVENTS # Create the LUFA source path variables by including the LUFA root makefile diff --git a/LUFA.pnproj b/LUFA.pnproj index b0e11800d4..048ec499e0 100644 --- a/LUFA.pnproj +++ b/LUFA.pnproj @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/LUFA/Drivers/Board/CULV3/Buttons.h b/LUFA/Drivers/Board/CULV3/Buttons.h index 0ee8ae9f90..770ba54fca 100644 --- a/LUFA/Drivers/Board/CULV3/Buttons.h +++ b/LUFA/Drivers/Board/CULV3/Buttons.h @@ -29,7 +29,7 @@ */ /** \file - * \brief Board specific LED driver header for the Busware CUL V3. + * \brief Board specific LED driver header for the Busware CULV3. * * Board specific LED driver header for the Busware CUL V3 (http://busware.de/tiki-index.php?page=CUL). * @@ -38,7 +38,7 @@ */ /** \ingroup Group_LEDs - * @defgroup Group_LEDs_CULV3 CUL V3 + * @defgroup Group_LEDs_CULV3 CULV3 * * Board specific LED driver header for the Busware CUL V3 (http://busware.de/tiki-index.php?page=CUL). * diff --git a/LUFA/Drivers/Board/CULV3/LEDs.h b/LUFA/Drivers/Board/CULV3/LEDs.h index 1561aea7b9..cb5f93490c 100644 --- a/LUFA/Drivers/Board/CULV3/LEDs.h +++ b/LUFA/Drivers/Board/CULV3/LEDs.h @@ -38,7 +38,7 @@ */ /** \ingroup Group_LEDs - * @defgroup Group_LEDs_CULV3 CUL V3 + * @defgroup Group_LEDs_CULV3 CULV3 * * Board specific LED driver header for the Busware CUL V3 (http://busware.de/tiki-index.php?page=CUL). * diff --git a/LUFA/Drivers/USB/LowLevel/Device.h b/LUFA/Drivers/USB/LowLevel/Device.h index 2f54d1dd4c..03440d28fa 100644 --- a/LUFA/Drivers/USB/LowLevel/Device.h +++ b/LUFA/Drivers/USB/LowLevel/Device.h @@ -148,24 +148,30 @@ return UDFNUM; } - /** Enables the device mode Start Of Frame events. When enabled, this causes the - * \ref EVENT_USB_Device_StartOfFrame() event to fire once per millisecond, synchronized to the USB bus, - * at the start of each USB frame when enumerated in device mode. - */ - static inline void USB_Device_EnableSOFEvents(void) ATTR_ALWAYS_INLINE; - static inline void USB_Device_EnableSOFEvents(void) - { - USB_INT_Enable(USB_INT_SOFI); - } - - /** Disables the device mode Start Of Frame events. When disabled, this stops the firing of the - * \ref EVENT_USB_Device_StartOfFrame() event when enumerated in device mode. - */ - static inline void USB_Device_DisableSOFEvents(void) ATTR_ALWAYS_INLINE; - static inline void USB_Device_DisableSOFEvents(void) - { - USB_INT_Disable(USB_INT_SOFI); - } + #if !defined(NO_SOF_EVENTS) + /** Enables the device mode Start Of Frame events. When enabled, this causes the + * \ref EVENT_USB_Device_StartOfFrame() event to fire once per millisecond, synchronized to the USB bus, + * at the start of each USB frame when enumerated in device mode. + * + * \note Not available when the NO_SOF_EVENTS compile time token is defined. + */ + static inline void USB_Device_EnableSOFEvents(void) ATTR_ALWAYS_INLINE; + static inline void USB_Device_EnableSOFEvents(void) + { + USB_INT_Enable(USB_INT_SOFI); + } + + /** Disables the device mode Start Of Frame events. When disabled, this stops the firing of the + * \ref EVENT_USB_Device_StartOfFrame() event when enumerated in device mode. + * + * \note Not available when the NO_SOF_EVENTS compile time token is defined. + */ + static inline void USB_Device_DisableSOFEvents(void) ATTR_ALWAYS_INLINE; + static inline void USB_Device_DisableSOFEvents(void) + { + USB_INT_Disable(USB_INT_SOFI); + } + #endif /* Function Prototypes: */ /** Function to retrieve a given descriptor's size and memory location from the given descriptor type value, diff --git a/LUFA/Drivers/USB/LowLevel/Host.h b/LUFA/Drivers/USB/LowLevel/Host.h index 3bfc441998..b11883974d 100644 --- a/LUFA/Drivers/USB/LowLevel/Host.h +++ b/LUFA/Drivers/USB/LowLevel/Host.h @@ -253,25 +253,31 @@ return UHFNUM; } - /** Enables the host mode Start Of Frame events. When enabled, this causes the - * \ref EVENT_USB_Host_StartOfFrame() event to fire once per millisecond, synchronized to the USB bus, - * at the start of each USB frame when a device is enumerated while in host mode. - */ - static inline void USB_Host_EnableSOFEvents(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_EnableSOFEvents(void) - { - USB_INT_Enable(USB_INT_HSOFI); - } - - /** Disables the host mode Start Of Frame events. When disabled, this stops the firing of the - * \ref EVENT_USB_Host_StartOfFrame() event when enumerated in host mode. - */ - static inline void USB_Host_DisableSOFEvents(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_DisableSOFEvents(void) - { - USB_INT_Disable(USB_INT_HSOFI); - } - + #if !defined(NO_SOF_EVENTS) + /** Enables the host mode Start Of Frame events. When enabled, this causes the + * \ref EVENT_USB_Host_StartOfFrame() event to fire once per millisecond, synchronized to the USB bus, + * at the start of each USB frame when a device is enumerated while in host mode. + * + * \note Not available when the NO_SOF_EVENTS compile time token is defined. + */ + static inline void USB_Host_EnableSOFEvents(void) ATTR_ALWAYS_INLINE; + static inline void USB_Host_EnableSOFEvents(void) + { + USB_INT_Enable(USB_INT_HSOFI); + } + + /** Disables the host mode Start Of Frame events. When disabled, this stops the firing of the + * \ref EVENT_USB_Host_StartOfFrame() event when enumerated in host mode. + * + * \note Not available when the NO_SOF_EVENTS compile time token is defined. + */ + static inline void USB_Host_DisableSOFEvents(void) ATTR_ALWAYS_INLINE; + static inline void USB_Host_DisableSOFEvents(void) + { + USB_INT_Disable(USB_INT_HSOFI); + } + #endif + /** Resets the USB bus, including the endpoints in any attached device and pipes on the AVR host. * USB bus resets leave the default control pipe configured (if already configured). * diff --git a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c index 21b0a9bb16..54983c09ea 100644 --- a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c +++ b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c @@ -162,12 +162,14 @@ ISR(USB_GEN_vect, ISR_BLOCK) EVENT_USB_Device_Reset(); } + #if !defined(NO_SOF_EVENTS) if (USB_INT_HasOccurred(USB_INT_SOFI) && USB_INT_IsEnabled(USB_INT_SOFI)) { USB_INT_Clear(USB_INT_SOFI); EVENT_USB_Device_StartOfFrame(); } + #endif #endif #if defined(USB_CAN_BE_HOST) @@ -217,6 +219,7 @@ ISR(USB_GEN_vect, ISR_BLOCK) USB_ResetInterface(); } + #if !defined(NO_SOF_EVENTS) if (USB_INT_HasOccurred(USB_INT_HSOFI) && USB_INT_IsEnabled(USB_INT_HSOFI)) { USB_INT_Clear(USB_INT_HSOFI); @@ -224,6 +227,7 @@ ISR(USB_GEN_vect, ISR_BLOCK) EVENT_USB_Host_StartOfFrame(); } #endif + #endif #if defined(USB_CAN_BE_BOTH) if (USB_INT_HasOccurred(USB_INT_IDTI) && USB_INT_IsEnabled(USB_INT_IDTI)) diff --git a/LUFA/ManPages/CompileTimeTokens.txt b/LUFA/ManPages/CompileTimeTokens.txt index fbfbc3d984..d74cb43146 100644 --- a/LUFA/ManPages/CompileTimeTokens.txt +++ b/LUFA/ManPages/CompileTimeTokens.txt @@ -115,6 +115,11 @@ * can be accurately set and the \ref EVENT_USB_Device_Connect() and \ref EVENT_USB_Device_Disconnect() events manually raised by the RAISE_EVENT macro. * When defined, this token disables the library's auto-detection of the connection state by the aforementioned suspension and wake up events. * + * NO_SOF_EVENTS - ( \ref Group_Events ) \n + * By default, there exists a LUFA application event for the start of each USB frame while the USB bus is not suspended in either host or device mode. + * This event can be selectively enabled or disabled by calling the appropriate device or host mode function. When this compile time token is defined, + * the ability to receive USB Start of Frame events via the \ref EVENT_USB_Device_StartOfFrame() or \ref EVENT_USB_Host_StartOfFrame() events is removed, + * reducing the compiled program's binary size. * * \section Sec_SummaryUSBDeviceTokens USB Device Mode Driver Related Tokens * This section describes compile tokens which affect USB driver stack of the LUFA library when used in Device mode.