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

📄 cli_telnet.inc

📁 命令行在嵌入式系统的实现
💻 INC
字号:
/************************************************************************
Copyright 200X - 200X+1.

filename     : CLI_User.inc

description  : 定义telnet模块中所用到的宏定义、数据结构、状态机等、
               对Cli_telnet.c的函数进行声明

author       : Woodhead

modification : Woodhead    create              2004-12-07
************************************************************************/

#ifndef _CLI_TELNET_INC
#define _CLI_TELNET_INC

#define TCSB        (_U8)250  /* 开始选项子协商           */
#define TCSE        (_U8)240  /* 子协商结束               */
#define TCNOP       (_U8)241  /* 空操作                   */
#define TCDM        (_U8)242  /* 数据标记                 */
#define TCBRK       (_U8)243  /* 网络虚拟终端字符BRK      */
#define TCIP        (_U8)244  /* 中断处理                 */
#define TCAO        (_U8)245  /* 忽略输出                 */
#define TCAYT       (_U8)246  /* "Are You There?" Function*/
#define TCEC        (_U8)247  /* 擦除字符                 */
#define TCEL        (_U8)248  /* 擦除行                   */
#define TCGA        (_U8)249  /* "Go Ahead" Function      */
#define TCWILL      (_U8)251  /* 要求或者确认Will Do Option*/
#define TCWONT      (_U8)252  /* 拒绝Do Option            */
#define TCDO        (_U8)253  /* 要求Do Option            */
#define TCDONT      (_U8)254  /* 要求NOT To Do Option     */
#define TCIAC       (_U8)255  /* Interpret As Command Escape*/

/*------------------------------------------------------------------*/
/* telnet 选项代码                                                  */
/*------------------------------------------------------------------*/
#define TOTXBINARY  (_U8)  0  /* 二进制传送选项           */
#define TOECHO      (_U8)  1  /* ECHO 选项                */
#define TONOGA      (_U8)  3  /* 禁止 Go-Ahead 选项       */
#define TOTERMTYPE  (_U8) 24  /* 中断类型选项             */

/*------------------------------------------------------------------*/
/* 选项子协商                                                       */
/*------------------------------------------------------------------*/
#define TT_IS       0           /* TERMINAL_TYPE option "IS" command*/
#define TT_SEND     1           /* TERMINAL_TYPE option "SEND" command*/

/*------------------------------------------------------------------*/
/* Telnet Socket-Input FSM States:                                  */
/*------------------------------------------------------------------*/
#define TSDATA       0          /* normal data processing           */
#define TSIAC        1          /* have seen IAC                    */
#define TSWOPT       2          /* have seen IAC-{WILL/WONT}        */
#define TSDOPT       3          /* have seen IAC-{DO/DONT}          */
#define TSSUBNEG     4          /* have seen IAC-SB                 */
#define TSSUBIAC     5          /* have seen IAC-SB-...-IAC         */
#define NTSTATES     6          /* # of TS* states                  */

/*------------------------------------------------------------------*/
/* Telnet Option Subnegotiation FSM States:                        */
/*------------------------------------------------------------------*/
#define SS_START    0           /* initial state                    */
#define SS_TERMTYPE 1           /* TERMINAL_TYPE option subnegotiation*/
#define SS_IS       2
#define SS_END      3           /* state after all legal input      */
#define NSSTATES    4           /* # of SS_* states                 */

#define FSINVALID   0xff        /* an invalid state number          */

#define NCHRS       256         /* number of valid characters       */
#define TCANY       (NCHRS+1)   /* match any character              */
/* 状态转换表数据结构           */
struct Fsm_Trans_S
{
    _U8 Ft_State ;    /* 当前状态                 */
    short Ft_Char ;     /* 输入字符                 */
    _U8 Ft_Next ;     /* 转换到的下一状态         */
                        /* 该状态下对应的处理函数   */
    _U32 ( * Ft_Action ) ( PTerm_Data_S, _U8 ) ;
} ;

#define TINVALID    0xff        /* an invalid transition index      */

extern struct Fsm_Trans_S TTStab[ ], SubStab[ ];
extern _U8 TTFsm[ ][ NCHRS ], SubFsm[ ][ NCHRS ] ;

/* Function in the module - tfsm.c     */
_U32         CLI_SubTermType( PTerm_Data_S, _U8 ) ;
_VOID        CLI_NegotiateOption( PTerm_Data_S ) ;
_VOID        CLI_FsmBuild  ( _VOID ) ;
_VOID        CLI_FsmInit ( _U8 [ ][ 256 ] , struct Fsm_Trans_S [ ], _U8 ) ;
_U32         CLI_tcdm ( PTerm_Data_S, _U8 ) ;
_U32         CLI_RecOpt ( PTerm_Data_S, _U8 ) ;
_U32         CLI_Noop ( PTerm_Data_S, _U8 ) ;
_U32         CLI_SubOpt ( PTerm_Data_S, _U8 ) ;
_U32         CLI_SubEnd ( PTerm_Data_S, _U8 ) ;
_U32         CLI_Abort  ( PTerm_Data_S, _U8 ) ;
_U32         CLI_DoNotSup ( PTerm_Data_S, _U8 ) ;
_U32         CLI_WillNotSup ( PTerm_Data_S, _U8 ) ;
_U32         CLI_WillEcho ( PTerm_Data_S, _U8 ) ;
_U32         CLI_WillNoga ( PTerm_Data_S, _U8 ) ;
_U32         CLI_DoTxBinary ( PTerm_Data_S, _U8 ) ;
_U32         CLI_WillTxBinary ( PTerm_Data_S, _U8 ) ;
_U32         CLI_DoTermType ( PTerm_Data_S, _U8 ) ;
_VOID        CLI_TelFSMDegOut (_S8 *szInfoEn, _S8 *szInfoCh);

#endif /*end of #ifndef _CLI_TELNET_INC*/

⌨️ 快捷键说明

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