亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? w5300.c

?? 帶硬件TCP/IP網卡芯片W5300 AVR下應用工程代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
   addr[2] = (uint8)(IINCHIP_READ(Sn_DIPR2(s))>>8);
// M_15052008 : Replace Sn_DHAR2 with Sn_DIPR.   
// addr[3] = (uint8)IINCHIP_READ(Sn_DHAR2(s));   
   addr[3] = (uint8)IINCHIP_READ(Sn_DIPR2(s));   
}
void     setSn_DIPR(SOCKET s, uint8* addr)
{
   IINCHIP_WRITE(Sn_DIPR(s),  ((uint16)(addr[0]<<8)) + addr[1]);
   IINCHIP_WRITE(Sn_DIPR2(s), ((uint16)(addr[2]<<8)) + addr[3]);  
}

uint16   getSn_MSSR(SOCKET s)
{
	 uint16 ret = 0;
	 ret = IINCHIP_READ(Sn_MSSR0(s)) << 8;
	 ret |= IINCHIP_READ(Sn_MSSR1(s));
   return ret;
}

void     setSn_MSSR(SOCKET s, uint16 mss)
{
   IINCHIP_WRITE(Sn_MSSR0(s), mss >> 8);
   IINCHIP_WRITE(Sn_MSSR1(s), mss);
}


/* SOCKET communication */

uint8    getSn_KPALVTR(SOCKET s)
{
   return (uint8)(IINCHIP_READ(Sn_KPALVTR(s)) >> 8);
}

void     setSn_KPALVTR(SOCKET s, uint8 time)
{
   uint16 keepalive=0;
   keepalive = (IINCHIP_READ(Sn_KPALVTR(s)) & 0x00FF) + ((uint16)time<<8);
   IINCHIP_WRITE(Sn_KPALVTR(s),keepalive);
}

uint32   getSn_TX_WRSR(SOCKET s)
{
	union {
		uint32 s32;
		uint8 s8[4];
	} u32;

	u32.s8[3] = IINCHIP_READ(Sn_TX_WRSR(s));
	u32.s8[2] = IINCHIP_READ(Sn_TX_WRSR1(s));
	u32.s8[1] = IINCHIP_READ(Sn_TX_WRSR2(s));
	u32.s8[0] = IINCHIP_READ(Sn_TX_WRSR3(s));

	return u32.s32;
}
void     setSn_TX_WRSR(SOCKET s, uint32 size)
{
	union {
		uint32 s32;
		uint8 s8[4];
	} u32;

	u32.s32 = size;

	IINCHIP_WRITE(Sn_TX_WRSR(s), u32.s8[3]);
	IINCHIP_WRITE(Sn_TX_WRSR1(s), u32.s8[2]);
	IINCHIP_WRITE(Sn_TX_WRSR2(s), u32.s8[1]);
	IINCHIP_WRITE(Sn_TX_WRSR3(s), u32.s8[0]);
}

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_FSR(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 firs                                                    
   }                                                                       
   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_RSR(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 firs                
   return received_rx_size;   
}


void     setSn_TX_FIFOR(SOCKET s, uint16 data)
{
   IINCHIP_WRITE(Sn_TX_FIFOR(s), data >> 8);
   IINCHIP_WRITE(Sn_TX_FIFOR1(s), data);
}

uint16   getSn_RX_FIFOR(SOCKET s)
{
	 uint16 ret = 0;
	 ret = IINCHIP_READ(Sn_RX_FIFOR(s)) << 8;
	 ret |= 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)
{
   uint16 protocolnum;
   protocolnum = (IINCHIP_READ(Sn_PROTOR(s)) & 0xFF00) + pronum;
   IINCHIP_WRITE(Sn_PROTOR(s),protocolnum);
}

uint8    getSn_TOSR(SOCKET s)
{
   return (uint8)IINCHIP_READ(Sn_TOSR(s));
}
void     setSn_TOSR(SOCKET s, uint8 tos)
{
   IINCHIP_WRITE(Sn_TOSR(s),tos);
}

uint8    getSn_TTLR(SOCKET s)
{
   return (uint8)IINCHIP_READ(Sn_TTLR(s));
}
void     setSn_TTLR(SOCKET s, uint8 ttl)
{
   IINCHIP_WRITE(Sn_TTLR(s),ttl);
}

uint8    getSn_FRAGR(SOCKET s)
{
   return (uint8)IINCHIP_READ(Sn_FRAGR(s));
}

