Files
RCU_C1P_Module/MCU_Driver/blv_netcomm_function.c

1516 lines
59 KiB
C
Raw Permalink Normal View History

/*
* BLV_NETCOMM_Function.c
*
* Created on: Nov 3, 2025
* Author: cc
*/
#include "includes.h"
#include <string.h>
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>
uint32_t ProjectCode = 1001; //ģ<><C4A3><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>
uint8_t Versions[4] = {0,0,0,0}; //ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>ð汾
/*******************************************************************************
* Function Name : UDP_Add_Header
* Description : <EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - ͨѶЭ<EFBFBD><EFBFBD>ͷ
* Input :
* data - <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* cmd - ͨѶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* length - ͨѶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* frame_no - ͨѶ֡<EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t UDP_Add_Header(uint8_t *data,uint8_t cmd,uint16_t length, uint16_t frame_no)
{
uint8_t len = 0x00;
data[len++] = 0xAA;
data[len++] = 0x55;
data[len++] = length%256;
data[len++] = length/256;
data[len++] = 'T';
data[len++] = '3';
data[len++] = 'S';
data[len++] = 'A';
data[len++] = cmd;
data[len++] = frame_no%256;
data[len++] = frame_no/256;
data[len++] = ProjectCode%256;
data[len++] = ProjectCode/256;
data[len++] = g_netinfo.device_ip[2]; //<2F><><EFBFBD><EFBFBD>ip
data[len++] = g_netinfo.device_ip[3];
return len;
}
/*******************************************************************************
* Function Name : UDP_ADD_SoftwareVer
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input :
* data - <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t UDP_ADD_SoftwareVer(uint8_t *data)
{
uint8_t len = strlen(SoftwareVer);
if(len > RCU_SoftwareVer) len = RCU_SoftwareVer; //<2F><>ֹ<EFBFBD><EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memcpy(data,SoftwareVer,len); //RCU_SoftwareVer
return len;
}
/*******************************************************************************
* Function Name : UDP_ADD_ConfigVer
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ð<EFBFBD><EFBFBD>
* Input :
* data - <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t UDP_ADD_ConfigVer(uint8_t *data)
{
//<2F>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>и<EFBFBD>ֵ<EFBFBD><D6B5>Versions<6E><73><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ð汾
data[0] = Versions[0];
data[1] = Versions[1];
data[2] = Versions[2];
return 0x03;
}
/*******************************************************************************
* Function Name : UDP_Add_ServerIp
* Description : <EFBFBD><EFBFBD><EFBFBD>ӷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<EFBFBD><EFBFBD>ַ
* Input :
* data - <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t UDP_Add_ServerIp(uint8_t *data)
{
//<2F>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>и<EFBFBD>ֵ<EFBFBD><D6B5>Versions<6E><73><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ð汾
data[0] = server_info.dis_ip[0];
data[1] = server_info.dis_ip[1];
data[2] = server_info.dis_ip[2];
data[3] = server_info.dis_ip[3];
return 0x04;
}
/*******************************************************************************
* Function Name : UDP_Add_ServerPort
* Description : <EFBFBD><EFBFBD><EFBFBD>ӷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ<EFBFBD>˿<EFBFBD>
* Input :
* data - <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t UDP_Add_ServerPort(uint8_t *data)
{
//<2F>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>и<EFBFBD>ֵ<EFBFBD><D6B5>Versions<6E><73><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ð汾
data[0] = server_info.dis_port & 0xFF;
data[1] = (server_info.dis_port >> 8) & 0xFF;
return 0x02;
}
/*******************************************************************************
* Function Name : UDP_Add_Subnet
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input :
* data - <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t UDP_Add_Subnet(uint8_t *data)
{
//<2F>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>и<EFBFBD>ֵ<EFBFBD><D6B5>Versions<6E><73><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ð汾
data[0] = g_netinfo.subnet[0];
data[1] = g_netinfo.subnet[1];
data[2] = g_netinfo.subnet[2];
data[3] = g_netinfo.subnet[3];
return 0x04;
}
/*******************************************************************************
* Function Name : UDP_Add_Gateway
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input :
* data - <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t UDP_Add_Gateway(uint8_t *data)
{
//<2F>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>и<EFBFBD>ֵ<EFBFBD><D6B5>Versions<6E><73><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ð汾
data[0] = g_netinfo.gateway[0];
data[1] = g_netinfo.gateway[1];
data[2] = g_netinfo.gateway[2];
data[3] = g_netinfo.gateway[3];
return 0x04;
}
/*******************************************************************************
* Function Name : UDP_Add_Mac
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>MAC<EFBFBD><EFBFBD>ַ
* Input :
* data - <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t UDP_Add_Mac(uint8_t *data)
{
//<2F>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>и<EFBFBD>ֵ<EFBFBD><D6B5>Versions<6E><73><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ð汾
data[0] = g_netinfo.mac_addr[0];
data[1] = g_netinfo.mac_addr[1];
data[2] = g_netinfo.mac_addr[2];
data[3] = g_netinfo.mac_addr[3];
data[4] = g_netinfo.mac_addr[4];
data[5] = g_netinfo.mac_addr[5];
return 0x06;
}
/*******************************************************************************
* Function Name : UDP_Search_Ack
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t UDP_Search_Ack(void)
{
uint32_t sendlen = BLV_UDP_HEAD_LEN;
uint8_t rev = 0;
memset(Global_Large_Buff,0,sizeof(Global_Large_Buff));
//<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>֡
sendlen += UDP_Add_ServerIp(&Global_Large_Buff[BLV_UDP_HEAD_LEN]); //<2F><><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ
sendlen += UDP_Add_Subnet(&Global_Large_Buff[sendlen]); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
sendlen += UDP_Add_Gateway(&Global_Large_Buff[sendlen]); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
sendlen += UDP_Add_ServerPort(&Global_Large_Buff[sendlen]); //<2F><><EFBFBD><EFBFBD>RCU<43>˿<EFBFBD>
sendlen += UDP_Add_Mac(&Global_Large_Buff[sendlen]); //<2F><><EFBFBD><EFBFBD>Mac
sendlen += UDP_ADD_SoftwareVer(&Global_Large_Buff[sendlen]); //<2F><><EFBFBD>ӹ̼<D3B9><CCBC>
sendlen += UDP_ADD_ConfigVer(&Global_Large_Buff[sendlen]); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ð汾
Global_Large_Buff[sendlen++] = g_netinfo.dns_server_ip[0];
Global_Large_Buff[sendlen++] = g_netinfo.dns_server_ip[1];
Global_Large_Buff[sendlen++] = g_netinfo.dns_server_ip[2];
Global_Large_Buff[sendlen++] = g_netinfo.dns_server_ip[3];
SRAM_DMA_Read_Buff(&Global_Large_Buff[sendlen],16,SRAM_Register_Start_ADDRESS + Register_RoomTypeNote_OFFSET);
sendlen += 16;
SRAM_DMA_Read_Buff(&Global_Large_Buff[sendlen],16,SRAM_Register_Start_ADDRESS + Register_RoomNumNote_OFFSET);
sendlen += 16;
SRAM_DMA_Read_Buff(&Global_Large_Buff[sendlen],4,SRAM_Register_Start_ADDRESS + Register_HouseType_OFFSET);
sendlen += 4;
SRAM_DMA_Read_Buff(&Global_Large_Buff[sendlen],4,SRAM_Register_Start_ADDRESS + Register_RoomNumber_OFFSET);
sendlen += 4;
sendlen += 2; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CRC16 <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>2Byte
UDP_Add_Header(Global_Large_Buff,Search_Cmd,sendlen,0xffff); //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
NetCRC16(&Global_Large_Buff[0],sendlen);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"SocketId:%d , IP:%d.%d.%d.%d , port:%d",g_netinfo.SocketId[SocketIdnex_BLVSeriver],server_info.dis_ip[0],server_info.dis_ip[1],server_info.dis_ip[2],server_info.dis_ip[3],server_info.dis_port);
rev = WCHNET_SocketUdpSendTo(g_netinfo.SocketId[SocketIdnex_BLVSeriver], &Global_Large_Buff[0], &sendlen, server_info.dis_ip, server_info.dis_port);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"%s rev:%d",__func__,rev);
LOG_NET_COMM_Send_Record(0x01,server_info.dis_ip,server_info.dis_port,&Global_Large_Buff[0],sendlen);
return rev;
}
/*******************************************************************************
* Function Name : UDP_Heart_Send
* 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>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t UDP_Heart_Send(void)
{
uint32_t sendlen = 0x00;
uint8_t rev = 0;
if((server_info.frame_no < 0xfffe) && (server_info.frame_no >= 0x8000))
{
server_info.frame_no++;
}else{
server_info.frame_no = 0x8000;
}
memset(Global_Large_Buff,0,sizeof(Global_Large_Buff));
sendlen = SocketIdnex_BLVSeriver;
//2025-9-25 <20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Global_Large_Buff[sendlen++] = g_netinfo.mac_addr[0];
Global_Large_Buff[sendlen++] = g_netinfo.mac_addr[1];
Global_Large_Buff[sendlen++] = g_netinfo.mac_addr[2];
Global_Large_Buff[sendlen++] = g_netinfo.mac_addr[3];
Global_Large_Buff[sendlen++] = g_netinfo.mac_addr[4];
Global_Large_Buff[sendlen++] = g_netinfo.mac_addr[5];
sendlen += 0x06;
sendlen += 0x02; //<2F><><EFBFBD><EFBFBD>CRCУ<43><EFBFBD><E9B3A4>
UDP_Add_Header(Global_Large_Buff,Heart_Cmd,sendlen,server_info.frame_no); //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
NetCRC16(&Global_Large_Buff[0],sendlen);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"%s..",__func__);
rev = WCHNET_SocketUdpSendTo(g_netinfo.SocketId[SocketIdnex_BLVSeriver], &Global_Large_Buff[0], &sendlen, server_info.dis_ip, server_info.dis_port);
LOG_NET_COMM_Send_Record(0x01,server_info.dis_ip,server_info.dis_port,&Global_Large_Buff[0],sendlen);
return rev;
}
/*******************************************************************************
* Function Name : Udp_Internal_GetTime_Data
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡʱ<EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t Udp_Internal_GetTime_CMD(void)
{
uint32_t sendlen = BLV_UDP_PACK_LEN;
uint8_t rev = 0;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"%s",__func__);
memset(Global_Large_Buff,0,sizeof(Global_Large_Buff));
if(server_info.udp_retry_cnt == 0x00)
{
if((server_info.frame_no < 0xfffe) && (server_info.frame_no >= 0x8000))
{
server_info.frame_no++;
}else{
server_info.frame_no = 0x8000;
}
}
UDP_Add_Header(Global_Large_Buff,In_QueryTime_Cmd,sendlen,server_info.frame_no);
NetCRC16(&Global_Large_Buff[0],sendlen);
rev = WCHNET_SocketUdpSendTo(g_netinfo.SocketId[SocketIdnex_BLVSeriver], &Global_Large_Buff[0], &sendlen, server_info.dis_ip, server_info.dis_port);
LOG_NET_COMM_Send_Record(0x01,server_info.dis_ip,server_info.dis_port,&Global_Large_Buff[0],sendlen);
return rev;
}
/*******************************************************************************
* Function Name : Udp_Internal_GetRoomRent_CMD
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>̬
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t Udp_Internal_GetRoomRent_CMD(void)
{
uint32_t sendlen = BLV_UDP_PACK_LEN;
uint8_t rev = 0;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"%s",__func__);
memset(Global_Large_Buff,0,sizeof(Global_Large_Buff));
if(server_info.udp_retry_cnt == 0x00)
{
if((server_info.frame_no < 0xfffe) && (server_info.frame_no >= 0x8000))
{
server_info.frame_no++;
}else{
server_info.frame_no = 0x8000;
}
}
UDP_Add_Header(Global_Large_Buff,In_Get_RoomRent_Cmd,sendlen,server_info.frame_no);
NetCRC16(&Global_Large_Buff[0],sendlen);
//Dbg_Print_Buff(DBG_BIT_NET_STATUS_bit,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>",back_data,sendlen);
rev = WCHNET_SocketUdpSendTo(g_netinfo.SocketId[SocketIdnex_BLVSeriver], &Global_Large_Buff[0], &sendlen, server_info.dis_ip, server_info.dis_port);
LOG_NET_COMM_Send_Record(0x01,server_info.dis_ip,server_info.dis_port,&Global_Large_Buff[0],sendlen);
return rev;
}
/*******************************************************************************
* Function Name : Udp_Internal_Reboot_Reason_Report_CMD
* Description : RCU<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t Udp_Internal_Reboot_Reason_Report_CMD(void)
{
uint8_t temp_data[24] = {0};
uint32_t sendlen = 0x00;
uint8_t rev = 0;
memset(Global_Large_Buff,0,sizeof(Global_Large_Buff));
if( server_info.udp_retry_cnt == 0x00 )
{
if((server_info.frame_no < 0xfffe) && (server_info.frame_no >= 0x8000))
{
server_info.frame_no++;
}else {
server_info.frame_no = 0x8000;
}
}else {
//<2F><><EFBFBD>ݰ<EFBFBD><DDB0>ط<EFBFBD><D8B7>У<EFBFBD>֡<EFBFBD>Ų<EFBFBD><C5B2>ı<EFBFBD>
}
sendlen = BLV_UDP_HEAD_LEN;
/*Launcher<65>汾 ֻ<><D6BB>Launcher_C1F_V04 <20><><EFBFBD>ϰ汾<CFB0>ſ<EFBFBD><C5BF>Զ<EFBFBD>ȡ<EFBFBD><C8A1>Launcher<65><EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD>°汾<C2B0>Ƕ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> 2022-08-04*/
//MCU_Flash_Read((uint8_t *)&temp_data,20,Launcher_SoftwareVer_Addr);
if(strncmp((char *)temp_data,"Launcher_",strlen("Launcher_")) == 0x00)
{
memcpy(&Global_Large_Buff[BLV_UDP_HEAD_LEN],temp_data,20);
}else {
/*<2A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Launcher_ ǰ׺<C7B0><D7BA><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>Ĭ<EFBFBD><C4AC>ΪLauncher_C1F_V02*/
memset(temp_data,0,sizeof(temp_data));
snprintf((char *)temp_data,sizeof(temp_data),"Launcher_C1F_V02 ");
memcpy(&Global_Large_Buff[BLV_UDP_HEAD_LEN],temp_data,20);
}
sendlen += 20;
Global_Large_Buff[sendlen++] = SRAM_Read_DW(SRAM_LOG_RCU_Reboot_Reason) & 0xFF; //<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>
sendlen += 0x02; //<2F><><EFBFBD><EFBFBD>CRCУ<43><EFBFBD><E9B3A4>
UDP_Add_Header(Global_Large_Buff,In_Reboot_Reason_Cmd,sendlen,server_info.frame_no);
NetCRC16(&Global_Large_Buff[0],sendlen);
//Dbg_Print_Buff(DBG_BIT_NET_STATUS_bit,"RCU<43><55><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>: ",Global_Large_Buff,sendlen);
rev = WCHNET_SocketUdpSendTo(g_netinfo.SocketId[SocketIdnex_BLVSeriver], &Global_Large_Buff[0], &sendlen, server_info.dis_ip, server_info.dis_port);
LOG_NET_COMM_Send_Record(0x01,server_info.dis_ip,server_info.dis_port,&Global_Large_Buff[0],sendlen);
return rev;
}
/*******************************************************************************
* Function Name : Udp_Internal_Power_Change_Report_CMD
* Description : ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t Udp_Internal_Power_Change_Report_CMD(void)
{
uint32_t sendlen = 0x00;
uint8_t temp_flag = 0,rev = 0;
memset(Global_Large_Buff,0,sizeof(Global_Large_Buff));
if( server_info.udp_retry_cnt == 0x00 )
{
if((server_info.frame_no < 0xfffe) && (server_info.frame_no >= 0x8000))
{
server_info.frame_no++;
}else {
server_info.frame_no = 0x8000;
}
}
temp_flag = SRAM_Read_Byte(SRAM_UDP_ELEReport_Action);
sendlen = BLV_UDP_HEAD_LEN;
if( (temp_flag & 0x01) != 0x00 )
{
Global_Large_Buff[sendlen++] = SRAM_Read_Byte(SRAM_UDP_ELEReport_EleState_Last); //ȡ<><EFBFBD><E7B6AF>
}else {
Global_Large_Buff[sendlen++] = 0x00;
}
if( (temp_flag & 0x02) != 0x00 )
{
Global_Large_Buff[sendlen++] = SRAM_Read_Byte(SRAM_UDP_ELEReport_CardState_Last); //<2F><EFBFBD><E5BFA8><EFBFBD><EFBFBD>
}else {
Global_Large_Buff[sendlen++] = 0x00;
}
if( (temp_flag & 0x04) != 0x00 )
{
Global_Large_Buff[sendlen++] = SRAM_Read_Byte(SRAM_UDP_ELEReport_CardType_Last); //<2F><><EFBFBD>ݱ仯
}else {
Global_Large_Buff[sendlen++] = 0x00;
}
if( (temp_flag & 0x08) != 0x00 )
{
Global_Large_Buff[sendlen++] = SRAM_Read_Byte(SRAM_UDP_ELEReport_VirtualCard_Last); //<2F>޿<EFBFBD><DEBF>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
}else {
Global_Large_Buff[sendlen++] = 0x00;
}
sendlen += 0x02; //<2F><><EFBFBD><EFBFBD>CRCУ<43><EFBFBD><E9B3A4>
UDP_Add_Header(Global_Large_Buff,In_Power_Change_Cmd,sendlen,server_info.frame_no);
NetCRC16(&Global_Large_Buff[0],sendlen);
rev = WCHNET_SocketUdpSendTo(g_netinfo.SocketId[SocketIdnex_BLVSeriver], &Global_Large_Buff[0], &sendlen, server_info.dis_ip, server_info.dis_port);
LOG_NET_COMM_Send_Record(0x01,server_info.dis_ip,server_info.dis_port,&Global_Large_Buff[0],sendlen);
return rev;
}
/*******************************************************************************
* Function Name : Find_TempDevice_List_Information
* 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>
* Input :
* buff - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
* dev_num_max - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint32_t Find_TempDevice_List_Information(uint8_t *buff,uint8_t dev_num_max)
{
uint32_t read_addr = SRAM_Device_List_Start_Addr;
uint32_t end_addr = SRAM_Read_DW(SRAM_NORMAL_Device_List_Addr);
Device_Public_Information_G BUS_Public;
RS485_TEMP_INFO Rs485Temp;
uint8_t dev_num = 0;
uint8_t data_offset = 0;
uint16_t temp_val = 0;
memset(&BUS_Public,0,sizeof(Device_Public_Information_G));
memset(&Rs485Temp,0,sizeof(RS485_TEMP_INFO));
if((end_addr < SRAM_Device_List_Start_Addr) || (end_addr > SRAM_Device_List_End_Addr)) end_addr = SRAM_Device_List_End_Addr;
for(uint32_t i=SRAM_Device_List_Start_Addr;i<end_addr;)
{
if(SRAM_Read_Byte(read_addr + Dev_Type) == DEV_RS485_TEMP)
{
if(Device_Data_Check(read_addr) == 0)
{
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),read_addr);
SRAM_DMA_Read_Buff((uint8_t *)&Rs485Temp,sizeof(RS485_TEMP_INFO),read_addr+Dev_Privately);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"%s Type:%d Addr:%d",__func__,BUS_Public.type,BUS_Public.addr);
buff[data_offset++] = BUS_Public.type; //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD> - <20>ܺļ<DCBA><C4BC><EFBFBD>
buff[data_offset++] = BUS_Public.addr; //<2F><EFBFBD><E8B1B8>ַ - <20>ܺļ<DCBA><C4BC><EFBFBD> <20>豸Ĭ<E8B1B8><C4AC>0x01
buff[data_offset++] = 0x00; //<2F><EFBFBD><E8B1B8>· - <20>յ<EFBFBD><D5B5>豸Ĭ<E8B1B8><C4AC>0x00
buff[data_offset++] = 0x00; //<2F><EFBFBD><E8B1B8>· - <20>յ<EFBFBD>Ĭ<EFBFBD><C4AC>0x00
buff[data_offset++] = 0x02; //<2F><EFBFBD><E8B1B8><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
//<2F>յ<EFBFBD>״̬
temp_val = Dev_Temp_State_Data(Rs485Temp.TemStateLast);
buff[data_offset++] = temp_val & 0xFF;
buff[data_offset++] = (temp_val >> 8) & 0xFF;
dev_num++;
if(dev_num >= dev_num_max) return dev_num; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޣ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD>
}
}
read_addr += SRAM_Device_List_Size;
i+= SRAM_Device_List_Size;
if(read_addr >= end_addr)
{
return dev_num;
}
}
return dev_num;
}
/*******************************************************************************
* Function Name : Udp_Scan_Roomstate
* 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>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void Udp_Addtion_Roomstate(uint8_t type,uint8_t addr,uint16_t loop,uint16_t start)
{
uint8_t len = 0x00;
uint8_t back_data[8];
uint32_t write_addr = SRAM_Read_DW(SRAM_UDP_SendData_Writeaddr),read_addr = SRAM_Read_DW(SRAM_UDP_SendData_Readaddr);
memset(back_data,0,8);
/*<2A>жϵ<D0B6>ַ<EFBFBD>Ƿ<EFBFBD><C7B7>ڷ<EFBFBD>Χ<EFBFBD><CEA7>*/
if( (write_addr < SRAM_UDP_SendData_Startaddr) || (write_addr > SRAM_UDP_SendData_Endaddr) \
|| (read_addr < SRAM_UDP_SendData_Startaddr) || (read_addr > SRAM_UDP_SendData_Endaddr) )
{
write_addr = SRAM_UDP_SendData_Startaddr;
read_addr = SRAM_UDP_SendData_Startaddr;
SRAM_Write_DW(write_addr,SRAM_UDP_SendData_Writeaddr);
SRAM_Write_DW(read_addr,SRAM_UDP_SendData_Readaddr);
SRAM_Write_DW(read_addr,SRAM_UDP_SendData_Tempaddr);
}
back_data[0] = type;
back_data[1] = addr;
back_data[2] = (loop & 0xFF);
back_data[3] = ((loop >> 8) & 0xFF);
back_data[4] = (start & 0xFF);
back_data[5] = ((start >> 8) & 0xFF);
if( (write_addr + 6) > SRAM_UDP_SendData_Endaddr)
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"%s overstep_1 %08X!!!",__func__,write_addr);
len = SRAM_UDP_SendData_Endaddr - write_addr;
SRAM_DMA_Write_Buff(back_data,len,write_addr);
write_addr = SRAM_UDP_SendData_Startaddr;
SRAM_DMA_Write_Buff(&back_data[len],(6-len),write_addr);
write_addr += (6-len);
}
else{
SRAM_DMA_Write_Buff(back_data,0x06,write_addr);
write_addr += 0x06; //<2F><>ַƫ<D6B7><C6AB>
}
if(write_addr > SRAM_UDP_SendData_Endaddr)
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"%s overstep %08X!!!",__func__,write_addr);
write_addr = SRAM_UDP_SendData_Startaddr;
}
SRAM_Write_DW(write_addr,SRAM_UDP_SendData_Writeaddr);
}
/*******************************************************************************
* Function Name : Udp_Internal_Read_MCU_System_SendAck
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <EFBFBD>ظ<EFBFBD>ACK<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t Udp_Internal_Read_MCU_System_SendAck(uint8_t *ip,uint16_t port,uint16_t frame_id)
{
UINT32 back_len = BLV_UDP_HEAD_LEN + 449 + 2; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
uint8_t temp_data[34] = {0};
uint8_t temp_rev = 0,rev = 0;
memset(Global_Large_Buff,0,sizeof(Global_Large_Buff));
/*<2A><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>*/
UDP_Add_Header(Global_Large_Buff,In_Read_MCUSystem_Cmd,back_len,frame_id); //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
Global_Large_Buff[BLV_UDP_HEAD_LEN] = SRAM_Read_Byte(SRAM_Register_Start_ADDRESS + Register_NetInfo_EN_OFFSET); //IP<49><50><EFBFBD><EFBFBD> 2022-12-02
memcpy(&Global_Large_Buff[BLV_UDP_HEAD_LEN + 1],MCU_TYPE,sizeof(MCU_TYPE)); //<2F><><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>
memcpy(&Global_Large_Buff[BLV_UDP_HEAD_LEN + 17],g_netinfo.device_ip,4); //IP<49><50>ַ
memcpy(&Global_Large_Buff[BLV_UDP_HEAD_LEN + 21],server_info.dis_ip,4); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ
memcpy(&Global_Large_Buff[BLV_UDP_HEAD_LEN + 25],g_netinfo.subnet,4); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memcpy(&Global_Large_Buff[BLV_UDP_HEAD_LEN + 29],g_netinfo.gateway,4); //<2F><><EFBFBD><EFBFBD>
UDP_Add_ServerPort(&Global_Large_Buff[BLV_UDP_HEAD_LEN + 33]); //MCU<43><55><EFBFBD><EFBFBD>Ĭ<EFBFBD>϶˿<CFB6>Ϊ3341
Global_Large_Buff[BLV_UDP_HEAD_LEN + 35] = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>û<EFBFBD><C3BB>
Global_Large_Buff[BLV_UDP_HEAD_LEN + 36] = 0;
memcpy(&Global_Large_Buff[BLV_UDP_HEAD_LEN + 37],g_netinfo.dns_server_ip,4); //<2F><><EFBFBD><EFBFBD>
UDP_ADD_SoftwareVer(&Global_Large_Buff[BLV_UDP_HEAD_LEN+41]); //<2F><><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE>
/*RTCʱ<43><CAB1>*/
Global_Large_Buff[BLV_UDP_HEAD_LEN+61] = HEX_Conversion_To_DEC(RTC_Raw_Data.year);
Global_Large_Buff[BLV_UDP_HEAD_LEN+62] = HEX_Conversion_To_DEC(RTC_Raw_Data.month);
Global_Large_Buff[BLV_UDP_HEAD_LEN+63] = HEX_Conversion_To_DEC(RTC_Raw_Data.day);
Global_Large_Buff[BLV_UDP_HEAD_LEN+64] = HEX_Conversion_To_DEC(RTC_Raw_Data.hour);
Global_Large_Buff[BLV_UDP_HEAD_LEN+65] = HEX_Conversion_To_DEC(RTC_Raw_Data.minute);
Global_Large_Buff[BLV_UDP_HEAD_LEN+66] = HEX_Conversion_To_DEC(RTC_Raw_Data.second);
/*Launcher<65>汾 ֻ<><D6BB>Launcher_C1F_V04 <20><><EFBFBD>ϰ汾<CFB0>ſ<EFBFBD><C5BF>Զ<EFBFBD>ȡ<EFBFBD><C8A1>Launcher<65><EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD>°汾<C2B0>Ƕ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> 2022-08-04*/
//MCU_Flash_Read((uint8_t *)&temp_data,20,Launcher_SoftwareVer_Addr);
if(strncmp((char *)temp_data,"Launcher_",strlen("Launcher_")) == 0x00)
{
memcpy(&Global_Large_Buff[BLV_UDP_HEAD_LEN+67],temp_data,20);
}else {
/*<2A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Launcher_ ǰ׺<C7B0><D7BA><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>Ĭ<EFBFBD><C4AC>ΪLauncher_C1F_V02*/
memset(temp_data,0,sizeof(temp_data));
snprintf((char *)temp_data,sizeof(temp_data),"Launcher_C1F_V02 ");
memcpy(&Global_Large_Buff[BLV_UDP_HEAD_LEN+67],temp_data,20);
}
UDP_Add_Mac(&Global_Large_Buff[BLV_UDP_HEAD_LEN+87]); //MAC<41><43>ַ
SRAM_DMA_Read_Buff(&Global_Large_Buff[BLV_UDP_HEAD_LEN+93],4,SRAM_Register_Start_ADDRESS + Register_ProjectCode_OFFSET); //<2F><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>
SRAM_DMA_Read_Buff(&Global_Large_Buff[BLV_UDP_HEAD_LEN+97],4,SRAM_Register_Start_ADDRESS + Register_RoomNumber_OFFSET);
SRAM_DMA_Read_Buff(&Global_Large_Buff[BLV_UDP_HEAD_LEN+101],4,SRAM_Register_Start_ADDRESS + Register_HouseType_OFFSET);
SRAM_DMA_Read_Buff(&Global_Large_Buff[BLV_UDP_HEAD_LEN+105],4,SRAM_Register_Start_ADDRESS + Register_ConfigVersion_OFFSET); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SRAM_DMA_Read_Buff(&Global_Large_Buff[BLV_UDP_HEAD_LEN+109],4,SRAM_Register_Start_ADDRESS + Register_RoomRent_OFFSET);
SRAM_DMA_Read_Buff(&Global_Large_Buff[BLV_UDP_HEAD_LEN+113],4,SRAM_Register_Start_ADDRESS + Register_SeasonStatus_OFFSET);
Global_Large_Buff[BLV_UDP_HEAD_LEN+117] = Get_Authorize_Lock_Status(); //<2F><>ȡ<EFBFBD><C8A1>Ȩ״̬
SRAM_DMA_Read_Buff(&Global_Large_Buff[BLV_UDP_HEAD_LEN+121],4,SRAM_Register_Start_ADDRESS + Register_MandateUTC_OFFSET);
SRAM_DMA_Read_Buff(&Global_Large_Buff[BLV_UDP_HEAD_LEN+125],4,SRAM_Register_Start_ADDRESS + Register_MandateExpiresTime_OFFSET);
SRAM_DMA_Read_Buff(&Global_Large_Buff[BLV_UDP_HEAD_LEN+129],128,SRAM_Register_Start_ADDRESS + Register_RoomNumNote_OFFSET);
Flash_Read(&Global_Large_Buff[BLV_UDP_HEAD_LEN+257],64,SPIFLASH_MCU_Model_Revision_ADDRESS);
Flash_Read(&Global_Large_Buff[BLV_UDP_HEAD_LEN+321],64,SPIFLASH_MCU_Control_Revision_ADDRESS);
//temp_rev = Read_LogicFile_Information(0x04,(uint8_t *)&temp_data); //<2F><>ѯLOGIC<49>ļ<EFBFBD><C4BC>еľƵ<C4BE><C6B5><EFBFBD><EFBFBD><EFBFBD> - 32Byte
if(temp_rev == 0x00)
{
memcpy(&Global_Large_Buff[BLV_UDP_HEAD_LEN+385],temp_data,32);
}else {
memset(temp_data,0,32);
memcpy(&Global_Large_Buff[BLV_UDP_HEAD_LEN+385],temp_data,32);
}
//temp_rev = Read_LogicFile_Information(0x07,(uint8_t *)&temp_data); //<2F><>ѯLOGIC<49>ļ<EFBFBD><C4BC>еķ<D0B5><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 32Byte
if(temp_rev == 0x00)
{
memcpy(&Global_Large_Buff[BLV_UDP_HEAD_LEN+417],temp_data,32);
}else {
memset(temp_data,0,32);
memcpy(&Global_Large_Buff[BLV_UDP_HEAD_LEN+417],temp_data,32);
}
Dbg_Println(DBG_BIT_NET_STATUS_bit,"%s ip:%d:%d:%d:%d Port:%d",__func__,ip[0],ip[1],ip[2],ip[3],port);
//<2F><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
NetCRC16(&Global_Large_Buff[0],back_len);
rev = WCHNET_SocketUdpSendTo(g_netinfo.SocketId[SocketIdnex_BLVSeriver], Global_Large_Buff, &back_len, ip, port); //SOCK_UDPS,
LOG_NET_COMM_Send_Record(0x01,ip,port,&Global_Large_Buff[0],back_len);
return rev;
}
/*************************
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Udp_Internal_PC_Testing_Reply
**<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>data<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> len<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ip<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ port<EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
**<EFBFBD><EFBFBD> <EFBFBD>ã<EFBFBD>UDP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>PC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
0xF0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>CRCУ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
************************/
__attribute__((section(".non_0_wait"))) 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)
{
UINT32 back_len = BLV_UDP_HEAD_LEN + reply_len + 3;
memset(Global_Large_Buff,0,sizeof(Global_Large_Buff));
UDP_Add_Header(Global_Large_Buff,In_BLVPCTestDevice_Cmd,back_len,pack_frame); //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
for(uint16_t i=0;i<reply_len;i++)
{
Global_Large_Buff[BLV_UDP_HEAD_LEN+i] = reply_data[i];
}
NetCRC16(&Global_Large_Buff[0],back_len);
WCHNET_SocketUdpSendTo(g_netinfo.SocketId[SocketIdnex_BLVSeriver], &Global_Large_Buff[0], &back_len, ip, port); //SOCK_UDPS,
return 0x00;
}
/*************************
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Udp_Internal_PC_Testing_Reply
**<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>data<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> len<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ip<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ port<EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
**<EFBFBD><EFBFBD> <EFBFBD>ã<EFBFBD>UDP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>PC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
0xF0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>CRCУ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
************************/
__attribute__((section(".non_0_wait"))) uint8_t Udp_Internal_PC_Testing_Reported(uint8_t *reply_data,uint16_t reply_len,uint8_t *ip,uint16_t port)
{
UINT32 back_len = BLV_UDP_HEAD_LEN + reply_len + 2;
Dbg_Println(DBG_OPT_DEVICE_STATUS,"%s",__func__);
memset(Global_Large_Buff,0,sizeof(Global_Large_Buff));
if((server_info.frame_no < 0xfffe) && (server_info.frame_no >= 0x8000))
{
server_info.frame_no++;
}
else
{
server_info.frame_no = 0x8000;
}
UDP_Add_Header(Global_Large_Buff,In_BLVPCTestDevice_Cmd,back_len,server_info.frame_no); //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
for(uint16_t i=0;i<reply_len;i++)
{
Global_Large_Buff[BLV_UDP_HEAD_LEN+i] = reply_data[i];
}
NetCRC16(&Global_Large_Buff[0],back_len);
WCHNET_SocketUdpSendTo(g_netinfo.SocketId[SocketIdnex_BLVSeriver], &Global_Large_Buff[0], &back_len, ip, port); //SOCK_UDPS,
return 0x00;
}
/*************************
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Udp_Internal_PC_Testing_DataDeal
**<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>data<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> len<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ip<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ port<EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
**<EFBFBD><EFBFBD> <EFBFBD>ã<EFBFBD>UDP<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>
0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
0xF0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>CRCУ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
************************/
__attribute__((section(".non_0_wait"))) uint8_t Udp_Internal_PC_Testing_DataDeal(uint8_t* data, uint16_t DataLen, uint8_t *ip,uint16_t port)
{
uint8_t control_dev = 0,control_addr = 0,control_cmd = 0,temp = 0,temp1 = 0,temp2 = 0;
uint32_t device_listaddr = 0;
uint16_t ack_frame = 0;
uint8_t back_data[15];
uint8_t control_num = 0;
memset(back_data,0,15);
ack_frame = data[FRAME_NO_OFFSET] + (data[FRAME_NO_OFFSET+1]<<8); //֡<><D6A1>
control_dev = data[BLV_UDP_HEAD_LEN+1]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
control_addr = data[BLV_UDP_HEAD_LEN+2]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8>ַ
g_pc_test.pc_ip[0] = ip[0];
g_pc_test.pc_ip[1] = ip[1];
g_pc_test.pc_ip[2] = ip[2];
g_pc_test.pc_ip[3] = ip[3];
g_pc_test.pc_port = port;
/*<2A><>¼һ<C2BC>µ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><E8B1B8><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><E8B1B8>ַ*/
g_pc_test.test_dev = control_dev;
g_pc_test.test_addr = control_addr;
device_listaddr = Find_Device_List_Information(control_dev,control_addr);
if((device_listaddr < SRAM_Device_List_Start_Addr) || (device_listaddr > SRAM_Device_List_End_Addr)) return 0xF0;
switch(control_dev)
{
case DEV_C5IO_Type: //C5IO <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
control_cmd = data[BLV_UDP_HEAD_LEN+3];
if(control_cmd == BLV_C5IO_Set_Relay_CMD) //<2F>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
control_num = DataLen - BLV_UDP_HEAD_LEN - 2 - 4;
if(control_num >= 6) control_num = 6; //Ŀǰ<C4BF>6Byte<74>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//Dbg_Println(DBG_OPT_DEVICE_STATUS,"NET PC Test C5IO_Control Len %d,Control_NUM:%d",DataLen,control_num);
for(uint8_t i = 0;i<control_num;i++)
{
temp = data[BLV_UDP_HEAD_LEN + 4 + i];
for(uint8_t j = 0;j<4;j++)
{
temp2 = i*4+j; //<2F><><EFBFBD>ƻ<EFBFBD>·
temp1 = (temp >> j*2) & 0x03; //<2F><><EFBFBD><EFBFBD>״̬
if(temp1 != 0x00)
{
//Dbg_Println(DBG_BIT_NET_STATUS_bit,"PC Test C5IO_Control_RelayCH%d status:%d",temp2,temp1);
uint8_t control[6];
control[0] = Dev_Host_HVout;
control[1] = 0x00;
control[2] = temp2; //<2F><>·
control[3] = 0x00;
control[4] = temp1; //<2F><><EFBFBD><EFBFBD>״̬
control[5] = 0x00;
DevActionCtrl(control, 6); //<2F>̵<EFBFBD><CCB5><EFBFBD>
}
}
}
}else if(control_cmd == BLV_C5IO_Set_Do_CMD) //DO<44><4F><EFBFBD><EFBFBD>
{
for(uint8_t i = 0;i<2;i++)
{
temp = data[BLV_UDP_HEAD_LEN + 4 + i];
for(uint8_t j = 0;j<4;j++)
{
temp2 = i*4+j; //<2F><><EFBFBD>ƻ<EFBFBD>·
temp1 = (temp >> j*2) & 0x03; //<2F><><EFBFBD><EFBFBD>״̬
if(temp1 != 0x00)
{
//Dbg_Println(DBG_BIT_Debug_STATUS_bit,"PC Test C5IO_Control_DoCH%d status:%d",temp2,temp1);
BUS_C5IO_Control_Do(device_listaddr,temp2,temp1);
}
}
}
}
return 0x00;
case DEV_C5MUSIC_Type:
control_cmd = data[BLV_UDP_HEAD_LEN + 3];
if(control_cmd == BLV_C5MUSIC_Specify_Play_CMD)
{
temp = data[BLV_UDP_HEAD_LEN + 4]; //<2F><><EFBFBD><EFBFBD>״̬
temp1 = data[BLV_UDP_HEAD_LEN + 5]; //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
temp2 = data[BLV_UDP_HEAD_LEN + 6]; //<2F><><EFBFBD><EFBFBD>ID
//Dbg_Println(DBG_BIT_NET_STATUS_bit,"PC Test C5Music_Control dir:%d id:%d status:%d",temp1,temp2,temp);
BUS_C5MUSIC_Playback(device_listaddr,temp1,temp,temp2);
}
{
/*<2A>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>*/
uint8_t ack_buff[4] = {0};
ack_buff[0] = g_pc_test.test_flag;
ack_buff[1] = g_pc_test.test_dev;
ack_buff[2] = g_pc_test.test_addr;
ack_buff[3] = 0x01; //ִ<>н<EFBFBD><D0BD><EFBFBD>
Udp_Internal_PC_Testing_Reply(ack_buff,0x04,ack_frame,g_pc_test.pc_ip,g_pc_test.pc_port);
}
break;
case DEV_RS485_PWM:
control_cmd = data[BLV_UDP_HEAD_LEN + 3];
if(control_cmd == C12_SET_LIGHT_CMD)
{
temp = data[BLV_UDP_HEAD_LEN + 4]; //<2F><><EFBFBD>û<EFBFBD>·
temp1 = data[BLV_UDP_HEAD_LEN + 5]; //<2F><><EFBFBD><EFBFBD>ֵ
temp2 = data[BLV_UDP_HEAD_LEN + 6]; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
Dbg_Println(DBG_BIT_NET_STATUS_bit,"PC Test C12Dimming:%d light:%d fade:%d",temp1,temp2,temp);
if(temp)
{
UINT8 control[6];
control[0] = DEV_RS485_PWM;
control[1] = 0x00;
control[2] = temp-1; //<2F><>·
control[3] = 0x00;
control[4] = 0x01; //<2F><><EFBFBD><EFBFBD>״̬
control[5] = temp1; //<2F><><EFBFBD><EFBFBD>ֵ
DevActionCtrl(control, 6); //<2F>̵<EFBFBD><CCB5><EFBFBD>
}
}
break;
default: break;
}
return 0x00;
}
/*************************
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Udp_Internal_BLVPCTestDevice_Process
**<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>data<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> len<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ip<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ port<EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
**<EFBFBD><EFBFBD> <EFBFBD>ã<EFBFBD>BLV-C1PC<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>
0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
0xF0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>CRCУ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
************************/
__attribute__((section(".non_0_wait"))) uint8_t Udp_Internal_BLVPCTestDevice_Process(uint8_t* data, uint16_t DataLen, uint8_t *ip,uint16_t port)
{
/*CRCУ<43><D0A3>*/
uint16_t data_crc = data[DataLen-2] + (data[DataLen-1] << 8);
if(NetCRC16_2(data,DataLen-2) != data_crc) return 0xF0;
uint8_t temp1 = 0;
uint32_t dev_addr = 0;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"%s",__func__);
dev_addr = Find_Device_List_Information(DEV_PCTEST_TYPE,DEV_PCTEST_Addr);
Device_Public_Information_G BUS_Public;
PC_TEST_DEVICE_INFO PC_Test_Info;
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),dev_addr);
SRAM_DMA_Read_Buff((uint8_t *)&PC_Test_Info,sizeof(PC_TEST_DEVICE_INFO),dev_addr+Dev_Privately);
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
temp1 = data[BLV_UDP_HEAD_LEN];
if(temp1 == 0x01) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
{
g_pc_test.test_flag = 0x11;
g_pc_test.test_dev = data[BLV_UDP_HEAD_LEN + 1]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
g_pc_test.test_addr = data[BLV_UDP_HEAD_LEN + 2]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8>ַ
PC_Test_Info.test_time = data[BLV_UDP_HEAD_LEN + 3]; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3AC>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PC_Test_Info.test_flag = g_pc_test.test_flag;
PC_Test_Info.test_tick = SysTick_1ms;
PC_Test_Info.test_time *= 60000;
g_pc_test.pc_ip[0] = ip[0]; //2022-07-12
g_pc_test.pc_ip[1] = ip[1];
g_pc_test.pc_ip[2] = ip[2];
g_pc_test.pc_ip[3] = ip[3];
g_pc_test.pc_port = port;
}
else if(temp1 == 0x02) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
g_pc_test.test_flag = 0x12;
PC_Test_Info.test_flag = g_pc_test.test_flag;
PC_Test_Info.test_tick = SysTick_1ms;
PC_Test_Info.test_time = 120000;
Udp_Internal_PC_Testing_DataDeal(data,DataLen,ip,port);
}else if(temp1 == 0x03) //<2F><><EFBFBD><EFBFBD>Ѳ<EFBFBD>ز<EFBFBD><D8B2><EFBFBD> - <20><><EFBFBD><EFBFBD>485<38>˿<EFBFBD>
{
g_pc_test.test_flag = 0x13;
PC_Test_Info.test_flag = g_pc_test.test_flag;
g_pc_test.tour_num = 0;
g_pc_test.tour_succ = 0;
g_pc_test.pc_ip[0] = ip[0];
g_pc_test.pc_ip[1] = ip[1];
g_pc_test.pc_ip[2] = ip[2];
g_pc_test.pc_ip[3] = ip[3];
g_pc_test.pc_port = port;
}
BUS_Public.check = 0x00;
BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&PC_Test_Info, sizeof(PC_TEST_DEVICE_INFO));
SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*<2A><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>*/
SRAM_DMA_Write_Buff((uint8_t *)&PC_Test_Info,sizeof(PC_TEST_DEVICE_INFO),dev_addr+Dev_Privately);
return 0x00;
}
/*************************
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDP_Conversion_Baud
**<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>data<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>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
************************/
__attribute__((section(".non_0_wait"))) uint32_t UDP_Conversion_Baud(uint8_t data)
{
uint32_t baud = 0;
switch(data)
{
case 0x01:
baud = 9600;
break;
case 0x02:
baud = 14400;
break;
case 0x03:
baud = 19200;
break;
case 0x04:
baud = 38400;
break;
case 0x05:
baud = 56000;
break;
case 0x06:
baud = 57600;
break;
case 0x07:
baud = 115200;
break;
}
return baud;
}
/*************************
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDP_Conversion_Baud
**<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>data<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>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
************************/
__attribute__((section(".non_0_wait"))) uint8_t UDP_Baud_Conversion_Data(uint32_t data)
{
uint8_t re_data = 0;
switch(data)
{
case 9600:
re_data = 0x01;
break;
case 14400:
re_data = 0x02;
break;
case 19200:
re_data = 0x03;
break;
case 38400:
re_data = 0x04;
break;
case 56000:
re_data = 0x05;
break;
case 57600:
re_data = 0x06;
break;
case 115200:
re_data = 0x07;
break;
}
return re_data;
}
/*************************
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Udp_Internal_SeriaNet_Process
**<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>data<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> len<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ip<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ port<EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
**<EFBFBD><EFBFBD> <EFBFBD>ã<EFBFBD>BLV-C1͸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
0xF0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>CRCУ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
************************/
__attribute__((section(".non_0_wait"))) uint8_t Udp_Internal_SeriaNet_Process(uint8_t* data, uint16_t DataLen, uint8_t *ip,uint16_t port)
{
/*CRCУ<43><D0A3>*/
uint16_t data_crc = data[DataLen-2] + (data[DataLen-1] << 8);
if(NetCRC16_2(data,DataLen-2) != data_crc) return 0xF0;
uint8_t back_data[SeriaNet_Cmd_Send_Len]={0};
UINT32 sendlen = SeriaNet_Cmd_Send_Len;
uint8_t temp = 0;
uint16_t pack_frame = 0,temp_len = 0;
pack_frame = data[FRAME_NO_OFFSET] + (data[FRAME_NO_OFFSET+1]<<8); //֡<><D6A1>
SRAM_DMA_Write_Buff(ip,4,SRAM_IAP_IP_ADDRESS); //<2F><><EFBFBD><EFBFBD>PC IP<49><50>ַ
SRAM_Write_Word(port,SRAM_IAP_PORT_ADDRESS); //<2F><><EFBFBD><EFBFBD>PC <20>˿ں<CBBF>
/*<2A><><EFBFBD>յ<EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
Dbg_Println(DBG_BIT_NET_STATUS_bit,"%s IP:%02X.%02X.%02X.%02X Port:%d\r\n",__func__,ip[0],ip[1],ip[2],ip[3],port);
/*͸<><CDB8><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>*/
temp = data[BLV_UDP_HEAD_LEN];
switch(temp)
{
case 0x01: //͸<><CDB8>״̬<D7B4><CCAC>ѯ - <20><><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>
UDP_Add_Header(back_data,In_SeriaNet_Cmd,SeriaNet_Cmd_Send_Len,pack_frame); //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
back_data[BLV_UDP_HEAD_LEN] = 0x01;
if(data[BLV_UDP_HEAD_LEN+1] == 0x01) //<2F>˿<EFBFBD>1
{
back_data[BLV_UDP_HEAD_LEN+1] = Poll485_Info.port_mode;
Poll485_Info.mode_tick = SysTick_1s;
}else if(data[BLV_UDP_HEAD_LEN+1] == 0x02) //<2F>˿<EFBFBD>2
{
back_data[BLV_UDP_HEAD_LEN+1] = Act485_Info.port_mode;
Act485_Info.mode_tick = SysTick_1s;
}else if(data[BLV_UDP_HEAD_LEN+1] == 0x03) //<2F>˿<EFBFBD>3
{
back_data[BLV_UDP_HEAD_LEN+1] = BUS485_Info.port_mode;
BUS485_Info.mode_tick = SysTick_1s;
}
NetCRC16(&back_data[0],SeriaNet_Cmd_Send_Len);
WCHNET_SocketUdpSendTo(g_netinfo.SocketId[SocketIdnex_BLVSeriver], &back_data[0], &sendlen, ip, port);
break;
case 0x02: //͸<><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>
UDP_Add_Header(back_data,In_SeriaNet_Cmd,SeriaNet_Cmd_Send_Len,pack_frame); //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
back_data[BLV_UDP_HEAD_LEN] = 0x02;
back_data[BLV_UDP_HEAD_LEN+1] = 0x01;
if(data[BLV_UDP_HEAD_LEN+1] == 0x01) //<2F>˿<EFBFBD>1
{
Poll485_Info.baud = UDP_Conversion_Baud(data[BLV_UDP_HEAD_LEN+2]); //<2F><><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD>
if(Poll485_Info.baud != Polling_Baud) //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
{
Poll485_Info.BaudRateCfg(Poll485_Info.baud);
}
Poll485_Info.mode_outtime = data[BLV_UDP_HEAD_LEN+3]*2; //<2F><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ʱʱ<CAB1><CAB1>
Poll485_Info.port_mode = data[BLV_UDP_HEAD_LEN+4]; //<2F><><EFBFBD>ö˿<C3B6>ģʽ
Poll485_Info.mode_tick = SysTick_1s;
}else if(data[BLV_UDP_HEAD_LEN+1] == 0x02) //<2F>˿<EFBFBD>2
{
Act485_Info.baud = UDP_Conversion_Baud(data[BLV_UDP_HEAD_LEN+2]); //<2F><><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD>
if(Act485_Info.baud != Active_Baud) //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
{
Act485_Info.BaudRateCfg(Act485_Info.baud);
}
Act485_Info.mode_outtime = data[BLV_UDP_HEAD_LEN+3]*2; //<2F><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ʱʱ<CAB1><CAB1>
Act485_Info.port_mode = data[BLV_UDP_HEAD_LEN+4]; //<2F><><EFBFBD>ö˿<C3B6>ģʽ
Act485_Info.mode_tick = SysTick_1s;
Dbg_Println(DBG_BIT_NET_STATUS_bit,"Act485_Info.baud:%d",Act485_Info.baud );
Dbg_Println(DBG_BIT_NET_STATUS_bit,"Act485_Info.pass_outtime:%d",Act485_Info.mode_outtime );
Dbg_Println(DBG_BIT_NET_STATUS_bit,"Act485_Info.port_mode:%d",Act485_Info.port_mode );
}else if(data[BLV_UDP_HEAD_LEN+1] == 0x03) //<2F>˿<EFBFBD>3
{
BUS485_Info.baud = UDP_Conversion_Baud(data[BLV_UDP_HEAD_LEN+2]); //<2F><><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD>
if(BUS485_Info.baud != Bus_Baud) //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
{
}
BUS485_Info.mode_outtime = data[BLV_UDP_HEAD_LEN+3]*2; //<2F><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ʱʱ<CAB1><CAB1>
BUS485_Info.port_mode = data[BLV_UDP_HEAD_LEN+4]; //<2F><><EFBFBD>ö˿<C3B6>ģʽ
BUS485_Info.mode_tick = SysTick_1s;
}else {
back_data[BLV_UDP_HEAD_LEN+1] = 0x02;
}
NetCRC16(&back_data[0],SeriaNet_Cmd_Send_Len);
WCHNET_SocketUdpSendTo(g_netinfo.SocketId[SocketIdnex_BLVSeriver], &back_data[0], &sendlen, ip, port);
break;
case 0x03: //͸<><CDB8><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD> - <20><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD>豸û<E8B1B8>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>
if(data[BLV_UDP_HEAD_LEN+1] == 0x01)
{
Poll485_Info.mode_tick = SysTick_1s;
}else if(data[BLV_UDP_HEAD_LEN+1] == 0x02)
{
Act485_Info.mode_tick = SysTick_1s;
}else if(data[BLV_UDP_HEAD_LEN+1] == 0x03)
{
BUS485_Info.mode_tick = SysTick_1s;
}
/*<2A><>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD>ݷŵ<DDB7><C5B5><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>*/
temp_len = DataLen - 15 - 2 - 3;
//Dbg_Println(DBG_BIT_NET_STATUS_bit,"NET temp_len:%d ",temp_len );
Write_Uart_SendBuff(data[BLV_UDP_HEAD_LEN+1],data[BLV_UDP_HEAD_LEN+2],&data[BLV_UDP_HEAD_LEN+3],temp_len);
break;
}
return 0x00;
}
/*************************
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Udp_Internal_SeriaNet_Uploading
**<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>data_addr<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ǰ2byte<EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> - ͸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ480Byte
**<EFBFBD><EFBFBD> <EFBFBD>ã<EFBFBD>BLV-C1͸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD>
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
0xF0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>CRCУ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
************************/
__attribute__((section(".non_0_wait"))) uint8_t Udp_Internal_SeriaNet_Uploading(uint8_t port,uint32_t baud,uint32_t data_addr)
{
uint8_t pc_ip[4];
uint16_t pc_port = 0;
uint32_t write_addr = data_addr;
UINT32 data_len = SRAM_Read_Word(data_addr);
if(data_len > Passthrough_DataLen_Max) data_len = Passthrough_DataLen_Max;
memset(pc_ip,0,sizeof(pc_ip));
memset(Global_Large_Buff,0,sizeof(Global_Large_Buff));
if((server_info.frame_no < 0xfffe) && (server_info.frame_no >= 0x8000))
{
server_info.frame_no++;
}
else
{
server_info.frame_no = 0x8000;
}
/*<2A><>ȡPC IP<49><50>ַ*/
SRAM_DMA_Read_Buff(pc_ip,4,SRAM_IAP_IP_ADDRESS);
pc_port = SRAM_Read_Word(SRAM_IAP_PORT_ADDRESS);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"Udp_Internal_SeriaNet_Uploading IP:%02X.%02X.%02X.%02X Port:%d",pc_ip[0],pc_ip[1],pc_ip[2],pc_ip[3],pc_port);
write_addr = data_addr+2;
SRAM_DMA_Read_Buff(&Global_Large_Buff[BLV_UDP_HEAD_LEN + 2],data_len,write_addr);
Dbg_Println(DBG_BIT_NET_STATUS_bit,"Udp_Internal_SeriaNet_Uploading Len:%d",data_len);
data_len += 19; //<2F><><EFBFBD>ϰ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>15Byte<74><65><EFBFBD><EFBFBD>βCRC2Byte
/**/
UDP_Add_Header(Global_Large_Buff,In_SeriaNetReported_Cmd,data_len,server_info.frame_no); //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
Global_Large_Buff[BLV_UDP_HEAD_LEN] = port; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD>ݶ˿ں<CBBF>
Global_Large_Buff[BLV_UDP_HEAD_LEN + 1] = UDP_Baud_Conversion_Data(baud); //<2F><>ǰ<EFBFBD><C7B0><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD>
NetCRC16(&Global_Large_Buff[0],data_len);
WCHNET_SocketUdpSendTo(g_netinfo.SocketId[SocketIdnex_BLVSeriver], &Global_Large_Buff[0], &data_len, pc_ip, pc_port);
return 0x00;
}
/*************************
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Udp_Internal_SeriaNet_Uploading
**<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>data_addr<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ǰ2byte<EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> - ͸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ480Byte
**<EFBFBD><EFBFBD> <EFBFBD>ã<EFBFBD>BLV-C1͸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD>
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
0xF0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>CRCУ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
************************/
__attribute__((section(".non_0_wait"))) uint8_t Udp_Internal_SeriaNet_Uploading2(uint8_t port,uint32_t baud,uint8_t* data, uint16_t DataLen)
{
uint8_t pc_ip[4];
uint16_t pc_port = 0;
UINT32 data_len = DataLen + 19;
if(data_len > Passthrough_DataLen_Max) data_len = Passthrough_DataLen_Max;
memset(pc_ip,0,sizeof(pc_ip));
memset(Global_Large_Buff,0,sizeof(Global_Large_Buff));
if((server_info.frame_no < 0xfffe) && (server_info.frame_no >= 0x8000))
{
server_info.frame_no++;
}else{
server_info.frame_no = 0x8000;
}
/*<2A><>ȡPC IP<49><50>ַ*/
SRAM_DMA_Read_Buff(pc_ip,4,SRAM_IAP_IP_ADDRESS);
pc_port = SRAM_Read_Word(SRAM_IAP_PORT_ADDRESS);
UDP_Add_Header(Global_Large_Buff,In_SeriaNetReported_Cmd,data_len,server_info.frame_no); //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
Global_Large_Buff[BLV_UDP_HEAD_LEN] = port; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD>ݶ˿ں<CBBF>
Global_Large_Buff[BLV_UDP_HEAD_LEN + 1] = UDP_Baud_Conversion_Data(baud); //<2F><>ǰ<EFBFBD><C7B0><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD>
for(uint16_t i = 0;i<data_len - 19;i++)
{
Global_Large_Buff[BLV_UDP_HEAD_LEN + 2 + i] = data[i];
}
NetCRC16(&Global_Large_Buff[0],data_len);
WCHNET_SocketUdpSendTo(g_netinfo.SocketId[SocketIdnex_BLVSeriver], &Global_Large_Buff[0], &data_len, pc_ip, pc_port);
return 0x00;
}
/*************************
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Udp_Internal_SeriaNet_Uploading
**<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>data_addr<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ǰ2byte<EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> - ͸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ480Byte
**<EFBFBD><EFBFBD> <EFBFBD>ã<EFBFBD>BLV-C1͸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD>
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
0xF0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>CRCУ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
************************/
__attribute__((section(".non_0_wait"))) uint8_t Udp_Internal_SeriaNet_Response_Timeout(void)
{
uint8_t pc_ip[4];
uint16_t pc_port = 0;
UINT32 data_len = SeriaNet_Cmd_Send_Len;
uint8_t back_data[SeriaNet_Cmd_Send_Len];
memset(pc_ip,0,sizeof(pc_ip));
memset(back_data,0,sizeof(back_data));
if((server_info.frame_no < 0xfffe) && (server_info.frame_no >= 0x8000))
{
server_info.frame_no++;
}
else
{
server_info.frame_no = 0x8000;
}
/*<2A><>ȡPC IP<49><50>ַ*/
SRAM_DMA_Read_Buff(pc_ip,4,SRAM_IAP_IP_ADDRESS);
pc_port = SRAM_Read_Word(SRAM_IAP_PORT_ADDRESS);
UDP_Add_Header(back_data,In_SeriaNet_Cmd,data_len,server_info.frame_no); //<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
back_data[BLV_UDP_HEAD_LEN] = 0x03; //͸<><CDB8><EFBFBD>ظ<EFBFBD>
back_data[BLV_UDP_HEAD_LEN + 1] = 0x03; //<2F><>ʱ״̬
NetCRC16(&back_data[0],data_len);
WCHNET_SocketUdpSendTo(g_netinfo.SocketId[SocketIdnex_BLVSeriver], &back_data[0], &data_len, pc_ip, pc_port);
return 0x00;
}
/*******************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BLV_UDP_Comm_Task
* <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><EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD>
********************************************/
__attribute__((section(".non_0_wait"))) void BLV_UDP_Comm_Task(void)
{
static uint32_t udp_state_tick = 0;
uint32_t temp_val = 0;
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
if( SysTick_1ms - udp_state_tick >= 100 )
{
udp_state_tick = SysTick_1ms;
if( (WCHNET_Get_PHY_Linked_Status() == 0x01) || (server_info.init_flag == 0x00) ) return ; //DNS<4E><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD>
/*<2A><><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>TFTP<54><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
// if(IAPVarTypeStruct_Ptr != NULL)
// {
// if(IAPSTART == IAPVarTypeStruct_Ptr->IapState)
// {
// Dbg_Println(DBG_BIT_NET_STATUS_bit,"RoomState_Cmd<6D><64>ͣ,IAP<41><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..");
// return;
// }
// }
server_info.udp_scan_cnt++;
if(server_info.udp_scan_cnt >= 9)
{
server_info.udp_scan_cnt = 0x00;
server_info.udp_timesync_cnt++;
server_info.udp_periodic_cnt++;
//<2F>ж<EFBFBD>ʱ<EFBFBD><CAB1>ͬ<EFBFBD><CDAC> - <20><>û<EFBFBD>е<EFBFBD>ʱ<EFBFBD><CAB1>
if(server_info.udp_timesync_cnt >= 7200){
server_info.udp_timesync_cnt = 0x00;
server_info.active_cmd_flag |= UDP_ActSend_TimeSync_Flag;
}
//<2F>ж϶<D0B6><CFB6><EFBFBD><EFBFBD>ϱ<EFBFBD> - <20><>û<EFBFBD>е<EFBFBD>ʱ<EFBFBD><CAB1>
if(server_info.udp_periodic_cnt >= server_info.udp_periodic_time){
server_info.udp_periodic_cnt = 0x00;
server_info.active_cmd_flag |= UDP_ActSend_Periodic_Flag;
}
//<2F>ж<EFBFBD>RCU<43><55><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>־λ<D6BE>ɲ<EFBFBD><C9B2><EFBFBD><EFBFBD><EFBFBD>
if(server_info.rcu_reboot_flag == 0x01){
server_info.rcu_reboot_flag = 0x00;
server_info.active_cmd_flag |= UDP_ActSend_Reboot_Flag; //<2F>ϱ<EFBFBD>RCU<43><55><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>
}
//UDP_ActSend_PowerChange_Scan_State(); //ɨ<><C9A8>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
//Udp_Scan_Roomstate(); //ɨ<>跿<EFBFBD><E8B7BF><EFBFBD>豸״̬
}
switch(server_info.udp_sta)
{
case 0x01: //ע<><D7A2>
if(server_info.register_flag == 0x01)
{
if(SysTick_1s - server_info.register_tick > USER_NET_Register_Timeout) //ÿ30S <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
Dbg_Println(DBG_BIT_NET_STATUS_bit,"UDPע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><EFBFBD>ͳ<EFBFBD>ʱ %d",server_info.register_num);
server_info.register_tick = SysTick_1s;
server_info.register_num++;
server_info.register_flag = 0x00;
if(server_info.register_num >= USER_NET_Register_Times) server_info.init_flag = 0x00;
}
return ;
}
Dbg_Println(DBG_BIT_NET_STATUS_bit,"UDPע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><EFBFBD><EFBFBD>");
UDP_Search_Ack(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һֱע<D6B1><D7A2>
server_info.udp_idle_tick = SysTick_1ms;
server_info.register_flag = 0x01;
server_info.register_tick = SysTick_1s;
break;
case 0x02: //<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
/*UDP <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFB5BD><EFBFBD><EFBFBD>״̬*/
if(SysTick_1ms - server_info.udp_idle_tick >= 30000)
{
server_info.udp_idle_tick = SysTick_1ms;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
server_info.active_cmd_flag |= UDP_ActSend_Heart_Flag;
}
/*UDP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>*/
if(SysTick_1ms - server_info.udp_online_tick >= server_info.udp_online_time)
{
server_info.udp_online_tick = SysTick_1ms;
server_info.init_flag = 0x00; //UDP<44><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//LOG_SYS_Server_Comm_State_Record(RCU_NO_SERVER);
return ;
}
for(uint8_t i=0;i<7;i++)
{
if( ( server_info.active_cmd_flag & (0x01 << i) ) != 0x00 )
{
server_info.udp_send_flag = 0x01 << i;
server_info.udp_sta = 0x03;
server_info.udp_retry_cnt = 0x00;
server_info.udp_retry_time = 2000;
break;
}
}
break;
case 0x03: //<2F><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>
switch(server_info.udp_send_flag)
{
case 0x01: //ȡ<>ϵ<EFBFBD><CFB5>ϱ<EFBFBD> - <20><><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>
Udp_Internal_Power_Change_Report_CMD();
server_info.udp_retry_num = 0x02; //һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33>
server_info.udp_retry_tick = SysTick_1ms;
server_info.udp_idle_tick = SysTick_1ms;
server_info.udp_sta = 0x04; //<2F><><EFBFBD><EFBFBD>͵ȴ<CDB5>
break;
case 0x02: //<2F>豸״̬<D7B4>ϱ<EFBFBD> -
//Udp_Internal_RoomState();
server_info.udp_retry_num = 0x02; //һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33>
server_info.udp_retry_tick = SysTick_1ms;
server_info.udp_idle_tick = SysTick_1ms;
server_info.udp_sta = 0x04; //<2F><><EFBFBD><EFBFBD>͵ȴ<CDB5>
break;
case 0x04: //<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> - ֻ<><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
//Udp_Internal_Periodic_Report_PackSend();
server_info.udp_idle_tick = SysTick_1ms;
server_info.udp_send_flag = 0x00;
server_info.active_cmd_flag &= ~UDP_ActSend_Periodic_Flag;
server_info.udp_sta = 0x02;
break;
case 0x08: //<2F>ϱ<EFBFBD>RCU<43><55><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD> -
//Udp_Internal_Reboot_Reason_Report_CMD();
server_info.udp_retry_num = 0x02; //һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33>
server_info.udp_retry_tick = SysTick_1ms;
server_info.udp_idle_tick = SysTick_1ms;
server_info.udp_sta = 0x04; //<2F><><EFBFBD><EFBFBD>͵ȴ<CDB5>
break;
case 0x10: //<2F><>ȡ<EFBFBD><C8A1>̬ -
Udp_Internal_GetRoomRent_CMD();
server_info.udp_retry_num = 0x02; //һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33>
server_info.udp_retry_tick = SysTick_1ms;
server_info.udp_idle_tick = SysTick_1ms;
server_info.udp_sta = 0x04; //<2F><><EFBFBD><EFBFBD>͵ȴ<CDB5>
break;
case 0x20: //ʱ<><CAB1>ͬ<EFBFBD><CDAC> -
Udp_Internal_GetTime_CMD();
server_info.udp_retry_num = 0x02; //һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33>
server_info.udp_retry_tick = SysTick_1ms;
server_info.udp_idle_tick = SysTick_1ms;
server_info.udp_sta = 0x04; //<2F><><EFBFBD><EFBFBD>͵ȴ<CDB5>
break;
case 0x40: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD>30S <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
UDP_Heart_Send();
server_info.udp_idle_tick = SysTick_1ms;
server_info.udp_send_flag = 0x00;
server_info.active_cmd_flag &= ~UDP_ActSend_Heart_Flag;
server_info.udp_sta = 0x02;
break;
default:
server_info.udp_sta = 0x02;
break;
}
return ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD>
case 0x04: //<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>ACK
if(server_info.udp_send_flag == 0x00) {
server_info.udp_sta = 0x02; //<2F><><EFBFBD>յ<EFBFBD><D5B5>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
break;
}
if( server_info.udp_retry_cnt <= server_info.udp_retry_num )
{
if( SysTick_1ms - server_info.udp_retry_tick >= server_info.udp_retry_time)
{
server_info.udp_retry_tick = SysTick_1ms;
//<2F><><EFBFBD>ͳ<EFBFBD>ʱ
server_info.udp_retry_cnt++;
if(server_info.udp_retry_cnt > server_info.udp_retry_num)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7>Ѵ<EFBFBD><D1B4><EFBFBD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD>־λ
if(server_info.udp_send_flag == 0x02) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸״̬<D7B4><CCAC><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
temp_val = SRAM_Read_DW(SRAM_UDP_SendData_Tempaddr);
SRAM_Write_DW(temp_val, SRAM_UDP_SendData_Readaddr); //<2F><><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>λ
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD>ϱ<EFBFBD><EFBFBD>豸״̬ʧ<EFBFBD><EFBFBD> <20><>:%8X",temp_val);
temp_val = SRAM_Read_DW(SRAM_DEVICE_ONLINE_STATE_TEMP_ADDR); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9>϶<EFBFBD>ȡ<EFBFBD><C8A1>ַ
SRAM_Write_DW(temp_val, SRAM_DEVICE_ONLINE_STATE_READ_ADDR); //<2F><><EFBFBD>϶<EFBFBD><CFB6><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>¸<EFBFBD>ֵ
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD> <20><>:%8X",temp_val);
}
server_info.active_cmd_flag &= ~server_info.udp_send_flag;
server_info.udp_sta = 0x02; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}else {
server_info.udp_sta = 0x03; //<2F><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>
server_info.udp_retry_time += 2000;
}
Dbg_Println(DBG_BIT_NET_STATUS_bit,"udp_retry:%02x - %d - %d",server_info.udp_send_flag,server_info.udp_retry_cnt,server_info.udp_retry_time);
}
}else {
//<2F><><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7>Ѵ<EFBFBD><D1B4><EFBFBD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD>־λ
server_info.active_cmd_flag &= ~server_info.udp_send_flag;
server_info.udp_sta = 0x02; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
break;
default:
server_info.udp_sta = 0x02;
break;
}
}
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>ظ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>MAC<41><43>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>һλ * 2ms */
if(server_info.search_ack_flag == 0x01)
{
uint32_t temp_tick = 0;
temp_tick = g_netinfo.mac_addr[5];
temp_tick = temp_tick * 2;
if( SysTick_1ms - server_info.search_ack_tick >= temp_tick )
{
server_info.search_ack_tick = SysTick_1ms;
server_info.search_ack_flag = 0x00;
//Udp_Internal_Read_MCU_System_SendAck(server_info.udp_ip,server_info.local_port,server_info.ack_frame);
}
}
}