This program allows to transform analog signal from rotary dial phone to numeric keys.

Dependencies:   mbed

Committer:
amigainc
Date:
Sun Aug 07 09:10:18 2011 +0000
Revision:
0:2c8568cec97f

        

Who changed what in which revision?

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