void     setSn_FRAGR(SOCKET s, uint8 frag)
{
   IINCHIP_WRITE(Sn_FRAGR(s),frag);
}


/*******
 * ETC *
 *******/

/* Initialization & Interrupt request routine */

void     iinchip_init(void)
{
	*((volatile uint8*)MR) = MR_RST;
	wait_1ms(5);				// wait PLL lock
#if (__DEF_IINCHIP_ADDRESS_MODE__ == __DEF_IINCHIP_INDIRECT_MODE__)
		*((volatile uint8*)MR) = MR_IND;
    #ifndef __DEF_IINCHIP_DBG__	
	      printf("MR value is %04x\r\n",*((volatile uint8*)MR));
    #endif	
#endif
}


#ifdef __DEF_IINCHIP_INT__ 
/**
 * \todo You should do implement your interrupt request routine instead of this function.
 *       If you want to use ISR, this function should be mapped in your ISR handler.
 */

ISR(INT5_vect)
{
   uint16 int_val;
   uint16 idx;
   IINCHIP_CRITICAL_SECTION_ENTER();
   //M_01052008 : replaced '==' with '='.
   //while(int_val == IINCHIP_READ(IR))  // process all interrupt 
   printf("ISR routine enter\r\n");
   while((int_val = (IINCHIP_READ(IR0) << 8 | IINCHIP_READ(IR1))))     
   {          
      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_IR(idx)); // Save the interrupt stauts to SOCK_INT[idx]
            IINCHIP_WRITE(Sn_IR(idx),(uint16)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", (uint8)(IINCHIP_READ(UIPR)>>8),
                                          (uint8)IINCHIP_READ(UIPR),
                                          (uint8)(IINCHIP_READ(UIPR2)>>8),
                                          (uint8)IINCHIP_READ(UIPR2));
         printf("UPORTR : %04x\r\n", IINCHIP_READ(UPORTR));
      }
      IINCHIP_WRITE(IR, int_val & 0xFF00);
   }
   IINCHIP_CRITICAL_SECTION_EXIT();
}
#endif 


/* Internal memory operation */
 
uint8    sysinit(uint8* tx_size, uint8* rx_size)
{
   uint8 k;
   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;
   }
   
   k = 0;
   for(i = TMSR0; i <= TMSR7; i++) {
      IINCHIP_WRITE(i, tx_size[k]);
   k++;
	 }
   
   k = 0;
   for(i = RMSR0; i <= RMSR7; i++) {
      IINCHIP_WRITE(i, rx_size[k]);
   k++;
   }
   
   for(i=0; i <ssum/8 ; i++)
   {
      mem_cfg <<= 1;
      mem_cfg |= 1;
   }
   
   IINCHIP_WRITE(MTYPER, mem_cfg >> 8);
   IINCHIP_WRITE(MTYPER1, 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, (uint8)(IINCHIP_READ(TMSR0)),(uint8)(IINCHIP_READ(RMSR0)));
      printf("%02d : %07dKB : %07dKB \r\n", 1, (uint8)(IINCHIP_READ(TMSR1)),(uint8)(IINCHIP_READ(RMSR1)));
      printf("%02d : %07dKB : %07dKB \r\n", 2, (uint8)(IINCHIP_READ(TMSR2)),(uint8)(IINCHIP_READ(RMSR2)));
      printf("%02d : %07dKB : %07dKB \r\n", 3, (uint8)(IINCHIP_READ(TMSR3)),(uint8)(IINCHIP_READ(RMSR3)));
      printf("%02d : %07dKB : %07dKB \r\n", 4, (uint8)(IINCHIP_READ(TMSR4)),(uint8)(IINCHIP_READ(RMSR4)));
      printf("%02d : %07dKB : %07dKB \r\n", 5, (uint8)(IINCHIP_READ(TMSR5)),(uint8)(IINCHIP_READ(RMSR5)));
      printf("%02d : %07dKB : %07dKB \r\n", 6, (uint8)(IINCHIP_READ(TMSR6)),(uint8)(IINCHIP_READ(RMSR6)));
      printf("%02d : %07dKB : %07dKB \r\n", 7, (uint8)(IINCHIP_READ(TMSR7)),(uint8)(IINCHIP_READ(RMSR7)));
      printf("\r\nMTYPER=%04x\r\n",IINCHIP_READ(MTYPER));
   #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 z;					
				for(z=0; z<len; z+=2) { 
					*((vuint8*)Sn_TX_FIFOR(s)) = *(buf+z);
					*((vuint8*)Sn_TX_FIFOR1(s)) = *(buf+z+1);
				}							
   #endif
  
