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

📄 fshell.c

📁 Embeded MCU Tcpip code.
💻 C
📖 第 1 页 / 共 2 页
字号:

      /* mark data to be send as soon */
      FShellConnects.datainqueue = 1;

      FShellConnects.shell_prompt_ready = 1;

      for (i=0; i<RX_BUFFER_SIZE; i++)
        FShellConnects.rx_buffer[i] = 0;
      FShellConnects.buffer_ptr = 0;

      FShellConnects.shell_prompt_ready = 1;
      return;
    }

    /* String "info" */
    if(!strncmp(info, 
                (const char *)FShellConnects.rx_buffer, 
                strcspn((const char *)FShellConnects.rx_buffer, "\r")) &&
        FShellConnects.buffer_ptr >= 4)
    {
      telnetd_sendstring(disclaimer);
      for (i=0; i<RX_BUFFER_SIZE; i++)
        FShellConnects.rx_buffer[i] = 0;
      FShellConnects.buffer_ptr = 0;
      FShellConnects.shell_prompt_ready = 1;
      return;
    }

    /* String "help" */
    if(!strncmp(help, 
                (const char *)FShellConnects.rx_buffer, 
                strcspn((const char *)FShellConnects.rx_buffer, "\r")) &&
        FShellConnects.buffer_ptr >= 4)
    {
      telnetd_sendstring(helptext);
      for (i=0; i<RX_BUFFER_SIZE; i++)
        FShellConnects.rx_buffer[i] = 0;
      FShellConnects.buffer_ptr = 0;
      FShellConnects.shell_prompt_ready = 1;
      return;
    }
  
    /* String "ethstats" */
    if(!strncmp(ethstats, 
                (const char *)FShellConnects.rx_buffer, 
                strcspn((const char *)FShellConnects.rx_buffer, "\r")) &&
        FShellConnects.buffer_ptr >= 4)
    {
      /* Check if pointer is actually in use */
      if(FShellConnects.tmem == NULL)
      {
        /* if not in use, get new mem from malloc() */
        FShellConnects.tmem = (char*) malloc(sizeof(char)*290);
      
        if(FShellConnects.tmem == NULL)
        {
          printf("NO MEM!\n");
          for (i=0; i<RX_BUFFER_SIZE; i++)
            FShellConnects.rx_buffer[i] = 0;
          FShellConnects.buffer_ptr = 0;
          FShellConnects.shell_prompt_ready = 1;
          return;
        }
      
        sprintf(FShellConnects.tmem,"Ethernet Stats\r\n--------------\r\n  Ethernet Packets received: %li\r\n  Ethernet Packets sent: %li\r\n  IP Packets received: %li\r\n  IP Packets sent: %li\r\n  TCP Packets received: %li\r\n  TCP Packets sent: %li\r\n  IP Checksum Errors: %li\r\n  ICMP Checksum Errors: %li\r\n  TCP Checksum Errors: %li\r\n", ShowRecETH(), ShowTransETH(), ShowRecIP(), ShowTransIP(), ShowRecTCP(), ShowTransTCP(), ShowIpCSE(), ShowIcmpCSE(), ShowTcpCSE());
      
        /* mark data to be send as soon */
        FShellConnects.datainqueue = 1;

        for (i=0; i<RX_BUFFER_SIZE; i++)
          FShellConnects.rx_buffer[i] = 0;
        FShellConnects.buffer_ptr = 0;
        FShellConnects.shell_prompt_ready = 1;
        return;
      }
      else
      {
        printf("Operation not finished yet!\n");
        for (i=0; i<RX_BUFFER_SIZE; i++)
          FShellConnects.rx_buffer[i] = 0;
        FShellConnects.buffer_ptr = 0;
        FShellConnects.shell_prompt_ready = 1;
        return;
      }
    }
  
    /* String "httpses" */
    if(!strncmp(httpses, 
                (const char *)FShellConnects.rx_buffer, 
                strcspn((const char *)FShellConnects.rx_buffer, "\r")) &&
        FShellConnects.buffer_ptr >= 4)
    {
      /* Check if pointer is actually in use */
      if(FShellConnects.tmem == NULL)
      { 
        UINT8 httpsescount;
        UINT16 txtlen = 0;
      
        /* if not in use, get new mem from malloc() */
        FShellConnects.tmem = (char*) malloc(sizeof(char)*350);
    
        if(FShellConnects.tmem == NULL)
        {
          printf("NO MEM!\n");
          for (i=0; i<RX_BUFFER_SIZE; i++)
            FShellConnects.rx_buffer[i] = 0;
          FShellConnects.buffer_ptr = 0;
          FShellConnects.shell_prompt_ready = 1;
          return;
        }
    
        /* Counter to store session data in string array */
        for(httpsescount = 0; httpsescount<NO_OF_HTTP_SESSIONS; httpsescount++)
        {
          char statedef[20];

          if(https[httpsescount].state == 1)
          {
            strcpy(statedef, "STATE_FREE");
          }
          if(https[httpsescount].state == 2)
          {
            strcpy(statedef, "STATE_RESERVED");
          }
          if(https[httpsescount].state == 3)
          {
            strcpy(statedef, "STATE_ACTIVE");
          }
      
          txtlen += sprintf(FShellConnects.tmem+txtlen, "  Session Nr.: %i  Session State: %s\r\n", httpsescount, statedef);
        }
  
        /* mark data to be send as soon */
        FShellConnects.datainqueue = 1;
  
        for (i=0; i<RX_BUFFER_SIZE; i++)
          FShellConnects.rx_buffer[i] = 0;
        FShellConnects.buffer_ptr = 0;
        FShellConnects.shell_prompt_ready = 1;
        return;
      }
    }
  
    /* String "exit" */
    if(!strncmp(closeconn, 
                (const char *)FShellConnects.rx_buffer, 
                strcspn((const char *)FShellConnects.rx_buffer, "\r")) &&
        FShellConnects.buffer_ptr >= 4)
    {
      printf("you typed exit...\n");
      shellcmd_exit();
      for (i=0; i<RX_BUFFER_SIZE; i++)
        FShellConnects.rx_buffer[i] = 0;
      FShellConnects.buffer_ptr = 0;
      FShellConnects.shell_prompt_ready = 1;
      return;
    }

    /* String "ipclient" */
    if(!strncmp(ipclient, 
                (const char *)FShellConnects.rx_buffer, 
                strcspn((const char *)FShellConnects.rx_buffer, "\r")) &&
        FShellConnects.buffer_ptr >= 5)
    {
      /* Check if pointer is actually in use */
      if(FShellConnects.tmem == NULL)
      {
        /* if not in use, get new mem from malloc() */
        FShellConnects.tmem = (char*) malloc(sizeof(char)*60);
      
        if(FShellConnects.tmem == NULL)
        {
          printf("NO MEM!\n");
          for (i=0; i<RX_BUFFER_SIZE; i++)
            FShellConnects.rx_buffer[i] = 0;
          FShellConnects.buffer_ptr = 0;
          FShellConnects.shell_prompt_ready = 1;
          return;
        }
      
        sprintf(FShellConnects.tmem,"The Client IP is: %li.%li.%li.%li\r\n",(FShellConnects.ipaddr>>24), ((FShellConnects.ipaddr>>16)&0xff), ((FShellConnects.ipaddr>>8)&0xff), ((FShellConnects.ipaddr>>0)&0xff));
      
        /* mark data to be send as soon */
        FShellConnects.datainqueue = 1;
      
        for (i=0; i<RX_BUFFER_SIZE; i++)
          FShellConnects.rx_buffer[i] = 0;
        FShellConnects.buffer_ptr = 0;
        FShellConnects.shell_prompt_ready = 1;
        return;
      }
      else
      {
        printf("Operation not finished yet!\n");
        for (i=0; i<RX_BUFFER_SIZE; i++)
          FShellConnects.rx_buffer[i] = 0;
        FShellConnects.buffer_ptr = 0;
        FShellConnects.shell_prompt_ready = 1;
        return;
      }
    }
  
    /* String "ipserver" */
    if(!strncmp(ipserver, 
                (const char *)FShellConnects.rx_buffer, 
                strcspn((const char *)FShellConnects.rx_buffer, "\r")) &&
        FShellConnects.buffer_ptr >= 5)
    {
      /* Check if pointer is actually in use */
      if(FShellConnects.tmem == NULL)
      { 
        /* if not in use, get new mem from malloc() */
        FShellConnects.tmem = (char*) malloc(sizeof(char)*60);

        if(FShellConnects.tmem == NULL)
        {
          printf("NO MEM!\n");
          for (i=0; i<RX_BUFFER_SIZE; i++)
            FShellConnects.rx_buffer[i] = 0;
          FShellConnects.buffer_ptr = 0;
          FShellConnects.shell_prompt_ready = 1;
          return;
        }

        sprintf(FShellConnects.tmem,"The Server IP is: %li.%li.%li.%li\r\n",(localmachine.localip>>24), ((localmachine.localip>>16)&0xff), ((localmachine.localip>>8)&0xff), ((localmachine.localip>>0)&0xff));
      
        /* mark data to be send as soon */
        FShellConnects.datainqueue = 1;
     
        for (i=0; i<RX_BUFFER_SIZE; i++)
          FShellConnects.rx_buffer[i] = 0;
        FShellConnects.buffer_ptr = 0;
        FShellConnects.shell_prompt_ready = 1;
        return;
      }
      else
      {
        printf("Operation not finished yet!\n");
        for (i=0; i<RX_BUFFER_SIZE; i++)
          FShellConnects.rx_buffer[i] = 0;
        FShellConnects.buffer_ptr = 0;
        FShellConnects.shell_prompt_ready = 1;
        return;
      }
    }
    else
    {
      telnetd_sendstring("Command not recognized!\r\n");
      for (i=0; i<RX_BUFFER_SIZE; i++)
        FShellConnects.rx_buffer[i] = 0;
      FShellConnects.buffer_ptr = 0;

      FShellConnects.shell_prompt_ready = 1;
      return;
    }
  }
  
}

/*-----------------------------------------------------------------------------
 void fshellclose(UINT32 ipaddr, UINT32 tport)
 When the client would like to disconnect the close function is called from
 the telnet server.
 Return value: none
-----------------------------------------------------------------------------*/
void fshellclose(UINT32 ipaddr, UINT32 tport)
{
  ipaddr = 0;
  tport = 0;
  
  FShellConnects.ipaddr = 0;
  FShellConnects.port = 0;
  FShellConnects.connected = 0;
  FShellConnects.helloprompt = 0;
  FShellConnects.shell_prompt_ready = 0;
  
}

⌨️ 快捷键说明

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