/* * tftp_function.h * * Created on: Dec 6, 2025 * Author: cc */ #ifndef NETLIB_TFTP_FUNCTION_H_ #define NETLIB_TFTP_FUNCTION_H_ #include "ch564.h" #include "eth_driver.h" #include "net_config.h" #include "debug.h" #define TFTP_Destination_Port 69 //TFTP服务端口 #define TFTP_DTAT_Local_Port 65535 //TFTP 数据传输本地端口 #define TFTP_LOG_Local_Port 65500 //TFTP LOG传输本地端口 #define TFTP_DATA_LEN_MAX 517 #define TFTP_DATA_PKT_HDR_LEN 4 //TFTP数据包头长度 #define TFTP_ACK_PKT_LEN 4 //TFTP应答数据包长度 #define TFTP_IAP_Task_Timeout 30000 //TFTP IAP任务超时时间 #define TFTP_File_Name_Size 128 //TFTP传输文件名最大128Byte #define TFTP_LOG_Exceed_Size 4096 //日志上报条件1 - 限定大小 #define TFTP_LOG_Exceed_Time 7200 //日志上报条件2 - 限定时间 #define TFTP_IAP_Start 0x01 //TFTP IAP升级开始 #define TFTP_IAP_Finish 0x02 //TFTP IAP升级完成 #define TFTP_IAP_Timeout 0x03 //TFTP IAP升级超时 #define TFTP_FUNTYPE_LocalIAP 0x01 //本地IAP升级(局域网升级) #define TFTP_FUNTYPE_CloudIAP 0x02 //云端IAP升级(远程升级) #define TFTP_FUNTYPE_LogUpload 0x03 //LOG上传 #define TFTP_IAP_DataType_APP 0x01 //IAP升级 - APP固件 #define TFTP_IAP_DataType_CONFIG 0x02 //IAP升级 - 配置文件 typedef enum { TFTP_RRQ = 1, TFTP_WRQ = 2, TFTP_DATA = 3, TFTP_ACK = 4, TFTP_ERROR = 5, TFTP_OPTION = 6, }TFTP_OPCODE; typedef struct { uint8_t IapFileType; //升级文件类型 就两种,0是固件 1是配置 uint8_t enable; //TFTP 功能使能状态 0X01:使能,0x00:没使能 uint8_t FunType; //升级类型 0x01:本地IAP升级,0x02:云端IAP升级,0x03:LOG日志上传 uint8_t NewIapFlag; //新升级流程标志位 - 2022-01-05 uint8_t IapErrFlag; //升级数据传输错误标志 uint8_t status; //状态机 uint8_t IapPercent; //升级占用的百分比 uint8_t FtpFileNameLen; //文件名长度 uint8_t FtpFileName[TFTP_File_Name_Size]; //文件名 uint8_t Md5[16]; //MD5值 uint16_t TFTP_Port; uint16_t BlockSize; //块大小 uint16_t Write_Block; //写入块号 uint32_t FlashWriteAddress; //升级写入的地址 uint32_t TotalCount; //文件总大小 uint32_t WriteCount; //文件写入大小 uint32_t processing_tick; //处理时间戳 }IAPVarTypeStruct; typedef struct { uint8_t op; /*WRQ */ uint8_t data[TFTP_DATA_LEN_MAX]; uint8_t to_ip[4]; uint8_t retry_num; uint16_t data_len; uint16_t to_port; uint16_t block; uint16_t tot_bytes; uint32_t last_time; }tftp_connection_args; void Internal_TFTP_Task(void); #endif /* NETLIB_TFTP_FUNCTION_H_ */