#elif (__DEF_IINCHIP_ADDRESS_MODE__ == __DEF_IINCHIP_INDIRECT_MODE__)
   #if (__DEF_IINCHIP_BUF_OP__ == __DEF_C__)
      uint32 idx=0;
	    *((vuint8*)IDM_AR) = Sn_TX_FIFOR(s) >> 8;
	    *((vuint8*)IDM_AR1) = Sn_TX_FIFOR(s);
     	for (idx = 0; idx < len; idx+=2) {
  			*((vuint8*)IDM_DR) = *(buf+idx);
  			*((vuint8*)IDM_DR1) = *(buf+idx+1);
  		}
   #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 z;	
				for(z=0; z<len; z+=2) { 
					*(buf+z) = *((vuint8*)Sn_RX_FIFOR(s));
					*(buf+z+1) = *((vuint8*)Sn_RX_FIFOR1(s));
				}								
   #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;
    	*((vuint8*)IDM_AR) = Sn_RX_FIFOR(s) >> 8;
	    *((vuint8*)IDM_AR1) = Sn_RX_FIFOR(s);
    	for (idx = 0; idx < len; idx+=2) {
  			*(buf+idx) = *((vuint8*)IDM_DR);
	  		*(buf+idx+1) = *((vuint8*)IDM_DR1);
    	}
   #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];
}


#ifdef __DEF_IINCHIP_PPP__

/**
 * Max lenght of PPPoE message 
 */
