USB HID Joystick Example (modified USBMouse)

Dependencies:   mbed

Committer:
bricklife
Date:
Wed Jan 19 11:27:13 2011 +0000
Revision:
1:ec6deffecbd3
Parent:
0:d450e82033a1

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bricklife 0:d450e82033a1 1 /* usbdc.h */
bricklife 0:d450e82033a1 2 /* USB device controller */
bricklife 0:d450e82033a1 3 /* Copyright (c) Phil Wright 2008 */
bricklife 0:d450e82033a1 4
bricklife 0:d450e82033a1 5 #ifndef USBDC_H
bricklife 0:d450e82033a1 6 #define USBDC_H
bricklife 0:d450e82033a1 7
bricklife 0:d450e82033a1 8 /* Endpoints */
bricklife 0:d450e82033a1 9 #define EP0OUT (0) /* Control */
bricklife 0:d450e82033a1 10 #define EP0IN (1) /* Control */
bricklife 0:d450e82033a1 11 #define EP1OUT (2) /* Interrupt */
bricklife 0:d450e82033a1 12 #define EP1IN (3) /* Interrupt */
bricklife 0:d450e82033a1 13 #define EP2OUT (4) /* Bulk */
bricklife 0:d450e82033a1 14 #define EP2IN (5) /* Bulk */
bricklife 0:d450e82033a1 15
bricklife 0:d450e82033a1 16 #include "mbed.h"
bricklife 0:d450e82033a1 17
bricklife 0:d450e82033a1 18 class usbdc : public Base
bricklife 0:d450e82033a1 19 {
bricklife 0:d450e82033a1 20 public:
bricklife 0:d450e82033a1 21 usbdc();
bricklife 0:d450e82033a1 22 void connect(void);
bricklife 0:d450e82033a1 23 void disconnect(void);
bricklife 0:d450e82033a1 24 protected:
bricklife 0:d450e82033a1 25 void setAddress(unsigned char address);
bricklife 0:d450e82033a1 26 void realiseEndpoint(unsigned char endpoint, unsigned long maxPacket);
bricklife 0:d450e82033a1 27 void enableEndpointEvent(unsigned char endpoint);
bricklife 0:d450e82033a1 28 void disableEndpointEvent(unsigned char endpoint);
bricklife 0:d450e82033a1 29 void stallEndpoint(unsigned char endpoint);
bricklife 0:d450e82033a1 30 void unstallEndpoint(unsigned char endpoint);
bricklife 0:d450e82033a1 31 bool getEndpointStallState(unsigned char endpoint);
bricklife 0:d450e82033a1 32 void configureDevice(void);
bricklife 0:d450e82033a1 33 void unconfigureDevice(void);
bricklife 0:d450e82033a1 34 unsigned long endpointRead(unsigned char endpoint, unsigned char *buffer);
bricklife 0:d450e82033a1 35 void endpointWrite(unsigned char endpoint, unsigned char *buffer, unsigned long size);
bricklife 0:d450e82033a1 36 void enableEvents(void);
bricklife 0:d450e82033a1 37 void disableEvents(void);
bricklife 0:d450e82033a1 38 virtual void deviceEventReset(void);
bricklife 0:d450e82033a1 39 virtual void deviceEventFrame(void);
bricklife 0:d450e82033a1 40 virtual void endpointEventEP0Setup(void);
bricklife 0:d450e82033a1 41 virtual void endpointEventEP0In(void);
bricklife 0:d450e82033a1 42 virtual void endpointEventEP0Out(void);
bricklife 0:d450e82033a1 43 virtual void endpointEventEP1In(void);
bricklife 0:d450e82033a1 44 virtual void endpointEventEP1Out(void);
bricklife 0:d450e82033a1 45 virtual void endpointEventEP2In(void);
bricklife 0:d450e82033a1 46 virtual void endpointEventEP2Out(void);
bricklife 0:d450e82033a1 47 private:
bricklife 0:d450e82033a1 48 void SIECommand(unsigned long command);
bricklife 0:d450e82033a1 49 void SIEWriteData(unsigned char data);
bricklife 0:d450e82033a1 50 unsigned char SIEReadData(unsigned long command);
bricklife 0:d450e82033a1 51 void setDeviceStatus(unsigned char status);
bricklife 0:d450e82033a1 52 void setEndpointStatus(unsigned char endpoint, unsigned char status);
bricklife 0:d450e82033a1 53 unsigned char getDeviceStatus(void);
bricklife 0:d450e82033a1 54 unsigned char selectEndpoint(unsigned char endpoint);
bricklife 0:d450e82033a1 55 unsigned char selectEndpointClearInterrupt(unsigned char endpoint);
bricklife 0:d450e82033a1 56 unsigned char clearBuffer(void);
bricklife 0:d450e82033a1 57 void validateBuffer(void);
bricklife 0:d450e82033a1 58 void usbisr(void);
bricklife 0:d450e82033a1 59 unsigned long endpointStallState;
bricklife 0:d450e82033a1 60 static void _usbisr(void);
bricklife 0:d450e82033a1 61 static usbdc *instance;
bricklife 0:d450e82033a1 62 };
bricklife 0:d450e82033a1 63
bricklife 0:d450e82033a1 64
bricklife 0:d450e82033a1 65 #endif