diff options
author | Marti Bolivar <mbolivar@leaflabs.com> | 2011-08-10 17:13:18 -0400 |
---|---|---|
committer | Marti Bolivar <mbolivar@leaflabs.com> | 2011-10-18 13:30:18 -0400 |
commit | d4e9573d41e6a6601ba3f680487dd548b23bf680 (patch) | |
tree | 4902cc1cf8c157cea3b584f2638526687c2c3e4a /libmaple/usb/usb.h | |
parent | 00c5efa7b637ee6ef1878eb870eff140f2af94a8 (diff) | |
download | librambutan-d4e9573d41e6a6601ba3f680487dd548b23bf680.tar.gz librambutan-d4e9573d41e6a6601ba3f680487dd548b23bf680.zip |
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 <mbolivar@leaflabs.com>
Diffstat (limited to 'libmaple/usb/usb.h')
-rw-r--r-- | libmaple/usb/usb.h | 35 |
1 files changed, 20 insertions, 15 deletions
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); |