00001 //----------------------------------------------------------------------------- 00002 // USB_ISR.h 00003 //----------------------------------------------------------------------------- 00004 00005 #ifndef USB_ISR_H 00006 #define USB_ISR_H 00007 00008 //----------------------------------------------------------------------------- 00009 // Setup Packet Type Definition 00010 //----------------------------------------------------------------------------- 00011 00012 typedef struct 00013 { 00014 BYTE bmRequestType; // Request recipient, type, direction 00015 BYTE bRequest; // Specific standard request number 00016 WORD wValue; // varies according to request 00017 WORD wIndex; // varies according to request 00018 WORD wLength; // Number of bytes to transfer 00019 } Tsetup_buffer; // End of Setup Packet Type 00020 00021 //----------------------------------------------------------------------------- 00022 // Global variables 00023 //----------------------------------------------------------------------------- 00024 00025 extern BYTE USB_State; // Hold current usb device state 00026 extern Tsetup_buffer Setup; // Buffer for current device request 00027 extern bit setup_handled; // flag that indicates setup stage is handled or not 00028 extern UINT DataSize; // Size of data to return 00029 extern BYTE* DataPtr; // Pointer to data to return 00030 00031 // Holds the status for each endpoint 00032 extern volatile BYTE Ep_Status0; 00033 extern volatile bit Ep_StatusOUT1; 00034 extern volatile bit Ep_StatusIN1; 00035 extern volatile bit Ep_StatusOUT2; 00036 extern volatile bit Ep_StatusIN2; 00037 extern volatile bit Ep_StatusOUT3; 00038 extern volatile bit Ep_StatusIN3; 00039 00040 // FIFO status of endpoints 00041 extern volatile bit IN1_FIFO_empty; 00042 extern volatile bit IN2_FIFO_empty; 00043 extern volatile bit IN3_FIFO_empty; 00044 extern volatile bit OUT1_FIFO_loaded; 00045 extern volatile bit OUT2_FIFO_loaded; 00046 extern volatile bit OUT3_FIFO_loaded; 00047 00048 // function pointer for the request callback function at the end of control OUT transfer 00049 extern bit (*USB_request_callback)( void ); 00050 00051 /* 00052 // 00053 // Unfortunately, SDCC doesn't accept token-pasting operator (##) in its pre-processor 00054 // Though this EXTERN method works well on both compilers, 00055 // but initialization using ## is limited to KEIL. 00056 // Then, in this implementation, give up this method and return to usual extern definition. 00057 00058 // variable allocation 00059 #ifdef ALLOCATE_VARS 00060 #define EXTERN 00061 #define EXT_TERM 00062 #else 00063 #define EXTERN extern 00064 #define EXT_TERM ;/ ## / 00065 #endif 00066 00067 // Holds the status for each endpoint 00068 EXTERN volatile BYTE Ep_Status0 EXT_TERM = EP_IDLE; 00069 //EXTERN volatile bit Ep_StatusOUT1 EXT_TERM = EP_HALT; 00070 EXTERN volatile bit Ep_StatusIN1 EXT_TERM = EP_HALT; 00071 EXTERN volatile bit Ep_StatusOUT2 EXT_TERM = EP_HALT; 00072 //EXTERN volatile bit Ep_StatusIN2 EXT_TERM = EP_HALT; 00073 //EXTERN volatile bit Ep_StatusOUT3 EXT_TERM = EP_HALT; 00074 //EXTERN volatile bit Ep_StatusIN3 EXT_TERM = EP_HALT; 00075 00076 // FIFO status of endpoints 00077 EXTERN volatile bit IN_FIFO_empty EXT_TERM = TRUE; 00078 EXTERN volatile bit OUT_FIFO_loaded EXT_TERM = FALSE; 00079 */ 00080 00081 //----------------------------------------------------------------------------- 00082 // Prototypes 00083 //----------------------------------------------------------------------------- 00084 00085 void Usb0_Init(void); 00086 void Usb_Suspend(void); 00087 void Usb_Resume(void); 00088 00089 /* 00090 // Used for multiple byte reads of Endpoint FIFOs 00091 void Fifo_Read (BYTE, BYTE, BYTE *); 00092 // Used for multiple byte writes of Endpoint FIFOs 00093 void Fifo_Write (BYTE, BYTE, BYTE *); 00094 */ 00095 00096 /* 00097 void Vendor_Request( void ); // Vendor request 00098 */ 00099 00100 #endif // USB_ISR_H 00101 00102 //----------------------------------------------------------------------------- 00103 // End Of File 00104 //-----------------------------------------------------------------------------