www.pudn.com > wave-bulktransfer.rar > MAIN.C
#include "testheader.h" #define ALLOCATE_EXTERN #include "testregs.h" #include#define DELAY_COUNT 0x9248 #define min(a,b) (((a)<(b))?(a):(b)) #define max(a,b) (((a)>(b))?(a):(b)) volatile BOOL GotSUD; BOOL Rwuen; BOOL Selfpwr; volatile BOOL Sleep; extern code DEVICEDSCR DeviceDscr; extern code CONFIGDSCR ConfigDscr; extern code STRINGDSCR StringDscr; void ParseControlTransfer(void); void TD_Init(void); void TD_Poll(void); BOOL TD_Resume(void); BOOL TD_Suspend(void); BOOL DR_GetDescriptor(void); BOOL DR_SetConfiguration(void); BOOL DR_GetConfiguration(void); BOOL DR_SetInterface(void); BOOL DR_GetInterface(void); BOOL DR_GetStatus(void); BOOL DR_ClearFeature(void); BOOL DR_SetFeature(void); BOOL DR_VendorCmnd(void); ////////////////////////////////////////////////////////////////////// void UsbDisconnect(BOOL renum); void Delay(WORD ms); extern void Delay1ms(void); extern void EZUSB_Susp(void); void EZUSB_Resume(void); CONFIGDSCR* GetConfigDscr(BYTE ConfigIdx); STRINGDSCR* EZUSB_GetStringDscr(BYTE StrIdx); ////////////////////////////////////////////////////////////////////// void main(void) { DWORD j = 0; Sleep = FALSE; Rwuen = FALSE; Selfpwr = TRUE; GotSUD = FALSE; TD_Init(); EUSB = 1; EICON |= 0x20; USBBAV = USBBAV | 1 & ~bmBREAK; USBIEN |= bmSUDAV | bmSUTOK | bmSUSP | bmURES; EA = 1; while(!GotSUD) { if(!GotSUD) UsbDisconnect(TRUE); for(j=0;(j length; if (len > SETUPDAT[6]) len = SETUPDAT[6]; while (len) { for(i=0; i type == CONFIG_DSCR) { if(index++ == ConfigIdx) return(dscr); length = dscr->config_len; SWAP_ENDIAN(length); dscr = (CONFIGDSCR code *)((WORD)dscr + length); } return(NULL); } STRINGDSCR* EZUSB_GetStringDscr(BYTE StrIdx) { BYTE index = 0; STRINGDSCR* dscr; dscr = &StringDscr; while(dscr->type == STRING_DSCR) { if(index++ == StrIdx) return(dscr); dscr = (STRINGDSCR code *)((WORD)dscr + dscr->length); } return(NULL); } void EZUSB_Resume(void) { if(USBCS & bmRWAKEUP) { USBCS |= bmSIGRESUME; Delay(20); USBCS &= ~bmSIGRESUME; } } void resume_isr(void) interrupt WKUP_VECT { EZUSB_CLEAR_RSMIRQ(); }