fix:修改UDP通讯中,取电变化上报机制

1、问题点:当RCU网络状态异常的情况下,网络还处于协商状态下,还未进入正常通讯环节时,取电变化不会进行判断。这会导致取电变化上报与实际产生取电状态时间点对不上。
2、将BLV_C1F_Module代码上传至Gitea,之前代码修改记录请查看 .\BasicCode\Readme.txt
This commit is contained in:
caocong
2026-01-23 09:23:12 +08:00
commit 95916b9995
622 changed files with 1336094 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,526 @@
#ifndef _BLV_NET_FUNCTION_H_
#define _BLV_NET_FUNCTION_H_
#include "stdint.h"
#include "CH57x_common.h" //CH57X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD>
#include "BLV_Dev_Option.h"
#define RCU_NO_SERVER 0x00 //RCU<43>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD>
#define RCU_LOCAL_SERVER 0x01 //RCU<43><55><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
#define RCU_CLOUD_SERVER 0x02 //RCU<43>ƶ˷<C6B6><CBB7><EFBFBD><EFBFBD><EFBFBD>
#define FRAME_HEADER 2 //֡ͷ
#define FRAME_LEN 2 //֡<><D6A1>
#define SYSTEM_ID 4 //ϵͳID
#define CMD_CODE 1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define FLOOR_NUM 4 //¥<><C2A5><EFBFBD><EFBFBD>
#define FRAME_NO 2 //֡<><D6A1>
#define CRC_LEN 2 //У<><EFBFBD><E9B3A4>
#define SYSLOCK_LEN 1 //ϵͳ<CFB5><CDB3>
#define CARDTYPE_LEN 1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define DOOR_LEN 1 //<2F>Ŵ<EFBFBD>״̬
#define ELE_LEN 2 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define HOST_TEM_LEN 1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define FRAME_HEAD_OFFSET 0 //ͷλ<CDB7><CEBB> 0
#define FRAME_LEN_OFFSET 2 //֡<><D6A1>λ<EFBFBD><CEBB> 2
#define SYSTEM_ID_OFFSET 4 //ϵͳIDλ<44><CEBB> 4
#define CMD_OFFSET 8 //<2F><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> 8
#define FRAME_NO_OFFSET 9 //֡<><D6A1>λ<EFBFBD><CEBB> 9
#define FLOOR_NUM_OFFSET 11 //¥<><C2A5><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> 11
#define HEAD_LEN 15 //ͷ<><CDB7><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> 15
#define UDP_FRAME_MIN_LEN (HEAD_LEN + CRC_LEN)
#define USER_CODE 4 //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
#define SERVER_IF 1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
#define IP_ADDR 4 //IP<49><50>ַ
#define PORT_NUM 2 //<2F>˿ں<CBBF>
#define CRC_LEN 2 //У<><EFBFBD><E9B3A4>
#define RCU_SUBNET_MASK 4 //RCU<43><55><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define RCU_GATEWAY 4 //RCU<43><55><EFBFBD><EFBFBD>
#define RCU_PORT 2 //RCU<43>˿ں<CBBF>
#define RCU_MAC 6 //RCUMAC<41><43>ַ
#define RCU_SECRET_LEN 32 //RCU<43><55>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD>32<33>ֽ<EFBFBD>
#define RCU_SoftwareVer 20 //RCU<43>̼<EFBFBD><CCBC>
#define RCU_ConfigVer 3 //RCU<43><55><EFBFBD>ð汾<C3B0><E6B1BE>
#define FTPUSERNAME 1 //FTP <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>ռ<EFBFBD>õ<EFBFBD><C3B5>ֽ<EFBFBD>
#define FTPPASSWORD 1 //FTP <20><><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>ռ<EFBFBD>õ<EFBFBD><C3B5>ֽ<EFBFBD>
#define FTPFILENAME 1 //FTP <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>ռ<EFBFBD>õ<EFBFBD><C3B5>ֽ<EFBFBD>
#define FILE_TYPE 1
#define FILE_MD5 16 //<2F>ļ<EFBFBD>MD5ֵ<35><D6B5><EFBFBD><EFBFBD>
#define FILE_SIZE 4 //<2F>ļ<EFBFBD><C4BC><EFBFBD>С<EFBFBD><D0A1><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
#define BLOCK_NUM 2 //<2F><><EFBFBD><EFBFBD>С
#define STATUS 1 //״̬
#define DATATYPE_IAP 0x00 //<2F>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD>
#define DATATYPE_CONFIG 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define DATATYPE_UNDEFINED 0x02 //<2F><>Ч<EFBFBD><D0A7><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
#if (Restart_Address_EN==0x01) //ʹ<><CAB9><EFBFBD>߼<EFBFBD><DFBC>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> - ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>Ҫʹ<D2AA>ö<EFBFBD>Ӧ<EFBFBD>°<EFBFBD><C2B0><EFBFBD>Launcher<65><72><EFBFBD>У<EFBFBD><D0A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>Ŀά<C4BF><CEAC>
#define RUN_MAX_BLOCK 460 //app<70><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 20220611 - <20>޸<EFBFBD>APP<50><50><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>Ϊ230K
#else
#define RUN_MAX_BLOCK 432 //app<70><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#endif
#define CFG_MAX_BLOCK 850 //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define HEAD_SOFT_COM 0xa90ff0 //ͷ<><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD>
#define IAPSTART 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ
#define IAPFINISH 0x02 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IAPTIMEOUT 0x03 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
#define IAP_STATE_COMPLETE 0x01 //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
#define CLOUD_IAP_TFTP_STATE_COMPLETE 0x02 //<2F>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
#define CLOUD_IAP_FTP_STATE_COMPLETE 0x03 //<2F>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
#define IAPTFTPWRITE 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>tftp<74><70><EFBFBD><EFBFBD>
#define IAPTFTPREAD 0x02 //<2F>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>tftp<74>õ<EFBFBD>
#define IAPTFTPLOG 0x03 //<2F>ƶ<EFBFBD>дLOG
#define TFTPWRITESTART 0x01
#define TFTPREADSTART 0x02
#define TFTPWRITEJOURNAL 0X03
#define Search_Cmd 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define Search_Cmd_EnSure_Rev_Len (HEAD_LEN+CRC_LEN)
#define Search_Cmd_Rev_Len (HEAD_LEN + USER_CODE + SERVER_IF + IP_ADDR + PORT_NUM + CRC_LEN) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD><D5B3><EFBFBD>
#define Search_Cmd_Rev_UserCode (HEAD_LEN)
#define Search_Cmd_Rev_ClientIf (Search_Cmd_Rev_UserCode + USER_CODE)
#define Search_Cmd_Rev_ClientIp (Search_Cmd_Rev_ClientIf + SERVER_IF)
#define Search_Cmd_Rev_ClientPort (Search_Cmd_Rev_ClientIp + IP_ADDR)
#define Search_Cmd_Send_Len (HEAD_LEN + USER_CODE + RCU_SUBNET_MASK + RCU_GATEWAY + RCU_PORT + RCU_MAC + RCU_SoftwareVer + RCU_ConfigVer + CRC_LEN)
#define Search_Cmd_Send_UserCode (HEAD_LEN)
#define Search_Cmd_Send_Subnet (Search_Cmd_Rev_UserCode + USER_CODE)
#define Search_Cmd_Send_Gateway (Search_Cmd_Send_Subnet + RCU_SUBNET_MASK)
#define Search_Cmd_Send_Port (Search_Cmd_Send_Gateway + RCU_GATEWAY)
#define Search_Cmd_Send_Mac (Search_Cmd_Send_Port + RCU_PORT)
#define Search_Cmd_Send_SoftwareVer (Search_Cmd_Send_Mac + RCU_MAC)
#define Search_Cmd_Send_ConfigVer (Search_Cmd_Send_SoftwareVer + RCU_SoftwareVer)
#define Heart_Cmd 0x02
#define Heart_Cmd_Send_Len (HEAD_LEN + CRC_LEN)
#define IAP_Cmd 0x0A //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IAP_Ready 0x00 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IAP_Finish 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IAP_Error 0x02 //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7> //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IAP_Error_Block 0x03 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IAP_Error_File 0x04 //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
#define IAP_Error_MD5 0x05 //<2F><><EFBFBD><EFBFBD>MD5ֵ<35><D6B5><EFBFBD><EFBFBD>
#define IAP_Cmd_Rev_Len (HEAD_LEN + IP_ADDR + RCU_PORT + FILE_MD5 + BLOCK_NUM +CRC_LEN)
#define IAP_Cmd_Rev_Ip (HEAD_LEN) //λ<><CEBB> 15
#define IAP_Cmd_Rev_Port (IAP_Cmd_Rev_Ip + IP_ADDR) //λ<><CEBB> 19
#define IAP_Cmd_Rev_Md5 (IAP_Cmd_Rev_Port + RCU_PORT) //λ<><CEBB> 21
#define IAP_Cmd_Rev_Block (IAP_Cmd_Rev_Md5 + FILE_MD5) //λ<><CEBB> 37
#define IAP_Cmd_Send_Len (HEAD_LEN + STATUS + RCU_SoftwareVer + CRC_LEN)
#define IAP_Cmd_Send_State (HEAD_LEN)
#define IAP_Cmd_Send_SoftwareVer (IAP_Cmd_Send_State + STATUS)
#define Subgroup_Cmd 0xA2 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA><EFBFBD><EFBFBD>
#define CONFIG_Ready 0x00 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CONFIG_Finish 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CONFIG_Error 0x02 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CONFIG_Error_Block 0x03 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CONFIG_Error_File 0x04 //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
#define CONFIG_Error_Md5 0x05 //<2F><><EFBFBD><EFBFBD>MD5ֵ<35><D6B5><EFBFBD><EFBFBD>
#define CONFIG_Cmd_Rev_Len (HEAD_LEN + IP_ADDR + RCU_PORT + FILE_MD5 + BLOCK_NUM +CRC_LEN)
#define CONFIG_Cmd_Rev_Ip (HEAD_LEN + FILE_MD5_BLOCK_NUM)
#define CONFIG_Cmd_Rev_Port (HEAD_LEN + FILE_MD5_BLOCK_NUM + IP_ADDR)
#define CONFIG_Cmd_Send_Len (HEAD_LEN + STATUS + CRC_LEN)
#define CONFIG_Cmd_Send_State (HEAD_LEN)
#define CLOUD_IAP_Cmd 0x68
#define CLOUD_IAP_Ready 0x00
#define CLOUD_IAP_Finish 0x01
#define CLOUD_IAP_Error 0x02
#define CLOUD_IAP_Error_Block 0x03
#define CLOUD_IAP_Error_File 0x04
#define CLOUD_IAP_Error_Md5 0x05
//#define CLOUD_IAP_Cmd_Rev_Len (HEAD_LEN + IP_ADDR + RCU_PORT + FILE_MD5 + BLOCK_NUM + FILE_TYPE + FILE_NAME + CRC_LEN)
#define CLOUD_IAP_Cmd_Rev_Ip (HEAD_LEN) //λ<><CEBB> 15
#define CLOUD_IAP_Cmd_Rev_Port (CLOUD_IAP_Cmd_Rev_Ip + IP_ADDR) //λ<><CEBB> 19
#define CLOUD_IAP_Cmd_Rev_Md5 (CLOUD_IAP_Cmd_Rev_Port + RCU_PORT) //λ<><CEBB> 21
#define CLOUD_IAP_Cmd_Rev_Block (CLOUD_IAP_Cmd_Rev_Md5 + FILE_MD5) //λ<><CEBB> 37
#define CLOUD_IAP_Cmd_Rev_Filetype (CLOUD_IAP_Cmd_Rev_Block + BLOCK_NUM) //λ<><CEBB> 39
#define CLOUD_IAP_Cmd_Rev_Filename (CLOUD_IAP_Cmd_Rev_Filetype + FILE_TYPE) //λ<><CEBB> 40
#define CLOUD_IAP_Cmd_Send_Len (HEAD_LEN + STATUS + RCU_SoftwareVer + FILE_TYPE + CRC_LEN)
#define CLOUD_IAP_Cmd_Send_State (HEAD_LEN)
#define CLOUD_IAP_Cmd_Send_SoftwareVer (CLOUD_IAP_Cmd_Send_State + STATUS)
#define CLOUD_IAP_Cmd_Send_Filetype (CLOUD_IAP_Cmd_Send_SoftwareVer + RCU_SoftwareVer)
#define UDP_PackData 15
#define In_Set_RoomRent_Cmd 0x0C //<2F><><EFBFBD>÷<EFBFBD>̬
#define In_QueryTime_Cmd 0x08 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
//#define In_SyncTime_Cmf 0x0A //ͬ<><CDAC>ʱ<EFBFBD><CAB1>
#define In_RoomState_Cmd 0x0E //״̬<D7B4>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD> 2025-09-25 ȡ<><C8A1>
#define In_DevCtr_Cmd 0x0F //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ͵<C6BA><CDB5><EFBFBD>
#define In_SingleAirCtrl_Cmd 0x13 //<2F>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define In_Sys_Key_Cmd 0x24 //һ<><D2BB><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>
#define In_SetSecretKey_Cmd 0x28 //<2F><><EFBFBD><EFBFBD>MQTT<54><54>Կ
#define In_ReadSecretKey_Cmd 0x29 //<2F><>ȡMQTT<54><54>Կ
#define In_ReadRegister_Cmd 0x30 //<2F><>ȡӳ<C8A1><D3B3><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2021-07-13 <20><><EFBFBD><EFBFBD>
#define In_WriteRegister_Cmd 0x31 //<2F><><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2021-07-13 <20><><EFBFBD><EFBFBD>
#define In_Get_RoomRent_Cmd 0x32 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>̬<EFBFBD><CCAC>Ϣ 2025-09-09
#define In_Reboot_Reason_Cmd 0x33 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD> 2025-09-25 <20><><EFBFBD><EFBFBD>
#define In_PeriodicReport_Cmd 0x34 //<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD> 2025-09-25 <20><><EFBFBD><EFBFBD>
#define In_Power_Change_Cmd 0x35 //ȡ<><C8A1>״̬<D7B4>ϱ<EFBFBD> 2025-09-25 <20><><EFBFBD><EFBFBD>
#define In_DevState_Cmd 0x36 //<2F>豸״̬<D7B4>ϱ<EFBFBD> 2025-09-25 <20><><EFBFBD><EFBFBD>
#define In_Read_MCUSystem_Cmd 0xB1 //<2F><>ȡϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
#define In_BLVIAP_Cmd 0xB2 //BLV_Cx<43><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><41><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EEA3AC><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ִ<EFBFBD>е<EFBFBD>BLV_Cxϵ<78>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define In_BLVIAPCheck_Cmd 0xB3 //BLV_Cx<43><78><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define In_BLVIAPJump_Cmd 0xB4 //BLV_Cx<43><78>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
#define In_BLVIAPLogic_Cmd 0xB5 //BLV_Cx<43><78><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><41><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EEA3AC><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD>BLV_Cxϵ<78>е<EFBFBD><D0B5>߼<EFBFBD><DFBC>ļ<EFBFBD>
#define In_BLVIAPPlan_Cmd 0xB6 //BLV_Cx<43>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4>ϱ<EFBFBD>
#define In_BLVPCTest_Cmd 0xD1 //BLV-C1 PC<50><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>״̬ 2021-07-13 <20><><EFBFBD><EFBFBD>
#define In_BLVConfig_Cmd 0xD2 //BLV-C1<43><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>·<EFBFBD> 2025-10-09 ȡ<><C8A1>ʹ<EFBFBD><CAB9>
#define In_BLVPCTestDevice_Cmd 0xD3 //BLV-C1 PC<50><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2021-10-26 <20><><EFBFBD><EFBFBD>
#define In_BLVFlashInfoWrite_CMD 0xD4 //BLV-C1 Flashд<68><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2021-12-01 <09><><EFBFBD><EFBFBD>
#define In_BLVFlashInfoRead_CMD 0xD5 //BLV-C1 Flashд<68><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2021-12-01 <09><><EFBFBD><EFBFBD>
#define In_BLVQueryTFTPIP_CMD 0xD6 //<2F>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TFTP<54><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP
#define In_BLVRpDomainCtrl_Cmd 0xD7 //<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
#define In_BLVQueryCommonState_Cmd 0xD8 //ѯ<>ʹ<EFBFBD><CAB9><EFBFBD>״̬
#define In_BLVTFTPDomainName_Cmd 0xD9 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>RCU-TFTP<54><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define In_BLVTFTPDataRead_Cmd 0xDA //TFTP<54><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ȡ
#define In_BLVDayNightTimeSet_Cmd 0xDB //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD>Χ<E4B7B6><CEA7><EFBFBD><EFBFBD>
#define In_SeriaNet_Cmd 0x70 //͸<><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD>
#define In_SeriaNetReported_Cmd 0x71 //͸<><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
#define WriteRegister_Cmd_Send_Len 18 //<2F><>ͷ<EFBFBD><CDB7>15Byte+<2B><><EFBFBD>ݣ<EFBFBD>1Byte+CRC<52><43>2Byte
#define BLVConfig_Cmd_Send_Len 18 //<2F><>ͷ<EFBFBD><CDB7>15Byte+<2B><><EFBFBD>ݣ<EFBFBD>1Byte+CRC<52><43>2Byte
#define SeriaNet_Cmd_Send_Len 19 //<2F><>ͷ<EFBFBD><CDB7>15Byte+<2B><><EFBFBD>ݣ<EFBFBD>2Byte+CRC<52><43>2Byte
#define IAPPlan_State_Starting 0x01 //<2F><><EFBFBD><EFBFBD>״̬ - <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IAPPlan_State_Underway 0x02 //<2F><><EFBFBD><EFBFBD>״̬ - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IAPPlan_State_Checking 0x03 //<2F><><EFBFBD><EFBFBD>״̬ - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
#define IAPPlan_State_CheckSucc 0x04 //<2F><><EFBFBD><EFBFBD>״̬ - У<><D0A3><EFBFBD>ɹ<EFBFBD>,RCU<43><55><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define IAPPlan_State_IAPTimeout 0x05 //<2F><><EFBFBD><EFBFBD>״̬ - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
#define UDP_ActSend_PowerChange_Flag 0x01 //UDP<44><50><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> - ȡ<><C8A1>״̬<D7B4><20><>־λ
#define UDP_ActSend_DevState_Flag 0x02 //UDP<44><50><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> - <20>豸״̬<D7B4><20><>־λ
#define UDP_ActSend_Periodic_Flag 0x04 //UDP<44><50><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><>־λ
#define UDP_ActSend_Reboot_Flag 0x08 //UDP<44><50><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> - RCU<43><55><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD> <20><>־λ
#define UDP_ActSend_RoomState_Flag 0x10 //UDP<44><50><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> - <20><>ȡ<EFBFBD><C8A1>̬<EFBFBD><CCAC>Ϣ <20><>־λ
#define UDP_ActSend_TimeSync_Flag 0x20 //UDP<44><50><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> - ʱ<><CAB1>ͬ<EFBFBD><CDAC> <20><>־λ
#define UDP_ActSend_Heart_Flag 0x40 //UDP<44><50><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>־λ
/***************************************************************************************************/
//<2F><><EFBFBD>Թ滮<D4B9>ĵ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ʱҪ<CAB1><D2AA>֤<EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>С<EFBFBD><D0A1>512<31>ı<EFBFBD><C4B1><EFBFBD>
//Flash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش洢<D8B4><E6B4A2>ַ
#define Flash_IAP_FEATURE_ADDRESS 0x00000000 //Flash<73>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
//Flash APP<50><50><EFBFBD>ŵ<EFBFBD>ַ -- <20><>ֻ<EFBFBD><D6BB>д<EFBFBD><D0B4>ʱʹ<CAB1>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>FlashĬ<68>ϲ<EFBFBD><CFB2><EFBFBD>0x05000 ~ 0x3FFFF 2022-06-01<30>޸<EFBFBD>
#if (Restart_Address_EN==0x01) //<2F>°<EFBFBD><C2B0><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַΪ0x05000,<2C><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>Ŀά<C4BF><CEAC>
#define IAP_RUN_START_PAGE_ADDRESS_FALSH 0x05000 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼҳ<CABC><D2B3>ַ - flash
#else
#define IAP_RUN_START_PAGE_ADDRESS_FALSH 0x08000 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼҳ<CABC><D2B3>ַ - flash
#endif
#define IAP_RUN_END_PAGE_ADDRESS_FALSH 0x3E7FF //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹҳ<D6B9><D2B3>ַ - flash
//Flash APP<50><50><EFBFBD>õ<EFBFBD>ַ -- <20><EFBFBD><E8B1B8><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> 32K 2021-07-13
#define FLASH_CONFIG_DeviceSize 240 //һ<><D2BB><EFBFBD><EFBFBD><E8B1B8><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>СΪ240Byte
#define FLASH_CONFIG_FILE_ADDRESS 0x80000 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ŵ<EFBFBD>ַ
#define FLASH_CONFIG_DataSize_ADDRESS 0x80000 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
#define FLASH_CONFIG_RUN_START_ADDRESS 0x80100 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼҳ<CABC><D2B3>ַ - flash
#define FLASH_CONFIG_RUN_END_ADDRESS 0x87FFF //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹҳ<D6B9><D2B3>ַ - flash
#define FLASH_Register_Start_ADDRESS 0x88000 //<2F><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ֵ - <20><>ʼ<EFBFBD><CABC>ַ
#define FLASH_Register_End_ADDRESS 0x887FF //<2F><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ֵ - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
#define LOGIC_DataFlag 0xCC060001 //<2F>߼<EFBFBD><DFBC><EFBFBD>־
#define FLASH_LOGIC_FILE_ADDRESS 0x090000
#define FLASH_LOGIC_DataFlag_ADDRESS 0x090000 //<2F>ļ<EFBFBD><C4BC><EFBFBD>־λ - 4Byte
#define FLASH_LOGIC_DataSize_ADDRESS 0x090004 //<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> - 4Byte
#define FLASH_LOGIC_DataMD5_ADDRESS 0x090008 //<2F>ļ<EFBFBD>MD5У<35><D0A3>ֵ - 16Byte
#define FLASH_LOGIC_DataStart_ADDRESS 0x090200
#define FLASH_LOGIC_DataEnd_ADDRESS 0x0FFFFF
//SRAM<41><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش洢<D8B4><E6B4A2>ַ
#define SRAM_IAP_APP_FILE_ADDRESS 0x00050000 //SRAM<41>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>APP<50>ļ<EFBFBD><C4BC>ĵ<EFBFBD>ַ - 218K
//#define SRAM_IAP_CONFIG_FILE_ADDRESS 0x00086600 //SRAM<41>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CONFIG<49>ļ<EFBFBD>ͷ<EFBFBD>ĵ<EFBFBD>ַ - 32K <20><><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޹أ<DEB9><D8A3><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ʹ<EFBFBD>ã<EFBFBD>
//#define SRAM_IAP_CONFIG_DataSize_ADDRESS 0x00086600 //SRAM<41>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CONFIG<49>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3>ȵĵ<C8B5>ַ
//#define SRAM_IAP_CONFIG_START_ADDRESS 0x00086700 //SRAM<41>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CONFIG<49>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2>ʼ<EFBFBD><CABC>ַ
//#define SRAM_IAP_CONFIG_END_ADDRESS 0x0008E5FF //SRAM<41>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CONFIG<49>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
#define SRAM_IAP_IP_ADDRESS 0x0008E600 //SRAM<41>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>IP - 4Byte <09><>ʱ<EFBFBD><CAB1>UDP<44><50>ַ<EFBFBD><D6B7><EFBFBD>ſռ<D5BC><E4A3AC><EFBFBD><EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD>͸<EFBFBD><CDB8>UDP<44><50>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
#define SRAM_IAP_PORT_ADDRESS 0x0008E604 //SRAM<41>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>prot - 2Byte <09><>ʱ<EFBFBD><CAB1>UDP<44><50>ַ<EFBFBD><D6B7><EFBFBD>ſռ<D5BC><E4A3AC><EFBFBD><EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD>͸<EFBFBD><CDB8>UDP<44><50>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
#define SRAM_IAP_NET_UPGRADE_Flag_ADDRESS 0x0008E606 //SRAM<41>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ - 1Byte
#define SRAM_IAP_UPGRADE_Reply_NUM_ADDRESS 0x0008E607 //SRAM<41>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><C9BA><EFBFBD>APP<50><50>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> - 1Byte
//SRAM<41>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ش洢<D8B4><E6B4A2>ַ <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> 448K 2022-04-17 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>0x00380000 ~ 0x003FFFFF 512K<32><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Flash<73><68>û<EFBFBD><C3BB>512K<32>ռ䣬ֻ<E4A3AC><D6BB>448K<38>ռ<EFBFBD>
#define SRAM_IAP_LOGIC_FILE_ADDRESS 0x00390000 //SRAM<41><4D><EFBFBD>߼<EFBFBD><DFBC>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׵<EFBFBD>ַ
#define SRAM_IAP_LOGIC_DataFlag_ADDRESS 0x00390000 //<2F>ļ<EFBFBD><C4BC><EFBFBD>־λ - 4Byte
#define SRAM_IAP_LOGIC_DataSize_ADDRESS 0x00390004 //<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> - 4Byte
#define SRAM_IAP_LOGIC_DataMD5_ADDRESS 0x00390008 //<2F>ļ<EFBFBD>MD5У<35><D0A3>ֵ - 16Byte
#define SRAM_IAP_LOGIC_DataStart_ADDRESS 0x00390200
#define SRAM_IAP_LOGIC_DataEnd_ADDRESS 0x003FFFFF
//<2F><>Ŀ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD>
#define SRAM_Register_Start_ADDRESS 0x0008E900
#define SRAM_Register_End_ADDRESS 0x0008EFFF
#define Register_OFFSET_LEN 0x0400 //<2F><>ǰ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>ռ<D5BC><E4B3A4> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><E2B3A4>ҲӦ<D2B2>ñ仯
//<2F><>Ŀ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ƫ<EFBFBD>Ƶ<EFBFBD>ַ
#define Register_NetIP_OFFSET 0x0000 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ - DHCP<43><50><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>֮<EFBFBD>󣬻<EFBFBD>DHCPʧ<50><CAA7>֮<EFBFBD><D6AE> ʹ<>õ<EFBFBD>IP<49><50>ַ - PC<50><43><EFBFBD><EFBFBD>MCUĬ<55><C4AC>IP
#define Register_NetPort_OFFSET 0x0004 //<2F><><EFBFBD><EFBFBD>ͨѶ<CDA8>˿<EFBFBD> - PC<50><43><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
#define Register_NetMask_OFFSET 0x0008 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - PC<50><43><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
#define Register_NetGateway_OFFSET 0x000C //<2F><><EFBFBD><EFBFBD> - PC<50><43><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
#define Register_DNSServerIP_OFFSET 0x0010 //DNS<4E><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ - PC<50><43><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
#define Register_NETMACKADDR_OFFSET 0x0014 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MACK<43><4B>ַ
#define Register_WebServerIP_OFFSET 0x0018 //<2F>ƶ˷<C6B6><CBB7><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ - PC<50><43><EFBFBD>õ<EFBFBD><C3B5>ƶ<EFBFBD>IP<49><50>ַ
#define Register_WebServerPort_OFFSET 0x001C //<2F>ƶ˷<C6B6><CBB7><EFBFBD><EFBFBD><EFBFBD>ͨѶ<CDA8>˿<EFBFBD> - 2025-10-11 <20><><EFBFBD><EFBFBD>
#define Register_MandateExpiresTime_OFFSET 0x0020 //MCU<43><55>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> - <20><>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD>
#define Register_CurrentUsageTime_OFFSET 0x0024 //MCU<43><55>ǰʱ<C7B0><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define Register_MandateUTC_OFFSET 0x0028 //<2F><>Ȩʱ<C8A8><CAB1> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩʱ<C8A8>ĵ<EFBFBD>ǰUTCʱ<43><CAB1>
#define Register_MandateLock_OFFSET 0x002C //<2F><>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD>
#define Register_NetInfo_EN_OFFSET 0x0030 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ܣ<EFBFBD>DHCPʹ<50><CAB9> - 1Byte<74><65><EFBFBD><EFBFBD>ʾDHCPʹ<50><CAB9> 1Byte<74>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ΪĬ<CEAA><C4AC>IP<49><50>ַ - PC<50><43><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
#define Register_NetOfflineTime_OFFSET 0x0034 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʱ<EFBFBD><CAB1> - 4Byte <09><>λ<EFBFBD><CEBB>ms 2025-10-11
#define Register_ProjectCode_OFFSET 0x0038 //<2F><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>
#define Register_SoftwareVersion_OFFSET 0x003C //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE> - <20>̼<EFBFBD><CCBC><EFBFBD><E6B1BE>
#define Register_ConfigVersion_OFFSET 0x0040 //<2F><><EFBFBD>ð汾<C3B0><E6B1BE>
#define Register_RoomNumber_OFFSET 0x0044 //<2F><><EFBFBD><EFBFBD>
#define Register_HouseType_OFFSET 0x0048 //<2F><><EFBFBD><EFBFBD>
#define Register_RoomRent_OFFSET 0x004C //<2F><>̬<EFBFBD><CCAC>Ϣ - <20><><EFBFBD><EFBFBD>״̬
#define Register_SeasonStatus_OFFSET 0x0050 //<2F><><EFBFBD><EFBFBD>״̬
#define Register_TFTPStatus_OFFSET 0x0054 //TFTP<54><50>־<EFBFBD><D6BE><EFBFBD><EFBFBD> 4Byte
#define Register_TFTPUploadTime_OFFSET 0x0058 //TFTP<54><50>־<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> 4Byte
#define Register_BLVServerDmLen_OFFSET 0x005C //BLV<4C><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4Byte
#define Register_BLVServerDmName_OFFSET 0x0060 //BLV<4C><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 64Byte
#define Register_UDPPeriodicTime_OFFSET 0x00A0 //UDPͨѶ <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4Byte <09><>λ:ms 2025-10-11
#define Register_RoomNumNote_OFFSET 0x0100 //<2F><><EFBFBD>ű<EFBFBD>ע<EFBFBD><D7A2>Ϣ<EFBFBD><CFA2><EFBFBD>ŵ<EFBFBD>ַ<EFBFBD>ռ<EFBFBD> - 16Byte
#define Register_RoomTypeNote_OFFSET 0x0110 //<2F><><EFBFBD>ͱ<EFBFBD>ע<EFBFBD><D7A2>Ϣ<EFBFBD><CFA2><EFBFBD>ŵ<EFBFBD>ַ<EFBFBD>ռ<EFBFBD> - 16Byte
#define Register_RoomNote_OFFSET 0x0120 //<2F><><EFBFBD>䱸ע<E4B1B8><D7A2>Ϣ<EFBFBD><CFA2><EFBFBD>ŵ<EFBFBD>ַ<EFBFBD>ռ<EFBFBD> - 96Byte
#define Register_TFTPLOGPort_OFFSET 0x0180 //TFTP<54><50>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD> - 2Byte 2024-04-08
#define Register_TFTPLOGTime_OFFSET 0x0182 //TFTP<54><50>־<EFBFBD>ϴ<EFBFBD>ʱ<EFBFBD><CAB1> - 2Byte 2024-04-08
#define Register_TFTPDmLens_OFFSET 0x0184 //TFTP<54><50>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 1Byte 2024-04-08
#define Register_TFTPDmName_OFFSET 0x0185 //TFTP<54><50>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 255Byte 2024-04-08
//APP Flag
#define App_Procedure_Ready 0x66
#define App_Procedure_Not_Ready 0x44
#define App_CRC_Size 2048 //App CRC У<><D0A3><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>С
/*APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ - 512Byte*/
typedef enum{
F_App_Check = 0x00, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD> 2Byte
F_App_Flag = 0x02, //APP Flag<61><67>־ 1Byte
F_App_Vendor_ID = 0x03, //<2F><><EFBFBD>̱<EFBFBD><CCB1><EFBFBD> Vendor ID 2Byte
F_App_Product_ID = 0x05, //<2F><>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD> Product ID 2Byte
F_App_Product_Name = 0x07, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 16Byte
F_App_House_Type = 0x17, //<2F>Ƶ껧<C6B5><EABBA7> 4Byte
F_App_Version = 0x1B, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE> 4byte
F_App_Start_Addr = 0x1F, //APP <20><>ʼ<EFBFBD><CABC>ַ 4byte
F_App_End_Addr = 0x23, //APP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ 4Byte
F_App_CRC_Len = 0x27, //APP CRC Len 2Byte
F_App_CRC = 0x29, //APP Flash CRC <09><><EFBFBD><EFBFBD>471Byte
}FLASH_FEATURE_E;
/*Config<69><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ - 240Byte*/
typedef enum{
F_Config_Type = 0x00, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0x00:<3A><EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0x01:<3A><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
F_Config_DevType, //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
F_Config_DevAddr, //<2F><EFBFBD><E8B1B8>ַ
F_Config_DevBaud, //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
F_Config_DevPort, //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
F_Config_DevAgre, //<2F>豸Э<E8B1B8><D0AD>
F_Config_Retain, //<2F><><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD> - 64Byte
F_Config_Name = 0x46, //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD> - 16Byte
F_Config_Alias = 0x56, //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD> - 16Byte
F_Config_Remark = 0x66, //<2F><>ע - 138Byte
}FLASH_CONFIG_E;
/******************************************************************************************************/
/*TFTP <20><><EFBFBD><EFBFBD>LOG<4F><47><EFBFBD>ض<EFBFBD><D8B6><EFBFBD>*/
#define TFTP_Destination_Port 69 //TFTP<54><50><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
#define TFTP_LOG_Local_Port 65500 //TFTP LOG<4F><47><EFBFBD><EFBFBD>ض˿<D8B6>
#define DOMAINNAME_MAX 100 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB3A4><EFBFBD><EFBFBD>
typedef struct
{
uint16_t Port; //TFTP LOG<4F><47><EFBFBD><EFBFBD>ض˿<D8B6>
uint16_t Time; //<2F><>־<EFBFBD>ϱ<EFBFBD>ʱ<EFBFBD><CAB1>
uint8_t DN_Lens; //TFTP<54><50>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char DomainName[DOMAINNAME_MAX]; //TFTP<54><50>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}__attribute__ ((__packed__))TFTP_LOG;
typedef struct
{
uint8_t DN_Lens; //RCU <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char DomainName[DOMAINNAME_MAX]; //RCU <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}__attribute__ ((__packed__))RCU_DOMAIN_T;
/******************************************************************************************************/
#define NET_REV_LEN 530
#define dat_buf_size 128
#define TFTP_IAP_Timeout 30000
#define TFTP_LOG_Exceed_Size 4096 //<2F><>־<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>1 - <20>޶<EFBFBD><DEB6><EFBFBD>С
#define TFTP_LOG_Exceed_Time 7200 //<2F><>־<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>2 - <20>޶<EFBFBD>ʱ<EFBFBD><CAB1>
typedef struct
{
uint8_t IapFileType:2; //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD>0<EFBFBD>ǹ̼<C7B9> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t TftpStart:2; //tftp<74><70>ʼ 1д 2<><32>
uint8_t IapState:2; //<2F><><EFBFBD><EFBFBD>״̬ <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t IapType:2; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t NewIapFlag; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̱<EFBFBD>־λ - 2022-01-05
uint8_t IapErrFlag; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
uint8_t IapPercent; //<2F><><EFBFBD><EFBFBD>ռ<EFBFBD>õİٷֱ<D9B7>
uint8_t FtpFileNameLen; //<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t FtpFileName[dat_buf_size]; //<2F>ļ<EFBFBD><C4BC><EFBFBD>
uint8_t Md5[16]; //MD5ֵ
uint16_t TFTP_Port;
uint16_t BlockSize; //<2F><><EFBFBD><EFBFBD>С
uint16_t Write_Block; //д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32_t FlashWriteAddress; //<2F><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ĵ<EFBFBD>ַ
uint32_t TotalCount; //<2F>ļ<EFBFBD><C4BC>ܴ<EFBFBD>С
uint32_t WriteCount; //<2F>ļ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>С
uint32_t processing_tick; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
}__attribute__ ((__packed__))IAPVarTypeStruct; //<2F><><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>һЩ<D2BB><D0A9><EFBFBD><EFBFBD>
#define TFTP_DATA_LEN_MAX 517
#define TFTP_OPCODE_LEN 2
#define TFTP_BLKNUM_LEN 2
#define TFTP_DATA_PKT_HDR_LEN (TFTP_OPCODE_LEN + TFTP_BLKNUM_LEN)
#define TFTP_ERR_PKT_HDR_LEN (TFTP_OPCODE_LEN + TFTP_ERRCODE_LEN)
#define TFTP_ACK_PKT_LEN (TFTP_OPCODE_LEN + TFTP_BLKNUM_LEN)
#define TFTP_DATA_PKT_LEN_MAX (TFTP_DATA_PKT_HDR_LEN + TFTP_DATA_LEN_MAX)
#define TFTP_MAX_RETRIES 3
#define TFTP_TIMEOUT_INTERVAL 5
#define TFTP_READ_PKT_LEN 4
typedef struct
{
uint8_t op; /*WRQ */
/* last block read */
uint8_t data[TFTP_DATA_LEN_MAX];
unsigned long data_len;
/* destination ip:port */
uint8_t to_ip[4];
int to_port;
/* next block number */
int block;
/* total number of bytes transferred */
int tot_bytes;
/* timer interrupt count when last packet was sent */
/* this should be used to resend packets on timeout */
unsigned long long last_time;
uint8_t retry_num;
}tftp_connection_args;
enum UDP_INTERNAL_STA{
STA_INIT = 0,
STA_INIT_WAIT = 1,
STA_INIT_IDLE = 2,
STA_Realy_Upgrade = 3,
STA_INIT_CONNECT,
STA_LOG,
STA_SEND_WAIT,
STA_SEND_LOG,
STA_SEND_RETRY,
STA_END,
};
typedef enum {
TFTP_RRQ = 1,
TFTP_WRQ = 2,
TFTP_DATA = 3,
TFTP_ACK = 4,
TFTP_ERROR = 5,
TFTP_OPTION = 6,
} tftp_opcode;
extern IAPVarTypeStruct* IAPVarTypeStruct_Ptr;
extern uint8_t TFTP_LOG_sta;
extern uint32_t ProjectCode;
extern UINT8 Versions[4];
extern uint16_t sever_port;
void UDP_ADD_SoftwareVer(uint8_t *data);
void UDP_ADD_ConfigVer(uint8_t *data);
void UDP_Add_Header(uint8_t *data,uint8_t cmd,uint16_t length, uint16_t frame_no);
void UDP_Add_ServerIp(uint8_t *data);
void UDP_Add_Subnet(uint8_t *data);
void UDP_Add_Gateway(uint8_t *data);
void UDP_Add_Mac(uint8_t *data);
void UDP_Add_Model(uint8_t *data);
void UDP_Add_Port(uint8_t *data);
uint8_t Udp_Internal_Subgroup(uint8_t* data, uint16_t DataLen, uint8_t*ip, uint16_t port);
uint8_t Udp_Internal_IAP(uint8_t* data,uint16_t DataLen, uint8_t *ip,uint16_t port);
uint8_t UDP_CLOUD_IAP_Cmd(uint8_t* data,uint16_t DataLen, uint8_t *ip,uint16_t port);
uint8_t Udp_Internal_ReplyIAP(void);
void UDP_Search_Ack(void);
void UDP_Heart_Send(void);
void Udp_Internal_Reboot_Reason_Report_CMD(void);
void Udp_Internal_Power_Change_Report_CMD(void);
void Udp_Internal_GetTime_CMD(void);
void Udp_Internal_GetRoomRent_CMD(void);
uint8_t Udp_Internal_GetTime_Process(uint8_t *data, uint16_t DataLen, uint8_t *ip,uint16_t port);
uint8_t Udp_Internal_Process_Ack(uint8_t cmd,uint16_t frame_no,uint8_t *ip,uint16_t port);
uint8_t Udp_Internal_Search(uint8_t* data, uint16_t DataLen, uint8_t *ip,uint16_t port);
uint8_t Udp_Internal_PC_Testing_Reply(uint8_t *reply_data,uint16_t reply_len,uint16_t pack_frame,uint8_t *ip,uint16_t port);
uint8_t Udp_Internal_PC_Testing_Reported(uint8_t *reply_data,uint16_t reply_len,uint8_t *ip,uint16_t port);
uint8_t Udp_Internal_PC_Testing_DataDeal(uint8_t* data, uint16_t DataLen, uint8_t *ip,uint16_t port);
uint8_t Udp_Internal_BLVPCTestDevice_Process(uint8_t* data, uint16_t DataLen, uint8_t *ip,uint16_t port);
uint32_t UDP_Conversion_Baud(uint8_t data);
uint8_t UDP_Baud_Conversion_Data(uint32_t data);
uint8_t Udp_Internal_SeriaNet_Process(uint8_t* data, uint16_t DataLen, uint8_t *ip,uint16_t port);
uint8_t Udp_Internal_SeriaNet_Uploading(uint8_t port,uint32_t baud,uint32_t data_addr);
uint8_t Udp_Internal_SeriaNet_Uploading2(uint8_t port,uint32_t baud,uint8_t* data, uint16_t DataLen);
uint8_t Udp_Internal_SeriaNet_Response_Timeout(void);
uint8_t Udp_Internal_Set_MQTT_SecretKey_Process(uint8_t* data, uint16_t DataLen, uint8_t *ip,uint16_t port);
uint8_t Udp_Internal_Read_MQTT_SecretKey_Process(uint8_t* data, uint16_t DataLen, uint8_t *ip,uint16_t port);
uint8_t Udp_Internal_Write_FlashInfo_Process(uint8_t* data, uint16_t DataLen, uint8_t *ip,uint16_t port);
uint8_t Udp_Internal_Read_FlashInfo_Process(uint8_t* data, uint16_t DataLen, uint8_t *ip,uint16_t port);
void Udp_Internal_Analysis(UINT8 *data, UINT32 len, uint8_t* ip, uint16_t port);
uint8_t Udp_Internal_BLVIAP(uint8_t* data,uint16_t DataLen, uint8_t *ip,uint16_t port);
uint8_t Udp_Internal_BLVIAPCheck_Process(uint8_t* data,uint16_t DataLen, uint8_t *ip,uint16_t port);
uint8_t Udp_Internal_BLVIAPJUMP_Process(uint8_t* data,uint16_t DataLen, uint8_t *ip,uint16_t port);
void TFTP_CMD_Analysis(UINT8 *data, UINT32 len, uint8_t* ip, uint16_t port);
void TFTP_FILE_Analysis(UINT8 *data, UINT32 len, uint8_t* ip, uint16_t port);
void Udp_Internal_Task(void);
#endif

448
BasicCode/Drive/NET/DNS.c Normal file
View File

@@ -0,0 +1,448 @@
#include "DNS.h"
#include "CH57xNET.H"
#include "DBG.h"
#define CH57xNET_DBG 1
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
UINT8 DNS_SERVER_IP[4]={223,5,5,5}; /* DNS<4E><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1 */
UINT8 DNS_SERVER_IP2[4]={114,114,114,114}; /* DNS<4E><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2 */
#define IPPORT_DOMAIN 53 /* DNSĬ<53>϶˿<CFB6> */
UINT16 MSG_ID = 0x1100; /* <20><>ʶ */
//UINT32 count = 0;
//UINT8 dns_buf[MAX_DNS_BUF_SIZE];
UINT8* dns_buf = NULL;
//UINT8 url_dn4[] = "www.boonlive-rcu.com";
/*******************************************************************************
* Function Name : get16
* Description : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UINT8<54><38><EFBFBD><EFBFBD>תΪUINT16<31><36>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
* Input : s -UINT8<54><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Output : None
* Return : ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UINT16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
UINT16 get16(UINT8 * s)
{
UINT16 i;
i = *s++ << 8;
i = i + *s;
return i;
}
/*******************************************************************************
* Function Name : ParseName
* Description : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input : msg -ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ָ<EFBFBD><D6B8>
compressed -ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
buf -<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EBA3AC><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Output : None
* Return : ѹ<><D1B9><EFBFBD><EFBFBD><EFBFBD>ĵij<C4B5><C4B3><EFBFBD>
*******************************************************************************/
int ParseName(UINT8 * msg, UINT8 * compressed, char * buf)
{
UINT16 slen; /* <20><>ǰƬ<C7B0>γ<EFBFBD><CEB3><EFBFBD>*/
UINT8 * cp;
int clen = 0; /* ѹ<><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
int indirect = 0;
int nseg = 0; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
cp = compressed;
for (;;){
slen = *cp++; /* <20><><EFBFBD>ֽڵļ<DAB5><C4BC><EFBFBD>ֵ*/
if (!indirect) clen++;
if ((slen & 0xc0) == 0xc0){ /* <20><><EFBFBD><EFBFBD><EFBFBD>ֽڸ<D6BD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ1<CEAA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>ʽ */
if (!indirect) clen++;
indirect = 1;
cp = &msg[((slen & 0x3f)<<8) + *cp]; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ֵָ<D6B5><D6B8>ƫ<EFBFBD>Ƶ<EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB> */
slen = *cp++;
}
if (slen == 0) break; /* <20><><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
if (!indirect) clen += slen;
while (slen-- != 0) *buf++ = (char)*cp++;
*buf++ = '.';
nseg++;
}
if (nseg == 0){
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; */
*buf++ = '.';
}
*buf++ = '\0';
return clen; /* ѹ<><D1B9><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD> */
}
/*******************************************************************************
* Function Name : DnsQuestion
* Description : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
* Input : msg -ָ<><D6B8><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ĵ<EFBFBD>ָ<EFBFBD><D6B8>
cp -ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>ָ<EFBFBD><D6B8>
* Output : None
* Return : ָ<><D6B8><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>¼<EFBFBD><C2BC>ָ<EFBFBD><D6B8>
*******************************************************************************/
UINT8 * DnsQuestion(UINT8 * msg, UINT8 * cp)
{
int len;
char name[MAX_DNS_BUF_SIZE];
len = ParseName(msg, cp, name);
cp += len;
cp += 2; /* <20><><EFBFBD><EFBFBD> */
cp += 2; /* <20><> */
return cp;
}
/*******************************************************************************
* Function Name : DnsAnswer
* Description : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>еĻش<C4BB><D8B4><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
* Input : msg -ָ<><D6B8><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ĵ<EFBFBD>ָ<EFBFBD><D6B8>
cp -ָ<><D6B8><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>¼<EFBFBD><C2BC>ָ<EFBFBD><D6B8>
psip
* Output : None
* Return :ָ<><D6B8><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>¼<EFBFBD><C2BC>ָ<EFBFBD><D6B8>
*******************************************************************************/
UINT8 * DnsAnswer(UINT8 * msg, UINT8 * cp, UINT8 * pSip)
{
int len, type;
char name[MAX_DNS_BUF_SIZE];
len = ParseName(msg, cp, name);
cp += len;
type = get16(cp);
cp += 2; /* <20><><EFBFBD><EFBFBD> */
cp += 2; /* <20><> */
cp += 4; /* <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> */
cp += 2; /* <20><>Դ<EFBFBD><D4B4><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> */
switch ( type ){
case TYPE_A:
pSip[0] = *cp++;
pSip[1] = *cp++;
pSip[2] = *cp++;
pSip[3] = *cp++;
break;
case TYPE_CNAME:
case TYPE_MB:
case TYPE_MG:
case TYPE_MR:
case TYPE_NS:
case TYPE_PTR:
len = ParseName(msg, cp, name);
cp += len;
break;
case TYPE_HINFO:
case TYPE_MX:
case TYPE_SOA:
case TYPE_TXT:
break;
default:
break;
}
return cp;
}
/*******************************************************************************
* Function Name : parseMSG
* Description : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD>Դ<EFBFBD><D4B4>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
* Input : msg -ָ<><D6B8>DNS<4E><53><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
cp -ָ<><D6B8><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ĵ<EFBFBD>ָ<EFBFBD><D6B8>
* Output : None
* Return :<3A>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD>0
*******************************************************************************/
UINT8 parseMSG(struct dhdr * pdhdr, UINT8 * pbuf, UINT8 * pSip)
{
UINT16 tmp;
UINT16 i;
UINT8 * msg;
UINT8 * cp;
msg = pbuf;
memset(pdhdr, 0, sizeof(*pdhdr));
pdhdr->id = get16(&msg[0]);
tmp = get16(&msg[2]);
if (tmp & 0x8000) pdhdr->qr = 1;
pdhdr->opcode = (tmp >> 11) & 0xf;
if (tmp & 0x0400) pdhdr->aa = 1;
if (tmp & 0x0200) pdhdr->tc = 1;
if (tmp & 0x0100) pdhdr->rd = 1;
if (tmp & 0x0080) pdhdr->ra = 1;
pdhdr->rcode = tmp & 0xf;
pdhdr->qdcount = get16(&msg[4]);
pdhdr->ancount = get16(&msg[6]);
pdhdr->nscount = get16(&msg[8]);
pdhdr->arcount = get16(&msg[10]);
/* <20><><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3>Ȳ<EFBFBD><C8B2><EFBFBD>*/
cp = &msg[12];
/* <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD> */
for (i = 0; i < pdhdr->qdcount; i++)
{
cp = DnsQuestion(msg, cp);
}
/* <20>ش<EFBFBD> */
for (i = 0; i < pdhdr->ancount; i++)
{
cp = DnsAnswer(msg, cp, pSip);
}
/*<2A><>Ȩ */
for (i = 0; i < pdhdr->nscount; i++)
{
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/ ;
}
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ */
for (i = 0; i < pdhdr->arcount; i++)
{
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/ ;
}
if(pdhdr->rcode == 0) return 1; /* rcode = 0:<3A>ɹ<EFBFBD> */
else return 0;
}
/*******************************************************************************
* Function Name : put16
* Description :UINT16 <20><>ʽ<EFBFBD><CABD><EFBFBD>ݰ<EFBFBD>UINT8<54><38>ʽ<EFBFBD><EFBFBD><E6B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input : s -<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׵<EFBFBD>ַ
i -UINT16<31><36><EFBFBD><EFBFBD>
* Output : None
* Return : ƫ<><C6AB>ָ<EFBFBD><D6B8>
*******************************************************************************/
UINT8 * put16(UINT8 * s, UINT16 i)
{
*s++ = i >> 8;
*s++ = i;
return s;
}
/*******************************************************************************
* Function Name : MakeDnsQuery
* Description : <20><><EFBFBD><EFBFBD>DNS<4E><53>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
input : op - <20>ݹ<EFBFBD>
* name - ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
* buf - DNS<4E><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
* len - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󳤶<EFBFBD>.
* Output : None
* Return : ָ<><D6B8>DNS<4E><53><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
*******************************************************************************/
UINT16 MakeDnsQueryMsg(UINT16 op, char * name, UINT8 * buf, UINT16 len)
{
UINT8 *cp;
char *cp1;
char tmpname[MAX_DNS_BUF_SIZE];
char *dname;
UINT16 p;
UINT16 dlen;
//printf("Domain name:%s \n",name);
cp = buf;
MSG_ID++;
cp = put16(cp, MSG_ID); /* <20><>ʶ */
p = (op << 11) | 0x0100;
cp = put16(cp, p); /* 0x0100<30><30>Recursion desired */
cp = put16(cp, 1); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1 */
cp = put16(cp, 0); /* <20><>Դ<EFBFBD><D4B4>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>0 */
cp = put16(cp, 0); /* <20><>Դ<EFBFBD><D4B4>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>0 */
cp = put16(cp, 0); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>0 */
strcpy(tmpname, name);
dname = tmpname;
dlen = strlen(dname);
for (;;){ /* <20><><EFBFBD><EFBFBD>DNS<4E><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>URIд<49>뵽buf<75><66><EFBFBD><EFBFBD>ȥ */
cp1 = strchr(dname, '.');
if (cp1 != NULL) len = cp1 - dname;
else len = dlen;
*cp++ = len;
if (len == 0) break;
strncpy((char *)cp, dname, len);
cp += len;
if (cp1 == NULL)
{
*cp++ = 0;
break;
}
dname += len+1; /* dname<6D>׵<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> */
dlen -= len+1; /* dname<6D><65><EFBFBD>ȼ<EFBFBD>С */
}
cp = put16(cp, 0x0001); /* type <20><>1------ip<69><70>ַ */
cp = put16(cp, 0x0001); /* class<73><73>1-------<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ */
return ((UINT16)(cp - buf));
}
/*******************************************************************************
* Function Name : DnsQuery
* Description : <20><><EFBFBD><EFBFBD>DNS<4E><53>ѯ
input : s -socket<65><74><EFBFBD><EFBFBD>
* name - ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
pSip -<2D><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
* Output : None
* Return : <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>ʧ<EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>2
*******************************************************************************/
//UINT8 DnsQuery2(UINT8* s, UINT8 * name, UINT8 * pSip)
//{
// struct dhdr dhp;
// UINT8 ret;
// UINT32 len;
// if(Status >1 ){
// count++;
// DelayMs(10);
// if( count>20000 ){
//#if CH57xNET_DBG
// printf("DNS Fail!!!!!\n");
//#endif
// count=0;
// Status = 0;
// return 2;
// }
// }
// if(Status == 1)
// {
// DNS_SocketParamInit(s, DNS_SERVER_IP, 4000, IPPORT_DOMAIN);
// //UDPSocketParamInit(*s,DNS_SERVER_IP,4000,IPPORT_DOMAIN);
// Status = 2;
//#if CH57xNET_DBG
// printf(" 2 status = %d!\n",Status);
//#endif
// }
// if(Status ==2)
// {
// len = MakeDnsQueryMsg(0,(char *)name, dns_buf, MAX_DNS_BUF_SIZE);
// ret = CH57xNET_SocketSend(*s,dns_buf,&len);
// if ( ret ) return(0);
// else{
// Status = 3;
//#if CH57xNET_DBG
// printf("status = 3!\n");
//#endif
// }
// }
// if(Status ==4)
// {
// //CH57xNET_SocketClose(*s,TCP_CLOSE_NORMAL );
// return(parseMSG(&dhp, dns_buf, pSip)); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD>*/
//
// }
// return 0;
//}
/*******************************************************************************
* Function Name : DnsQuery_Task
* Description : <20><><EFBFBD><EFBFBD>DNS<4E><53>ѯ
input : s -socket<65><74><EFBFBD><EFBFBD>
* name - ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
pSip -<2D><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
* Output : None
* Return : <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>ʧ<EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>2
*<2A><> <20><> : ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
UINT8 DnsQuery_Task(UINT8* s, UINT8 * name, UINT8 * pSip)
{
static uint32_t dnschange_wait_tick1 = 0;
switch(server_info.dns_sta)
{
case DNS_INIT:
{
if(dns_buf == NULL) dns_buf = (UINT8*)malloc(MAX_DNS_BUF_SIZE/2); //ΪDNS<4E><53><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
UINT8 ret = DNS_SocketParamInit(s, DNS_SERVER_IP, 4000, IPPORT_DOMAIN); //<2F><><EFBFBD><EFBFBD>DNS<4E>õ<EFBFBD><C3B5>׽<EFBFBD><D7BD><EFBFBD>
if(ret == CH57xNET_ERR_SUCCESS)
{
server_info.dns_sta = DNS_DATA_SEND;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNS socket<65><74><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>,DNS Server IP:%d.%d.%d.%d",\
DNS_SERVER_IP[0],DNS_SERVER_IP[1],DNS_SERVER_IP[2],DNS_SERVER_IP[3]);
}
else
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNS socket<65><74><EFBFBD>´<EFBFBD><C2B4><EFBFBD>,DNS Server IP:%d.%d.%d.%d",\
DNS_SERVER_IP[0],DNS_SERVER_IP[1],DNS_SERVER_IP[2],DNS_SERVER_IP[3]);
server_info.dns_sta = DNS_ClOSE; //2023-03-06
server_info.dns_fail++; //2023-03-06
}
}
break;
case DNS_INIT1:
{
if(dns_buf == NULL) dns_buf = (UINT8*)malloc(MAX_DNS_BUF_SIZE/2); //ΪDNS<4E><53><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
UINT8 ret = DNS_SocketParamInit(s, DNS_SERVER_IP2, 4000, IPPORT_DOMAIN); //<2F><><EFBFBD><EFBFBD>DNS<4E>õ<EFBFBD><C3B5>׽<EFBFBD><D7BD><EFBFBD>
if(ret == CH57xNET_ERR_SUCCESS)
{
server_info.dns_sta = DNS_DATA_SEND;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNS socket<65><74><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>,DNS Server IP:%d.%d.%d.%d",\
DNS_SERVER_IP2[0],DNS_SERVER_IP2[1],DNS_SERVER_IP2[2],DNS_SERVER_IP2[3]);
}
else
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNS socket<65><74><EFBFBD>´<EFBFBD><C2B4><EFBFBD>,DNS Server IP:%d.%d.%d.%d",\
DNS_SERVER_IP2[0],DNS_SERVER_IP2[1],DNS_SERVER_IP2[2],DNS_SERVER_IP2[3]);
server_info.dns_sta = DNS_ClOSE; //2023-03-06
server_info.dns_fail++; //2023-03-06
}
}
break;
case DNS_DATA_SEND:
{
UINT32 len = MakeDnsQueryMsg(0,(char *)name, dns_buf, MAX_DNS_BUF_SIZE); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UINT8 ret = CH57xNET_SocketSend(*s, dns_buf, &len); //<2F><><EFBFBD>͵<EFBFBD>DNS<4E><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(ret == CH57xNET_ERR_SUCCESS)
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNS<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
else Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>");
server_info.wait_cot = SysTick_10ms;
server_info.dns_sta = DNS_WAIT_RECV;
server_info.dns_flg = 0x00;
}
break;
case DNS_WAIT_RECV: //<2F><><EFBFBD><EFBFBD>DNS<4E>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA>ر<EFBFBD><D8B1>׽<EFBFBD><D7BD><EFBFBD>
if(server_info.dns_flg == 1) //<2F><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ip
{
struct dhdr dhp;
UINT8 rev = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD>׽<EFBFBD><D7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DNS <20><>ʱ<EFBFBD><CAB1>%d0ms", SysTick_10ms - server_info.wait_cot);
rev = parseMSG(&dhp, dns_buf, pSip); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>ֵ<EFBFBD><D6B5>0x01:<3A>ɹ<EFBFBD><C9B9><EFBFBD>0x00:ʧ<><CAA7>*/
CH57xNET_SocketClose(*s,SOCK_STAT_CLOSED );
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD>ͷ<EFBFBD>DNS<EFBFBD>׽<EFBFBD><EFBFBD><EFBFBD>");
if(rev == 0x01) /*parseMSG <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD> 2022-06-08*/
{
return 0x01; //<2F><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
}else {
server_info.dns_fail++;
server_info.dns_sta = DNS_ClOSE;
dnschange_wait_tick1 = SysTick_10ms;
}
}
else if(SysTick_10ms - server_info.wait_cot > 200) //<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ճ<EFBFBD>ʱ
{
server_info.wait_cot = SysTick_10ms;
server_info.dns_sta = DNS_ClOSE;
server_info.dns_fail++;
}
break;
case DNS_ClOSE:
free(dns_buf); //<2F>ͷ<EFBFBD>DNS<4E>ռ<EFBFBD>
dns_buf = NULL;
CH57xNET_SocketClose(*s,SOCK_STAT_CLOSED ); //<2F><><EFBFBD><EFBFBD><EFBFBD>׽<EFBFBD><D7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(server_info.dns_fail == 0x01)
{
if(SysTick_10ms - dnschange_wait_tick1 > 50)
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD>л<EFBFBD>DNS<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
dnschange_wait_tick1 = SysTick_10ms;
server_info.dns_sta = DNS_INIT1;
}
}
else if(server_info.dns_fail >= 0x02)
{
*s = 0;
server_info.dns_fail = 0x00;
return 0x02; //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
}
break;
}
return 0;
}

