aboutsummaryrefslogtreecommitdiffstats
path: root/libmaple/usb/usb.h
diff options
context:
space:
mode:
authorMarti Bolivar <mbolivar@leaflabs.com>2011-08-10 17:13:18 -0400
committerMarti Bolivar <mbolivar@leaflabs.com>2011-10-18 13:30:18 -0400
commitd4e9573d41e6a6601ba3f680487dd548b23bf680 (patch)
tree4902cc1cf8c157cea3b584f2638526687c2c3e4a /libmaple/usb/usb.h
parent00c5efa7b637ee6ef1878eb870eff140f2af94a8 (diff)
downloadlibrambutan-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.h35
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);