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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tcpip.c

?? 如題:POLAR LPC23XX-EK_DEMO software_Keil
?? C
?? 第 1 頁 / 共 3 頁
字號:
  else    memcpy(&TxFrame2[ARP_TARGET_IP_OFS], &RemoteIP, 4);    // other IP is next to us...  TxFrame2Size = ETH_HEADER_SIZE + ARP_FRAME_SIZE;  TransmitControl |= SEND_FRAME2;}   //-----------------------------------------------------------------------------------// easyWEB internal function// prepares the TxFrame2-buffer to send an ARP-answer (reply)void PrepareARP_ANSWER(void){  // Ethernet  memcpy(&TxFrame2[ETH_DA_OFS], &RecdFrameMAC, 6);  memcpy(&TxFrame2[ETH_SA_OFS], &MyMAC, 6);  *(unsigned short *)&TxFrame2[ETH_TYPE_OFS] = SWAPB(FRAME_ARP);  // ARP  *(unsigned short *)&TxFrame2[ARP_HARDW_OFS] = SWAPB(HARDW_ETH10);  *(unsigned short *)&TxFrame2[ARP_PROT_OFS] = SWAPB(FRAME_IP);  *(unsigned short *)&TxFrame2[ARP_HLEN_PLEN_OFS] = SWAPB(IP_HLEN_PLEN);  *(unsigned short *)&TxFrame2[ARP_OPCODE_OFS] = SWAPB(OP_ARP_ANSWER);  memcpy(&TxFrame2[ARP_SENDER_HA_OFS], &MyMAC, 6);  memcpy(&TxFrame2[ARP_SENDER_IP_OFS], &MyIP, 4);  memcpy(&TxFrame2[ARP_TARGET_HA_OFS], &RecdFrameMAC, 6);  memcpy(&TxFrame2[ARP_TARGET_IP_OFS], &RecdFrameIP, 4);  TxFrame2Size = ETH_HEADER_SIZE + ARP_FRAME_SIZE;  TransmitControl |= SEND_FRAME2;} //-----------------------------------------------------------------------------------// easyWEB internal function// prepares the TxFrame2-buffer to send an ICMP-echo-replyvoid PrepareICMP_ECHO_REPLY(void){  unsigned short ICMPDataCount;  if (RecdIPFrameLength > MAX_ETH_TX_DATA_SIZE)                      // don't overload TX-buffer    ICMPDataCount = MAX_ETH_TX_DATA_SIZE - IP_HEADER_SIZE - ICMP_HEADER_SIZE;  else    ICMPDataCount = RecdIPFrameLength - IP_HEADER_SIZE - ICMP_HEADER_SIZE;  // Ethernet  memcpy(&TxFrame2[ETH_DA_OFS], &RecdFrameMAC, 6);  memcpy(&TxFrame2[ETH_SA_OFS], &MyMAC, 6);  *(unsigned short *)&TxFrame2[ETH_TYPE_OFS] = SWAPB(FRAME_IP);    // IP     *(unsigned short *)&TxFrame2[IP_VER_IHL_TOS_OFS] = SWAPB(IP_VER_IHL);  WriteWBE(&TxFrame2[IP_TOTAL_LENGTH_OFS], IP_HEADER_SIZE + ICMP_HEADER_SIZE + ICMPDataCount);  *(unsigned short *)&TxFrame2[IP_IDENT_OFS] = 0;  *(unsigned short *)&TxFrame2[IP_FLAGS_FRAG_OFS] = 0;  *(unsigned short *)&TxFrame2[IP_TTL_PROT_OFS] = SWAPB((DEFAULT_TTL << 8) | PROT_ICMP);  *(unsigned short *)&TxFrame2[IP_HEAD_CHKSUM_OFS] = 0;  memcpy(&TxFrame2[IP_SOURCE_OFS], &MyIP, 4);  memcpy(&TxFrame2[IP_DESTINATION_OFS], &RecdFrameIP, 4);  *(unsigned short *)&TxFrame2[IP_HEAD_CHKSUM_OFS] = CalcChecksum(&TxFrame2[IP_VER_IHL_TOS_OFS], IP_HEADER_SIZE, 0);  // ICMP  *(unsigned short *)&TxFrame2[ICMP_TYPE_CODE_OFS] = SWAPB(ICMP_ECHO_REPLY << 8);  *(unsigned short *)&TxFrame2[ICMP_CHKSUM_OFS] = 0;                   // initialize checksum field  CopyFromFrame_EMAC(&TxFrame2[ICMP_DATA_OFS], ICMPDataCount);        // get data to echo...  *(unsigned short *)&TxFrame2[ICMP_CHKSUM_OFS] = CalcChecksum(&TxFrame2[IP_DATA_OFS], ICMPDataCount + ICMP_HEADER_SIZE, 0);  TxFrame2Size = ETH_HEADER_SIZE + IP_HEADER_SIZE + ICMP_HEADER_SIZE + ICMPDataCount;  TransmitControl |= SEND_FRAME2;} //-----------------------------------------------------------------------------------// easyWEB internal function// prepares the TxFrame2-buffer to send a general TCP frame// the TCPCode-field is passed as an argumentvoid PrepareTCP_FRAME(unsigned short TCPCode){  // Ethernet  memcpy(&TxFrame2[ETH_DA_OFS], &RemoteMAC, 6);  memcpy(&TxFrame2[ETH_SA_OFS], &MyMAC, 6);  *(unsigned short *)&TxFrame2[ETH_TYPE_OFS] = SWAPB(FRAME_IP);    // IP     *(unsigned short *)&TxFrame2[IP_VER_IHL_TOS_OFS] = SWAPB(IP_VER_IHL | IP_TOS_D);  if (TCPCode & TCP_CODE_SYN)                    // if SYN, we want to use the MSS option    *(unsigned short *)&TxFrame2[IP_TOTAL_LENGTH_OFS] = SWAPB(IP_HEADER_SIZE + TCP_HEADER_SIZE + TCP_OPT_MSS_SIZE);  else    *(unsigned short *)&TxFrame2[IP_TOTAL_LENGTH_OFS] = SWAPB(IP_HEADER_SIZE + TCP_HEADER_SIZE);      *(unsigned short *)&TxFrame2[IP_IDENT_OFS] = 0;  *(unsigned short *)&TxFrame2[IP_FLAGS_FRAG_OFS] = 0;  *(unsigned short *)&TxFrame2[IP_TTL_PROT_OFS] = SWAPB((DEFAULT_TTL << 8) | PROT_TCP);  *(unsigned short *)&TxFrame2[IP_HEAD_CHKSUM_OFS] = 0;  memcpy(&TxFrame2[IP_SOURCE_OFS], &MyIP, 4);  memcpy(&TxFrame2[IP_DESTINATION_OFS], &RemoteIP, 4);  *(unsigned short *)&TxFrame2[IP_HEAD_CHKSUM_OFS] = CalcChecksum(&TxFrame2[IP_VER_IHL_TOS_OFS], IP_HEADER_SIZE, 0);  // TCP  WriteWBE(&TxFrame2[TCP_SRCPORT_OFS], TCPLocalPort);  WriteWBE(&TxFrame2[TCP_DESTPORT_OFS], TCPRemotePort);  WriteDWBE(&TxFrame2[TCP_SEQNR_OFS], TCPSeqNr);  WriteDWBE(&TxFrame2[TCP_ACKNR_OFS], TCPAckNr);  *(unsigned short *)&TxFrame2[TCP_WINDOW_OFS] = SWAPB(MAX_TCP_RX_DATA_SIZE);    // data bytes to accept  *(unsigned short *)&TxFrame2[TCP_CHKSUM_OFS] = 0;             // initalize checksum  *(unsigned short *)&TxFrame2[TCP_URGENT_OFS] = 0;  if (TCPCode & TCP_CODE_SYN)                    // if SYN, we want to use the MSS option  {    *(unsigned short *)&TxFrame2[TCP_DATA_CODE_OFS] = SWAPB(0x6000 | TCPCode);   // TCP header length = 24    *(unsigned short *)&TxFrame2[TCP_DATA_OFS] = SWAPB(TCP_OPT_MSS);             // MSS option    *(unsigned short *)&TxFrame2[TCP_DATA_OFS + 2] = SWAPB(MAX_TCP_RX_DATA_SIZE);// max. length of TCP-data we accept    *(unsigned short *)&TxFrame2[TCP_CHKSUM_OFS] = CalcChecksum(&TxFrame2[TCP_SRCPORT_OFS], TCP_HEADER_SIZE + TCP_OPT_MSS_SIZE, 1);    TxFrame2Size = ETH_HEADER_SIZE + IP_HEADER_SIZE + TCP_HEADER_SIZE + TCP_OPT_MSS_SIZE;  }  else  {    *(unsigned short *)&TxFrame2[TCP_DATA_CODE_OFS] = SWAPB(0x5000 | TCPCode);   // TCP header length = 20    *(unsigned short *)&TxFrame2[TCP_CHKSUM_OFS] = CalcChecksum(&TxFrame2[TCP_SRCPORT_OFS], TCP_HEADER_SIZE, 1);    TxFrame2Size = ETH_HEADER_SIZE + IP_HEADER_SIZE + TCP_HEADER_SIZE;  }  TransmitControl |= SEND_FRAME2;}  //-----------------------------------------------------------------------------------// easyWEB internal function// prepares the TxFrame1-buffer to send a payload-packetvoid PrepareTCP_DATA_FRAME(void){  // Ethernet  memcpy(&TxFrame1[ETH_DA_OFS], &RemoteMAC, 6);  memcpy(&TxFrame1[ETH_SA_OFS], &MyMAC, 6);  *(unsigned short *)&TxFrame1[ETH_TYPE_OFS] = SWAPB(FRAME_IP);    // IP     *(unsigned short *)&TxFrame1[IP_VER_IHL_TOS_OFS] = SWAPB(IP_VER_IHL | IP_TOS_D);  WriteWBE(&TxFrame1[IP_TOTAL_LENGTH_OFS], IP_HEADER_SIZE + TCP_HEADER_SIZE + TCPTxDataCount);  *(unsigned short *)&TxFrame1[IP_IDENT_OFS] = 0;  *(unsigned short *)&TxFrame1[IP_FLAGS_FRAG_OFS] = 0;  *(unsigned short *)&TxFrame1[IP_TTL_PROT_OFS] = SWAPB((DEFAULT_TTL << 8) | PROT_TCP);  *(unsigned short *)&TxFrame1[IP_HEAD_CHKSUM_OFS] = 0;   memcpy(&TxFrame1[IP_SOURCE_OFS], &MyIP, 4);  memcpy(&TxFrame1[IP_DESTINATION_OFS], &RemoteIP, 4);  *(unsigned short *)&TxFrame1[IP_HEAD_CHKSUM_OFS] = CalcChecksum(&TxFrame1[IP_VER_IHL_TOS_OFS], IP_HEADER_SIZE, 0);  // TCP  WriteWBE(&TxFrame1[TCP_SRCPORT_OFS], TCPLocalPort);  WriteWBE(&TxFrame1[TCP_DESTPORT_OFS], TCPRemotePort);  WriteDWBE(&TxFrame1[TCP_SEQNR_OFS], TCPSeqNr);  WriteDWBE(&TxFrame1[TCP_ACKNR_OFS], TCPAckNr);  *(unsigned short *)&TxFrame1[TCP_DATA_CODE_OFS] = SWAPB(0x5000 | TCP_CODE_ACK);   // TCP header length = 20  *(unsigned short *)&TxFrame1[TCP_WINDOW_OFS] = SWAPB(MAX_TCP_RX_DATA_SIZE);       // data bytes to accept  *(unsigned short *)&TxFrame1[TCP_CHKSUM_OFS] = 0;   *(unsigned short *)&TxFrame1[TCP_URGENT_OFS] = 0;  *(unsigned short *)&TxFrame1[TCP_CHKSUM_OFS] = CalcChecksum(&TxFrame1[TCP_SRCPORT_OFS], TCP_HEADER_SIZE + TCPTxDataCount, 1);}  //-----------------------------------------------------------------------------------// easyWEB internal function// calculates the TCP/IP checksum. if 'IsTCP != 0', the TCP pseudo-header// will be included.unsigned short CalcChecksum(void *Start, unsigned short Count, unsigned char IsTCP){  unsigned long Sum = 0;  unsigned short * piStart;                        // Keil: Pointer added to correct expression  if (IsTCP) {                                   // if we've a TCP frame...    Sum += MyIP[0];                              // ...include TCP pseudo-header    Sum += MyIP[1];    Sum += RemoteIP[0];    Sum += RemoteIP[1];    Sum += SwapBytes(Count);                     // TCP header length plus data length    Sum += SWAPB(PROT_TCP);  }  piStart = Start;                               // Keil: Line added  while (Count > 1) {                            // sum words//  Sum += *((unsigned short *)Start)++;		     // Keil: Line replaced with following line    Sum += *piStart++;    Count -= 2;  }  if (Count)                                     // add left-over byte, if any//  Sum += *(unsigned char *)Start; 	         // Keil: Line replaced with following line    Sum += *(unsigned char *)piStart;    while (Sum >> 16)                              // fold 32-bit sum to 16 bits    Sum = (Sum & 0xFFFF) + (Sum >> 16);    return ~Sum;} //-----------------------------------------------------------------------------------// easyWEB internal function// starts the timer as a retry-timer (used for retransmission-timeout)void TCPStartRetryTimer(void){  TCPTimer = 0;  RetryCounter = MAX_RETRYS;  TCPFlags |= TCP_TIMER_RUNNING;  TCPFlags |= TIMER_TYPE_RETRY;}  //-----------------------------------------------------------------------------------// easyWEB internal function// starts the timer as a 'TIME_WAIT'-timer (used to finish a TCP-session)void TCPStartTimeWaitTimer(void){  TCPTimer = 0;  TCPFlags |= TCP_TIMER_RUNNING;  TCPFlags &= ~TIMER_TYPE_RETRY;  }  //-----------------------------------------------------------------------------------// easyWEB internal function// restarts the timervoid TCPRestartTimer(void){  TCPTimer = 0;}  //-----------------------------------------------------------------------------------// easyWEB internal function// stopps the timervoid TCPStopTimer(void){  TCPFlags &= ~TCP_TIMER_RUNNING;}  //-----------------------------------------------------------------------------------// easyWEB internal function// if a retransmission-timeout occured, check which packet// to resend.void TCPHandleRetransmission(void){  switch (LastFrameSent)  {    case ARP_REQUEST :       { PrepareARP_REQUEST(); break; }    case TCP_SYN_FRAME :     { PrepareTCP_FRAME(TCP_CODE_SYN); break; }    case TCP_SYN_ACK_FRAME : { PrepareTCP_FRAME(TCP_CODE_SYN | TCP_CODE_ACK); break; }    case TCP_FIN_FRAME :     { PrepareTCP_FRAME(TCP_CODE_FIN | TCP_CODE_ACK); break; }    case TCP_DATA_FRAME :    { TransmitControl |= SEND_FRAME1; break; }  }}  //-----------------------------------------------------------------------------------// easyWEB internal function// if all retransmissions failed, close connection and indicate an errorvoid TCPHandleTimeout(void){  TCPStateMachine = CLOSED;  if ((TCPFlags & (TCP_ACTIVE_OPEN | IP_ADDR_RESOLVED)) == TCP_ACTIVE_OPEN)    SocketStatus = SOCK_ERR_ARP_TIMEOUT;         // indicate an error to user  else    SocketStatus = SOCK_ERR_TCP_TIMEOUT;  TCPFlags = 0;                                  // clear all flags} //-----------------------------------------------------------------------------------// easyWEB internal function// function executed every 0.210s by the CPU. used for the// inital sequence number generator (ISN) and the TCP-timervoid TCPClockHandler(void) __irq                // Keil: interrupt service routine for timer 0{  ISNGenHigh++;                                  // upper 16 bits of initial sequence number  TCPTimer++;                                    // timer for retransmissions
  T0IR        = 1;                               // Clear interrupt flag
  VICVectAddr = 0;                               // Acknowledge Interrupt
} //-----------------------------------------------------------------------------------// easyWEB internal function// transfers the contents of 'TxFrame1'-Buffer to the EMACvoid SendFrame1(void){  CopyToFrame_EMAC(TxFrame1, TxFrame1Size);}  //-----------------------------------------------------------------------------------// easyWEB internal function// transfers the contents of 'TxFrame2'-Buffer to the EMACvoid SendFrame2(void){  CopyToFrame_EMAC(TxFrame2, TxFrame2Size);}  //-----------------------------------------------------------------------------------// easyWEB internal function// help function to write a WORD in big-endian byte-order// to MCU-memoryvoid WriteWBE(unsigned char *Add, unsigned short Data){  *Add++ = Data >> 8;  *Add = (char)Data;}  //-----------------------------------------------------------------------------------// easyWEB internal function// help function to write a DWORD in big-endian byte-order// to MCU-memoryvoid WriteDWBE(unsigned char *Add, unsigned long Data){  *Add++ = Data >> 24;  *Add++ = Data >> 16;  *Add++ = Data >> 8;  *Add = (char)Data;} //-----------------------------------------------------------------------------------// easyWEB internal function// help function to swap the byte order of a WORDunsigned short SwapBytes(unsigned short Data){  return (Data >> 8) | (Data << 8);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91福利国产精品| 视频一区视频二区中文字幕| 精品影院一区二区久久久| 7777精品伊人久久久大香线蕉完整版 | 欧美日韩国产中文| 亚洲gay无套男同| 91.麻豆视频| 麻豆91小视频| 久久久蜜桃精品| 成人性生交大片免费看视频在线| 国产精品拍天天在线| 91麻豆精品视频| 午夜欧美大尺度福利影院在线看| 欧美日韩精品三区| 久久超碰97中文字幕| 久久精品网站免费观看| 99久久精品国产一区二区三区 | 蜜桃久久av一区| 国产亚洲1区2区3区| 91首页免费视频| 亚洲成人免费影院| 精品电影一区二区| 波多野结衣亚洲一区| 亚洲一区二区三区四区在线观看| 欧美高清激情brazzers| 国产成人精品免费网站| 欧美日韩精品福利| 6080日韩午夜伦伦午夜伦| 国产欧美日韩三区| 日韩1区2区3区| 国产成人精品aa毛片| 色妹子一区二区| 日本一区免费视频| 极品销魂美女一区二区三区| 91视视频在线直接观看在线看网页在线看 | 国产揄拍国内精品对白| gogogo免费视频观看亚洲一| 日韩欧美自拍偷拍| 午夜精品福利久久久| 91啪在线观看| 亚洲伦理在线精品| caoporn国产精品| 久久久亚洲精品石原莉奈| 亚洲国产wwwccc36天堂| 色噜噜狠狠色综合欧洲selulu| 欧美撒尿777hd撒尿| 一区二区三区四区不卡视频| 成人丝袜视频网| 亚洲综合丝袜美腿| 精品理论电影在线观看| 国精产品一区一区三区mba视频| 久久久国产精华| 9191成人精品久久| 日本三级韩国三级欧美三级| 免费成人深夜小野草| 成人在线视频一区| 亚洲色图另类专区| 在线成人免费视频| 日韩视频在线观看一区二区| 日本成人中文字幕在线视频 | 亚洲人妖av一区二区| 日韩免费观看2025年上映的电影| 在线免费观看一区| 欧美国产综合一区二区| 国产ts人妖一区二区| 青青草91视频| 午夜视频一区二区| 亚洲成人资源在线| 亚洲国产精品久久艾草纯爱| 成人免费在线观看入口| 中文字幕中文乱码欧美一区二区 | 粉嫩aⅴ一区二区三区四区| 日韩高清一区二区| 日本女优在线视频一区二区 | 亚洲日本乱码在线观看| 国产精品午夜在线观看| 久久九九影视网| 欧美videos大乳护士334| 日韩一区和二区| 欧美综合色免费| 欧美年轻男男videosbes| 久久精品国产久精国产| 视频一区视频二区中文字幕| 伊人夜夜躁av伊人久久| 国产婷婷色一区二区三区在线| 国产亚洲欧洲997久久综合| 欧美精品丝袜中出| 日韩一级黄色大片| 欧美午夜精品免费| 9191国产精品| 精品视频色一区| 欧美高清视频一二三区| 在线观看区一区二| 色婷婷综合五月| 欧美日韩一二三区| 69久久99精品久久久久婷婷| 日韩欧美国产精品| www日韩大片| 国产精品久久久久影院色老大| 国产视频一区在线观看| 中文字幕在线一区二区三区| 国产精品国产a| 午夜久久电影网| 日韩激情视频网站| 国产高清精品久久久久| 国产成人在线视频免费播放| 国产69精品久久99不卡| 成人黄色电影在线| 欧美日韩国产在线观看| 欧美一区二区三区的| 久久久久九九视频| 国产精品人人做人人爽人人添 | 一区二区三区蜜桃| 日本欧美一区二区三区乱码| 蜜桃久久av一区| 99精品视频在线播放观看| 色婷婷香蕉在线一区二区| 欧美剧情片在线观看| 欧美电影免费观看完整版| 555夜色666亚洲国产免| 精品福利av导航| 一区二区三区不卡视频| 免费不卡在线观看| 91在线观看一区二区| 欧美日韩国产成人在线免费| 欧美国产在线观看| 亚洲成人手机在线| av在线不卡免费看| 欧美精品一二三四| 亚洲免费观看高清在线观看| 天天综合日日夜夜精品| 99精品在线免费| 91精品免费在线观看| 色欧美88888久久久久久影院| 国产一区不卡视频| 欧美怡红院视频| 精品国产百合女同互慰| 亚洲一区二区精品3399| 国产在线不卡一区| 91精品国产一区二区三区香蕉| 国产午夜亚洲精品理论片色戒 | 欧美日本视频在线| 国产日韩欧美一区二区三区综合| 三级一区在线视频先锋| 懂色av一区二区三区免费观看 | 色成年激情久久综合| 欧美日韩中文字幕精品| 综合久久久久久| 日本最新不卡在线| 色偷偷88欧美精品久久久| 国产精品丝袜一区| 国产主播一区二区| 日韩欧美在线1卡| 亚洲免费毛片网站| 日本韩国欧美国产| 国产片一区二区| 国产精品资源在线| 欧美福利一区二区| 亚洲18女电影在线观看| 成人国产视频在线观看| 国产精品情趣视频| 日韩成人一级大片| 91精品国产欧美一区二区18 | 成人免费毛片aaaaa**| 51精品秘密在线观看| 午夜成人在线视频| 欧美性受极品xxxx喷水| 日韩欧美中文字幕精品| 亚洲国产视频一区| 色94色欧美sute亚洲线路二 | 日韩女优视频免费观看| 亚洲免费观看高清完整版在线观看| 99r国产精品| 国产精品水嫩水嫩| 成人不卡免费av| 国产亚洲一区二区三区四区| 国产一区二区h| 在线综合亚洲欧美在线视频| 日韩av在线发布| 欧美性猛片xxxx免费看久爱| 亚洲精品免费在线| 欧美日韩国产高清一区| 一区二区三区产品免费精品久久75| 欧美无乱码久久久免费午夜一区| 亚洲乱码日产精品bd| 欧美主播一区二区三区美女| 亚洲黄色录像片| 欧美精品在欧美一区二区少妇| 国产精品久久久久久久久图文区| 色婷婷香蕉在线一区二区| 五月婷婷综合激情| 91精品国产高清一区二区三区| 久久精品国产亚洲aⅴ| 精品人在线二区三区| 成人小视频在线| 国产精品入口麻豆九色| 欧美日韩激情一区二区| 亚洲成人精品一区| 精品福利一区二区三区免费视频| 成人免费看黄yyy456|