98
BasicCode/Drive/NET/DNS.h Normal file
View File

@@ -0,0 +1,98 @@
#ifndef _DNS_H_
#define _DNS_H_
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "CH57x_common.h"
#include "net.h"
#define MAX_URL_SIZE 128
#define MAX_DNS_BUF_SIZE 256 /*DNS<4E><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󳤶<EFBFBD> */
#define CH563NET_DBG 1 /* printf<74><66><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> */
#define SERVER_NAME_DNS "www.boonlive-rcu.com"
#define TFTPSERVER_NAME_DNS "blv-tftp-log.blv-oa.com" //"BoonliveNAS.synology.me"
#define UDPSERVER_NAME_DNS "rcu-udp-svr.blv-oa.com"
/*
********************************************************************************
Define Part
********************************************************************************
*/
#define TYPE_A 1 /* Host address */
#define TYPE_NS 2 /* Name server */
#define TYPE_MD 3 /* Mail destination (obsolete) */
#define TYPE_MF 4 /* Mail forwarder (obsolete) */
#define TYPE_CNAME 5 /* Canonical name */
#define TYPE_SOA 6 /* Start of Authority */
#define TYPE_MB 7 /* Mailbox name (experimental) */
#define TYPE_MG 8 /* Mail group member (experimental) */
#define TYPE_MR 9 /* Mail rename name (experimental) */
#define TYPE_NULL 10 /* Null (experimental) */
#define TYPE_WKS 11 /* Well-known sockets */
#define TYPE_PTR 12 /* Pointer record */
#define TYPE_HINFO 13 /* Host information */
#define TYPE_MINFO 14 /* Mailbox information (experimental)*/
#define TYPE_MX 15 /* Mail exchanger */
#define TYPE_TXT 16 /* Text strings */
#define TYPE_ANY 255 /* Matches any type */
#define CLASS_IN 1 /* The ARPA Internet */
typedef enum
{
DNS_INIT,
DNS_INIT1,
DNS_DATA_SEND,
DNS_WAIT_RECV,
DNS_ANALYSIS,
DNS_ClOSE,
}DNS_STA;
struct dhdr
{
UINT16 id; /* <20><>ʶ */
UINT8 qr; /* <20><>ѯ<EFBFBD><D1AF>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>־*/
UINT8 opcode;
UINT8 aa; /* <20><>Ȩ<EFBFBD>ش<EFBFBD> */
UINT8 tc; /* <20>ɽضϵ<D8B6> */
UINT8 rd; /* <20><><EFBFBD><EFBFBD><EFBFBD>ݹ<EFBFBD>*/
UINT8 ra; /* <20><><EFBFBD>Եݹ<D4B5> */
UINT8 rcode; /* Ӧ<><D3A6><EFBFBD><EFBFBD> */
UINT16 qdcount; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
UINT16 ancount; /* Ӧ<><D3A6><EFBFBD><EFBFBD> */
UINT16 nscount; /* <20><>Ȩ<EFBFBD><C8A8> */
UINT16 arcount; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC> */
};
//extern UINT8 dns_buf[MAX_DNS_BUF_SIZE];
extern UINT8* dns_buf;
extern UINT8 DNS_SERVER_IP[4];
UINT16 get16(UINT8 * s);
int ParseName(UINT8 * msg, UINT8 * compressed, char * buf);
UINT8 * DnsQuestion(UINT8 * msg, UINT8 * cp);
UINT8 * DnsAnswer(UINT8 * msg, UINT8 * cp, UINT8 * pSip);
UINT8 parseMSG(struct dhdr * pdhdr, UINT8 * pbuf, UINT8 * pSip);
UINT8 * put16(UINT8 * s, UINT16 i);
UINT16 MakeDnsQueryMsg(UINT16 op, char * name, UINT8 * buf, UINT16 len);
//UINT8 DnsQuery(UINT8 s, UINT8 * name, UINT8 * pSip);
//UINT8 DnsQuery(UINT8 s, UINT8 * name, UINT8 * pSip);
UINT8 DnsQuery2(UINT8* s, UINT8 * name, UINT8 * pSip);
void UDPSocketParamInit(UINT8 sockindex,UINT8 *addr,UINT16 SourPort,UINT16 DesPort);
UINT8 DnsQuery_Task(UINT8* s, UINT8 * name, UINT8 * pSip);
#endif

1599
BasicCode/Drive/NET/net.c Normal file

File diff suppressed because it is too large Load Diff

219
BasicCode/Drive/NET/net.h Normal file
View File

@@ -0,0 +1,219 @@
#ifndef _DHCP_H_
#define _DHCP_H_
#include <stdio.h>
#include <string.h>
#include "CH57x_common.h"
#include "CH57xNET.H"
#include "DNS.h"
#include "BLV_NET_Function.h"
#define KEEPLIVE_ENABLE 1 /* <20><><EFBFBD><EFBFBD>KEEPLIVE<56><45><EFBFBD><EFBFBD> */
#define RECE_BUF_LEN 536 /* <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С */
#define Net_NO_SERVER 0x00 //<2F>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD>
#define Net_LOCAL_SERVER 0x01 //<2F><><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
#define Net_CLOUD_SERVER 0x02 //<2F>ƶ˷<C6B6><CBB7><EFBFBD><EFBFBD><EFBFBD>
#define INTERRUPT_RECV_EN 0 //<2F><><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
#define APPCALLBACK_RECV_EN 1 //ʹ<>ܻص<DCBB><D8B5><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
#define USE_AUTO_OBTAIN_IP 0 //DHCP<43>Զ<EFBFBD><D4B6><EFBFBD>ȡip 0<><30>DHCP<43>Զ<EFBFBD><D4B6><EFBFBD>ȡ; 1<><31><EFBFBD>ֶ<EFBFBD><D6B6>޸<EFBFBD>
#define USE_BLE_OBTAIN_IP 1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡip
#define User_NET_DNS_EN 1 //NET DNSʹ<53><CAB9>
#define SOCKET_TYPE_TCP 1 //<2F><><EFBFBD><EFBFBD>TCP<43><50><EFBFBD>׽<EFBFBD><D7BD><EFBFBD>
#define SOCKET_TYPE_MQTT 2 //<2F><><EFBFBD><EFBFBD>MQTT<54><54><EFBFBD>׽<EFBFBD><D7BD><EFBFBD>
#define SOCKET_TYPE_UDP 3 //<2F><><EFBFBD><EFBFBD>UDP<44><50><EFBFBD>׽<EFBFBD><D7BD><EFBFBD>
#define NET_RESEND_TIMES 3 /*<2A>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ7<D6B5><37>ʵ<EFBFBD><CAB5><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>+1 */
#define USER_NET_Register_Timeout 30 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>ʱ,<2C><>λ<EFBFBD><CEBB>S
#define USER_NET_Send_Timeout 20 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵȴ<DDB5><C8B4>ظ<EFBFBD>ʱ<EFBFBD><CAB1>,<2C><>λ<EFBFBD><CEBB>S
#define USER_NET_Register_Times 10 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD>
#define USER_NET_Send_Times 10 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
typedef void (*AppCallBack)(struct _SCOK_INF *,UINT32 ,UINT16 ,UINT8 *,UINT32 ); /* <20><><EFBFBD>ջص<D5BB><D8B5><EFBFBD><EFBFBD><EFBFBD>*/
typedef enum
{
NET_INIT = 0,
NET_PHY_WAIT,
NET_DHCP,
NET_DHCP_WAIT,
NET_TFTP,
NET_DNS,
NET_DNS2,
NET_WAIT,
NET_COMPLETE,
NET_MQTT_DNS,
NET_MQTT_INIT,
NET_MQTT_WAIT,
NET_WAIT_MAC_RESTART,
NET_START_TO_INIT,
NET_CON_WAIT,
NET_SOCKET_WAIT,
}NET_STA;
typedef enum
{
MQTT_DNS = 0,
MQTT_INIT,
MQTT_WAIT,
MQTT_COMPLETE,
MQTT_RCON,
MQTT_FAIL,
}MQTT_STA; //2023-03-17
typedef enum
{
SOCKET_SEND,
SOCKET_RESEND,
SOCKET_COMPLETE,
}SOCKET_STA;
typedef enum
{
NET_STATUS_INIT = 0, //δ<><CEB4>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
NET_STATUS_PHY_DISCONN, //<2F><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD> <20><> PHYЭ<59><D0AD>ʧ<EFBFBD><CAA7>
NET_STATUS_IP_CONFLI, //IP<49><50>ͻ
NET_STATUS_UNREACH, //<2F><><EFBFBD>ɴ<EFBFBD><C9B4><EFBFBD><EFBFBD><EFBFBD>
NET_STATUS_NORMAL, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}NET_STATUS;
#pragma pack(1)
typedef struct
{
UINT8 local_ip[4]; //<2F><><EFBFBD><EFBFBD>ip<69><70>ַ
UINT8 gwip_addr[4]; //<2F><><EFBFBD><EFBFBD>
UINT8 mask[4]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UINT8 SocketId[4]; //<2F><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׽<EFBFBD><D7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UINT8 ServerDename[64]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2025-10-11
}NET_INFO;
typedef struct
{
uint8_t init_flag:1; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
uint8_t register_flag:1; //ע<><D7A2><EFBFBD><EFBFBD>־λ
uint8_t search_ack_flag:1; //<2F><><EFBFBD>ͱ<EFBFBD>־λ
uint8_t dhcp_en:1; //DHCP<43>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
uint8_t dns_sta:4; //DNS״̬
uint8_t dhcp_flg:1; //DHCP<43><50><EFBFBD><EFBFBD>ip<69>ɹ<EFBFBD><C9B9><EFBFBD>־
uint8_t dns_flg:1; //DNS<4E><53>ȡip<69>ɹ<EFBFBD><C9B9><EFBFBD>־
uint8_t Udp_Internal_sta:4; //UDP״̬<D7B4><CCAC>״̬
uint8_t PHY_State:2; //NET PHY״̬ 0x00:<3A><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>ӣ<EFBFBD>0x01:<3A><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DNS״̬
uint8_t register_num:4; //ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t dns_fail:4; //DNSʧ<53>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>DNS<4E><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
uint8_t server_dns_flag:1; //DNS<4E>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t tftp_dns_flag:1; //DNS<4E>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>tftp<74><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t mqtt_dns_flag:1; //MQTT<54>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
uint8_t online_state:3; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ 0:<3A><><EFBFBD><EFBFBD> 1:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2:<3A><><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3:<3A>ƶ˷<C6B6><CBB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t sync_tick:2; //ͬ<><CDAC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t udp_dns_flag:1; //udp<64><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
uint8_t server_select:1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1> 0x00:Ĭ<><C4AC><EFBFBD>ƶ˷<C6B6><CBB7><EFBFBD><EFBFBD><EFBFBD>,0x01:<3A><><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
uint8_t net_retry_flag:1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>־λ -
uint8_t net_retry_num:5; //<2F><><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>
uint8_t con_flag:1; //ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t rcu_reboot_flag:1; //RCU<43><55><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
uint8_t udp_scan_cnt:6; //udpɨ<70><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t active_cmd_flag; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
uint8_t net_sta; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>ǰ״̬
uint8_t dis_ip[4]; //<2F>ƶ˷<C6B6><CBB7><EFBFBD><EFBFBD><EFBFBD>ip<69><70>ַ
uint8_t tftp_ip[4]; //TFTP<54><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t udp_ip[4]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDP<44><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t goal_ip[4]; //Ŀ<><C4BF>ip,
uint16_t local_port; //<2F><><EFBFBD>ض˿<D8B6>
uint16_t goal_port; //Ŀ<><C4BF>port
uint16_t dis_port; //<2F>ƶ˷<C6B6><CBB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
uint16_t frame_no; //<2F><><EFBFBD>͵<EFBFBD>֡<EFBFBD><D6A1>
uint32_t wait_cot; //<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
uint32_t register_tick; //ע<><D7A2><EFBFBD><EFBFBD>ʱ
uint32_t search_ack_tick; //<2F><><EFBFBD>ͼ<EFBFBD>ʱ
uint8_t udp_sta; //UDP<44><50><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
uint8_t udp_send_flag; //<2F><><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>
uint8_t udp_retry_cnt; //<2F>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
uint8_t udp_retry_num; //<2F>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
uint16_t ack_frame; //ACK֡<4B><D6A1>
uint16_t udp_timesync_cnt; //ʱ<><CAB1>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 1sһ<73><D2BB>
uint16_t udp_periodic_cnt; //<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD> - 1sһ<73><D2BB>
uint16_t udp_periodic_time; //<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><>λ:S
uint32_t udp_retry_tick; //<2F>ط<EFBFBD><D8B7><EFBFBD>ʱʱ<CAB1><CAB1><EFBFBD><EFBFBD>
uint32_t udp_retry_time; //<2F>ط<EFBFBD><D8B7><EFBFBD>ʱʱ<CAB1><CAB1>
uint32_t con_tick; //ֱ<><D6B1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> 2023-05-27
#if TFTP_GET_IP
uint8_t tftpip_gflag; //TFTP_IP<49>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>
#endif
uint32_t udp_idle_tick; //UDP<44><50><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
uint32_t udp_online_tick; //UDP<44><50><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
uint32_t udp_online_time; //UDP<44><50><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʱ<EFBFBD><CAB1>
}__attribute__ ((__packed__)) NET_SERVER_INFO;
#pragma pack()
extern uint32_t SysTick_10ms;
extern NET_INFO net_info;
extern NET_SERVER_INFO server_info;
extern UINT8 MACAddr[6]; /* CH579MAC<41><43>ַ */
extern UINT8 SocketRecvBuf[RECE_BUF_LEN];
extern TFTP_LOG tftp_log;
extern uint8_t Global_Large_Buff[1100];
#if USE_INTERRUPT_RECV
extern UINT8 MyBuf[RECE_BUF_LEN];
#endif
void mStopIfError(UINT8 iError);
void CH57xNET_CreatTcpSocket(void);
void CH57xNET_CreatTcpSocket_2(UINT8* S);
UINT8 CH57xNET_LibInit(/*const*/ UINT8 *ip,/*const*/ UINT8 *gwip,/*const*/ UINT8 *mask,/*const*/ UINT8 *macaddr);
void CH57xNET_HandleSockInt(UINT8 sockeid,UINT8 initstat);
void CH57xNET_HandleGlobalInt(void);
//void UDPSocketParamInit(UINT8 S,UINT8 *addr,UINT16 SourPort,UINT16 DesPort );
//void UDPSocketParamInit1(UINT8 S,UINT8 *addr,UINT16 SourPort,UINT16 DesPort );
//void UDPSocketParamInit2(UINT8* S,UINT8 *addr,UINT16 SourPort,UINT16 DesPort );
void UDPSocketParamInit2(UINT8* S, UINT16 SourPort, AppCallBack cb);
UINT8 DNS_SocketParamInit(UINT8* S,UINT8 *addr,UINT16 SourPort,UINT16 DesPort );
void Timer0Init(UINT32 time);
UINT8 CH57xNET_DHCPCallBack(UINT8 status,void *arg);
void SystemClock_UART1_init(void);
void GetMacAddr(UINT8 *pMAC);
UINT8 Ethernet_Send_Start(UINT8 socketid, UINT8* buff, UINT16 len, UINT8* ip, UINT16 port); //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>׽<EFBFBD><D7BD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UINT8 DNS_Restart(void); //DNSʧ<53><CAA7>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DNS
UINT8 UDP_Socket_Creat(void); //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>UDP<44>׽<EFBFBD><D7BD>֣<EFBFBD><D6A3><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>NetWork_Task״̬<D7B4><CCAC><EFBFBD><EFBFBD>NET_SOCKET<45><54><EFBFBD><EFBFBD>
void NetWork_Parameter_Get(void);
void NetWork_Task(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint16_t Data_Conver_To_Uint16(uint8_t *data);
void UDPSocket1_AppCallBack(struct _SCOK_INF * SocketInf,UINT32 ipaddr,UINT16 port,UINT8 *buff,UINT32 len);
void UDPSocket2_AppCallBack(struct _SCOK_INF * SocketInf,UINT32 ipaddr,UINT16 port,UINT8 *buff,UINT32 len);
void UDPSocket3_AppCallBack(struct _SCOK_INF * SocketInf,UINT32 ipaddr,UINT16 port,UINT8 *buff,UINT32 len);
void UDPSocket4_AppCallBack(struct _SCOK_INF * SocketInf,UINT32 ipaddr,UINT16 port,UINT8 *buff,UINT32 len);
#endif

View File

@@ -0,0 +1 @@
123456789