From d4e9573d41e6a6601ba3f680487dd548b23bf680 Mon Sep 17 00:00:00 2001 From: Marti Bolivar Date: Wed, 10 Aug 2011 17:13:18 -0400 Subject: usb: Clean up some globals with new struct usblib_dev. Add struct usblib_dev (and USBLIB, a pointer to the singleton) to usb.h. USBLIB contains the global state which is used by functionality imported from usb_lib/. Consolidating global state into USBLIB will make it easier to remove later. Initial fields in struct usblib_dev are endpoint interrupt callbacks, a mask for what to handle in the low-priority USB interrupt, and device state. These replace pEpInt_IN, pEpInt_OUT; wInterrupt_Mask; and bDeviceState, respectively from usb_lib/, so remove their declarations from usb_lib_globals.h accordingly. Also remove unused SaveState declaration from usblib_globals.h. Move bDeviceState into 'state' field in usblib_dev. Device state type changes from DEVICE_STATE to usb_dev_state, volatile gets dropped, and enumerators get a 'USB_' prefix, but it's otherwise the same. usb_lib/ expects pInformation to point to Device_Info, pUser_Standard_Requests -> User_Standard_Requests, and pProperty -> Device_Property. Alter usb_init_usblib() to reflect these assumptions. Reorganize usb_lib_globals.h to make these assumptions more apparent to the reader. Modify usb_init_usblib() to take endpoint callbacks as arguments; update its caller in usb_cdcacm.c. usb_lib/ defines pInformation, pProperty, and pUser_Standard_Requests itself (in usb_init.c), but we have our own definitions (in usb.c). Remove the duplicates from usb.c. Also remove EPindex and Device_Info definitions from usb.c. Unused, and anyways already defined in usb_lib/usb_init.c. Signed-off-by: Marti Bolivar --- libmaple/usb/usb.h | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) (limited to 'libmaple/usb/usb.h') diff --git a/libmaple/usb/usb.h b/libmaple/usb/usb.h index 8ab40f0..b073156 100644 --- a/libmaple/usb/usb.h +++ b/libmaple/usb/usb.h @@ -39,6 +39,25 @@ extern "C" { #define USB_ISR_MSK 0xBF00 #endif +typedef enum usb_dev_state { + USB_UNCONNECTED, + USB_ATTACHED, + USB_POWERED, + USB_SUSPENDED, + USB_ADDRESSED, + USB_CONFIGURED +} usb_dev_state; + +/* Encapsulates global state formerly handled by usb_lib/ + * functionality */ +typedef struct usblib_dev { + uint32 irq_mask; + void (**ep_int_in)(void); + void (**ep_int_out)(void); + usb_dev_state state; +} usblib_dev; + +extern usblib_dev *USBLIB; /* * Convenience routines, etc. @@ -55,21 +74,7 @@ typedef enum { RESUME_ESOF } RESUME_STATE; -typedef enum { - UNCONNECTED, - ATTACHED, - POWERED, - SUSPENDED, - ADDRESSED, - CONFIGURED -} DEVICE_STATE; - -extern volatile uint32 bDeviceState; - -struct _DEVICE_PROP; -struct _USER_STANDARD_REQUESTS; -void usb_init_usblib(struct _DEVICE_PROP*, - struct _USER_STANDARD_REQUESTS*); +void usb_init_usblib(void (**ep_int_in)(void), void (**ep_int_out)(void)); void usbSuspend(void); void usbResumeInit(void); -- cgit v1.2.3