161 lines
6.0 KiB
C
161 lines
6.0 KiB
C
/*
|
||
* net_function.h
|
||
*
|
||
* Created on: May 21, 2025
|
||
* Author: cc
|
||
*/
|
||
|
||
#ifndef NET_FUNCTION_H_
|
||
#define NET_FUNCTION_H_
|
||
|
||
#include "ch564.h"
|
||
#include "eth_driver.h"
|
||
#include "net_config.h"
|
||
#include "debug.h"
|
||
|
||
#define KEEPALIVE_ENABLE 0 //Enable keep alive function 使能TCP保活功能
|
||
#define NET_Socket_Num_Max 4 //允许应用层最多创建4个套接字, 套接字上限:WCHNET_MAX_SOCKET_NUM
|
||
#define DOMAINNAME_MAX 64 //域名最长长度
|
||
|
||
#define SERVER_NAME_DNS "www.boonlive-rcu.com" //云端服务器 - 默认使用域名
|
||
#define TFTPSERVER_NAME_DNS "blv-tftp-log.blv-oa.com" //TFTP日志服务器 - 默认使用域名
|
||
#define SERVER_COMM_Port 3339
|
||
|
||
#define SocketIdnex_BLVSeriver 0x00 //套接字数组存储下标
|
||
|
||
#define Net_DNS_Port 53 //DNS服务器端口
|
||
|
||
typedef enum
|
||
{
|
||
NET_INIT = 0,
|
||
NET_PHY_WAIT,
|
||
NET_DHCP,
|
||
NET_DHCP_WAIT,
|
||
NET_TFTP,
|
||
NET_DNS,
|
||
NET_DNS_WAIT,
|
||
NET_WAIT,
|
||
NET_COMPLETE,
|
||
|
||
NET_WAIT_MAC_RESTART,
|
||
//NET_START_TO_INIT,
|
||
NET_CON_WAIT,
|
||
NET_SOCKET_WAIT,
|
||
}NET_STA;
|
||
|
||
enum UDP_INTERNAL_STA{
|
||
STA_INIT = 0,
|
||
STA_INIT_WAIT = 1,
|
||
STA_INIT_IDLE = 2,
|
||
STA_Realy_Upgrade = 3,
|
||
STA_INIT_CONNECT,
|
||
STA_LOG,
|
||
STA_SEND_WAIT,
|
||
STA_SEND_LOG,
|
||
STA_SEND_RETRY,
|
||
STA_END,
|
||
};
|
||
|
||
typedef struct
|
||
{
|
||
uint8_t device_ip[4]; // 设备 IP
|
||
uint8_t gateway[4]; // 网关地址
|
||
uint8_t subnet[4]; // 子网掩码
|
||
uint8_t mac_addr[6]; // 主机使用的MAC地址
|
||
uint8_t dns_server_ip[4]; // DNS服务器IP地址
|
||
uint8_t dns_server2_ip[4]; // DNS服务器IP地址
|
||
uint8_t SocketId[NET_Socket_Num_Max];
|
||
|
||
}WCHNET_INFO_T;
|
||
|
||
typedef struct
|
||
{
|
||
uint8_t init_flag:1; //初始化完成标志位
|
||
uint8_t register_flag:1; //注册标志位
|
||
uint8_t search_ack_flag:1; //发送标志位
|
||
uint8_t dhcp_en:1; //DHCP是否启用
|
||
uint8_t dns_sta:4; //DNS状态
|
||
|
||
uint8_t dhcp_flg:1; //DHCP分配ip成功标志
|
||
uint8_t dns_flg:1; //DNS获取ip成功标志
|
||
uint8_t Udp_Internal_sta:4; //UDP状态机状态
|
||
uint8_t PHY_State:2; //NET PHY状态 0x00:当前网络未连接,0x01:当前网络已连接DNS状态
|
||
|
||
uint8_t register_num:4; //注册计数
|
||
uint8_t dns_fail:4; //DNS失败计数,用于切换DNS服务器使用
|
||
|
||
uint8_t server_dns_flag:1; //DNS成功解析服务器域名
|
||
uint8_t tftp_dns_flag:1; //DNS成功解析tftp服务器域名
|
||
uint8_t mqtt_dns_flag:1; //MQTT成功解析域名标志位
|
||
uint8_t online_state:3; //网络连接状态 0:离线 1:局域网在线 2:本地服务器在线 3:云端服务器在线
|
||
uint8_t sync_tick:2; //同步时间标记
|
||
|
||
uint8_t udp_dns_flag:1; //udp服务器解析域名标志位
|
||
uint8_t server_select:1; //服务器选择 0x00:默认云端服务器,0x01:本地服务器
|
||
uint8_t net_retry_flag:1; //网络重试标志位 -
|
||
uint8_t net_retry_num:5; //网络重试次数 - 比如DHCP重试次数,DNS重试次数
|
||
|
||
uint8_t con_flag:1; //直连标记
|
||
uint8_t rcu_reboot_flag:1; //RCU重启标志位
|
||
uint8_t udp_scan_cnt:6; //udp扫描计数
|
||
|
||
uint8_t active_cmd_flag; //主动发送命令标志位
|
||
|
||
uint8_t net_sta; //网络状态机当前状态
|
||
uint8_t udp_sta; //UDP任务状态机
|
||
uint8_t ServerDename[DOMAINNAME_MAX]; //服务器域名
|
||
uint8_t dis_ip[4]; //云端服务器ip地址
|
||
uint8_t tftp_ip[4]; //TFTP服务器
|
||
uint8_t goal_ip[4]; //目标ip,
|
||
|
||
uint8_t udp_send_flag; //发送标记
|
||
uint8_t udp_retry_cnt; //重发次数
|
||
uint8_t udp_retry_num; //重发次数
|
||
uint16_t local_port; //本地端口
|
||
uint16_t goal_port; //目标port
|
||
uint16_t dis_port; //云端服务器端口
|
||
uint16_t frame_no; //发送的帧号
|
||
uint16_t ack_frame; //ACK帧号
|
||
|
||
uint16_t udp_timesync_cnt; //时间同步次数 - 1s一次
|
||
uint16_t udp_periodic_cnt; //定期上报次数 - 1s一次
|
||
uint16_t udp_periodic_time; //定期上报时间间隔 - 单位:S
|
||
|
||
uint32_t udp_retry_tick; //重发超时时间戳
|
||
uint32_t udp_retry_time; //重发超时时间
|
||
|
||
uint32_t con_tick; //直连时间戳 2023-05-27
|
||
|
||
uint32_t udp_idle_tick; //UDP空闲时间戳
|
||
uint32_t udp_online_tick; //UDP离线时间戳
|
||
uint32_t udp_online_time; //UDP离线判定时间
|
||
|
||
uint32_t wait_cot; //等待计数
|
||
uint32_t register_tick; //注册计时
|
||
uint32_t search_ack_tick; //发送计时
|
||
|
||
}DEVICE_NET_APPINFO;
|
||
|
||
/*TFTP 传输LOG相关定义*/
|
||
#define TFTP_Destination_Port 69 //TFTP服务端口
|
||
#define TFTP_LOG_Local_Port 65500 //TFTP LOG传输本地端口
|
||
|
||
|
||
typedef struct
|
||
{
|
||
uint16_t Port; //TFTP LOG传输本地端口
|
||
uint16_t Time; //日志上报时间
|
||
uint8_t DN_Lens; //TFTP日志服务器域名长度
|
||
char DomainName[DOMAINNAME_MAX]; //TFTP日志服务器域名
|
||
}TFTP_LOG;
|
||
|
||
extern WCHNET_INFO_T g_netinfo;
|
||
extern DEVICE_NET_APPINFO server_info;
|
||
|
||
uint8_t WCHNET_LIB_Init(void);
|
||
void WCHNET_HandleGlobalInt(void);
|
||
|
||
void NetWork_Task(void);
|
||
|
||
#endif /* NET_FUNCTION_H_ */
|