- #include <stdio.h> 
- #include <string.h> 
- #include "w5300.h" 
- #include "md5.h" 
-   
- static uint8 Subnet[4]; 
-   
- uint32 TXMEM_SIZE[MAX_SOCK_NUM]; 
-   
- uint32 RXMEM_SIZE[MAX_SOCK_NUM]; 
-   
- uint8 SOCK_INT[MAX_SOCK_NUM]; 
-   
-   
- /*********************** 
-  * Basic I/O  Function * 
-  ***********************/ 
-   
- uint8 IINCHIP_READ(uint16 addr) 
- { 
-  #if (__DEF_IINCHIP_ADDRESS_MODE__ == __DEF_IINCHIP_DIRECT_MODE__)    
-       return (*((uint8*)addr)); 
-  #else 
-       uint8  data;   
-       IINCHIP_CRITICAL_SECTION_ENTER();  
-       *((uint8*)IDM_AR0) = (uint8)(addr >> 8); 
-       *((uint8*)IDM_AR1) = (uint8)(addr & 0x00ff); 
-       if(addr & 0x01) data = *((uint8*)IDM_DR1); 
-       else data = *((uint8*)IDM_DR0);   
-       IINCHIP_CRITICAL_SECTION_EXIT(); 
-       return data; 
-  #endif 
- } 
- void IINCHIP_WRITE(uint16 addr, uint8 data) 
- { 
- #if (__DEF_IINCHIP_ADDRESS_MODE__ == __DEF_IINCHIP_DIRECT_MODE__)    
-       (*((vuint8*)addr)) = data; 
- #else 
-       IINCHIP_CRITICAL_SECTION_ENTER(); 
-       *((vuint8*)IDM_AR0) = (uint8)(addr >> 8); 
-       *((vuint8*)IDM_AR1) = (uint8)(addr & 0x00ff); 
-       if(addr & 0x01) *((vuint8*)IDM_DR1) = data; 
-       else *((vuint8*)IDM_DR0) = data; 
-       IINCHIP_CRITICAL_SECTION_EXIT(); 
- #endif    
- } 
-   
- uint16 getMR(void) 
- { 
-         uint16 ret; 
-         ret = *(uint8*)MR0; 
-         ret = (ret << 8) + *(uint8*)MR1; 
-         return ret; 
- } 
- void setMR(uint16 val) 
- { 
-         *(uint8*)MR0 = (uint8)((val >> 8) & 0xff); 
-         *(uint8*)MR1 = (uint8)(val & 0xff); 
- } 
-   
-   
- /*********************************** 
-  * COMMON Register Access Function * 
-  ***********************************/ 
-   
- /* Interrupt */  
-   
- uint16 getIR(void) 
- { 
-         uint16 ret; 
-         ret = IINCHIP_READ(IR0); 
-         ret = (ret << 8) + (IINCHIP_READ(IR1)); 
-         return ret; 
- } 
-   
- void setIR(uint16 val) 
- { 
-         IINCHIP_WRITE(IR0, (uint8)(val >> 8)); 
-         IINCHIP_WRITE(IR1, (uint8)(val & 0xff));    
- } 
-   
- uint16 getIMR(void) 
- { 
-         uint16 ret; 
-         ret = IINCHIP_READ(IMR0); 
-         ret = (ret<<8) + IINCHIP_READ(IMR1); 
-   return ret; 
- } 
- void setIMR(uint16 mask) 
- { 
-         IINCHIP_WRITE(IMR0, (uint8)(mask >> 8)); 
-         IINCHIP_WRITE(IMR1, (uint8)(mask & 0xff)); 
- } 
-   
-   
- /* Network Information */ 
-   
- void getSHAR(uint8 * addr) 
- { 
-   addr[0] = (uint8)IINCHIP_READ(SHAR0); 
-   addr[1] = (uint8)IINCHIP_READ(SHAR1); 
-   addr[2] = (uint8)IINCHIP_READ(SHAR2); 
-   addr[3] = (uint8)IINCHIP_READ(SHAR3); 
-   addr[4] = (uint8)IINCHIP_READ(SHAR4); 
-   addr[5] = (uint8)IINCHIP_READ(SHAR5); 
- } 
- void setSHAR(uint8 * addr) 
- { 
-   IINCHIP_WRITE(SHAR0,(uint8)addr[0]); 
-   IINCHIP_WRITE(SHAR1,(uint8)addr[1]); 
-   IINCHIP_WRITE(SHAR2,(uint8)addr[2]); 
-   IINCHIP_WRITE(SHAR3,(uint8)addr[3]); 
-   IINCHIP_WRITE(SHAR4,(uint8)addr[4]); 
-   IINCHIP_WRITE(SHAR5,(uint8)addr[5]); 
- } 
-   
- void getGAR(uint8 * addr) 
- { 
-   addr[0] = (uint8)(IINCHIP_READ(GAR0)); 
-   addr[1] = (uint8)(IINCHIP_READ(GAR1)); 
-   addr[2] = (uint8)(IINCHIP_READ(GAR2)); 
-   addr[3] = (uint8)(IINCHIP_READ(GAR3));    
- } 
-   
- void setGAR(uint8 * addr) 
- { 
-   IINCHIP_WRITE(GAR0, (uint8)addr[0]); 
-   IINCHIP_WRITE(GAR1, (uint8)addr[1]); 
-   IINCHIP_WRITE(GAR2, (uint8)addr[2]); 
-   IINCHIP_WRITE(GAR3, (uint8)addr[3]); 
- } 
-   
- void getSUBR(uint8 * addr) 
- { 
-         addr[0] = (uint8)Subnet[0]; 
-         addr[1] = (uint8)Subnet[1]; 
-         addr[2] = (uint8)Subnet[2]; 
-         addr[3] = (uint8)Subnet[3]; 
- } 
-   
- void setSUBR(uint8 * addr) 
- { 
-         Subnet[0] = addr[0]; 
-         Subnet[1] = addr[1]; 
-         Subnet[2] = addr[2]; 
-         Subnet[3] = addr[3]; 
- } 
- void ApplySubnet() 
- { 
-         IINCHIP_WRITE((SUBR),Subnet[0]); 
-         IINCHIP_WRITE((SUBR),Subnet[1]); 
-         IINCHIP_WRITE((SUBR),Subnet[2]); 
-         IINCHIP_WRITE((SUBR),Subnet[3]); 
- } 
- void ClearSubnet() 
- { 
-         IINCHIP_WRITE((SUBR),0); 
-         IINCHIP_WRITE((SUBR),0); 
-         IINCHIP_WRITE((SUBR),0); 
-         IINCHIP_WRITE((SUBR),0); 
- } 
- void getSIPR(uint8 * addr) 
- { 
-   addr[0] = (uint8)(IINCHIP_READ(SIPR0)); 
-   addr[1] = (uint8)(IINCHIP_READ(SIPR1)); 
-   addr[2] = (uint8)(IINCHIP_READ(SIPR2)); 
-   addr[3] = (uint8)(IINCHIP_READ(SIPR3));    
- } 
-   
- void setSIPR(uint8 * addr) 
- { 
-   IINCHIP_WRITE(SIPR0,(uint8)addr[0]); 
-   IINCHIP_WRITE(SIPR1,(uint8)addr[1]); 
-   IINCHIP_WRITE(SIPR2,(uint8)addr[2]); 
-   IINCHIP_WRITE(SIPR3,(uint8)addr[3]); 
- } 
-   
-   
- /* Retransmittion */ 
-   
- uint16 getRTR(void) 
- { 
-         uint16 ret; 
-         ret = IINCHIP_READ(RTR0); 
-         ret = (RTR0 << 8) + IINCHIP_READ(RTR1); 
-   return ret; 
- } 
- void setRTR(uint16 timeout) 
- { 
-         IINCHIP_WRITE(RTR0, ((uint8)(timeout >> 8))); 
-         IINCHIP_WRITE(RTR1, timeout & 0xff); 
- } 
-   
- uint8 getRCR(void) 
- { 
-   return (uint8)IINCHIP_READ(RCR1); 
- } 
-   
- void setRCR(uint8 retry) 
- { 
-   IINCHIP_WRITE(RCR1,retry); 
- } 
-   
- /* PPPoE */ 
- uint16 getPATR(void) 
- { 
-         uint16 ret; 
-         ret = IINCHIP_READ(PATR0); 
-         ret = (ret << 8) + IINCHIP_READ(PATR1); 
-   return ret; 
- } 
-   
- uint8 getPTIMER(void) 
- { 
-         return (uint8)IINCHIP_READ(PTIMER1); 
- } 
- void-  setPTIMER (uint8 time)
 
