Files
wangfq 95808f9f25 refactor(vd960Loop): 算法回退到 DLD154V4B,四通道适配
- 用 DLD154V4B vd1_task/per_channel 替换 vds_task 复杂算法
- 移除 FUNCTION_B/二次判断/快速变化/多重确认等增强特性
- 保留平坦性离开算法 (CN200910309382),每通道独立状态
- 灵敏度表改为 DLD154V4B 4级: {216,108,36,10} / {108,72,18,9}
- 清理废弃类型: FltHistoryManager, Loop_ACS_Info, StageRangeConfig 等
- 首次添加 vd960DBN 完整源码
2026-06-25 16:21:57 +08:00

290 lines
11 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
******************************************************************************
* @file net_srv.c
* @author wangfq
* @version V1.0
* @date 2026-03-02
* @brief net message handle: unpack, exeute, response
*
******************************************************************************
*/
#ifndef __NET_SRV_H__
#define __NET_SRV_H__
#include <stdint.h>
#define MAX_COUNTER_NET_STATE_NORMAL 100
//#define RECE_BUF_LEN 512 /* ?????????????ó?? */
#define MAX_REPORT_INTERVAL_MS 30000 //60000 //180??
#define MIN_REPORT_INTERVAL_MS 6000 // 6??
#define MAX_REPORT_TIMEOUT_MS 4000 // 4??
#define MAX_REPORT_INTERVAL 3
#define MAX_CLEAR_COUNTER_INTERVAL 4900 // 6hour=6*3600
#define PORT_TCP_DEFAULT 5550
#define NET_REPORT_INTERVAL 300 // 300 second
#define COM_LSSC_MESSAGE_UDP_PORT 5505 //ssc UDP message port
#define COM_LSSC_TCP_PORT 5550
#define COM_LSSC_UDP_PORT 5500
#define COM_DEV_MESSAGE_PORT 4900 //udp dev local message port
#define TOPIC_DEFAULT_SUBSCRIBE "ptpc/display"
#define TOPIC_DEFAULT_PUBLISH "gtpc/display/Initialize"
#define UART_BAUD_DEFAULT_PORT_1 115200 // 与Loop MCU 通信的波特率 TTL, g_storage_uart_baud_1
#define UART_BAUD_DEFAULT_PORT_2 115200 // baud2 TTL g_storage_uart_baud_2
typedef enum
{
IOT_Addr_IP_Mode = 0,
IOT_Addr_DN_Mode // Domain Name Mode
}IOT_Host_Mode;
typedef struct _LOCAL_NET_CFG
{
uint8_t mac[6];
uint8_t lip[4]; /*local IP±???IP???·*/
uint8_t sub[4]; /*×???????*/
uint8_t gw[4];
uint8_t dns[4]; /*DNS·????÷???·*/
uint16_t port_ssc_tcp;
uint16_t port_ssc_udp;
uint16_t port_ssc_udp_message; // use for interval of report
uint16_t port_dev_tcp; //use for server http port
uint16_t port_dev_udp;
}Local_Net_Cfg; //32
extern Local_Net_Cfg local_net_cfg;
typedef struct _NET_CENTER_INFO_
{
uint8_t lssc_ip[4]; //Local Sotfware Service Center ±????í??·???????
uint16_t msg_port;
uint16_t tcp_port; // use for server http port
uint16_t udp_port;
uint8_t sw_ver[2];
}NET_CENTER_INFO;
extern NET_CENTER_INFO net_center_info;
typedef struct _IOT_NET_INFO_
{
uint8_t remote_addr[64];
uint16_t mqtt_port;
uint8_t client_id[64]; //?????±±í??????±??ú?ò????
uint8_t username[64];
uint8_t password[32];
uint8_t mode; //0xXX ??0???? 0 IP, 1 dns, ??1???? 0 disable, 1 enable
//ip, iot_disable, 0x00:0000 0000,
//dns,iot_disable, 0x01:0000 0001,
//ip, iot_enable, 0x02:0000 0010,
//dns,iot_enable, 0x03:0000 0011
}IOT_NET_INFO;
extern IOT_NET_INFO iot_net_info;
#define MAX_TOPIC_LENGTH 64
typedef struct _IOT_TOPIC_
{
uint8_t clientid_enable; // ?÷????·?°ü??¤CClientID
uint8_t topic_pub[MAX_TOPIC_LENGTH];
uint8_t topic_sub[MAX_TOPIC_LENGTH];
} IOT_Topic;
extern IOT_Topic g_iot_topic;
#define MQTT_KEEPALIVE_INTERVAL 9
typedef struct _NET_STATE_
{
uint8_t flag;
uint8_t intstat;
uint32_t counter;
} Net_State;
extern Net_State g_net_state;
void write_net_config(Local_Net_Cfg *local, NET_CENTER_INFO *center, IOT_NET_INFO *iotcfg, IOT_Topic *iottopic);
#define DPG_API_KEY_METHOD "\"Method\""
#define DPG_API_KEY_CODE "\"Code\""
#define DPG_API_KEY_DATA "\"Data\""
#define DPG_API_KEY_IP "\"Ip\""
#define DPG_API_KEY_PORT "\"Port\""
#define DPG_API_KEY_PORT_MST "\"PortMsg\""
#define DPG_API_KEY_Mac "\"Mac\""
#define DPG_API_KEY_SubnetMask "\"SubnetMask\""
#define DPG_API_KEY_DNS "\"DNS\""
#define DPG_API_KEY_DEVICE_CODE "\"Device_code\""
#define DPG_API_KEY_DEVICE_ID "\"Device_id\""
#define DPG_API_KEY_EXTRA_ID "\"Extra_id\""
#define DPG_API_KEY_PARAMS "\"Params\""
#define DPG_API_KEY_AREA_NUM "\"Area_num\""
#define DPG_API_KEY_EXTRA_ID "\"Extra_id\""
#define DPG_API_KEY_AREA_AMOUNT "\"Area_amount\""
#define DPG_API_KEY_DEV_AMOUNT "\"Dev_amount\""
#define DPG_API_KEY_DEV_MODE "\"Dev_mode\""
#define DPG_API_KEY_TOTAL_AMOUNT "\"Total_amount\""
#define DPG_API_KEY_FREE_LOT "\"Free_lot\""
#define DPG_API_KEY_DEV_MODE "\"Dev_mode\""
#define DPG_API_KEY_DisplayLED "\"DisplayLED\""
#define DPG_API_KEY_LED_Addr "\"LED_Addr\""
#define DPG_API_KEY_Content "\"_Content\""
#define DPG_API_KEY_INFO_ENABLE "\"Info_Enable\""
#define DPG_API_KEY_Color "\"Color\""
#define DPG_API_KEY_Duration "\"Duration\""
#define DPG_API_KEY_Bus_Num "\"Bus_Num\""
#define DPG_API_KEY_Sub_Amount "\"Sub_Amount\""
#define DPG_API_KEY_Sub_Dev "\"Sub_Dev\""
#define DPG_API_KEY_Dev_Ip "\"Dev_Ip\""
#define DPG_API_KEY_Gateway_Ip "\"Gateway_Ip\""
#define DPG_API_KEY_Gateway_Port "\"Gateway_Port\""
#define DPG_API_KEY_Server_Ip "\"Server_Ip\""
#define DPG_API_KEY_Server_Port "\"Server_Port\""
#define IOT_API_KEY_HOST "\"Iot_Host\""
#define IOT_API_KEY_PORT "\"Iot_Port\""
#define IOT_API_KEY_USERNAME "\"UserName\""
//add by wfq 20190812
#define DPG_KEY_PARAMS_JSON "\"Params\""
#define KEY_CODE_AccessReport "AccessReport"
#define KEY_CODE_DPG_Addr "\"Dpg_Addr\""
#define KEY_CODE_Access_Channel "\"Access_Channel\""
#define KEY_CODE_State_InOut "\"State_InOut\""
#define KEY_CODE_Time_Stamp "\"TimeStamp\""
#define KEY_CODE_Time_Counter "\"Time_Counter\""
#define KEY_CODE_Bus_Num "\"Bus_Num\""
#define KEY_CODE_Dus_Addr_Enable "\"Dus_Addr_Enable\""
//-------------------
#define SSC_Code_Initialize "\"Initialize\""
#define SSC_Code_UnInitialize "\"UnInitialize\""
#define SSC_Code_Connect "\"Connect\""
#define SSC_Code_DisConnect "\"DisConnect\""
#define SSC_Code_SendCommand "\"SendCommand\""
#define SSC_Code_Speak "\"Speak\""
#define SSC_Code_Count_Off "Count_Off"
#define SSC_Code_Device_Info "Device_Info"
#define SSC_Code_Devs_Info "Devs_Info" //add by wfq 2020-07-14 ?????????????°??×??è±????è±?????
#define SSC_Code_Global_Require "Global_Get"
#define SSC_Code_Global_Set "Global_Set"
#define SSC_Code_Collect_ALL "Collect_All" //?????ù????????????
#define SSC_Code_Collect_Single "Collect_Single" //??????????????????
#define SSC_Code_Config "Config"
#define SSC_Code_DisplayLED "DisplayLED"
#define SSC_Code_Device_Net_Set "Device_Net_Set" //?????è±?????????
#define SSC_Code_HeartBeat "HeartBeat"
#define SSC_Code_CDev_Subs "CDev_Subs" //????×??è±????·????
#define SSC_Code_Device_IOT_Set "Dev_IOT_Set" //?è??IOT???????? MQTT???·?????????????§??????
#define SSC_Code_ACS_Collect_Area "ACS_Collect_Area"
#define SSC_Code_ACS_Collect_Counter "ACS_Collect_Counter" //?????????????????¨?????? add 2021-01-04
#define SSC_Code_Collect_NT_BUS "Collect_NT_BUS" //??????????????×??????·????
#define SSC_Code_CDetail_NT_BUS "CDetail_NT_BUS" //??????????????×????ê?????·???? add 2022-04-19
#define SSC_Code_Radar_Reset "Radar_Reset" //?×?????? 2021-04-23
#define SSC_Code_SerialNet "SerialNet" //485???????? 2021-04-23
#define SSC_Code_Dev_Reset "Dev_Reset" // ?è±??????? 2024-12-13
#define SSC_Code_GetDeviceInfo "\"GetDeviceInfo\""
#define SSC_Code_SetDeviceInfo "\"SetDeviceInfo\""
#define SSC_Code_SetDeviceInfoEX "\"SetDeviceInfoEX\""
#define SSC_Code_StateChangedEvent "\"StateChangedEventReg\""
#define KEY_IOT_HOST "\"Host\""
#define KEY_IOT_PORT "\"Port\""
#define KEY_IOT_USERNAME "\"UserName\""
#define KEY_IOT_PASSWORD "\"Password\""
#define KEY_IOT_MODE "\"Mode\""
//add by wfq 2019-08-14
#define SSC_Code_ACS_Collect_Access "ACS_Collect_Access"
#define SSC_Code_TimeStamp "TimeStamp"
#define SSC_Code_Dev_Time "Dev_Time"
#define SSC_Code_SSC_Time "\"SSC_Time\""
//add by wfq 2020-7-11
#define SSC_Code_ACS_NT_Event "ACS_NT_Event"
#define SSC_Code_GetDusCFG "GetDusCFG" //add by wfq 2020-7-23
#define SSC_Code_SetDusCFG "SetDusCFG" //add by wfq 2020-7-23
#define SSC_Code_ACS_Collect_CJQ "ACS_Collect_CJQ"
//add by wangfq 2022-04-14
#define SSC_Code_Tran_Sub "Tran_Sub" // ??×??è±??¨??????
#define SSC_Code_Dev_Type "\"Dev_Type\"" // ?è±??à?? ×?·????? 20 DLD950
#define SSC_Code_Cmd "Cmd"
#define SSC_Code_Detail "Detail"
extern uint8_t g_flag_timestamp;
extern uint8_t RemoteIP[4];
void manage_udp_message(uint8_t socket, uint8_t *ip, uint16_t port, uint8_t *buf, uint32_t len);
void unpack_ssc_count_off(uint8_t socket, uint8_t count_mode, uint8_t *ip, uint16_t port, uint8_t *buf, uint32_t len);
void unpack_ssc_device_reset(uint8_t socket, uint8_t *ip, uint16_t port, uint8_t *buf, uint32_t len);
void unpack_ssc_device_net_set(uint8_t socket, uint8_t *ip, uint16_t port, uint8_t *buf, uint32_t len);
void unpack_dev_iot_config(uint8_t socket, uint8_t *ip, uint16_t port, uint8_t *buf, uint32_t len);
void unpack_ssc_set_display_led(uint8_t socket, uint8_t *ip, uint16_t port, uint8_t *buf, uint32_t len);
void unpack_ssc_tran_sub(uint8_t socket, uint8_t *ip, uint16_t port, uint8_t *buf, uint32_t len);
void unpack_ssc_radar_reset(uint8_t socket, uint8_t *ip, uint16_t port, uint8_t *buf, uint32_t len);
void unpack_ssc_timestamp(uint8_t *buf, uint32_t len);
void unpack_ssc_collect_cjq_acs_response(uint8_t socket, uint8_t *buf, uint32_t len);
//void acs_dus_report(void);
//void rcv_acs_dus_report_reponse(void);
void dev_response_heartbeat(char *dat);
void dev_send_heartbeat(void);
void dev_get_timestamp_send(void);
void manage_tcp_message(uint8_t socket, uint8_t *buf, uint32_t len);
void manage_mqtt_recv_message(char * msg, int length);
void GetMacAddr(unsigned char *pMAC);
void mStopIfError(u8 iError);
void net_srv_init(void);
void WCHNET_CreateTcpMqttSocket(void);
void WCHNET_CreateTcpSocket(void);
void WCHNET_HandleSockInt(uint8_t socketid, uint8_t intstat);
int get_ipstr_to_array(char *src, uint8_t *dst);
void WCHNET_HandleGlobalInt(void);
#endif