更新日期: 2022/06/01 来源: https://gitee.com/weharmony/kernel_liteos_a_note
main.c 文件参考

浏览源代码.

函数

u32_t osShellTftp (int argc, const char **argv)
 
 SHELLCMD_ENTRY (tftp_shellcmd, CMD_TYPE_EX, "tftp", XARGS,(CmdCallBackFunc)(uintptr_t) osShellTftp)
 

变量

static int tcpip_init_finish = 1
 
static char * TftpError []
 

函数说明

◆ osShellTftp()

u32_t osShellTftp ( int  argc,
const char **  argv 
)

在文件 main.c80 行定义.

81{
82 u32_t ulRemoteAddr = IPADDR_NONE;
83 const u16_t usTftpServPort = 69;
84 u8_t ucTftpGet = 0;
85 s8_t *szLocalFileName = NULL;
86 s8_t *szRemoteFileName = NULL;
87 u32_t ret;
88
89 int i = 1;
90 if (argc < 1 || argv == NULL) {
91 goto usage;
92 }
93
94 if (!tcpip_init_finish) {
95 PRINTK("%s: tcpip_init have not been called\n", __FUNCTION__);
96 return LOS_NOK;
97 }
98
99 while (i < argc) {
100 if (strcmp(argv[i], "-p") == 0) {
101 ucTftpGet = 0;
102 i++;
103 continue;
104 }
105
106 if (strcmp(argv[i], "-g") == 0) {
107 ucTftpGet = 1;
108 i++;
109 continue;
110 }
111
112 if (strcmp(argv[i], "-l") == 0 && ((i + 1) < argc)) {
113 szLocalFileName = (s8_t *)argv[i + 1];
114 i += 2;
115 continue;
116 }
117
118 if (strcmp(argv[i], "-r") == 0 && ((i + 1) < argc)) {
119 szRemoteFileName = (s8_t *)argv[i + 1];
120 i += 2;
121 continue;
122 }
123
124 if ((i + 1) == argc) {
125 ulRemoteAddr = inet_addr(argv[i]);
126 break;
127 }
128
129 goto usage;
130 }
131
132 if (ulRemoteAddr == IPADDR_NONE || szLocalFileName == NULL || szRemoteFileName == NULL) {
133 goto usage;
134 }
135
136 if (ucTftpGet) {
137 ret = lwip_tftp_get_file_by_filename(ntohl(ulRemoteAddr), usTftpServPort,
138 TRANSFER_MODE_BINARY, szRemoteFileName, szLocalFileName);
139 } else {
140 ret = lwip_tftp_put_file_by_filename(ntohl(ulRemoteAddr), usTftpServPort,
141 TRANSFER_MODE_BINARY, szLocalFileName, szRemoteFileName);
142 }
143
144 LWIP_ASSERT("TFTP UNKNOW ERROR!", ret < ARRAY_SIZE(TftpError));
145 PRINTK("%s", TftpError[ret]);
146 if (ret) {
147 return LOS_NOK;
148 } else {
149 return LOS_OK;
150 }
151usage:
152 PRINTK("usage:\nTransfer a file from/to tftp server\n");
153 PRINTK("tftp <-g/-p> -l FullPathLocalFile -r RemoteFile Host\n");
154 return LOS_NOK;
155}
static char * TftpError[]
Definition: main.c:44
static int tcpip_init_finish
Definition: main.c:43
in_addr_t inet_addr(const char *cp)
Definition: socket.c:334
u32_t lwip_tftp_put_file_by_filename(u32_t ulHostAddr, u16_t usTftpServPort, u8_t ucTftpTransMode, s8_t *szSrcFileName, s8_t *szDestDirPath)
Definition: tftpc.c:918
u32_t lwip_tftp_get_file_by_filename(u32_t ulHostAddr, u16_t usTftpServPort, u8_t ucTftpTransMode, s8_t *szSrcFileName, s8_t *szDestDirPath)
Definition: tftpc.c:508
函数调用图:

◆ SHELLCMD_ENTRY()

SHELLCMD_ENTRY ( tftp_shellcmd  ,
CMD_TYPE_EX  ,
"tftp"  ,
XARGS  ,
(CmdCallBackFunc)(uintptr_t)  osShellTftp 
)

变量说明

◆ tcpip_init_finish

int tcpip_init_finish = 1
static

在文件 main.c43 行定义.

◆ TftpError

char* TftpError[]
static

在文件 main.c44 行定义.