#define PPP_OPTION_BUF_LEN 64 

   /**
    * \fn uint8    pppinit_in(uint8 * id, uint8 idlen, uint8 * passwd, uint8 passwdlen)
    *  Internal function.
    * \details It is called in  pppinit().\n
    *          It processes 4 phases as following. 
    *          - PPPoE Discovery
    *          - LCP process
    *          - PPPoE authentication
    *          - IPCP process
    *
    * \param id User ID for connecting to a PPPoE server
    * \param idlen Length of \em id
    * \param passwd User password for connecting to a PPPoE server
    * \param passwdlen Length of \em passwd

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合999| 中文字幕第一区第二区| 秋霞电影网一区二区| 欧美人xxxx| 玖玖九九国产精品| 国产精品天美传媒沈樵| 91麻豆.com| 一区二区三区高清不卡| 91精品免费在线观看| 国产又黄又大久久| 亚洲欧美综合色| 欧美日本一区二区三区四区| 日本伊人精品一区二区三区观看方式| 欧美成人女星排行榜| 粉嫩绯色av一区二区在线观看 | 91女厕偷拍女厕偷拍高清| 亚洲欧美日韩电影| 欧美一二三区在线观看| 成人sese在线| 五月天一区二区三区| 精品国产免费视频| 色狠狠色噜噜噜综合网| 奇米一区二区三区av| 国产精品久久福利| 欧美精选在线播放| 成人精品在线视频观看| 五月天精品一区二区三区| 26uuu精品一区二区| 欧美亚洲日本国产| 国产精品一区二区黑丝| 午夜精品久久久久久久99水蜜桃| 久久久久99精品国产片| 欧美日韩精品欧美日韩精品一 | 99久久久久久| 奇米影视7777精品一区二区| 国产精品国产三级国产| 日韩欧美一区二区久久婷婷| 91视频免费看| 国产91色综合久久免费分享| 天堂午夜影视日韩欧美一区二区| 欧美国产一区二区在线观看| 欧美一区二区三区视频在线观看 | 欧美日韩国产一区| 成人黄色在线网站| 狠狠色狠狠色合久久伊人| 一区二区三区中文字幕| 亚洲国产精品成人综合| 欧美成人bangbros| 欧美日韩日日骚| 99热这里都是精品| 国产jizzjizz一区二区| 极品尤物av久久免费看| 日韩黄色一级片| 一区二区三区自拍| 亚洲色图都市小说| 国产区在线观看成人精品| 精品三级av在线| 91.com在线观看| 欧洲精品一区二区| 91精品办公室少妇高潮对白| 风间由美一区二区av101| 久久99久久99| 蜜臂av日日欢夜夜爽一区| 午夜久久电影网| 亚洲成人激情综合网| 亚洲国产精品久久人人爱| 国产精品入口麻豆九色| 久久婷婷色综合| 久久这里只有精品首页| 久久久无码精品亚洲日韩按摩| 日韩一区二区三区电影在线观看| 欧美日韩成人综合在线一区二区| 欧美影院午夜播放| 欧美日韩你懂得| 欧美二区在线观看| 91麻豆精品91久久久久久清纯| 欧美亚洲精品一区| 欧美色区777第一页| 欧美日韩成人综合在线一区二区 | 91丝袜美腿高跟国产极品老师| 成人丝袜视频网| 91在线小视频| 日本道精品一区二区三区| 欧美在线观看你懂的| 欧美日韩精品一区二区三区蜜桃 | www.亚洲免费av| 99精品久久99久久久久| 在线观看一区日韩| 欧美日韩黄色一区二区| 日韩一区二区高清| 2014亚洲片线观看视频免费| 国产日韩精品一区二区三区在线| 国产精品你懂的在线欣赏| 亚洲人成伊人成综合网小说| 亚洲一区中文在线| 蜜臀久久久久久久| 国产成人在线观看免费网站| 成人av网站免费观看| 在线免费视频一区二区| 欧美久久久久久久久中文字幕| 精品国产一区二区三区久久久蜜月 | 成人av在线资源网| 在线观看免费亚洲| 日韩欧美一区在线观看| 久久久久国产精品免费免费搜索| 中文字幕中文乱码欧美一区二区 | 欧美日韩夫妻久久| 精品第一国产综合精品aⅴ| 国产精品私人自拍| 亚洲高清中文字幕| 国产毛片精品视频| 欧美亚洲综合在线| 久久久精品国产免大香伊| 亚洲免费电影在线| 久久99久国产精品黄毛片色诱| www.av精品| 欧美一区二区久久| 成人免费在线观看入口| 日韩国产一二三区| 99久久99精品久久久久久| 日韩一区二区免费视频| 国产精品久久久久久久久搜平片 | 欧美日韩精品是欧美日韩精品| 久久蜜臀中文字幕| 天天综合网 天天综合色| kk眼镜猥琐国模调教系列一区二区 | 欧美一级淫片007| 国产精品国产精品国产专区不片| 蜜臀av一区二区在线免费观看| 91在线小视频| 国产目拍亚洲精品99久久精品| 日韩成人一区二区三区在线观看| 粉嫩av亚洲一区二区图片| 欧美一区二区不卡视频| 一区二区三区四区不卡在线 | 亚洲乱码日产精品bd| 精品一区精品二区高清| 在线观看免费视频综合| 中文字幕亚洲在| 国产高清不卡一区| 欧美不卡视频一区| 偷拍与自拍一区| 在线看国产日韩| 亚洲视频在线一区观看| 成人丝袜高跟foot| 国产视频一区在线观看| 久久99最新地址| 欧美一区二区三区色| 亚洲高清在线精品| 欧美亚日韩国产aⅴ精品中极品| 国产精品国模大尺度视频| 国产成人精品免费视频网站| 欧美成人乱码一区二区三区| 免费观看在线综合色| 欧美一区在线视频| 免费成人你懂的| 欧美一区二区三区四区久久| 婷婷成人综合网| 9191国产精品| 蜜臀久久99精品久久久久久9| 欧美精品 国产精品| 天天色图综合网| 欧美巨大另类极品videosbest | 国产精品福利一区二区| 成人污视频在线观看| 中文字幕国产一区| 大胆亚洲人体视频| 国产精品乱码一区二区三区软件| 国产成人在线网站| 中文字幕一区二区三| 97久久超碰国产精品电影| 国产精品成人在线观看| 色婷婷亚洲一区二区三区| 亚洲欧美日韩国产中文在线| 在线日韩av片| 婷婷一区二区三区| 日韩欧美黄色影院| 国产一区二区三区不卡在线观看| 精品播放一区二区| 懂色av一区二区三区免费看| 国产精品久久久久久久蜜臀| 色婷婷久久综合| 日韩电影免费在线观看网站| 日韩欧美一级在线播放| 国产成人午夜精品影院观看视频 | 天天色综合成人网| 欧美女孩性生活视频| 精品久久久久一区二区国产| 成人av综合在线| 91精品办公室少妇高潮对白| 精品国产乱码久久久久久免费| 久久国产精品无码网站| 久久这里都是精品| www.成人在线| 婷婷一区二区三区| 久久九九国产精品| 色先锋aa成人| 黄色精品一二区| 亚洲视频一区二区在线观看| 欧美美女黄视频|