1600 lines
57 KiB
C
1600 lines
57 KiB
C
|
|
/**
|
|||
|
|
******************************************************************************
|
|||
|
|
* @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
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|