- { 
-   IINCHIP_WRITE (- PTIMER1 ,time);
- } 
-   
- uint8 getPMAGICR(void) 
- { 
-   return (uint8)IINCHIP_READ(PMAGICR1); 
- } 
-   
- void setPMAGICR(uint8 magic) 
- { 
-   IINCHIP_WRITE(PMAGICR1,magic); 
- } 
-   
- uint16 getPSIDR(void) 
- { 
-         uint16 ret; 
-         ret = IINCHIP_READ(PSIDR0); 
-         ret = (ret << 8) + IINCHIP_READ(PSIDR1); 
-         return ret; 
- } 
-   
- void getPDHAR(uint8* addr) 
- { 
-    addr[0] = (uint8)(IINCHIP_READ(PDHAR0)); 
-    addr[1] = (uint8)(IINCHIP_READ(PDHAR1)); 
-    addr[2] = (uint8)(IINCHIP_READ(PDHAR2)); 
-    addr[3] = (uint8)(IINCHIP_READ(PDHAR3)); 
-    addr[4] = (uint8)(IINCHIP_READ(PDHAR4)); 
-    addr[5] = (uint8)(IINCHIP_READ(PDHAR5)); 
- } 
-   
-   
- /* ICMP packets */ 
-   
- void getUIPR(uint8* addr) 
- { 
-    addr[0] = (uint8)(IINCHIP_READ(UIPR0)); 
-    addr[1] = (uint8)(IINCHIP_READ(UIPR1)); 
-    addr[2] = (uint8)(IINCHIP_READ(UIPR2)); 
-    addr[3] = (uint8)(IINCHIP_READ(UIPR3));    
- } 
-   
- uint16 getUPORTR(void) 
- { 
-         uint16 ret; 
-         ret = IINCHIP_READ(UPORTR0); 
-         ret = (ret << 8) + IINCHIP_READ(UPORTR1); 
-   return ret; 
- } 
-   
- uint16 getFMTUR(void) 
- { 
-         uint16 ret; 
-         ret = IINCHIP_READ(FMTUR0); 
-         ret = (ret << 8) + IINCHIP_READ(FMTUR1); 
-   return ret; 
- } 
-   
-   
- /* PIN "BRYDn" */ 
-   
- uint8 getPn_BRDYR(uint8 p) 
- { 
-   return (uint8)IINCHIP_READ(Pn_BRDYR1(p)); 
- } 
- void setPn_BRDYR(uint8 p, uint8 cfg) 
- { 
-   IINCHIP_WRITE(Pn_BRDYR1(p),cfg);    
- } 
-   
-   
- uint16   getPn_BDPTHR(uint8 p) 
- { 
-   uint16 ret; 
-   ret = IINCHIP_READ(Pn_BDPTHR0(p)); 
-   ret = (ret << 8) + IINCHIP_READ(Pn_BDPTHR1(p)); 
-   return ret;    
- } 
-   
- void setPn_BDPTHR(uint8 p, uint16 depth) 
- { 
-         IINCHIP_WRITE(Pn_BDPTHR0(p), (uint8)(depth >> 8)); 
-   IINCHIP_WRITE(Pn_BDPTHR1(p), (uint8)(depth & 0xff)); 
- } 
-   
-   
- /* IINCHIP ID */ 
- uint16 getIDR(void) 
- { 
-         uint16 ret; 
-         ret = IINCHIP_READ(IDR0); 
-         ret = (ret << 8) + IINCHIP_READ(IDR1); 
-   return ret; 
- } 
-   
-   
- /*********************************** 
-  * SOCKET Register Access Function * 
-  ***********************************/ 
-   
- /* SOCKET control */ 
-   
- uint16 getSn_MR(SOCKET s) 
- { 
-         uint16 ret; 
-         ret = IINCHIP_READ(Sn_MR0(s)); 
-         ret = (ret << 8) + IINCHIP_READ(Sn_MR1(s)); 
-   return ret; 
- } 
- void setSn_MR(SOCKET s, uint16 mode) 
- { 
-         IINCHIP_WRITE(Sn_MR0(s), (uint8)(mode >> 8)); 
-         IINCHIP_WRITE(Sn_MR1(s), (uint8)(mode & 0xff)); 
- } 
-   
- uint8 getSn_CR(SOCKET s) 
- { 
-   return IINCHIP_READ(Sn_CR1(s)); 
- } 
-   
- void setSn_CR(SOCKET s, uint8 com) 
- { 
-         IINCHIP_WRITE(Sn_CR1(s), (uint8)(com & 0xff)); 
-   while(IINCHIP_READ(Sn_CR1(s))); // wait until Sn_CR is cleared. 
- } 
-   
- uint8 getSn_IMR(SOCKET s) 
- { 
-   return (uint8)IINCHIP_READ(Sn_IMR1(s)); 
- } 
-   
- void setSn_IMR(SOCKET s, uint8 mask) 
- { 
-   IINCHIP_WRITE(Sn_IMR1(s),mask); 
- } 
-   
- uint8 getSn_IR(SOCKET s) 
- { 
- #ifdef __DEF_IINCHIP_INT__    // In case of using ISR routine of iinchip 
-   return SOCK_INT[s]; 
- #else                         // In case of processing directly 
-   return (uint8)IINCHIP_READ(Sn_IR1(s)); 
- #endif    
- } 
-   
- void setSn_IR(SOCKET s, uint8 ir) 
- { 
- #ifdef __DEF_IINCHIP_INT__    // In case of using ISR routine of iinchip 
-   SOCK_INT[s] = SOCK_INT[s] & ~(ir); 
- #else                         // In case of processing directly 
-   IINCHIP_WRITE(Sn_IR1(s),ir); 
- #endif    
- } 
-   
-   
- /* SOCKET information */ 
-   
- uint8 getSn_SSR(SOCKET s) 
- { 
-   uint8 ssr, ssr1; 
-   ssr = (uint8)IINCHIP_READ(Sn_SSR1(s));     // first read 
-   
-   while(1) 
-   { 
-     ssr1 = (uint8)IINCHIP_READ(Sn_SSR1(s)); // second read 
-     if(ssr == ssr1) break;                 // if first == sencond, Sn_SSR value is valid. 
-     ssr = ssr1;                            // if first <> second, save second value into first. 
-   } 
-   return ssr; 
- } 
-   
- void getSn_DHAR(SOCKET s, uint8* addr) 
- { 
-   addr[0] = (uint8)(IINCHIP_READ(Sn_DHAR0(s))); 
-   addr[1] = (uint8)(IINCHIP_READ(Sn_DHAR1(s))); 
-   addr[2] = (uint8)(IINCHIP_READ(Sn_DHAR2(s))); 
-   addr[3] = (uint8)(IINCHIP_READ(Sn_DHAR3(s))); 
-   addr[4] = (uint8)(IINCHIP_READ(Sn_DHAR4(s))); 
-   addr[5] = (uint8)(IINCHIP_READ(Sn_DHAR5(s))); 
- } 
-   
- void setSn_DHAR(SOCKET s, uint8* addr) 
- { 
-   IINCHIP_WRITE(Sn_DHAR0(s), (uint8)(addr[0])); 
-   IINCHIP_WRITE(Sn_DHAR1(s), (uint8)(addr[1])); 
-   IINCHIP_WRITE(Sn_DHAR2(s), (uint8)(addr[2])); 
-   IINCHIP_WRITE(Sn_DHAR3(s), (uint8)(addr[3])); 
-   IINCHIP_WRITE(Sn_DHAR4(s), (uint8)(addr[4])); 
-   IINCHIP_WRITE(Sn_DHAR5(s), (uint8)(addr[5])); 
- } 
-   
- // M_15052008 : Delete this function 
- //uint16   getSn_DPORTR(SOCKET s) 
- //{ 
- //   return IINCHIP_READ(Sn_DPORTR(s)); 
- //} 
-   
-   
- void setSn_DPORTR(SOCKET s, uint16 port) 
- { 
-         IINCHIP_WRITE(Sn_DPORTR0(s), (uint8)(port >>8)); 
-         IINCHIP_WRITE(Sn_DPORTR1(s), (uint8)(port & 0xff)); 
- } 
-   
- void getSn_DIPR(SOCKET s, uint8* addr) 
- { 
-   addr[0] = (uint8)(IINCHIP_READ(Sn_DIPR0(s))); 
-   addr[1] = (uint8)(IINCHIP_READ(Sn_DIPR1(s))); 
-   addr[2] = (uint8)(IINCHIP_READ(Sn_DIPR2(s))); 
-         addr[3] = (uint8)(IINCHIP_READ(Sn_DIPR3(s))); 
- } 
-   
- void setSn_DIPR(SOCKET s, uint8* addr) 
- { 
-   IINCHIP_WRITE(Sn_DIPR0(s), (uint8)addr[0]); 
-   IINCHIP_WRITE(Sn_DIPR1(s), (uint8)addr[1]); 
-   IINCHIP_WRITE(Sn_DIPR2(s), (uint8)addr[2]); 
-   IINCHIP_WRITE(Sn_DIPR3(s), (uint8)addr[3]); 
- } 
-   
- uint16 getSn_MSSR(SOCKET s) 
- { 
-         uint16 ret; 
-         ret = IINCHIP_READ(Sn_MSSR0(s)); 
-         ret = (ret << 8) + IINCHIP_READ(Sn_MSSR1(s)); 
-   return ret; 
- } 
-   
- void setSn_MSSR(SOCKET s, uint16 mss) 
- { 
-         IINCHIP_WRITE(Sn_MSSR0(s), (uint8)(mss >> 8)); 
-         IINCHIP_WRITE(Sn_MSSR1(s), (uint8)(mss & 0xff)); 
- } 
-   
-   
- /* SOCKET communication */ 
-   
- uint8 getSn_KPALVTR(SOCKET s) 
- { 
-   return IINCHIP_READ(Sn_KPALVTR(s)); 
- } 
-   
- void-  setSn_KPALVTR (- SOCKET s , uint8 time)
 
