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

📄 drv_tftp.h

📁 tftp在vxWorks上的实现
💻 H
字号:

#ifndef __LOAD_TFTP_H__
#define __LOAD_TFTP_H__

/* 创建文件类型 */
#define FILE_O_RDONLY                   0
#define FILE_O_WRONLY                   1
#define FILE_O_RDWR                     2
#define FILE_O_CREATE                   200

/* tftp操作类型 */
#define TFTP_PUT                        "put"
#define TFTP_GET                        "get"

/* 文件类型 */
#define FILE_ASCII                      "ascii"
#define FILE_NETASCII                   "netascii"
#define FILE_BINARY                     "binary"
#define FILE_IMAGE                      "image"
#define FILE_OCTET                      "octet"

#define LOAD_TFTP_GLOBALALLOC_FAILED    1   /* out of memory*/
#define LOAD_TFTP_ILLEGAL_REQUEST       2   /* unable to build request packet*/
#define LOAD_TFTP_SOCKET_FAILURE        3   /* unable to open socket*/
#define LOAD_TFTP_BIND_FAILURE          4   /* unable to bind socket*/
#define LOAD_TFTP_ILLEGAL_FILE_MODE     5   /* illegal file mode*/
#define LOAD_TFTP_FILE_ERROR            6   /* part of file was transferred*/
#define LOAD_TFTP_SENDTO_ERROR          7   /* unable to send data to server*/
#define LOAD_TFTP_FAILURE               11  /* unable to setup socket*/
#define LOAD_TFTP_READ_ERROR            12  /* unable to read file*/
#define LOAD_TFTP_CANNOT_RESOLVE_HN     13  /* cannot resolve host name*/
#define LOAD_TFTP_CANNOT_OPEN_FILE      14  /* cannot open local file */
#define LOAD_TFTP_INVALID_PARAVALUE     15  /* invalid parameter value */
#define LOAD_TFTP_PROTO_ERROR           16  /* receive incorrect packet*/
#define LOAD_TFTP_SYNC_FAILURE          17  /* synchronization failure*/
#define LOAD_TFTP_CFGFLE_W_ERROR        18  /* write config file failure*/
#define LOAD_TFTP_CFGFLE_R_ERROR        19  /* read config file failure*/
#define LOAD_TFTP_CFFL_SIMUL_W          20  /* write config file at the same time*/
#define LOAD_TFTP_MALLOC_ERROR          21  /* mem malloc error*/
#define LOAD_TFTP_FILE_TOO_BIG          22  /* file is too big*/


#define LOAD_TFTP_TRANSFER_MODE_ASCII   61  /* convert CR and LF to LF and vice versa*/
#define LOAD_TFTP_TRANSFER_MODE_BINARY  62  /* transfer files without conversion*/


/* TFTP包类型 */
#define LOAD_TFTP_RRQ                   01      /* 读请求包 */
#define LOAD_TFTP_WRQ                   02      /* 写请求包 */
#define LOAD_TFTP_DATA                  03      /* 数据包 */
#define LOAD_TFTP_ACK                   04      /* 确认包 */
#define LOAD_TFTP_ERROR                 05      /* 错误包 */
#define LOAD_TFTP_OPT                   06      /* 选项包 */

#define LOAD_TFTP_BLKSIZE               512     /* 数据块大小 */
#define LOAD_TFTP_HDRSIZE               4       /* TFTP header size */
#define LOAD_TFTP_PKTSIZE               (LOAD_TFTP_BLKSIZE + LOAD_TFTP_HDRSIZE)
#define LOAD_TFTP_MAX_NAME_SIZE         47      /* 文件名字符串最大长度 */
#define LOAD_TFTP_MAX_ERRSTR_SIZE       100     /* 错误消息串的最大长度*/
#define LOAD_TFTP_MAXQUEUEDEPTH         512     /* max queue depth*/
#define LOAD_TFTP_SERVER_PORT           69
#define LOAD_TFTP_MAX_BLK_NUM           10000   /* max block number*/

#define LOAD_TFTP_TIMEOUT_TIME          5
#define LOAD_TFTP_ATTEMPTS              5

/*TFTP数据包的结构 */ 
typedef struct tagLOAD_TFTP_DATA
{
    _U16 blknum;                      /* 包的序号 */ 
    char buf[LOAD_TFTP_BLKSIZE];    /* 数据 */
}LOAD_TFTP_DATA_S;

/*TFTP错误包的结构*/
typedef struct tagTFTP_ERROR
{
    _U16 errnum;    /* 错误码 */
    char errmess[LOAD_TFTP_MAX_ERRSTR_SIZE];     /* 错误消息 */
}LOAD_TFTP_ERROR_S;

/* 接收缓冲区结构 */
typedef struct tagTFTP_RCV_BUF
{
    char *blkPtr;        /* 接收缓冲区指针 */
    long len;            /* 接收数据的长度 */
}LOAD_TFTP_RCV_BUF_S;

/* TFTP各种类型包的联合结构 */
typedef struct tagTFTP_PACKET
{
    _U16 usOpcode;        /* 操作码 */
    union
    {
        char szName_Mode[2*LOAD_TFTP_MAX_NAME_SIZE];    /* 文件名 */
        _U16   usBlkNum;                                  /* 确认包序号 */
        LOAD_TFTP_DATA_S    stData;                     /* 数据包内容 */
        LOAD_TFTP_ERROR_S   stErr;                      /* 错误包内容 */
    }uMsg;
}LOAD_TFTP_PACKET_S;

_U32 LOAD_TftpGet(_U8 *szRmtHost, _U8 *szRmtFile, _U8 *szRamAddr, long lTransMode);
_U32 LOAD_TftpPut(_U8* szRamAddr, long lFileLen, _U8 *szRmtHost, _U8 *szRmtFile,long lTransMode);

#endif

⌨️ 快捷键说明

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