Files

1600 lines
57 KiB
C
Raw Permalink Normal View History

/**
******************************************************************************
* @file net.c
* @author BLW RCU development Team
* @version
* @date 2022<EFBFBD><EFBFBD>04<EFBFBD><EFBFBD>21<EFBFBD><EFBFBD>
* @brief
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @log SongHan 202204211130 TCP Disconnect TCP Timout ӦMQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SongHan 202204211412 <EFBFBD><EFBFBD>ӡMQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SongHan 202204231150 <EFBFBD><EFBFBD>MQTT<EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
SongHan 202205091800 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>MQTT<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0x01 == mqtt_info.init_flag <EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
SongHan 202205091800 MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD> Ҳ<EFBFBD><EFBFBD>Ҫfree(mqtt_info.domain_name)
SongHan 202205131055 MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD>󣬻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TCP<EFBFBD><EFBFBD>ʱ<EFBFBD>жϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߡ<EFBFBD>
6<EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD>ʻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>MQTT TCP<EFBFBD><EFBFBD>ʱ<EFBFBD>ͶϿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> server_info.init_flag = 0 <EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><EFBFBD><EFBFBD>
******************************************************************************
*/
#include "includes.h"
#include "Udp_Internal_Protocol.h"
#include <ctype.h>
/* <20><><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><E5A3AC><EFBFBD>е<EFBFBD><D0B5><EFBFBD> */
__align(16)UINT8 CH57xMACRxDesBuf[(RX_QUEUE_ENTRIES )*16] = {0}; /* MAC<41><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16<31>ֽڶ<D6BD><DAB6><EFBFBD> */
__align(4) UINT8 CH57xMACRxBuf[RX_QUEUE_ENTRIES*RX_BUF_SIZE]= {0}; /* MAC<41><43><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD> */
__align(4) SOCK_INF SocketInf[CH57xNET_MAX_SOCKET_NUM]= {0}; /* Socket<65><74>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>4<EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD> */
UINT16 MemNum[8] = {CH57xNET_NUM_IPRAW,
CH57xNET_NUM_UDP,
CH57xNET_NUM_TCP,
CH57xNET_NUM_TCP_LISTEN,
CH57xNET_NUM_TCP_SEG,
CH57xNET_NUM_IP_REASSDATA,
CH57xNET_NUM_PBUF,
CH57xNET_NUM_POOL_BUF
};
UINT16 MemSize[8] = {CH57xNET_MEM_ALIGN_SIZE(CH57xNET_SIZE_IPRAW_PCB),
CH57xNET_MEM_ALIGN_SIZE(CH57xNET_SIZE_UDP_PCB),
CH57xNET_MEM_ALIGN_SIZE(CH57xNET_SIZE_TCP_PCB),
CH57xNET_MEM_ALIGN_SIZE(CH57xNET_SIZE_TCP_PCB_LISTEN),
CH57xNET_MEM_ALIGN_SIZE(CH57xNET_SIZE_TCP_SEG),
CH57xNET_MEM_ALIGN_SIZE(CH57xNET_SIZE_IP_REASSDATA),
CH57xNET_MEM_ALIGN_SIZE(CH57xNET_SIZE_PBUF) + CH57xNET_MEM_ALIGN_SIZE(0),
CH57xNET_MEM_ALIGN_SIZE(CH57xNET_SIZE_PBUF) + CH57xNET_MEM_ALIGN_SIZE(CH57xNET_SIZE_POOL_BUF)
};
__align(4)UINT8 Memp_Memory[CH57xNET_MEMP_SIZE] = {0};
__align(4)UINT8 Mem_Heap_Memory[CH57xNET_RAM_HEAP_SIZE] = {0};
__align(4)UINT8 Mem_ArpTable[CH57xNET_RAM_ARP_TABLE_SIZE] = {0};
/* CH57xNET<45><54>TCP<43><50>MSS<53><53><EFBFBD><EFBFBD>Ϊ536<33>ֽڣ<D6BD><DAA3><EFBFBD>һ<EFBFBD><D2BB>TCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD>Ϊ536<33>ֽ<EFBFBD>
TCPЭ<EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪsocket<EFBFBD>Ľ<EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RX_QUEUE_ENTRIESʱҪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>MSS<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ4*MSS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD>һ<EFBFBD>λ<EFBFBD><EFBFBD>
4<EFBFBD><EFBFBD>TCP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RX_QUEUE_ENTRIESС<EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶЧ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>RX_QUEUE_ENTRIESҪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>( <EFBFBD><EFBFBD><EFBFBD><EFBFBD>/MSS ),<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>socketͬʱ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>RX_QUEUE_ENTRIESҪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(( <EFBFBD><EFBFBD><EFBFBD><EFBFBD>/MSS )*socket<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD>socketͬʱ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD>ʱ
Ϊ<EFBFBD>˽<EFBFBD>ԼRAM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪMSS */
/* <20><><EFBFBD>ڵƶ<DAB5><C6B6><EFBFBD> PB<50>ڵ<EFBFBD>ʮ<EFBFBD><CAAE>λ<EFBFBD><CEBB>Ч */
#if (USE_CORE_TYPE == 1) //ʹ<><CAB9>C1F<31><46><EFBFBD>İ<EFBFBD>
UINT16 CH57xNET_LEDCONN=0x0020; /* <20><><EFBFBD><EFBFBD>ָʾ<D6B8><CABE> PB5*/
UINT16 CH57xNET_LEDDATA=0x0400; /* ͨѶָʾ<D6B8><CABE> PB10 */
#elif (USE_CORE_TYPE == 2) //ʹ<><CAB9>C1<43><31><EFBFBD>İ<EFBFBD>
UINT16 CH57xNET_LEDCONN=0x0020; /* <20><><EFBFBD><EFBFBD>ָʾ<D6B8><CABE> PB5*/
UINT16 CH57xNET_LEDDATA=0x0040; /* ͨѶָʾ<D6B8><CABE> PB6*/
#endif //USE_CORE_TYPE == CORE_TYPE_C1F
/* CH579<37><39><EFBFBD>ض<EFBFBD><D8B6><EFBFBD> */
//UINT8 MACAddr[6] = {0x34,0xD0,0xB8,0x10,0xA3,0x1E}; /* CH579MAC<41><43>ַ - Ĭ<><C4AC>MAC<41><43>ַ*/
//UINT8 MACAddr[6] = {0x34,0xD0,0xB8,0x10,0xE0,0xF6}; /* CH579MAC<41><43>ַ - <20><><EFBFBD><EFBFBD>MAC<41><43>ַ*/
UINT8 MACAddr[6] = {0x34,0xD0,0xB8,0x10,0xE0,0xF9}; /* CH579MAC<41><43>ַ - <20><><EFBFBD><EFBFBD>2MAC<41><43>ַ*/
UINT8 SocketRecvBuf[RECE_BUF_LEN] = {0}; /* socket<65><74><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD> */
uint32_t SysTick_10ms = 0;
uint8_t Global_Large_Buff[1100] = {0}; //<2F><><EFBFBD><EFBFBD><EFBFBD>׽<EFBFBD><D7BD><EFBFBD>ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>ⲿSRAMӳ<4D><D3B3><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
NET_INFO net_info ={
.local_ip = {192,168,1,200}, /* CH579IP<49><50>ַ */
.gwip_addr = {192,168,1,1}, /* CH579<37><39><EFBFBD><EFBFBD> */
.mask = {255,255,255,0}, /* CH579<37><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
.SocketId = {0,0,0,0}, /* <20>׽<EFBFBD><D7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
.ServerDename = SERVER_NAME_DNS, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2025-10-11 */
};
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ*/
NET_SERVER_INFO server_info = {
.init_flag = 0, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>־λ<D6BE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׽<EFBFBD><D7BD>ִ<EFBFBD><D6B4><EFBFBD>ʹ<EFBFBD><CAB9>*/
.register_flag = 0, /* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>־λ*/
.search_ack_flag = 0, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ACK*/
.dhcp_en = 1, /* DHCPʹ<50><CAB9> */
.dns_sta = 0, /* DNS״̬<D7B4><CCAC><EFBFBD><EFBFBD>ǰ״̬ */
.dhcp_flg = 0, /* DHCP<43>ɹ<EFBFBD>ʱ<EFBFBD>ڻص<DABB><D8B5><EFBFBD><EFBFBD><EFBFBD>λ*/
.dns_flg = 0, /* DNS<4E>ɹ<EFBFBD>ʱ<EFBFBD>ڻص<DABB><D8B5><EFBFBD><EFBFBD><EFBFBD>λ*/
.Udp_Internal_sta = 0, /* UDP״̬<D7B4><CCAC><EFBFBD><EFBFBD>ǰ״̬ */
.PHY_State = 0, /* NET PHY״̬ */
.register_num = 0, /* ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
.dns_fail = 0, /* */
.server_dns_flag = 0, /* DNS<4E><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ */
.tftp_dns_flag = 0, /* DNS<4E><53><EFBFBD><EFBFBD>TFTP<54><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ */
.mqtt_dns_flag = 0, /* DNS<4E><53><EFBFBD><EFBFBD>MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ */
.online_state = 0,
.sync_tick = 0,
.udp_dns_flag = 0, /* udp<64><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ */
.server_select = 0, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>, 0x00:ʹ<><CAB9><EFBFBD>ƶ˷<C6B6><CBB7><EFBFBD><EFBFBD><EFBFBD>,0x01:ʹ<>ñ<EFBFBD><C3B1>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>*/
.net_retry_flag = 0, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>־λ*/
.net_retry_num = 0, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD> - <20><><EFBFBD><EFBFBD>DHCP<43><50><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>DNS<4E><53><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>*/
.con_flag = 0, /* <20><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>־λ */
.rcu_reboot_flag = 1, /* RCU<43><55><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ - <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>ʹ<EFBFBD><CAB9> */
.udp_scan_cnt = 0,
.active_cmd_flag = 0,
.net_sta = 0, /* <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>ǰ״̬ */
.dis_ip = {106,75,37,225}, /* <20>ƶ˷<C6B6><CBB7><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ */
.tftp_ip = {116,25,116,27}, /* TFTP<54><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ */
.udp_ip = {0,0,0,0}, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļظ<C4BB> IP<49><50>ַ */
.goal_ip = {192,168,101,31}, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ŀ<EFBFBD><C4BF>ip <20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>*/
.local_port = 8000, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļظ<C4BB> <20>˿ں<CBBF> */
.goal_port = 8080, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ŀ<EFBFBD><C4BF>port */
.dis_port = 3339, /* <20>ƶ˷<C6B6><CBB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF> */
.frame_no = 0x8000, /* <20>ƶ˷<C6B6><CBB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>֡<EFBFBD><D6A1> */
.wait_cot = 0, /* <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0 */
.register_tick = 0, /* ע<><D7A2><EFBFBD>ȴ<EFBFBD><C8B4>ظ<EFBFBD><D8B8><EFBFBD>ʱ */
.search_ack_tick = 0, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ACKʱ<4B><CAB1><EFBFBD><EFBFBD> */
.udp_sta = 1,
.udp_send_flag = 0,
.udp_retry_cnt = 0,
.udp_retry_num = 0,
.ack_frame = 0,
.udp_timesync_cnt = 0,
.udp_periodic_cnt = 0,
.udp_retry_tick = 0,
.udp_retry_time = 2000,
.con_tick = 0,
#if TFTP_GET_IP
.tftpip_gflag = 0,
#endif
.udp_idle_tick = 0,
.udp_online_tick = 0,
.udp_online_time = 0,
};
TFTP_LOG tftp_log; //2024-04-08
#if INTERRUPT_RECV_EN
UINT8 MyBuf[RECE_BUF_LEN] = {0}; /* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#endif
//UINT8 Status; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>״̬ -- DNS
/*******************************************************************************
* Function Name : Timer0Init
* Description : <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
* Input : time <EFBFBD><EFBFBD>ʱʱ<EFBFBD><EFBFBD>
* Output : None
* Return : None
*******************************************************************************/
void Timer0Init(UINT32 time)
{
R8_TMR0_CTRL_MOD = RB_TMR_ALL_CLEAR; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD>ֵ */
R8_TMR0_CTRL_MOD = 0; /* <20><><EFBFBD>ö<EFBFBD>ʱ<EFBFBD><CAB1>ģʽ */
R32_TMR0_CNT_END = FREQ_SYS/1000000*time; /* <20><><EFBFBD>ö<EFBFBD>ʱʱ<CAB1><CAB1> */
R8_TMR0_INT_FLAG = R8_TMR0_INT_FLAG; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
R8_TMR0_INTER_EN = RB_TMR_IE_CYC_END; /* <20><>ʱ<EFBFBD>ж<EFBFBD> */
R8_TMR0_CTRL_MOD |= RB_TMR_COUNT_EN;
NVIC_EnableIRQ(TMR0_IRQn);
}
/*******************************************************************************
* Function Name : IRQ_Handler
* Description : IRQ<EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void ETH_IRQHandler( void ) /* <20><>̫<EFBFBD><CCAB><EFBFBD>ж<EFBFBD> */
{
CH57xNET_ETHIsr(); /* <20><>̫<EFBFBD><CCAB><EFBFBD>ж<EFBFBD><D0B6>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
}
void TMR0_IRQHandler( void ) /* <20><>ʱ<EFBFBD><CAB1><EFBFBD>ж<EFBFBD> */
{
CH57xNET_TimeIsr(CH57xNETTIMEPERIOD); /* <20><>ʱ<EFBFBD><CAB1><EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
R8_TMR0_INT_FLAG |= 0xff; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>жϱ<D0B6>־ */
SysTick_10ms++;
}
/*******************************************************************************
* Function Name : mStopIfError
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input : iError <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Output : None
* Return : None
*******************************************************************************/
void mStopIfError(UINT8 iError)
{
if (iError == CH57xNET_ERR_SUCCESS) return; /* <20><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD> */
Dbg_Println(DBG_BIT_NET_STATUS_bit,"mStopIfError: %02X", (UINT16)iError); /* <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> */
}
/*******************************************************************************
* Function Name : CH57xNET_CreatTcpSocket
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>TCP Client socket
* Input : socket<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
* Output : None
* Return : None
*******************************************************************************/
void CH57xNET_CreatTcpSocket_2(UINT8* S)
{
UINT8 i;
SOCK_INF TmpSocketInf; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱsocket<65><74><EFBFBD><EFBFBD> */
memset((void *)&TmpSocketInf,0,sizeof(SOCK_INF)); /* <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>˱<EFBFBD><CBB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><C3BD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
memcpy((void *)TmpSocketInf.IPAddr, server_info.dis_ip, 4); /* <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>IP<49><50>ַ */
TmpSocketInf.DesPort = 1000;
TmpSocketInf.SourPort = 2000; /* <20><><EFBFBD><EFBFBD>Դ<EFBFBD>˿<EFBFBD> */
TmpSocketInf.ProtoType = PROTO_TYPE_TCP; /* <20><><EFBFBD><EFBFBD>socekt<6B><74><EFBFBD><EFBFBD> */
TmpSocketInf.RecvStartPoint = (UINT32)SocketRecvBuf; /* <20><><EFBFBD>ý<EFBFBD><C3BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD> */
TmpSocketInf.RecvBufLen = RECE_BUF_LEN ; /* <20><><EFBFBD>ý<EFBFBD><C3BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD>ճ<EFBFBD><D5B3><EFBFBD> */
i = CH57xNET_SocketCreat(S,&TmpSocketInf); /* <20><><EFBFBD><EFBFBD>socket<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>socket<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SocketId<49><64> */
mStopIfError(i); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#ifdef KEEPLIVE_ENABLE
CH57xNET_SocketSetKeepLive(*S, 1 ); /* <20><><EFBFBD><EFBFBD>socket<65><74>KEEPLIVE<56><45><EFBFBD>ܣ<EFBFBD>V06<30>汾֧<E6B1BE>֣<EFBFBD> */
#endif
i = CH57xNET_SocketConnect(*S); /* TCP<43><50><EFBFBD><EFBFBD> */
mStopIfError(i); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
i = CH57xNET_SetSocketTTL(*S,128 );
mStopIfError(i); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
}
/*******************************************************************************
* Function Name : net_initkeeplive
* Description : keeplive<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
* Input : None
* Output : None
* Return : None
*******************************************************************************/
#ifdef KEEPLIVE_ENABLE
void net_initkeeplive(void)
{
struct _KEEP_CFG klcfg;
klcfg.KLIdle = 20000; /* <20><><EFBFBD><EFBFBD> */
klcfg.KLIntvl = 10000; /* <20><><EFBFBD><EFBFBD> */
klcfg.KLCount = 5; /* <20><><EFBFBD><EFBFBD> */
CH57xNET_ConfigKeepLive(&klcfg);
}
#endif
/*******************************************************************************
* Function Name : CH57xNET_LibInit
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input : ip ip<EFBFBD><EFBFBD>ַָ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>gwip <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ip<EFBFBD><EFBFBD>ַָ<EFBFBD><EFBFBD>
* : mask <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* : macaddr MAC<EFBFBD><EFBFBD>ַָ<EFBFBD><EFBFBD>
* Output : None
* Return : ִ<EFBFBD><EFBFBD>״̬
*******************************************************************************/
UINT8 CH57xNET_LibInit(/*const*/ UINT8 *ip,/*const*/ UINT8 *gwip,/*const*/ UINT8 *mask,/*const*/ UINT8 *macaddr)
{
UINT8 i;
struct _CH57x_CFG cfg;
if(CH57xNET_GetVer() != CH57xNET_LIB_VER)return 0xfc; /* <20><>ȡ<EFBFBD><C8A1><EFBFBD>İ汾<C4B0>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD>һ<EFBFBD><D2BB> */
CH57xNETConfig = LIB_CFG_VALUE; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD> */
cfg.RxBufSize = RX_BUF_SIZE;
cfg.TCPMss = CH57xNET_TCP_MSS;
cfg.HeapSize = CH57x_MEM_HEAP_SIZE;
cfg.ARPTableNum = CH57xNET_NUM_ARP_TABLE;
cfg.MiscConfig0 = CH57xNET_MISC_CONFIG0;
CH57xNET_ConfigLIB(&cfg);
i = CH57xNET_Init(ip,gwip,mask,macaddr);
#ifdef KEEPLIVE_ENABLE
net_initkeeplive( );
#endif
return (i);
}
/*******************************************************************************
* Function Name : CH57xNET_HandleSockInt
* Description : Socket<EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input : sockeid socket<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>initstat <EFBFBD>ж<EFBFBD>״̬
* Output : None
* Return : None
*******************************************************************************/
void CH57xNET_HandleSockInt(UINT8 sockeid,UINT8 initstat)
{
UINT32 len;
UINT8 i;
if(initstat & SINT_STAT_RECV) /* <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> */
{
len = CH57xNET_SocketRecvLen(sockeid,NULL); /* <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD> */
Dbg_Println(DBG_BIT_NET_STATUS_bit,"Receive Len = %ld,sockeid : %d",len,sockeid);
if (len > 0)
{
if(server_info.dns_sta == DNS_WAIT_RECV)
{
CH57xNET_SocketRecv(sockeid,dns_buf,&len);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNS ReceiveLen = %ld",len);
server_info.dns_flg = 1; //<2F><><EFBFBD><EFBFBD>DNS<4E><53>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ip<69>ɹ<EFBFBD>
i = CH57xNET_SocketClose( sockeid,TCP_CLOSE_NORMAL );
mStopIfError(i);
memset(SocketRecvBuf, 0, len); //<2F>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD>º<EFBFBD><C2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׽<EFBFBD><D7BD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
}
else
{
#if MQTT_EN
if((0x01 == mqtt_info.init_flag) && (mqtt_info.mqtt_socket == sockeid)) //MQTT<54><54><EFBFBD><EFBFBD><EFBFBD>ѳ<EFBFBD>ʼ<EFBFBD><CABC> mqtt<74>׽<EFBFBD><D7BD><EFBFBD>
{
uint8_t* data = malloc(len);
if(data == NULL) return;
CH57xNET_SocketRecv(sockeid, data, &len); /* <20><><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>MyBuf<75><66>*/
Dbg_Print_Buff(DBG_BIT_NET_STATUS_bit,"mqtt rec data:",data,len);
LOG_NET_COMM_Recv_Record(mqtt_info.mqtt_socket,mqtt_info.des_ip,1883,data,len);
switch(data[0]>>4)
{
case FLAG_CONNACK:
Dbg_Println(DBG_BIT_NET_STATUS_bit,"MQTT connack");
mqtt_info.con_flag=1;
MQTT_Subscribe(sockeid, mqtt_info.sub_topic); //<2F><><EFBFBD>ӳɹ<D3B3><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
break;
case FLAG_PUBLISH: //<2F><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
{
unsigned char dup;
unsigned short packetid;
int qos;
unsigned char retained;
MQTTString topicName;
unsigned char* payload;
int payloadlen;
MQTTDeserialize_publish(&dup,&qos,&retained,&packetid,&topicName,&payload,&payloadlen,data,len);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"payloadlen=%d",(UINT16)payloadlen);
if((payloadlen + 2) > SRAM_MQTT_RECEIVE_LEN)
{
Dbg_Print(DBG_BIT_NET_STATUS_bit,"MQTT Receive too long:%d", payloadlen);
}
else
{
Dbg_Print(DBG_BIT_NET_STATUS_bit,"MQTT Receive DataLen:%d", payloadlen);
SRAM_Write_Word(payloadlen, mqtt_info.Sram_write_addr); //<2F><><EFBFBD>ճ<EFBFBD><D5B3><EFBFBD>
SRAM_Write_Buff(payload, payloadlen, mqtt_info.Sram_write_addr +2); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mqtt_info.Sram_write_addr += SRAM_MQTT_RECEIVE_LEN;
if(mqtt_info.Sram_write_addr >= SRAM_MQTT_RECEIVE_END)
{
mqtt_info.Sram_write_addr = SRAM_MQTT_RECEIVE_START;
}
}
// MQTT_Publish(sockeid, NET485_PUBLISH, (uint8_t*)payload, payloadlen, 0);
// if(payloadlen > SIMPLEPROFILE_CHAR4_LEN) peripheralChar4Notify(payload, SIMPLEPROFILE_CHAR4_LEN); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݹ̶<DDB9>ʹ<EFBFBD><CAB9> <20><><EFBFBD><EFBFBD>4<EFBFBD><34>NOTIFY
// else peripheralChar4Notify(payload, payloadlen); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݹ̶<DDB9>ʹ<EFBFBD><CAB9> <20><><EFBFBD><EFBFBD>4<EFBFBD><34>NOTIFY
}
break;
case FLAG_SUBACK: //<2F><><EFBFBD>ijɹ<C4B3>
mqtt_info.sub_flag=1;
#if 0
if(mqtt_info.domain_name)
{
free(mqtt_info.domain_name);
mqtt_info.domain_name = NULL;
}
if(mqtt_info.clientID)
{
free(mqtt_info.clientID);
mqtt_info.clientID = NULL;
}
if(mqtt_info.username)
{
free(mqtt_info.username);
mqtt_info.username = NULL;
}
if(mqtt_info.password)
{
free(mqtt_info.password);
mqtt_info.password = NULL;
}
if(mqtt_info.sub_topic)
{
free(mqtt_info.sub_topic);
mqtt_info.sub_topic = NULL;
}
if(mqtt_info.pub_topic)
{
free(mqtt_info.pub_topic);
mqtt_info.pub_topic = NULL;
}
#endif
Dbg_Println(DBG_BIT_NET_STATUS_bit,"MQTT suback");
break;
default:
Dbg_Println(DBG_BIT_NET_STATUS_bit,"MQTT MyBuf:%02X %02X", data[0], data[1]);
break;
}
free(data);
}
#endif
}
}
}
if(initstat & SINT_STAT_CONNECT) /* TCP<43><50><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> */
{ /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>ʾTCP<43>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD> */
Dbg_Println(DBG_BIT_NET_STATUS_bit,"TCP Connect Success");
#if /*INTERRUPT_RECV_EN ||*/ MQTT_EN
if((0x01 == mqtt_info.init_flag) && (mqtt_info.mqtt_socket == sockeid)) //MQTT<54><54><EFBFBD><EFBFBD><EFBFBD>ѳ<EFBFBD>ʼ<EFBFBD><CABC> mqtt<74>׽<EFBFBD><D7BD><EFBFBD>
{
MQTT_Connect(sockeid, mqtt_info.clientID, mqtt_info.username, mqtt_info.password, mqtt_info.keepAliveInterval);
}
#endif
}
if(initstat & SINT_STAT_DISCONNECT) /* TCP<43>Ͽ<EFBFBD><CFBF>ж<EFBFBD> */
{ /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>CH579<37><39><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><E1BDAB>socket<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ر<EFBFBD>*/
Dbg_Println(DBG_BIT_NET_STATUS_bit,"TCP Disconnect"); /* Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#if /*INTERRUPT_RECV_EN ||*/ MQTT_EN
if((0x01 == mqtt_info.init_flag) && (mqtt_info.mqtt_socket == sockeid)) //MQTT<54><54><EFBFBD><EFBFBD><EFBFBD>ѳ<EFBFBD>ʼ<EFBFBD><CABC> mqtt<74>׽<EFBFBD><D7BD><EFBFBD>
{
//CH57xNET_CreatTcpSocket();
mqtt_info.con_flag = 0; //<2F><><EFBFBD>ӶϿ<D3B6>
Dbg_Println(DBG_BIT_NET_STATUS_bit,"MQTT Disconnect MQTT Need Reconnect");
// server_info.init_flag = 0; //<2F><><EFBFBD><EFBFBD><E7BBB7><EFBFBD>仯 MQTT<54><54><EFBFBD>ӶϿ<D3B6> <20><><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //Song
mqtt_info.mqtt_sta = MQTT_RCON; //2023-03-17
mqtt_info.wait_cot = SysTick_10ms; //2023-03-17
LOG_SYS_PHY_Change_Record(0x03); //<2F><><EFBFBD><EFBFBD><E7BBB7><EFBFBD>仯 MQTT TCP<43>Ͽ<EFBFBD>
}
#endif
}
if(initstat & SINT_STAT_TIM_OUT) /* TCP<43><50>ʱ<EFBFBD>ж<EFBFBD> */
{ /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>CH579<37><39><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><E1BDAB>socket<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ر<EFBFBD>*/
Dbg_Println(DBG_BIT_NET_STATUS_bit,"sockeid %d TCP Timout",sockeid); /* Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#if /*INTERRUPT_RECV_EN ||*/ MQTT_EN
if((0x01 == mqtt_info.init_flag) && (mqtt_info.mqtt_socket == sockeid)) //MQTT<54><54><EFBFBD><EFBFBD><EFBFBD>ѳ<EFBFBD>ʼ<EFBFBD><CABC> mqtt<74>׽<EFBFBD><D7BD><EFBFBD>
{
mqtt_info.con_flag = 0; //<2F><><EFBFBD>ӶϿ<D3B6>
Dbg_Println(DBG_BIT_NET_STATUS_bit,"MQTT Timout MQTT Need Reconnect");
// server_info.init_flag = 0; //<2F><><EFBFBD><EFBFBD><E7BBB7><EFBFBD>仯 MQTT<54><54><EFBFBD>ӳ<EFBFBD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //Song
mqtt_info.mqtt_sta = MQTT_RCON; //2023-03-17
mqtt_info.wait_cot = SysTick_10ms; //2023-03-17
LOG_SYS_PHY_Change_Record(0x02); //<2F><><EFBFBD><EFBFBD><E7BBB7><EFBFBD>仯 MQTT TCP<43><50>ʱ
}
#endif
}
}
/*******************************************************************************
* Function Name : CH57xNET_HandleGloableInt
* Description : ȫ<EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void CH57xNET_HandleGlobalInt(void)
{
UINT8 initstat;
UINT8 i;
UINT8 socketinit;
initstat = CH57xNET_GetGlobalInt(); /* <20><>ȫ<EFBFBD><C8AB><EFBFBD>ж<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
if(initstat & GINT_STAT_UNREACH) /* <20><><EFBFBD>ɴ<EFBFBD><C9B4>ж<EFBFBD> */
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"UnreachCode <20><>%ld",CH57xInf.UnreachCode); /* <20><EFBFBD><E9BFB4><EFBFBD>ɴ<EFBFBD><C9B4><EFBFBD><EFBFBD><EFBFBD> */
Dbg_Println(DBG_BIT_NET_STATUS_bit,"UnreachProto <20><>%ld",CH57xInf.UnreachProto); /* <20><EFBFBD><E9BFB4><EFBFBD>ɴ<EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
Dbg_Println(DBG_BIT_NET_STATUS_bit,"UnreachPort <20><>%ld",CH57xInf.UnreachPort); /* <20><>ѯ<EFBFBD><D1AF><EFBFBD>ɴ<EFBFBD><C9B4>˿<EFBFBD> */
}
if(initstat & GINT_STAT_IP_CONFLI) /* IP<49><50>ͻ<EFBFBD>ж<EFBFBD> */
{
server_info.init_flag = 0; //<2F><><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Dbg_Println(DBG_BIT_NET_STATUS_bit,"IP<EFBFBD><EFBFBD>ͻ<EFBFBD>ж<EFBFBD>",i);
}
if(initstat & GINT_STAT_PHY_CHANGE) /* PHY<48>ı<EFBFBD><C4B1>ж<EFBFBD> */
{
i = CH57xNET_GetPHYStatus(); /* <20><>ȡPHY״̬ */
if(i == PHY_DISCONN)
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"PHY<EFBFBD>Ͽ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
server_info.init_flag = 0; //PHY<48>Ͽ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LOG_SYS_PHY_Change_Record(0x00); //<2F><><EFBFBD>߰γ<DFB0>
}
Dbg_Println(DBG_BIT_NET_STATUS_bit,"GINT_STAT_PHY_CHANGE %02x",i);
}
if(initstat & GINT_STAT_SOCKET) /* Socket<65>ж<EFBFBD> */
{
// Dbg_Print(DBG_BIT_NET_STATUS_bit,"GINT_STAT_SOCKET\n");
for(i = 0; i < CH57xNET_MAX_SOCKET_NUM; i ++)
{
socketinit = CH57xNET_GetSocketInt(i); /* <20><>socket<65>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD> */
if(socketinit)
{
//Dbg_Print(DBG_BIT_NET_STATUS_bit,"GINT_STAT_SOCKET, SOCKET_num:%d, socketinit:%d\n", i, socketinit);
CH57xNET_HandleSockInt(i,socketinit); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
}
}
}
}
void UDPSocket1_AppCallBack(struct _SCOK_INF * SocketInf,UINT32 ipaddr,UINT16 port,UINT8 *buff,UINT32 len)
{
UINT8 ip[4];
ip[0] = ipaddr;
ip[1] = ipaddr>>8;
ip[2] = ipaddr>>16;
ip[3] = ipaddr>>24;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"ip:%d.%d.%d.%d, port:%d",ip[0], ip[1], ip[2], ip[3], port);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"Socket1 len:%ld",len);
Dbg_Print_Buff(DBG_BIT_NET_STATUS_bit,"data :",buff,len);
//Udp_Internal_Analysis(buff, len, ip, port);
if(buff[0] == 0xAA)
{
switch(buff[1])
{
case 0x55: //<2F>ɵķ<C9B5><C4B7><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
Udp_Internal_Analysis(buff, len, ip, port);
break;
case 0x66: //UDP<44><50><EFBFBD><EFBFBD>Э<EFBFBD><D0AD> - 2022-05-31
//UDP_NetServer_Data_Analysis(buff, len, ip, port);
break;
}
}
}
void UDPSocket2_AppCallBack(struct _SCOK_INF * SocketInf,UINT32 ipaddr,UINT16 port,UINT8 *buff,UINT32 len)
{
//printf("UDPSocket_AppCallBack %08lX,%d,",ipaddr, port);
UINT8 ip[4];
ip[0] = ipaddr;
ip[1] = ipaddr>>8;
ip[2] = ipaddr>>16;
ip[3] = ipaddr>>24;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"ip:%d.%d.%d.%d, port:%d",ip[0], ip[1], ip[2], ip[3], port);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"Socket2 len:%ld",len);
TFTP_CMD_Analysis(buff, len, ip, port);
}
void UDPSocket3_AppCallBack(struct _SCOK_INF * SocketInf,UINT32 ipaddr,UINT16 port,UINT8 *buff,UINT32 len)
{
UINT8 ip[4];
ip[0] = ipaddr;
ip[1] = ipaddr>>8;
ip[2] = ipaddr>>16;
ip[3] = ipaddr>>24;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"ip:%d.%d.%d.%d, port:%d",ip[0], ip[1], ip[2], ip[3], port);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"Socket3 len:%ld",len);
TFTP_FILE_Analysis(buff, len, ip, port);
}
void UDPSocket4_AppCallBack(struct _SCOK_INF * SocketInf,UINT32 ipaddr,UINT16 port,UINT8 *buff,UINT32 len)
{
UINT8 temp[4];
temp[0] = ipaddr;
temp[1] = ipaddr>>8;
temp[2] = ipaddr>>16;
temp[3] = ipaddr>>24;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"ip:%d.%d.%d.%d, port:%d",temp[0], temp[1], temp[2], temp[3], port);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"Socket4 Recive: %s",buff);
}
/*******************************************************************************
* Function Name : UDPSocketParamInit
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDP socket
* Input : socket<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>Դ<EFBFBD>˿ڣ<EFBFBD>
* Output : None
* Return : None
*******************************************************************************/
void UDPSocketParamInit2(UINT8* S, UINT16 SourPort, AppCallBack cb)
{
UINT8 i;
SOCK_INF TmpSocketInf; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱsocket<65><74><EFBFBD><EFBFBD> */
memset((void *)&TmpSocketInf,0,sizeof(SOCK_INF)); /* <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>˱<EFBFBD><CBB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><C3BD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
//memcpy((void *)TmpSocketInf.IPAddr,addr,4); /* <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>IP<49><50>ַ */
TmpSocketInf.IPAddr[0] = 255;
TmpSocketInf.IPAddr[1] = 255;
TmpSocketInf.IPAddr[2] = 255;
TmpSocketInf.IPAddr[3] = 255;
TmpSocketInf.DesPort = SourPort; /* <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD>Ķ˿<C4B6> */
TmpSocketInf.SourPort = SourPort; /* <20><><EFBFBD><EFBFBD>Դ<EFBFBD>˿<EFBFBD> */
TmpSocketInf.ProtoType = PROTO_TYPE_UDP; /* <20><><EFBFBD><EFBFBD>socekt<6B><74><EFBFBD><EFBFBD> */
TmpSocketInf.RecvStartPoint = (UINT32)SocketRecvBuf; /* <20><><EFBFBD>ý<EFBFBD><C3BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD> */
TmpSocketInf.RecvBufLen = RECE_BUF_LEN ; /* <20><><EFBFBD>ý<EFBFBD><C3BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD>ճ<EFBFBD><D5B3><EFBFBD> */
#if APPCALLBACK_RECV_EN
TmpSocketInf.AppCallBack = cb; /* <20><><EFBFBD>ý<EFBFBD><C3BD>ջص<D5BB><D8B5><EFBFBD><EFBFBD><EFBFBD> */
#endif
i = CH57xNET_SocketCreat(S,&TmpSocketInf); /* <20><><EFBFBD><EFBFBD>socket<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>socket<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SocketId<49><64> */
mStopIfError(i); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
}
/*******************************************************************************
* Function Name : DNS_SocketParamInit
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDP socket
* Input : socket<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>Դ<EFBFBD>˿ڣ<EFBFBD>Ŀ<EFBFBD>Ķ˿ڼ<EFBFBD>Ŀ<EFBFBD><EFBFBD>IP
* Output : None
* Return : None
*******************************************************************************/
UINT8 DNS_SocketParamInit(UINT8* S,UINT8 *addr,UINT16 SourPort,UINT16 DesPort )
{
UINT8 i;
SOCK_INF TmpSocketInf; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱsocket<65><74><EFBFBD><EFBFBD> */
memset((void *)&TmpSocketInf,0,sizeof(SOCK_INF)); /* <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>˱<EFBFBD><CBB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><C3BD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
memcpy((void *)TmpSocketInf.IPAddr,addr,4); /* <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>IP<49><50>ַ */
TmpSocketInf.DesPort = DesPort; /* <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD>Ķ˿<C4B6> */
TmpSocketInf.SourPort = SourPort; /* <20><><EFBFBD><EFBFBD>Դ<EFBFBD>˿<EFBFBD> */
TmpSocketInf.ProtoType = PROTO_TYPE_UDP; /* <20><><EFBFBD><EFBFBD>socekt<6B><74><EFBFBD><EFBFBD> */
TmpSocketInf.RecvStartPoint = (UINT32)SocketRecvBuf; /* <20><><EFBFBD>ý<EFBFBD><C3BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD> */
TmpSocketInf.RecvBufLen = RECE_BUF_LEN ; /* <20><><EFBFBD>ý<EFBFBD><C3BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD>ճ<EFBFBD><D5B3><EFBFBD> */
//TmpSocketInf.AppCallBack = UDPSocket_AppCallBack; /* <20><><EFBFBD>ý<EFBFBD><C3BD>ջص<D5BB><D8B5><EFBFBD><EFBFBD><EFBFBD> */
i = CH57xNET_SocketCreat(S, &TmpSocketInf); /* <20><><EFBFBD><EFBFBD>socket<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>socket<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SocketId<49><64> */
mStopIfError(i); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
return i;
}
/*******************************************************************************
* Function Name : CH57xNET_DHCPCallBack
* Description : DHCP<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input : None
* Output : None
* Return : ִ<EFBFBD><EFBFBD>״̬
*******************************************************************************/
UINT8 CH57xNET_DHCPCallBack(UINT8 status,void *arg)
{
UINT8 *p;
if(!status){ /* <20>ɹ<EFBFBD>*/
p = arg; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>CH57xNET<45><54><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><E1BDAB>socket<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ر<EFBFBD>*/
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DHCP Success");
memcpy(net_info.local_ip, p, 4);
memcpy(net_info.gwip_addr, &p[4], 4);
memcpy(net_info.mask, &p[8], 4); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>CH57xNET<45><54><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><E1BDAB>socket<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ر<EFBFBD>*/
//memcpy(DNS_SERVER_IP, &p[12], 4); //2022-03-02 DNS<4E><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49><50><EFBFBD><EFBFBD>DHCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD> , 2022-08-09 ȡ<><C8A1>ʹ<EFBFBD><CAB9>DHCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DNS<4E><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Dbg_Println(DBG_BIT_NET_STATUS_bit,"IPAddr = %d.%d.%d.%d",(UINT16)net_info.local_ip[0], (UINT16)net_info.local_ip[1],
(UINT16)net_info.local_ip[2], (UINT16)net_info.local_ip[3]);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"GWIPAddr = %d.%d.%d.%d",(UINT16)net_info.gwip_addr[0], (UINT16)net_info.gwip_addr[1],
(UINT16)net_info.gwip_addr[2], (UINT16)net_info.gwip_addr[3]);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"IPAddr = %d.%d.%d.%d",(UINT16)net_info.mask[0], (UINT16)net_info.mask[1],
(UINT16)net_info.mask[2], (UINT16)net_info.mask[3]);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNS1: %d.%d.%d.%d",DNS_SERVER_IP[0],DNS_SERVER_IP[1],DNS_SERVER_IP[2],DNS_SERVER_IP[3]);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNS2: %d.%d.%d.%d",p[16],p[17],p[18],p[19]);
CH57xNET_DHCPStop();
server_info.net_retry_num = 0;
CH57xNET_SocketClose(net_info.SocketId[0],0x00); //2023-05-27
server_info.net_sta = NET_SOCKET_WAIT;
server_info.wait_cot = SysTick_1ms;
return SUCCESS;
}
else{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DHCP Fail %02x",status);
return FAILED;
}
}
/*******************************************************************************
* Function Name : GetMacAddr
* Description : ϵͳ<EFBFBD><EFBFBD>ȡMAC<EFBFBD><EFBFBD>ַ
* Input : pMAC:ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Mac<EFBFBD><EFBFBD>ַ<EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD>
* Output : None
* Return : None
*******************************************************************************/
void GetMacAddr(UINT8 *pMAC)
{
UINT8 transbuf[6],i;
GetMACAddress(transbuf);
for(i=0;i<6;i++)
{
pMAC[5-i]=transbuf[i];
}
}
/*******************************************************************************
* Function Name : DNS_Restart
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>DNS,<EFBFBD><EFBFBD>DNSʧ<EFBFBD>ܵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>
* Input : None
* Output : None
* Return : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>1״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>æ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ɹ<EFBFBD>
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> :
*******************************************************************************/
UINT8 DNS_Restart()
{
if(server_info.net_sta != NET_COMPLETE) return 1;
server_info.net_sta = NET_DNS; //״̬<D7B4><CCAC>ΪDNS
return 0;
}
int is_valid_domain(const char *domain)
{
const char *c = domain;
int parts = 0;
int dashes = 0;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"is_valid_domain_0:%s",domain);
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
if (strstr(domain, "..") || strstr(domain, "--"))
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"is_valid_domain_1");
return 0;
}
// <20><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>ַ<EFBFBD>
while (*c)
{
if (isalpha(*c) || isdigit(*c) || *c == '-' || *c == '.')
{
if (*c == '-')
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
if (c == domain || *(c + 1) == '\0' || dashes == 0)
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"is_valid_domain_2");
return 0;
}
dashes = 0;
}
else
{
dashes = 1;
}
}
else
{
// <20>Ƿ<EFBFBD><C7B7>ַ<EFBFBD>
Dbg_Println(DBG_BIT_NET_STATUS_bit,"is_valid_domain_3:%c",*c);
return 0;
}
if (*c == '.')
{
parts++; // <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (c == domain || *(c + 1) == '\0')
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE>Ϊ<EFBFBD><CEAA>
Dbg_Println(DBG_BIT_NET_STATUS_bit,"is_valid_domain_4");
return 0;
}
}
c++;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD> example.com<6F><6D>
Dbg_Println(DBG_BIT_NET_STATUS_bit,"is_valid_domain_5:%d",parts);
return parts > 1;
}
/*******************************************************************************
* Function Name : Data_Conver_To_Uint16
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>Ϊuint16_t<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input :
* Return : None
*******************************************************************************/
uint16_t Data_Conver_To_Uint16(uint8_t *data)
{
uint16_t temp_data = data[1];
temp_data <<= 8;
temp_data |= data[0];
return temp_data;
}
/*******************************************************************************
* Function Name : NetWork_Parameter_Get
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input : None
* Output : None
* Return : None
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> : <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
void NetWork_Parameter_Get(void)
{
uint8_t Arge_Flag = 0;
uint32_t temp = 0;
/*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>ΪĬ<CEAA><C4AC>IP<49><50>ַ*/
Arge_Flag = SRAM_Read_Byte(SRAM_Register_Start_ADDRESS + Register_NetInfo_EN_OFFSET + 1);
if(Arge_Flag == 0x01)
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"NET <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>PC<50><43><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>!");
SRAM_Read_Buff(net_info.local_ip,4,SRAM_Register_Start_ADDRESS + Register_NetIP_OFFSET);
SRAM_Read_Buff(net_info.gwip_addr,4,SRAM_Register_Start_ADDRESS + Register_NetGateway_OFFSET);
SRAM_Read_Buff(net_info.mask,4,SRAM_Register_Start_ADDRESS + Register_NetMask_OFFSET);
SRAM_Read_Buff(DNS_SERVER_IP,4,SRAM_Register_Start_ADDRESS + Register_DNSServerIP_OFFSET);
}else {
Dbg_Println(DBG_BIT_NET_STATUS_bit,"NET <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD>!");
//MCU<43><55>ʼ<EFBFBD><CABC>IP
net_info.local_ip[0] = 192;
net_info.local_ip[1] = 168;
net_info.local_ip[2] = MACAddr[4]; //2023-03-17
net_info.local_ip[3] = MACAddr[5]; //2023-03-17
//MCU<43><55>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
net_info.gwip_addr[0] = 192;
net_info.gwip_addr[1] = 168;
net_info.gwip_addr[2] = MACAddr[4]; //2023-03-17
net_info.gwip_addr[3] = 1;
//MCU<43><55>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
net_info.mask[0] = 255;
net_info.mask[1] = 255;
net_info.mask[2] = 0; //2023-03-17
net_info.mask[3] = 0;
//MCU DNS<4E><53>ַ
DNS_SERVER_IP[0] = 223;
DNS_SERVER_IP[1] = 5;
DNS_SERVER_IP[2] = 5;
DNS_SERVER_IP[3] = 5;
}
/*<2A><><EFBFBD><EFBFBD>DHCP*/
if(SRAM_Read_Byte(SRAM_Register_Start_ADDRESS + Register_NetInfo_EN_OFFSET) != 0x02)
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DHCP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>!");
server_info.dhcp_en = 0x01;
}else{ /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DHCP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
server_info.dhcp_en = 0x00;
}
/*<2A>жϵ<D0B6>ǰʹ<C7B0>ñ<EFBFBD><C3B1>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ˷<C6B6><CBB7><EFBFBD><EFBFBD><EFBFBD>*/
temp = SRAM_Read_Byte(SRAM_Register_Start_ADDRESS + Register_NetInfo_EN_OFFSET + 2);
if(temp == 0x01) //ʹ<>ñ<EFBFBD><C3B1>ض˷<D8B6><CBB7><EFBFBD><EFBFBD><EFBFBD>
{
server_info.server_select = 0x01;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"ʹ<EFBFBD>ñ<EFBFBD><EFBFBD>ض˷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}else //ʹ<><CAB9><EFBFBD>ƶ˶˷<CBB6><CBB7><EFBFBD><EFBFBD><EFBFBD>
{
server_info.server_select = 0x00;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"ʹ<EFBFBD><EFBFBD><EFBFBD>ƶ˶˷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
/*2024-04-08 start*/
memset(&tftp_log,0,sizeof(TFTP_LOG));
SRAM_Read_Buff((uint8_t*)&tftp_log.Time,2,SRAM_Register_Start_ADDRESS + Register_TFTPLOGTime_OFFSET);
SRAM_Read_Buff((uint8_t*)&tftp_log.Port,2,SRAM_Register_Start_ADDRESS + Register_TFTPLOGPort_OFFSET);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"tftp log port:%d time:%dh",tftp_log.Port,tftp_log.Time);
if((tftp_log.Port == 0xFFFF) || (tftp_log.Port == 0x00))
{
tftp_log.Port = TFTP_Destination_Port;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"tftp log default port:%d",tftp_log.Port);
}
if((tftp_log.Time == 0x00) || (tftp_log.Time > 720))
{
tftp_log.Time = 720; //1<><31><EFBFBD><EFBFBD>
Dbg_Println(DBG_BIT_NET_STATUS_bit,"tftp log default time:%dh",tftp_log.Time);
}
tftp_log.DN_Lens = SRAM_Read_Byte(SRAM_Register_Start_ADDRESS + Register_TFTPDmLens_OFFSET);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"tftp log domain name lens:%d",tftp_log.DN_Lens);
if(tftp_log.DN_Lens < DOMAINNAME_MAX)
{
SRAM_Read_Buff((uint8_t*)tftp_log.DomainName,tftp_log.DN_Lens,SRAM_Register_Start_ADDRESS + Register_TFTPDmName_OFFSET);
tftp_log.DomainName[tftp_log.DN_Lens] = '\0';
}
if((tftp_log.DN_Lens == 0x00) || (is_valid_domain(tftp_log.DomainName) == 0x00)) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD>ʹ<EFBFBD><CAB9>Ĭ<EFBFBD><C4AC>
{
tftp_log.DN_Lens = sizeof(TFTPSERVER_NAME_DNS);
if(tftp_log.DN_Lens < DOMAINNAME_MAX)
{
memcpy(tftp_log.DomainName,(char*)TFTPSERVER_NAME_DNS,sizeof(TFTPSERVER_NAME_DNS));
tftp_log.DomainName[tftp_log.DN_Lens] = '\0';
}
Dbg_Println(DBG_BIT_NET_STATUS_bit,"tftp domain name err,use default:%s",tftp_log.DomainName);
}
/*2024-04-08 end*/
//2025-10-11 <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʱ<EFBFBD><CAB1>
server_info.udp_online_time = SRAM_Read_DW(SRAM_Register_Start_ADDRESS + Register_NetOfflineTime_OFFSET);
if( (server_info.udp_online_time < 1000) || (server_info.udp_online_time > 7200000) )
{
server_info.udp_online_time = 600000;
}
//2025-10-11 <20><>ȡUDP <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
temp = SRAM_Read_DW(SRAM_Register_Start_ADDRESS + Register_UDPPeriodicTime_OFFSET);
if( (temp < 10000) || (temp > 7200000) )
{
server_info.udp_periodic_time = 60;
}else {
server_info.udp_periodic_time = temp / 1000;
}
//2025-10-11 <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
temp = SRAM_Read_DW(SRAM_Register_Start_ADDRESS + Register_WebServerPort_OFFSET);
if( (temp == 0x00) || (temp >= 0xFFFF) )
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ڲ<CBBF><DAB2>Ϸ<EFBFBD><CFB7><EFBFBD>ʹ<EFBFBD><CAB9>Ĭ<EFBFBD>϶˿<CFB6> 3339
server_info.dis_port = 3339;
}else {
server_info.dis_port = temp & 0xFFFF;
}
temp = SRAM_Read_Byte(SRAM_Register_Start_ADDRESS + Register_BLVServerDmName_OFFSET);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"BLVServerDmName lens:%d",temp);
if(temp < 64)
{
memset(net_info.ServerDename,0,sizeof(net_info.ServerDename));
SRAM_Read_Buff((uint8_t*)net_info.ServerDename,temp,SRAM_Register_Start_ADDRESS + Register_BLVServerDmName_OFFSET);
net_info.ServerDename[temp] = '\0';
}
if((temp == 0x00) || (is_valid_domain((char *)net_info.ServerDename) == 0x00)) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD>ʹ<EFBFBD><CAB9>Ĭ<EFBFBD><C4AC>
{
temp = sizeof(SERVER_NAME_DNS);
if(temp < 64)
{
memcpy(net_info.ServerDename,(char*)SERVER_NAME_DNS,sizeof(SERVER_NAME_DNS));
net_info.ServerDename[temp] = '\0';
}
Dbg_Println(DBG_BIT_NET_STATUS_bit,"BLVServerDmName err,use default:%s",net_info.ServerDename);
}
Dbg_Println(DBG_BIT_NET_STATUS_bit,"MCU<EFBFBD><EFBFBD>ʼIP<EFBFBD><EFBFBD>ַ : %d.%d.%d.%d",net_info.local_ip[0],net_info.local_ip[1],net_info.local_ip[2],net_info.local_ip[3]);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"MCU<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : %d.%d.%d.%d",net_info.gwip_addr[0],net_info.gwip_addr[1],net_info.gwip_addr[2],net_info.gwip_addr[3]);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"MCU<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : %d.%d.%d.%d",net_info.mask[0],net_info.mask[1],net_info.mask[2],net_info.mask[3]);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"MCU DNS<4E><53>ַ : %d.%d.%d.%d",DNS_SERVER_IP[0],DNS_SERVER_IP[1],DNS_SERVER_IP[2],DNS_SERVER_IP[3]);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"TFTP Log Domain name:%s ",tftp_log.DomainName);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"BLVServerDmName : %s:%d ",net_info.ServerDename,server_info.dis_port);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"online_time:%d periodic_time:%d",server_info.udp_online_time,server_info.udp_periodic_time);
LOG_SYS_NET_Argc_Init_Record(net_info.local_ip,net_info.gwip_addr,net_info.mask,DNS_SERVER_IP,Arge_Flag,server_info.dhcp_en,server_info.server_select);
}
/*******************************************************************************
* Function Name : NetWork_Task
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>񣬰<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>DHSP, DNS, socket<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input : None
* Output : None
* Return : None
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> : <EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
uint8_t DNS_num = 0;
void NetWork_Task(void)
{
//socket״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
switch(server_info.net_sta)
{
case NET_INIT: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
{
DNS_num = 0;
server_info.init_flag = 0; //<2F><><EFBFBD>ʼ<E7BFAA><CABC>ʼ<EFBFBD><CABC>
server_info.register_num = 0;
server_info.dhcp_flg = 0;
server_info.server_dns_flag = 0;
server_info.tftp_dns_flag = 0;
server_info.mqtt_dns_flag = 0;
server_info.udp_sta = 0x01;
server_info.Udp_Internal_sta = STA_INIT; //UDP<44>׽<EFBFBD><D7BD><EFBFBD>״̬
server_info.online_state = 0; //2023-10-07
#if TFTP_GET_IP
server_info.tftpip_gflag = 0x00;
#endif
#if MQTT_EN
{
mqtt_info.mqtt_sta = MQTT_DNS; //2023-03-17
}
#endif
NetWork_Parameter_Get();
//GetMacAddr(MACAddr); /* <20><>ȡ<EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>MAC<41><43>ַ */
CH57xNET_OpenMac(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
Dbg_Println(DBG_BIT_NET_STATUS_bit,"MACAddr : %02X.%02X.%02X.%02X.%02X.%02X",MACAddr[0],MACAddr[1],MACAddr[2],MACAddr[3],MACAddr[4],MACAddr[5]);
UINT8 ret = CH57xNET_LibInit(net_info.local_ip, net_info.gwip_addr, net_info.mask, MACAddr); /* <20><><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC> */
mStopIfError(ret); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
if(ret != CH57xNET_ERR_SUCCESS) break; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ʧ<EFBFBD><CAA7>
Dbg_Println(DBG_BIT_NET_STATUS_bit,"CH57xNETLibInit Success");
Timer0Init( 10000 ); /* <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>:10ms */
NVIC_EnableIRQ(ETH_IRQn); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD><CCAB><EFBFBD>ж<EFBFBD>
server_info.wait_cot = SysTick_10ms;
server_info.net_sta = NET_PHY_WAIT;
server_info.con_tick = SysTick_1s; //2023-05-27
server_info.udp_sta = 0x01;
server_info.register_num = 0x00;
server_info.udp_timesync_cnt = 0x00;
server_info.udp_periodic_cnt = 0x00;
server_info.udp_idle_tick = SysTick_1ms;
server_info.udp_send_flag = 0x00;
}
break;
case NET_PHY_WAIT: //<2F>ȴ<EFBFBD>PHYЭ<59>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>̲<EFBFBD><CCB2>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7BDAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if( CH57xInf.PHYStat < 2 )
{
if(SysTick_10ms - server_info.wait_cot > 3000)
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>PHYЭ<EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
server_info.net_sta = NET_START_TO_INIT;
}
break;
}else {
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD>߲<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>׽<EFBFBD><EFBFBD><EFBFBD>");
UDPSocketParamInit2(&net_info.SocketId[0], 3341, UDPSocket1_AppCallBack); //<2F><><EFBFBD><EFBFBD><EFBFBD>׽<EFBFBD><D7BD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
server_info.online_state = 1; //2023-10-07
server_info.wait_cot = SysTick_10ms;
server_info.net_sta = NET_CON_WAIT;
LOG_SYS_PHY_Change_Record(0x01); //<2F><><EFBFBD>߲<EFBFBD><DFB2><EFBFBD>
}
break;
case NET_START_TO_INIT:
CH57xNET_CloseMac(); //<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
server_info.wait_cot = SysTick_10ms;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD>ر<EFBFBD>MAC,׼<><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
server_info.net_sta = NET_WAIT_MAC_RESTART;
break;
case NET_WAIT_MAC_RESTART:
if(SysTick_10ms - server_info.wait_cot > 100)
{
server_info.wait_cot = SysTick_10ms;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
server_info.net_sta = NET_INIT;
}
break;
case NET_CON_WAIT: //2023-05-26
if(SysTick_10ms - server_info.wait_cot > 20)
{
server_info.wait_cot = SysTick_10ms;
if(server_info.dhcp_en == 0x01)
{
server_info.net_sta = NET_DHCP;
}else {
server_info.net_sta = NET_DNS;
// CH57xNET_SocketClose(net_info.SocketId[0],0x00); //2023-05-27
}
}
break;
case NET_DHCP: //<2F><><EFBFBD><EFBFBD>DHCP<43><50><EFBFBD><EFBFBD>ip
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>DHCP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>...");
CH57xNET_DHCPStart(CH57xNET_DHCPCallBack); /* <20><><EFBFBD><EFBFBD>DHCP */
server_info.wait_cot = SysTick_1ms;
server_info.net_sta = NET_DHCP_WAIT;
break;
case NET_DHCP_WAIT:
if(SysTick_1ms - server_info.wait_cot >= 10000)
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DHCP <20><>ʱ<EFBFBD><CAB1>%dms", SysTick_1ms - server_info.wait_cot);
server_info.wait_cot = SysTick_1ms;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DHCP<EFBFBD><EFBFBD>ȡʧ<EFBFBD><EFBFBD>!");
CH57xNET_DHCPStop();
server_info.net_retry_num++;
server_info.net_sta = NET_DHCP;
if(server_info.net_retry_num >= 3)
{
server_info.net_retry_num = 0;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DHCP<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
server_info.net_sta = NET_START_TO_INIT; //DHCP<43><50><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
CH57xNET_SocketClose(net_info.SocketId[0],0x00); //2023-05-27
}
}
break;
case NET_SOCKET_WAIT: //2023-05-29
if(SysTick_1ms - server_info.wait_cot >= 200)
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DHCP<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><EFBFBD><EFBFBD>ͨѶ<EFBFBD>׽<EFBFBD><EFBFBD><EFBFBD>");
UDPSocketParamInit2(&net_info.SocketId[0], 3341, UDPSocket1_AppCallBack); //<2F><><EFBFBD><EFBFBD><EFBFBD>׽<EFBFBD><D7BD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
server_info.net_sta = NET_DNS;
}
break;
case NET_DNS:
if(server_info.server_select == 0x00)
{
UINT8 ret = DnsQuery_Task(&net_info.SocketId[3], (UINT8*)net_info.ServerDename, server_info.dis_ip); /* DNS<4E><53>ѯ */
if(ret == 1) //DNS<4E><53>ѯ<EFBFBD>ɹ<EFBFBD>
{
server_info.dns_sta = DNS_INIT;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"Domain name:%s", net_info.ServerDename);
Dbg_Println(DBG_BIT_NET_STATUS_bit," HTTPs_IP=%d.%d.%d.%d",server_info.dis_ip[0], server_info.dis_ip[1], server_info.dis_ip[2], server_info.dis_ip[3]);
if((server_info.dis_ip[0] == 0x00) && (server_info.dis_ip[1] == 0x00)) //<2F><>Ч<EFBFBD><D0A7>ַ
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNS <20><>Ч<EFBFBD><D0A7>ַ");
server_info.net_sta = NET_DNS;
DNS_num++;
if(DNS_num > 5)
{
DNS_num = 0;
server_info.server_dns_flag = 0x00;
server_info.net_sta = NET_DNS2;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNSʧ<EFBFBD><EFBFBD>");
if(dns_buf)//<2F><>Ϊ<EFBFBD><CEAA>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>DNS<4E>ռ<EFBFBD>
{
free(dns_buf); //<2F>ͷ<EFBFBD>DNS<4E>ռ<EFBFBD>
dns_buf = NULL;
}
}
}else {
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>*/
server_info.server_dns_flag = 0x01;
server_info.net_sta = NET_DNS2;
if(dns_buf)
{
free(dns_buf); //<2F>ͷ<EFBFBD>DNS<4E>ռ<EFBFBD>
dns_buf = NULL;
}
}
}
else if(ret == 2) //DNSʧ<53>ܽ<EFBFBD><DCBD><EFBFBD>ʹ<EFBFBD>ó<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ֵ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ip<69><70>ַ
{
server_info.dns_sta = DNS_INIT;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNS<EFBFBD><EFBFBD>ʱ");
server_info.net_sta = NET_DNS;
DNS_num++;
if(DNS_num > 5)
{
DNS_num = 0;
server_info.net_sta = NET_DNS2;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNSʧ<EFBFBD><EFBFBD>");
}
}
}else if(server_info.server_select == 0x01)
{
/*<2A><><EFBFBD>ñ<EFBFBD><C3B1>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD> - ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ<D6BE><CEBB>ʱû<CAB1><C3BB><EFBFBD><EFBFBD>*/
server_info.dis_ip[0] = SRAM_Read_Byte(SRAM_Register_Start_ADDRESS + Register_WebServerIP_OFFSET + 0);
server_info.dis_ip[1] = SRAM_Read_Byte(SRAM_Register_Start_ADDRESS + Register_WebServerIP_OFFSET + 1);
server_info.dis_ip[2] = SRAM_Read_Byte(SRAM_Register_Start_ADDRESS + Register_WebServerIP_OFFSET + 2);
server_info.dis_ip[3] = SRAM_Read_Byte(SRAM_Register_Start_ADDRESS + Register_WebServerIP_OFFSET + 3);
server_info.server_dns_flag = 0x00;
server_info.net_sta = NET_DNS2;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><EFBFBD>ط<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d.%d.%d.%d",server_info.dis_ip[0],server_info.dis_ip[1],server_info.dis_ip[2],server_info.dis_ip[3]);
}
break;
case NET_DNS2:
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDP<44><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
{
UINT8 ret = DnsQuery_Task(&net_info.SocketId[3], (UINT8*)UDPSERVER_NAME_DNS, server_info.udp_ip); /* DNS<4E><53>ѯ */
if(ret == 1) //DNS<4E><53>ѯ<EFBFBD>ɹ<EFBFBD>
{
server_info.dns_sta = DNS_INIT;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"Domain name:%s", UDPSERVER_NAME_DNS);
Dbg_Println(DBG_BIT_NET_STATUS_bit," HTTPs_IP=%d.%d.%d.%d",server_info.udp_ip[0], server_info.udp_ip[1], server_info.udp_ip[2], server_info.udp_ip[3]);
if((server_info.udp_ip[0] == 0x00) && (server_info.udp_ip[1] == 0x00)) //<2F><>Ч<EFBFBD><D0A7>ַ
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNS <20><>Ч<EFBFBD><D0A7>ַ");
server_info.net_sta = NET_DNS2;
DNS_num++;
if(DNS_num > 5)
{
DNS_num = 0;
server_info.server_dns_flag = 0x00;
server_info.net_sta = NET_TFTP;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNSʧ<EFBFBD><EFBFBD>");
if(dns_buf)
{
free(dns_buf); //<2F>ͷ<EFBFBD>DNS<4E>ռ<EFBFBD>
dns_buf = NULL;
}
}
}else {
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>*/
server_info.server_dns_flag = 0x01;
server_info.net_sta = NET_TFTP;
if(dns_buf)
{
free(dns_buf); //<2F>ͷ<EFBFBD>DNS<4E>ռ<EFBFBD>
dns_buf = NULL;
}
}
}
else if(ret == 2) //DNSʧ<53>ܽ<EFBFBD><DCBD><EFBFBD>ʹ<EFBFBD>ó<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ֵ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ip<69><70>ַ
{
server_info.dns_sta = DNS_INIT;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNS<EFBFBD><EFBFBD>ʱ");
server_info.net_sta = NET_DNS2;
DNS_num++;
if(DNS_num > 5)
{
DNS_num = 0;
server_info.net_sta = NET_TFTP;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNSʧ<EFBFBD><EFBFBD>");
}
}
}
break;
case NET_TFTP:
{
UINT8 ret = DnsQuery_Task(&net_info.SocketId[3], (UINT8*)tftp_log.DomainName, server_info.tftp_ip); /* DNS<4E><53>ѯ */
if(ret == 1) //DNS<4E><53>ѯ<EFBFBD>ɹ<EFBFBD>
{
server_info.dns_sta = DNS_INIT;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"Domain name:%s",tftp_log.DomainName);
Dbg_Println(DBG_BIT_NET_STATUS_bit," HTTPs_IP=%d.%d.%d.%d",server_info.tftp_ip[0], server_info.tftp_ip[1], server_info.tftp_ip[2], server_info.tftp_ip[3]);
if((server_info.tftp_ip[0] == 0x00) && (server_info.tftp_ip[1] == 0x00)) //<2F><>Ч<EFBFBD><D0A7>ַ
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNS <20><>Ч<EFBFBD><D0A7>ַ");
server_info.net_sta = NET_TFTP;
DNS_num++;
if(DNS_num > 5)
{
DNS_num = 0;
server_info.net_sta = NET_COMPLETE;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNSʧ<EFBFBD><EFBFBD>");
if(dns_buf)
{
free(dns_buf); //<2F>ͷ<EFBFBD>DNS<4E>ռ<EFBFBD>
dns_buf = NULL;
}
}
}else {
/*TFTP<54><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>*/
server_info.tftp_dns_flag = 0x01;
server_info.net_sta = NET_COMPLETE;
if(dns_buf)
{
free(dns_buf); //<2F>ͷ<EFBFBD>DNS<4E>ռ<EFBFBD>
dns_buf = NULL;
}
}
}
else if(ret == 2) //DNSʧ<53>ܽ<EFBFBD><DCBD><EFBFBD>ʹ<EFBFBD>ó<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ֵ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ip<69><70>ַ
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNS<EFBFBD><EFBFBD>ʱ");
//server_info.net_sta = NET_SOCKET;
server_info.dns_sta = DNS_INIT;
server_info.net_sta = NET_TFTP;
DNS_num++;
if(DNS_num > 5)
{
DNS_num = 0;
server_info.net_sta = NET_COMPLETE;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNSʧ<EFBFBD><EFBFBD>");
}
}
}
break;
case NET_COMPLETE:
Udp_Internal_Task(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
if(server_info.con_flag==0x01) //2023-05-27
{
if(SysTick_1s - server_info.con_tick > 10)
{
server_info.con_flag = 0x00;
server_info.con_tick = SysTick_1s;
server_info.init_flag = 0x00;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
}
if(server_info.init_flag == 0x00) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>MAC");
server_info.net_sta = NET_START_TO_INIT;
server_info.online_state = 0; //2023-10-07
DevActionGlobal.TimeSyncFlag = 0x00; //<2F><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2024-08-02
/*<2A>ͷ<EFBFBD><CDB7>׽<EFBFBD><D7BD><EFBFBD>*/
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD>ͷ<EFBFBD><EFBFBD>׽<EFBFBD><EFBFBD><EFBFBD>");
CH57xNET_SocketClose(net_info.SocketId[0],0x00);
if(IAPVarTypeStruct_Ptr != NULL)
{
if(IAPSTART == IAPVarTypeStruct_Ptr->IapState)
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"TFTP <20>ͷ<EFBFBD><CDB7>׽<EFBFBD><D7BD><EFBFBD>");
CH57xNET_SocketClose(net_info.SocketId[1],0x00);
CH57xNET_SocketClose(net_info.SocketId[2],0x00);
CH57xNET_CloseMac(); //<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
IAPVarTypeStruct_Ptr->IapState = IAPFINISH;
free(IAPVarTypeStruct_Ptr);
IAPVarTypeStruct_Ptr = NULL;
}
}
}
break;
default: break;
}
}
//2023-03-17
#if MQTT_EN
void Mqtt_Task()
{
switch(mqtt_info.mqtt_sta)
{
case MQTT_DNS:
{
if((mqtt_info.init_flag == 0x01)&&(server_info.net_sta == NET_COMPLETE)) //2023-06-19
{
UINT8 ret = DnsQuery_Task(&net_info.SocketId[3], (UINT8*)mqtt_info.domain_name, mqtt_info.des_ip); /* DNS<4E><53>ѯ */
if(ret == 1) //DNS<4E><53>ѯ<EFBFBD>ɹ<EFBFBD>
{
server_info.dns_sta = DNS_INIT;
Dbg_Print(DBG_BIT_NET_STATUS_bit,"Domain name:%s \n", mqtt_info.domain_name);
Dbg_Print(DBG_BIT_NET_STATUS_bit," HTTPs_IP=%d.%d.%d.%d\n\n",mqtt_info.des_ip[0], mqtt_info.des_ip[1], mqtt_info.des_ip[2], mqtt_info.des_ip[3]);
if((mqtt_info.des_ip[0] == 0x00) && (mqtt_info.des_ip[1] == 0x00)) //<2F><>Ч<EFBFBD><D0A7>ַ
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNS <20><>Ч<EFBFBD><D0A7>ַ");
mqtt_info.mqtt_sta = MQTT_DNS;
DNS_num++;
if(DNS_num > 5)
{
DNS_num = 0;
mqtt_info.mqtt_sta = MQTT_RCON;
Dbg_Print(DBG_BIT_NET_STATUS_bit,"DNSʧ<EFBFBD><EFBFBD> - \n");
if(dns_buf)
{
free(dns_buf); //<2F>ͷ<EFBFBD>DNS<4E>ռ<EFBFBD>
dns_buf = NULL;
}
}
}else {
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>*/
mqtt_info.mqtt_sta = MQTT_INIT;
if(dns_buf)
{
free(dns_buf); //<2F>ͷ<EFBFBD>DNS<4E>ռ<EFBFBD>
dns_buf = NULL;
}
}
}
else if(ret == 2) //DNSʧ<53>ܽ<EFBFBD><DCBD><EFBFBD>ʹ<EFBFBD>ó<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ֵ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ip<69><70>ַ
{
Dbg_Print(DBG_BIT_NET_STATUS_bit,"DNS<EFBFBD><EFBFBD>ʱ\n");
server_info.dns_sta = DNS_INIT;
mqtt_info.mqtt_sta = MQTT_DNS;
DNS_num++;
if(DNS_num > 5)
{
DNS_num = 0;
mqtt_info.mqtt_sta = MQTT_RCON;
Dbg_Print(DBG_BIT_NET_STATUS_bit,"DNSʧ<EFBFBD><EFBFBD> - \n");
}
}
}
}
break;
case MQTT_INIT:
Dbg_Print(DBG_BIT_NET_STATUS_bit,"mqtt_info.init_flag:%d",mqtt_info.init_flag);
if(mqtt_info.init_flag)
{
mqtt_info.mqtt_socket = Transport_Open(&mqtt_info, mqtt_info.des_ip, 49506); //49506
Dbg_Print(DBG_BIT_NET_STATUS_bit,"MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>%d.%d.%d.%d\n",mqtt_info.des_ip[0], mqtt_info.des_ip[1], mqtt_info.des_ip[2], mqtt_info.des_ip[3]);
Dbg_Print(DBG_BIT_NET_STATUS_bit,"mqtt_info.mqtt_socket<65><74>%d",mqtt_info.mqtt_socket);
mqtt_info.wait_cot = SysTick_10ms;
mqtt_info.mqtt_sta = MQTT_WAIT;
}
break;
case MQTT_WAIT:
if(mqtt_info.init_flag)
{
if(mqtt_info.con_flag == 0) //δ<><CEB4><EFBFBD><EFBFBD>
{
if(SysTick_10ms - mqtt_info.wait_cot > 500)
{
mqtt_info.wait_cot = SysTick_10ms;
Dbg_Print(DBG_BIT_NET_STATUS_bit,"MQTT<EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>ʱ\n");
if(mqtt_info.reconnect)
{
mqtt_info.reconnect--;
mqtt_info.mqtt_sta = MQTT_INIT;
CH57xNET_SocketClose(mqtt_info.mqtt_socket,SOCK_STAT_CLOSED );
Dbg_Print(DBG_BIT_NET_STATUS_bit,"MQTT<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...\n");
}
else
{
mqtt_info.mqtt_sta = MQTT_RCON; //ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>MQTT
#if 0 //
if(mqtt_info.domain_name)
{
free(mqtt_info.domain_name);
mqtt_info.domain_name = NULL;
}
if(mqtt_info.clientID)
{
free(mqtt_info.clientID);
mqtt_info.clientID = NULL;
}
if(mqtt_info.username)
{
free(mqtt_info.username);
mqtt_info.username = NULL;
}
if(mqtt_info.password)
{
free(mqtt_info.password);
mqtt_info.password = NULL;
}
if(mqtt_info.sub_topic)
{
free(mqtt_info.sub_topic);
mqtt_info.sub_topic = NULL;
}
if(mqtt_info.pub_topic)
{
free(mqtt_info.pub_topic);
mqtt_info.pub_topic = NULL;
}
#endif
Dbg_Print(DBG_BIT_NET_STATUS_bit,"MQTT2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>\n");
}
}
}
else
{
mqtt_info.mqtt_sta = MQTT_COMPLETE; //<2F><><EFBFBD>ӳɹ<D3B3>
}
}
// else if(mqtt_info2.init_flag)
// {
// if(mqtt_info2.con_flag == 0) //δ<><CEB4><EFBFBD><EFBFBD>
// {
// if(SysTick_10ms - server_info.wait_cot > 500)
// {
// server_info.wait_cot = SysTick_10ms;
// Dbg_Print(DBG_BIT_NET_STATUS_bit,"MQTT2<54><32><EFBFBD>ӳ<EFBFBD>ʱ\n");
//
// if(mqtt_info2.reconnect)
// {
// mqtt_info2.reconnect--;
// server_info.net_sta = NET_MQTT_INIT;
// CH57xNET_SocketClose(mqtt_info2.mqtt_socket, SOCK_STAT_CLOSED);
// Dbg_Print(DBG_BIT_NET_STATUS_bit,"MQTT2<54>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>...");
// }
// else
// {
// server_info.net_sta = NET_COMPLETE; //ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>MQTT
// mqtt_info2.init_flag = 0;
// Dbg_Print(DBG_BIT_NET_STATUS_bit,"MQTT2<54><32><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>");
// }
// }
// }
// else
// {
// server_info.net_sta = NET_COMPLETE; //<2F><><EFBFBD>ӳɹ<D3B3>
// mqtt_info2.init_flag = 0;
// }
// }
break;
case MQTT_COMPLETE:
MQTT_Receive_Processing();
break;
case MQTT_RCON:
mqtt_info.mqtt_cfail_num++;
// Dbg_Print(DBG_BIT_NET_STATUS_bit,"MQTT<54><54><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>%d\n",mqtt_info.mqtt_cfail_num);
CH57xNET_SocketClose(mqtt_info.mqtt_socket, TCP_CLOSE_RST );
// Dbg_Print(DBG_BIT_NET_STATUS_bit,"MQTT<54><54><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>,1׼<31><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%d",mqtt_info.mqtt_cfail_num);
if(SysTick_10ms - mqtt_info.wait_cot > 1000)
{
mqtt_info.wait_cot = SysTick_10ms;
mqtt_info.mqtt_sta = MQTT_DNS;
}
if(mqtt_info.mqtt_cfail_num>=4)
{
Dbg_Print(DBG_BIT_NET_STATUS_bit,"MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD><><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%d\n",mqtt_info.mqtt_cfail_num);
mqtt_info.mqtt_sta = MQTT_FAIL;
mqtt_info.wait_cot = SysTick_1s;
}
break;
case MQTT_FAIL:
if(SysTick_1s - mqtt_info.wait_cot > 600) // 600 10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
mqtt_info.wait_cot = SysTick_1s;
mqtt_info.mqtt_cfail_num = 0;
mqtt_info.mqtt_sta = MQTT_DNS;
Dbg_Print(DBG_BIT_NET_STATUS_bit,"MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
}
break;
default:
break;
}
}
#endif