- { 
-   IINCHIP_WRITE (- Sn_KPALVTR (- s ), time);
- } 
-   
- uint32 getSn_TX_WRSR(SOCKET s) 
- { 
-         uint32 ret; 
-         ret = IINCHIP_READ(Sn_TX_WRSR0(s)); 
-         ret = (ret << 8) + IINCHIP_READ(Sn_TX_WRSR1(s)); 
-         ret = (ret << 8) + IINCHIP_READ(Sn_TX_WRSR2(s)); 
-         ret = (ret << 8) + IINCHIP_READ(Sn_TX_WRSR3(s)); 
-         return ret;    
- } 
- void setSn_TX_WRSR(SOCKET s, uint32 size) 
- { 
-         IINCHIP_WRITE(Sn_TX_WRSR0(s), (uint8)(size >> 24)); 
-         IINCHIP_WRITE(Sn_TX_WRSR1(s), (uint8)(size >> 16)); 
-         IINCHIP_WRITE(Sn_TX_WRSR2(s), (uint8)(size >> 8)); 
-         IINCHIP_WRITE(Sn_TX_WRSR3(s), (uint8)(size & 0xff)); 
- } 
-   
- uint32 getSn_TX_FSR(SOCKET s) 
- { 
-    uint32 free_tx_size=0; 
-    uint32 free_tx_size1=0; 
-    while(1) 
-    { 
-       free_tx_size = IINCHIP_READ(Sn_TX_FSR0(s));                           // read                                        
-       free_tx_size = (free_tx_size << 8) + IINCHIP_READ(Sn_TX_FSR1(s)); 
-       free_tx_size = (free_tx_size << 8) + IINCHIP_READ(Sn_TX_FSR2(s)); 
-       free_tx_size = (free_tx_size << 8) + IINCHIP_READ(Sn_TX_FSR3(s)); 
-       if(free_tx_size == free_tx_size1) break;                             // if first == sencond, Sn_TX_FSR value is valid.                                                           
-       free_tx_size1 = free_tx_size;                                        // save second value into first                                                    
-    }                                                                        
-    return free_tx_size;                                                     
- }                                                                           
-   
- uint32 getSn_RX_RSR(SOCKET s) 
- { 
-    uint32 received_rx_size=0; 
-    uint32 received_rx_size1=1; 
-    while(1) 
-    { 
-       received_rx_size = IINCHIP_READ(Sn_RX_RSR0(s)); 
-       received_rx_size = (received_rx_size << 8) + IINCHIP_READ(Sn_RX_RSR1(s)); // read 
-       received_rx_size = (received_rx_size << 8) + IINCHIP_READ(Sn_RX_RSR2(s)); 
-       received_rx_size = (received_rx_size << 8) + IINCHIP_READ(Sn_RX_RSR3(s));                                        
-       if(received_rx_size == received_rx_size1) break;                                                                          
-       received_rx_size1 = received_rx_size;                                      // if first == sencond, Sn_RX_RSR value is valid. 
-    }                                                                             // save second value into first                 
-    return received_rx_size;    
- } 
-   
-   
- void setSn_TX_FIFOR(SOCKET s, uint16 data) 
- { 
-         IINCHIP_WRITE(Sn_TX_FIFOR0(s), (uint8)(data >> 8)); 
-         IINCHIP_WRITE(Sn_TX_FIFOR1(s), (uint8)(data & 0xff)); 
- } 
-   
- uint16 getSn_RX_FIFOR(SOCKET s) 
- { 
-         uint16 ret; 
-         ret = IINCHIP_READ(Sn_RX_FIFOR0(s)); 
-         ret = (ret << 8) + IINCHIP_READ(Sn_RX_FIFOR1(s)); 
-   return ret; 
- } 
-   
-   
- /* IP header field */ 
-   
- uint8 getSn_PROTOR(SOCKET s) 
- { 
-   return (uint8)IINCHIP_READ(Sn_PROTOR(s)); 
- } 
- void setSn_PROTOR(SOCKET s, uint8 pronum) 
- { 
-   IINCHIP_WRITE(Sn_PROTOR(s), pronum); 
- } 
-   
- uint8 getSn_TOSR(SOCKET s) 
- { 
-   return (uint8)IINCHIP_READ(Sn_TOSR1(s)); 
- } 
- void setSn_TOSR(SOCKET s, uint8 tos) 
- { 
-   IINCHIP_WRITE(Sn_TOSR1(s),tos); 
- } 
-   
- uint8 getSn_TTLR(SOCKET s) 
- { 
-   return (uint8)IINCHIP_READ(Sn_TTLR1(s)); 
- } 
- void setSn_TTLR(SOCKET s, uint8 ttl) 
- { 
-   IINCHIP_WRITE(Sn_TTLR1(s),ttl); 
- } 
-   
- uint8 getSn_FRAGR(SOCKET s) 
- { 
-   return (uint8)IINCHIP_READ(Sn_FRAGR1(s)); 
- } 
-   
- void setSn_FRAGR(SOCKET s, uint8 frag) 
- { 
-   IINCHIP_WRITE(Sn_FRAGR1(s),frag); 
- } 
-   
-   
- /******* 
-  * ETC * 
-  *******/ 
-   
- /* Initialization & Interrupt request routine */ 
-   
- void iinchip_init(void) 
- { 
-    *((uint8*)MR) = MR_RST; 
-    wait_1ms(5); 
-    #if (__DEF_IINCHIP_ADDRESS_MODE__ == __DEF_IINCHIP_INDIRECT_MODE__) 
-       *((vint8*)MR) |= MR_IND; 
-       #ifdef __DEF_IINCHIP_DBG__         
-               printf("MR value is %04x\r\n",*((- vuint16 *)- MR ));
 
-       #endif     
-    #endif 
- } 
-   
- //This statement is commented for using 'Doxygen'. 
- //#ifdef __DEF_IINCHIP_INT__  
- void iinchip_irq(void) 
- { 
-    uint16 int_val; 
-    uint16 idx; 
-    IINCHIP_CRITICAL_SECTION_ENTER(); 
-    // M_01052008 : replaced '==' with '=' 
-    //while(int_val == IINCHIP_READ(IR))  // process all interrupt     
-    while((int_val = ((IINCHIP_READ(IR0) << 8) | IINCHIP_READ(IR1))))  // process all interrupt  
-    {           
-       for(idx = 0 ; idx < MAX_SOCK_NUM ; idx++) 
-       { 
-          if (int_val & IR_SnINT(idx))  // check the SOCKETn interrupt 
-          { 
-             SOCK_INT[idx] |= (uint8)IINCHIP_READ(Sn_IR1(idx)); // Save the interrupt stauts to SOCK_INT[idx] 
-             IINCHIP_WRITE(Sn_IR1(idx),SOCK_INT[idx]);  // Clear the interrupt status bit of SOCKETn 
-          } 
-       } 
-        
-       if (int_val & (IR_IPCF << 8))    // check the IP conflict interrupt 
-       { 
-          printf("IP conflict : %04x\r\n",-  int_val );
 
-       } 
-       if (int_val & (IR_DPUR << 8))    // check the unreachable destination interrupt 
-       { 
-          printf("INT Port Unreachable : %04x\r\n",-  int_val );
 
-          printf("UIPR : %d.%d.%d.%d\r\n",-  IINCHIP_READ (- UIPR0 ),
 
-                                           IINCHIP_READ(UIPR1), 
-                                           IINCHIP_READ(UIPR2), 
-                                           IINCHIP_READ(UIPR3)); 
-          printf("UPORTR : %02x%02x\r\n",-  IINCHIP_READ (- UPORTR0 ),- IINCHIP_READ (- UPORTR1 ));
 
-       } 
-       IINCHIP_WRITE(IR0, (uint8)(int_val >> 8)); 
-    } 
-    IINCHIP_CRITICAL_SECTION_EXIT(); 
- } 
- //This statement is commented for using 'Doxygen'. 
- //#endif  
-   
-   
- /* Internal memory operation */ 
-   
- uint8 sysinit(uint8* tx_size, uint8* rx_size) 
- { 
-    uint16 i; 
-    uint16 ssum=0,rsum=0; 
-    uint mem_cfg = 0; 
-     
-    for(i=0; i < MAX_SOCK_NUM; i++) 
-    { 
-       if(tx_size[i] > 64) 
-       { 
-       #ifdef __DEF_IINCHIP_DBG__ 
-          printf("Illegal Channel(%d) TX Memory Size.\r\n",- i );
 
-       #endif 
-          return 0; 
-       } 
-       if(rx_size[i] > 64) 
-       { 
-       #ifdef __DEF_IINCHIP_DBG__          
-          printf("Illegal Channel(%d) RX Memory Size.\r\n",- i );
 
-       #endif 
-          return 0; 
-       } 
-       ssum += (uint16)tx_size[i]; 
-       rsum += (uint16)rx_size[i]; 
-       TXMEM_SIZE[i] = ((uint32)tx_size[i]) << 10; 
-       RXMEM_SIZE[i] = ((uint32)rx_size[i]) << 10; 
-    } 
-    if( (ssum % 8) || ((ssum + rsum) != 128) ) 
-    { 
-    #ifdef __DEF_IINCHIP_DBG__ 
-       printf("Illegal Memory Allocation\r\n"); 
-    #endif 
-       return 0; 
-    } 
-     
-    IINCHIP_WRITE(TMSR0,tx_size[0]); 
-    IINCHIP_WRITE(TMSR1,tx_size[1]); 
-    IINCHIP_WRITE(TMSR2,tx_size[2]); 
-    IINCHIP_WRITE(TMSR3,tx_size[3]); 
-    IINCHIP_WRITE(TMSR4,tx_size[4]); 
-    IINCHIP_WRITE(TMSR5,tx_size[5]); 
-    IINCHIP_WRITE(TMSR6,tx_size[6]); 
-    IINCHIP_WRITE(TMSR7,tx_size[7]); 
-        
-    IINCHIP_WRITE(RMSR0,rx_size[0]); 
-    IINCHIP_WRITE(RMSR1,rx_size[1]); 
-    IINCHIP_WRITE(RMSR2,rx_size[2]); 
-    IINCHIP_WRITE(RMSR3,rx_size[3]); 
-    IINCHIP_WRITE(RMSR4,rx_size[4]); 
-    IINCHIP_WRITE(RMSR5,rx_size[5]); 
-    IINCHIP_WRITE(RMSR6,rx_size[6]); 
-    IINCHIP_WRITE(RMSR7,rx_size[7]); 
-     
-    for(i=0; i <ssum/8 ; i++) 
-    { 
-       mem_cfg <<= 1; 
-       mem_cfg |= 1; 
-    } 
-     
-    IINCHIP_WRITE(MTYPER,(uint8)(mem_cfg >> 8)); 
-    IINCHIP_WRITE(MTYPER1,(uint8)(mem_cfg & 0xff)); 
-     
-    #ifdef __DEF_IINCHIP_DBG__ 
-       printf("Total TX Memory Size = %dKB\r\n",- ssum );
 
-       printf("Total RX Memory Size = %dKB\r\n",- rsum );
 
-       printf("Ch : TX SIZE : RECV SIZE\r\n"); 
-       printf("%02d : %07dKB : %07dKB \r\n", 0,-  IINCHIP_READ (- TMSR0 ),- IINCHIP_READ (- RMSR0 ));
 
-       printf("%02d : %07dKB : %07dKB \r\n", 1,-  IINCHIP_READ (- TMSR1 ),- IINCHIP_READ (- RMSR1 ));
 
-       printf("%02d : %07dKB : %07dKB \r\n", 2,-  IINCHIP_READ (- TMSR2 ),- IINCHIP_READ (- RMSR2 ));
 
-       printf("%02d : %07dKB : %07dKB \r\n", 3,-  IINCHIP_READ (- TMSR3 ),- IINCHIP_READ (- RMSR3 ));
 
-       printf("%02d : %07dKB : %07dKB \r\n", 4,-  IINCHIP_READ (- TMSR4 ),- IINCHIP_READ (- RMSR4 ));
 
-       printf("%02d : %07dKB : %07dKB \r\n", 5,-  IINCHIP_READ (- TMSR5 ),- IINCHIP_READ (- RMSR5 ));
 
-       printf("%02d : %07dKB : %07dKB \r\n", 6,-  IINCHIP_READ (- TMSR6 ),- IINCHIP_READ (- RMSR6 ));
 
-       printf("%02d : %07dKB : %07dKB \r\n", 7,-  IINCHIP_READ (- TMSR7 ),- IINCHIP_READ (- RMSR7 ));
 
-       printf("\r\nMTYPER=%02x%02x\r\n",- IINCHIP_READ (- MTYPER0 ),- IINCHIP_READ (- MTYPER1 ));
 
-    #endif 
-     
-    return 1; 
- } 
-   
- uint32 wiz_write_buf(SOCKET s,uint8* buf,uint32 len) 
- { 
- #if (__DEF_IINCHIP_ADDRESS_MODE__ == __DEF_IINCHIP_DIRECT_MODE__) 
-    #if (__DEF_IINCHIP_BUF_OP__ == __DEF_C__)  
-       uint32 idx=0; 
-       // M_08082008 
-       IINCHIP_CRITICAL_SECTION_ENTER(); 
-       for (idx = 0; idx < len; idx+=2) 
-       { 
-                                         *((vuint8*)Sn_TX_FIFOR0(s)) = *(buf+idx); 
-                                         *((vuint8*)Sn_TX_FIFOR1(s)) = *(buf+idx+1); 
-                         } 
-       // M_08082008 
-       IINCHIP_CRITICAL_SECTION_EXIT(); 
-    #elif (__DEF_IINCHIP_BUF_OP__ == __DEF_MCU_DEP_DMA__) 
-       #error "You should do implement this block." 
-    #endif 
- #elif (__DEF_IINCHIP_ADDRESS_MODE__ == __DEF_IINCHIP_INDIRECT_MODE__) 
-    #if (__DEF_IINCHIP_BUF_OP__ == __DEF_C__) */ 
-       uint32 idx=0; 
-       IINCHIP_CRITICAL_SECTION_ENTER(); 
-       *((vuint8*)IDM_AR0) = Sn_TX_FIFOR0(s); 
-       *((vuint8*)IDM_AR1) = Sn_TX_FIFOR1(s); 
-       for (idx = 0; idx < len; idx+=2) 
-       { 
-           *((vuint8*)IDM_DR0) = *((uint8*)(buf+idx)); 
-           *((vuint8*)IDM_DR1) = *((uint8*)(buf+idx+1)); 
-       } 
-       IINCHIP_CRITICAL_SECTION_EXIT(); 
-    #elif (__DEF_IINCHIP_BUF_OP__ == __DEF_MCU_DEP_DMA__) 
-       #error "You should do implement this block." 
-    #else 
-       #error "Undefined __DEF_IINCHIP_BUF_OP__" 
-    #endif  
- #else 
-    #error "Undefined __DEF_IINCHIP_ADDRESS_MODE__"    
- #endif 
-     return len;    
- } 
-   
- uint32 wiz_read_buf(SOCKET s, uint8* buf,uint32 len) 
- { 
- #if (__DEF_IINCHIP_ADDRESS_MODE__ == __DEF_IINCHIP_DIRECT_MODE__) 
-    #if (__DEF_IINCHIP_BUF_OP__ == __DEF_C__) 
-       uint32 idx; 
-       // M_08082008  
-       IINCHIP_CRITICAL_SECTION_ENTER(); 
-       for (idx = 0; idx < len; idx+=2) 
-       { 
-                                 *(buf+idx) = *((vuint8*)Sn_RX_FIFOR0(s)); 
-                                 *(buf+idx+1) = *((vuint8*)Sn_RX_FIFOR1(s)); 
-                         } 
-       // M_08082008    
-       IINCHIP_CRITICAL_SECTION_EXIT(); 
-    #elif (__DEF_IINCHIP_BUF_OP__ == __DEF_MCU_DEP_DMA__) 
-       #error "You should do implement this block." 
-    #else 
-       #error "Undefined __DEF_IINCHIP_BUF_OP__" 
-    #endif  
- #elif (__DEF_IINCHIP_ADDRESS_MODE__ == __DEF_IINCHIP_INDIRECT_MODE__) 
-    #if (__DEF_IINCHIP_BUF_OP__ == __DEF_C__) */ 
-       uint32 idx=0; 
-       IINCHIP_CRITICAL_SECTION_ENTER(); 
-       *((vuint8*)IDM_AR0) = Sn_RX_FIFOR0(s); 
-       *((vuint8*)IDM_AR1) = Sn_RX_FIFOR1(s); 
-       for (idx = 0; idx < len; idx+=2) 
-       { 
-          *((uint8*)(buf+idx)) = *((vuint8*)IDM_DR0); 
-          *((uint8*)(buf+idx+1)) = *((vuint8*)IDM_DR1); 
-       } 
-       IINCHIP_CRITICAL_SECTION_EXIT(); 
-    #elif (__DEF_IINCHIP_BUF_OP__ == __DEF_MCU_DEP_DMA__) 
-       #error "You should do implement this block." 
-    #else 
-       #error "Undefined __DEF_IINCHIP_BUF_OP__" 
-    #endif  
- #else 
-    #error "Undefined __DEF_IINCHIP_ADDRESS_MODE__"    
- #endif 
-     return len; 
- } 
-   
-   
- uint32 getIINCHIP_TxMAX(SOCKET s) 
- { 
-   return TXMEM_SIZE[s]; 
- } 
-   
- uint32 getIINCHIP_RxMAX(SOCKET s) 
- { 
-   return RXMEM_SIZE[s]; 
- } 
-   
-   
- // This statement is commented for using 'Doxygen'. 
- //#ifdef __DEF_IINCHIP_PPP__ 
-   
- #define PPP_OPTION_BUF_LEN 64  
-   
- uint8 pppinit_in(uint8 * id, uint8 idlen, uint8 * passwd, uint8 passwdlen) 
- { 
-   uint8 loop_idx = 0; 
-   uint8 isr = 0; 
-   uint8 buf[PPP_OPTION_BUF_LEN]; 
-   uint32 len; 
-   uint8 str[PPP_OPTION_BUF_LEN]; 
-   uint8 str_idx,dst_idx; 
-     
-   // PHASE1. PPPoE Discovery // 
-   // start to connect pppoe connection 
-   printf("-- PHASE 1. PPPoE Discovery process --"); 
-   setSn_CR(0,Sn_CR_PCON); 
-   wait_10ms(100); 
-     
-   // check if PPPoE discovery phase is success or not 
-   loop_idx = 0; 
-   while (!(getSn_IR(0) & Sn_IR_PNEXT))  
-   { 
-      if (loop_idx++ == 10) // timeout 
-      { 
-         printf("timeout before LCP\r\n");  
-         return 3; 
-      } 
-      wait_10ms(100); 
-   } 
-   setSn_IR(0,Sn_IR_PNEXT); 
-     
-   // PHASE2. LCP process // 
-   printf("-- PHASE 2. LCP process --"); 
-   { 
-      // Magic number option 
-      // option format (type value + length value + data) 
-      // write magic number value 
-      buf[0] = 0x05; // type value 
-      buf[1] = 0x06; // length value 
-      buf[2] = 0x01; buf[3] = 0x01; buf[4] = 0x01; buf[5]= 0x01; // data 
-      // for MRU option, 1492 0x05d4   
-      // buf[6] = 0x01; buf[7] = 0x04; buf[8] = 0x05; buf[9] = 0xD4; 
-   } 
-   wiz_write_buf(0,buf, 0x06); 
-   setSn_TX_WRSR(0,0x06); 
-   setSn_CR(0,Sn_CR_PCR); // send LCP request to PPPoE server 
-   wait_10ms(100); 
-    
-   while (!((isr = getSn_IR(0)) & Sn_IR_PNEXT)) 
-   { 
-      if (isr & Sn_IR_PRECV)     // Not support option 
-      { 
-         len = getSn_RX_RSR(0); 
-         if ( len > 2 ) 
-         { 
-            wiz_read_buf(0,str, 2); 
-            len = ((uint16)str[0] << 8) + str[1]; 
-            wiz_read_buf(0,(str+2), len); 
-            setSn_CR(0,Sn_CR_RECV); 
-            // get option length 
-            len = (uint32)str[4]; len = ((len & 0xff) << 8) + (uint32)str[5]; 
-            len += 2; 
-            str_idx = 6; dst_idx = 0; // PPP header is 6 byte, so starts at 6. 
-            do  
-            { 
-               if ((str[str_idx] == 0x01) || (str[str_idx] == 0x02) || (str[str_idx] == 0x03) || (str[str_idx] == 0x05)) 
-               { 
-                  // skip as length of support option. str_idx+1 is option's length. 
-                  str_idx += str[str_idx+1]; 
-               } 
-               else 
-               { 
-                  // not support option , REJECT 
-                  memcpy((uint8 *)(- buf +- dst_idx ), (uint8 *)(- str +- str_idx ),-  str [- str_idx +1]);
 
-                  dst_idx += str[str_idx+1]; str_idx += str[str_idx+1]; 
-               } 
-            } while (str_idx != len); 
-          
-            // send LCP REJECT packet 
-            wiz_write_buf(0,buf, dst_idx); 
-            setSn_TX_WRSR(0,dst_idx); 
-            setSn_CR(0,Sn_CR_PCJ); 
-            setSn_IR(0,Sn_IR_PRECV); 
-         } 
-      } 
-      if (loop_idx++ == 10) // timeout 
-      { 
-         printf("timeout after LCP\r\n"); 
-         return 3; 
-      } 
-      wait_10ms(100); 
-   } 
-   setSn_IR(0,Sn_IR_PNEXT); 
-    
-   // PHASE 3. PPPoE Authentication // 
-   printf("-- PHASE 3. PPPoE Authentication mode --\r\n"); 
-   printf("Authentication protocol : %04x, ",-  getPATR ());
 
-   loop_idx = 0; 
-   if (getPATR() == 0xC023)         // PAP type 
-   { 
-      printf("PAP\r\n"); // in case of adsl normally supports PAP. 
-      // send authentication data 
-      // copy (idlen + id + passwdlen + passwd) 
-      buf[loop_idx] = idlen; loop_idx++; 
-      memcpy((uint8 *)(- buf +- loop_idx ), (uint8 *)(- id ),-  idlen );-  loop_idx  +=-  idlen ;
 
-      buf[loop_idx] = passwdlen; loop_idx++; 
-      memcpy((uint8 *)(- buf +- loop_idx ), (uint8 *)(- passwd ),-  passwdlen );-  loop_idx  +=-  passwdlen ;
 
-      wiz_write_buf(0,buf, loop_idx); 
-      setSn_TX_WRSR(0,loop_idx); 
-      setSn_CR(0,Sn_CR_PCR); 
-      wait_10ms(100); 
-   } 
-   else if (getPATR() == 0xC223)    // CHAP type 
-   { 
-      uint8 chal_len; 
-      md5_ctx context; 
-      uint8  digest[16]; 
-       
-      len = getSn_RX_RSR(0); 
-      if ( len > 2 ) 
-      { 
-         wiz_read_buf(0,str,2); 
-         len = ((uint32)str[0] << 8) + (uint32)str[1]; 
-         wiz_read_buf(0, str, len); 
-         setSn_CR(0,Sn_CR_RECV); 
-         #ifdef __DEF_IINCHIP_DBG__ 
-         { 
-            int16 i; 
-            for (- i  = 0;-  i  < 32;-  i ++) printf ("%02X ",-  str [- i ]);
 
-         } 
-         #endif 
-         // str is C2 23 xx CHAL_ID xx xx CHAP_LEN CHAP_DATA 
-         // index  0  1  2  3       4  5  6        7 ... 
-          
-         buf[loop_idx] = str[3]; loop_idx++; // chal_id 
-         memcpy((uint8 *)(- buf +- loop_idx ), (uint8 *)(- passwd ),-  passwdlen );-  loop_idx  +=-  passwdlen ; //passwd
 
-         chal_len = str[6]; // chal_id 
-         memcpy((uint8 *)(- buf +- loop_idx ), (uint8 *)(- str +7),-  chal_len );-  loop_idx  +=-  chal_len ; //challenge
 
-         buf[loop_idx] = 0x80; 
-         #ifdef __DEF_IINCHIP_DBG__ 
-         { 
-            int16 i; 
-             
-            for (- i  = 0;-  i  < 64;-  i ++) printf ("%02X ",-  buf [- i ]);
 
-         } 
-         #endif 
-          
-         md5_init(&context); 
-         md5_update(&context, buf, loop_idx); 
-         md5_final(digest, &context); 
-          
-         #ifdef __DEF_IINCHIP_DBG__ 
-         { 
-            uint i; 
-            for (- i  = 0;-  i  < 16;-  i ++) printf ("%02X",-  digest [- i ]);
 
-         } 
-         #endif 
-         loop_idx = 0; 
-         buf[loop_idx] = 16; loop_idx++; // hash_len 
-         memcpy((uint8 *)(- buf +- loop_idx ), (uint8 *)(- digest ), 16);-  loop_idx  += 16; // hashed value
 
-         memcpy((uint8 *)(- buf +- loop_idx ), (uint8 *)(- id ),-  idlen );-  loop_idx  +=-  idlen ; // id
 
-         wiz_write_buf(0,buf, loop_idx); 
-         setSn_TX_WRSR(0,loop_idx); 
-         setSn_CR(0,Sn_CR_PCR); 
-         wait_10ms(100); 
-      } 
-   } 
-   else 
-   { 
-      #ifdef __DEF_IINCHIP_DBG__ 
-         printf("Not support PPP Auth type: %.4x\r\n",- getPATR ());
 
-      #endif 
-      return 4; 
-   } 
-    
-   printf("-- Waiting for PPPoE server's admission --"); 
-   loop_idx = 0; 
-   while (!((isr = getSn_IR(0)) & Sn_IR_PNEXT)) 
-   { 
-      if (isr & Sn_IR_PFAIL) 
-      { 
-         printf("failed\r\nReinput id, password..\r\n"); 
-         return 2; 
-      } 
-      if (loop_idx++ == 10) // timeout 
-      { 
-         printf("timeout after PAP\r\n"); 
-         return 3; 
-      } 
-      wait_10ms(100); 
-   } 
-   setSn_IR(0,Sn_IR_PNEXT); 
-    
-   // PHASE 4. IPCP process // 
-   printf("-- PHASE 4. IPCP process --"); 
-   // IP Address 
-   buf[0] = 0x03; buf[1] = 0x06; buf[2] = 0x00; buf[3] = 0x00; buf[4] = 0x00; buf[5] = 0x00; 
-   wiz_write_buf(0,buf, 6); 
-   setSn_TX_WRSR(0,6); 
-   setSn_CR(0,Sn_CR_PCR); 
-   wait_10ms(100); 
-    
-   loop_idx = 0; 
-   while (1) 
-   { 
-      if (getSn_IR(0) & Sn_IR_PRECV) 
-      { 
-         len = getSn_RX_RSR(0); 
-         if ( len > 2 ) 
-         { 
-            wiz_read_buf(0,str,2); 
-            len = ((uint32)str[0] << 8) + (uint32)str[1]; 
-            wiz_read_buf(0, str, len); 
-            setSn_CR(0,Sn_CR_RECV); 
-            str_idx = 6; dst_idx = 0; 
-            if (str[2] == 0x03) // in case of NAK 
-            { 
-               do  
-               { 
-                  if (str[str_idx] == 0x03) // request only ip information 
-                  { 
-                     memcpy((uint8 *)(- buf +- dst_idx ), (uint8 *)(- str +- str_idx ),-  str [- str_idx +1]);
 
-                     dst_idx += str[str_idx+1]; str_idx += str[str_idx+1]; 
-                  } 
-                  else 
-                  { 
-                     // skip byte 
-                     str_idx += str[str_idx+1]; 
-                  } 
-                  // for debug 
-                  //printf("s: %d, d: %d, l: %d", str_idx, dst_idx, len); 
-               } while (str_idx != len); 
-               wiz_write_buf(0,buf, dst_idx); 
-               setSn_TX_WRSR(0,dst_idx); 
-               setSn_CR(0,Sn_CR_PCR); // send ipcp request 
-               wait_10ms(100); 
-               break; 
-            } 
-         } 
-         setSn_IR(0,Sn_IR_PRECV); 
-      } 
-      if (loop_idx++ == 10) // timeout 
-      { 
-         printf("timeout after IPCP\r\n"); 
-         return 3; 
-      } 
-      wait_10ms(100); 
-      wiz_write_buf(0, buf, 6); 
-      setSn_TX_WRSR(0,6); 
-      setSn_CR(0,Sn_CR_PCR); //ipcp re-request 
-   } 
-    
-   loop_idx = 0; 
-   while (!(getSn_IR(0) & Sn_IR_PNEXT)) 
-   { 
-      if (loop_idx++ == 10) // timeout 
-      { 
-         printf("timeout after IPCP NAK\r\n"); 
-         return 3; 
-      } 
-      wait_10ms(100); 
-      setSn_CR(0,Sn_CR_PCR); // send ipcp request 
-   } 
-   setSn_IR(0,Sn_IR_PNEXT); 
-   return 1; 
-   // after this function, the pppoe server's mac address and pppoe session id is saved in PHAR and PSIDR repectly. 
- } 
-   
- uint8 pppinit(uint8 *id, uint8 idlen, uint8 *passwd, uint8 passwdlen) 
- { 
-         uint8 ret; 
-         uint8 isr; 
-          
-         // PHASE0. PPPoE setup 
-   
-         printf("-- PHASE 0. PPPoE setup process --\r\n"); 
-         setMR(getMR()|MR_PPPoE);                     // set PPPoE mode 
-         setMR(getMR()|MR_FS);                        // If little-endian, set MR_FS. Otherwise, comment.  
-   
-         isr =  getSn_IR(0); 
-         setSn_IR(0,isr);                     // clear the previous value of Sn_IR(0)    
-          
-         setPTIMER(200);                              // set LPC request time to 5 seconds 
-         setPMAGICR(0x01);                            // set the magic number 
-         setSn_MR(0, Sn_MR_PPPoE);                    // set Sn_MR(0) to PPPoE mode 
-         setSn_CR(0,Sn_CR_OPEN);                      //open SOCKET0 with PPPoE mode                       
-          
-         ret = pppinit_in(id, idlen, passwd, passwdlen); // process the PPPoE message 
-   
-         setSn_CR(0, Sn_CR_CLOSE);                       // close PPPoE SOCKET0 
-   
-         return ret;    
- } 
-     
- void  pppterm(uint8 *mac, uint16 sessionid) 
- { 
-    uint8 isr; 
-    #ifdef __DEF_IINCHIP_DBG__ 
-    #endif 
-     
-    // set PPPoE mode 
-    setMR(getMR() | MR_PPPoE);                 
-     
-    // set pppoe server's mac address and session id  
-    // must be setted these value. 
-    setSn_DHAR(0, mac); 
-    setSn_DPORTR(0,sessionid); 
-   
-    // clear the previous value of Sn_IR(0)  
-         isr =  getSn_IR(0); 
-         setSn_IR(0,isr);                   
-     
-    //open SOCKET0 with PPPoE mode 
-         setSn_MR(0, Sn_MR_PPPoE);                     
-         setSn_CR(0,Sn_CR_OPEN);                       
-    while(getSn_SSR(0) != SOCK_PPPoE)             
-     
-    // close PPPoE connection 
-    setSn_CR(0,Sn_CR_PDISCON); 
-    wait_10ms(100); 
-    // close socket 
-    setSn_CR(0,Sn_CR_CLOSE); 
-     
-    #ifdef __DEF_IINCHIP_DBG__ 
-       printf("pppterm() end ..\r\n"); 
-    #endif 
- } 
- // This statement is commented for using 'Doxygen'. 
- //#endif 
-   
-   
- void wait_1us(uint32 us) 
- { 
-    uint32 i,j; 
-    for(i = 0; i < us ; i++) 
-    { 
-       for(j = 0; j < 100; j++); 
-    } 
- } 
-   
- void wait_1ms(uint32 ms) 
- { 
-    uint32 i; 
-    for(i = 0; i < ms ; i++) 
-    { 
-      wait_1us(1000); 
-    } 
-     
- } 
-   
- void wait_10ms(uint32 ms) 
- { 
-    uint32 i; 
-    for(i = 0; i < ms ; i++) 
-    { 
-      wait_1ms(10); 
-    } 
- } 
-   
-   
-