⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcpip.i

📁 msp430 cs8900a msp430 servermsp430 servermsp430 servermsp430 servermsp430 server
💻 I
📖 第 1 页 / 共 4 页
字号:
        break;
      }

      if (!(TCPCode & (0x0010))) break;      

      if (TCPSegAck == TCPUNASeqNr)              
      {
        TCPStopTimer();                          
        TCPSeqNr = TCPUNASeqNr;                  

        switch (TCPStateMachine)                 
        {
          case SYN_RECD :                        
            TCPStateMachine = ESTABLISHED;       
            SocketStatus |= (0x02);
            break;
          case ESTABLISHED :
            SocketStatus |= (0x08);  
            break;
          case FIN_WAIT_1 :                      
            TCPStateMachine = FIN_WAIT_2;

            




 

            TCPStartFinTimer();                  
            break;
          case CLOSING :                         
            TCPStateMachine = TIME_WAIT;
            TCPStartFinTimer();                  
            break;
          case LAST_ACK :                        
            TCPStateMachine = CLOSED;
            TCPFlags = 0;                        
            SocketStatus &= (0x04); 
            break;
          case TIME_WAIT :
            
            PrepareTCP_FRAME(TCPSegAck, TCPAckNr, (0x0010));  
            TCPRestartTimer();                   
            break;
        }
      }

      if ((TCPStateMachine == ESTABLISHED) ||
          (TCPStateMachine == FIN_WAIT_1) ||
          (TCPStateMachine == FIN_WAIT_2))
        if (NrOfDataBytes)                                 
          if (!(SocketStatus & (0x04)))       
          {
            DummyReadFrame8900(6);                         
            CopyFromFrame8900(RxTCPBufferMem, NrOfDataBytes);  
            TCPRxDataCount = NrOfDataBytes;                
            SocketStatus |= (0x04);           
            TCPAckNr += NrOfDataBytes;
            PrepareTCP_FRAME(TCPSegAck, TCPAckNr, (0x0010));  
          }
          else
            break;                               
                                                 
                                                 
              
      if (TCPCode & (0x0001))                
      {
        switch (TCPStateMachine)
        {
          case SYN_RECD :
          case ESTABLISHED :
            TCPStateMachine = CLOSE_WAIT;
            break;
          case FIN_WAIT_1 :                      
            TCPStateMachine = CLOSING;           
            SocketStatus &= ~(0x02);     
            break;
          case FIN_WAIT_2 :
            TCPStateMachine = TIME_WAIT;
            SocketStatus &= ~(0x02);            
            TCPStartFinTimer();                  
            break;
          case TIME_WAIT :
            TCPRestartTimer();                   
            break;
        }
        TCPAckNr++;                              
        
        PrepareTCP_FRAME(TCPSegAck, TCPAckNr, (0x0010));
      }
  }
}




static void PrepareARP_REQUEST(void)
{
  
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (0))) = 0xffff;  
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (0 + 2))) = 0xffff;
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (0 + 4))) = 0xffff;
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (6))) = MyMAC[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (6 + 2))) = MyMAC[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (6 + 4))) = MyMAC[2];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (12))) = ((unsigned int)(((0x0806)) << 8) | (((0x0806)) >> 8));

  
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 0)))) = ((unsigned int)((1) << 8) | ((1) >> 8));
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 2)))) = ((unsigned int)(((0x0800)) << 8) | (((0x0800)) >> 8)); 
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 4)))) = ((unsigned int)(((0x0604)) << 8) | (((0x0604)) >> 8));
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 6)))) = ((unsigned int)((1) << 8) | ((1) >> 8));
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 8)))) = MyMAC[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 8) + 2))) = MyMAC[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 8) + 4))) = MyMAC[2];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 14)))) = MyIP[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 14) + 2))) = MyIP[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 18)))) = 0;
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 18) + 2))) = 0;
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 18) + 4))) = 0;
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 24)))) = 0;
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 24) + 2))) = 0;

  if (((RemoteIP[0] ^ MyIP[0]) & SubnetMask[0]) ||
      ((RemoteIP[1] ^ MyIP[1]) & SubnetMask[1]))
  {
    (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 24)))) = GatewayIP[0];
    (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 24) + 2))) = GatewayIP[1];
  }
  else
  {
    (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 24)))) = RemoteIP[0];
    (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 24) + 2))) = RemoteIP[1];
  }

  TxFrame2Size = 14 + 28;
  TransmitControl |= (0x02);
}




static void PrepareARP_ANSWER(void)
{
  
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (0))) = RecdFrameMAC[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (0 + 2))) = RecdFrameMAC[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (0 + 4))) = RecdFrameMAC[2];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (6))) = MyMAC[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (6 + 2))) = MyMAC[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (6 + 4))) = MyMAC[2];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (12))) = ((unsigned int)(((0x0806)) << 8) | (((0x0806)) >> 8));

  
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 0)))) = ((unsigned int)((1) << 8) | ((1) >> 8));
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 2)))) = ((unsigned int)(((0x0800)) << 8) | (((0x0800)) >> 8)); 
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 4)))) = ((unsigned int)(((0x0604)) << 8) | (((0x0604)) >> 8));
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 6)))) = ((unsigned int)((2) << 8) | ((2) >> 8));
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 8)))) = MyMAC[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 8) + 2))) = MyMAC[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 8) + 4))) = MyMAC[2];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 14)))) = MyIP[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 14) + 2))) = MyIP[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 18)))) = RecdFrameMAC[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 18) + 2))) = RecdFrameMAC[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 18) + 4))) = RecdFrameMAC[2];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 24)))) = RecdFrameIP[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 24) + 2))) = RecdFrameIP[1];

  TxFrame2Size = 14 + 28;
  TransmitControl |= (0x02);
}




static void PrepareICMP_ECHO_REPLY(void)
{
  unsigned int ICMPDataCount;

  if (RecdIPFrameLength > 60)  
    ICMPDataCount = 60 - 20 - 4;
  else
    ICMPDataCount = RecdIPFrameLength - 20 - 4;

  
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (0))) = RecdFrameMAC[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (0 + 2))) = RecdFrameMAC[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (0 + 4))) = RecdFrameMAC[2];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (6))) = MyMAC[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (6 + 2))) = MyMAC[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (6 + 4))) = MyMAC[2];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (12))) = ((unsigned int)(((0x0800)) << 8) | (((0x0800)) >> 8));
  
  
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 0)))) = ((unsigned int)(((0x4500)) << 8) | (((0x4500)) >> 8));
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 2)))) =
    __swap_bytes(20 + 4 + ICMPDataCount);
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 4)))) = 0;
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 6)))) = 0;
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 8)))) = ((unsigned int)(((64 << 8) | 1) << 8) | (((64 << 8) | 1) >> 8));
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 10)))) = 0;
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 12)))) = MyIP[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 12) + 2))) = MyIP[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 16)))) = RecdFrameIP[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 16) + 2))) = RecdFrameIP[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 10)))) = 
    CalcChecksum((unsigned char *)TxFrame2Mem + (14 + 0), 20, 0);

  
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (((14 + 20) + 0)))) = ((unsigned int)((0 << 8) << 8) | ((0 << 8) >> 8));
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (((14 + 20) + 2)))) = 0;                
  CopyFromFrame8900((unsigned char *)TxFrame2Mem + ((14 + 20) + 4), ICMPDataCount);  
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (((14 + 20) + 2)))) = 
    CalcChecksum((unsigned char *)TxFrame2Mem + (14 + 20), ICMPDataCount +
      4, 0);

  TxFrame2Size = 14 + 20 + 4 + ICMPDataCount;
  TransmitControl |= (0x02);
}





static void PrepareTCP_FRAME(unsigned long seqnr, unsigned long acknr,
  unsigned int TCPCode)
{
  
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (0))) = RemoteMAC[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (0 + 2))) = RemoteMAC[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (0 + 4))) = RemoteMAC[2];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (6))) = MyMAC[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (6 + 2))) = MyMAC[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (6 + 4))) = MyMAC[2];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (12))) = ((unsigned int)(((0x0800)) << 8) | (((0x0800)) >> 8));
  
  
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 0)))) = ((unsigned int)(((0x4500)) << 8) | (((0x4500)) >> 8));

  if (TCPCode & (0x0002))                    
    (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 2)))) =
      ((unsigned int)((20 + 20 + 4) << 8) | ((20 + 20 + 4) >> 8));
  else
    (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 2)))) =
      ((unsigned int)((20 + 20) << 8) | ((20 + 20) >> 8));

  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 4)))) = 0;
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 6)))) = 0;
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 8)))) = ((unsigned int)(((64 << 8) | 6) << 8) | (((64 << 8) | 6) >> 8));
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 10)))) = 0;
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 12)))) = MyIP[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 12) + 2))) = MyIP[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 16)))) = RemoteIP[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 16) + 2))) = RemoteIP[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + ((14 + 10)))) = 
    CalcChecksum((unsigned char *)TxFrame2Mem + (14 + 0),
      20, 0);
  
  
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (((14 + 20) + 0)))) = __swap_bytes(TCPLocalPort);
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (((14 + 20) + 2)))) = __swap_bytes(TCPRemotePort);

  WriteDWBE((unsigned char *)TxFrame2Mem + ((14 + 20) + 4), seqnr);
  WriteDWBE((unsigned char *)TxFrame2Mem + ((14 + 20) + 8), acknr);

  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (((14 + 20) + 14)))) = ((unsigned int)((536) << 8) | ((536) >> 8));    
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (((14 + 20) + 16)))) = 0;  
  (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (((14 + 20) + 18)))) = 0;

  if (TCPCode & (0x0002))                    
  {
    (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (((14 + 20) + 12)))) = ((unsigned int)((0x6000 | TCPCode) << 8) | ((0x6000 | TCPCode) >> 8));   
    (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (((14 + 20) + 20)))) = ((unsigned int)(((0x0204)) << 8) | (((0x0204)) >> 8));             
    (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (((14 + 20) + 20) + 2))) = ((unsigned int)((536) << 8) | ((536) >> 8));
    (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (((14 + 20) + 16)))) =
      CalcChecksum((unsigned char *)TxFrame2Mem + ((14 + 20) + 0),
        20 + 4, 1);
    TxFrame2Size = 14 + 20 + 20 +
      4;
  }
  else
  {
    (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (((14 + 20) + 12)))) = ((unsigned int)((0x5000 | TCPCode) << 8) | ((0x5000 | TCPCode) >> 8));   
    (*(unsigned int *)((unsigned char *)&(TxFrame2Mem) + (((14 + 20) + 16)))) =
      CalcChecksum((unsigned char *)TxFrame2Mem + ((14 + 20) + 0),
        20, 1);
    TxFrame2Size = 14 + 20 + 20;
  }

  TransmitControl |= (0x02);
}




static void PrepareTCP_DATA_FRAME(void)
{
  
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + (0))) = RemoteMAC[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + (0 + 2))) = RemoteMAC[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + (0 + 4))) = RemoteMAC[2];
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + (6))) = MyMAC[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + (6 + 2))) = MyMAC[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + (6 + 4))) = MyMAC[2];
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + (12))) = ((unsigned int)(((0x0800)) << 8) | (((0x0800)) >> 8));
  
  
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + ((14 + 0)))) = ((unsigned int)(((0x4500)) << 8) | (((0x4500)) >> 8));
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + ((14 + 2)))) =
    __swap_bytes(20 + 20 + TCPTxDataCount);
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + ((14 + 4)))) = 0;
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + ((14 + 6)))) = 0;
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + ((14 + 8)))) = ((unsigned int)(((64 << 8) | 6) << 8) | (((64 << 8) | 6) >> 8));
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + ((14 + 10)))) = 0;
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + ((14 + 12)))) = MyIP[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + ((14 + 12) + 2))) = MyIP[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + ((14 + 16)))) = RemoteIP[0];
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + ((14 + 16) + 2))) = RemoteIP[1];
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + ((14 + 10)))) = 
    CalcChecksum((unsigned char *)TxFrame1Mem + (14 + 0),
      20, 0);

  
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + (((14 + 20) + 0)))) = __swap_bytes(TCPLocalPort);
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + (((14 + 20) + 2)))) = __swap_bytes(TCPRemotePort);

  WriteDWBE((unsigned char *)TxFrame1Mem + ((14 + 20) + 4), TCPSeqNr);
  WriteDWBE((unsigned char *)TxFrame1Mem + ((14 + 20) + 8), TCPAckNr);
  
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + (((14 + 20) + 12)))) = ((unsigned int)((0x5000 | (0x0010)) << 8) | ((0x5000 | (0x0010)) >> 8));  
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + (((14 + 20) + 14)))) = ((unsigned int)((536) << 8) | ((536) >> 8));  
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + (((14 + 20) + 16)))) = 0;  
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + (((14 + 20) + 18)))) = 0;
  (*(unsigned int *)((unsigned char *)&(TxFrame1Mem) + (((14 + 20) + 16)))) =
    CalcChecksum((unsigned char *)TxFrame1Mem + ((14 + 20) + 0),
      20 + TCPTxDataCount, 1);
}





static unsigned int CalcChecksum(void *Start, unsigned int Count,
  unsigned char IsTCP)
{
  unsigned long Sum = 0;
  unsigned int *pStart = Start;

  if (IsTCP)
  {                                              
    Sum += MyIP[0];                              
    Sum += MyIP[1];
    Sum += RemoteIP[0];
    Sum += RemoteIP[1];
    Sum += __swap_bytes(Count);                  
    Sum += ((unsigned int)((6) << 8) | ((6) >> 8));
  }

  while (Count > 1)                              
  {                            
    Sum += *pStart++;
    Count -= 2;
  }

  if (Count)                                     
    Sum += *(unsigned char *)pStart;
  
  while (Sum >> 16)                              
    Sum = (Sum & 0xFFFF) + (Sum >> 16);
  
  return ~Sum;
}




static void TCPStartRetryTimer(void)
{
  TCPTimer = 0;
  RetryCounter = 4;
  TCPFlags |= (0x04);
  TCPFlags |= (0x08);
}




static void TCPStartFinTimer(void)
{
  TCPTimer = 0;
  TCPFlags |= (0x04);
  TCPFlags &= ~(0x08);  
}




static void TCPRestartTimer(void)
{
  TCPTimer = 0;
}




static void TCPStopTimer(void)
{
  TCPFlags &= ~(0x04);
}





static void TCPHandleRetransmission(void)
{
  switch (LastFrameSent)
  {
    case ARP_REQUEST :
      PrepareARP_REQUEST();
      break;
    case TCP_SYN_FRAME :
      PrepareTCP_FRAME(TCPSeqNr, TCPAckNr, (0x0002));
      break;
    case TCP_SYN_ACK_FRAME :
      PrepareTCP_FRAME(TCPSeqNr, TCPAckNr, (0x0002) | (0x0010));
      break; 
    case TCP_FIN_FRAME :
      PrepareTCP_FRAME(TCPSeqNr, TCPAckNr, (0x0001) | (0x0010));
      break; 
    case TCP_DATA_FRAME :
      TransmitControl |= (0x01);
      break;
  }
}




static void TCPHandleTimeout(void)
{
  TCPStateMachine = CLOSED;

  if ((TCPFlags & ((0x01) | (0x02))) == (0x01))
    SocketStatus = (0x10);         
  else
    SocketStatus = (0x20);

  TCPFlags = 0;                                  
}





#pragma vector = (5 * 2u)
__interrupt void TCPClockHandler(void)
{
  if (TAIV == 10)                                
  {
    ISNGenHigh++;                                
    TCPTimer++;                                  
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -