- 用 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 完整源码
290 lines
11 KiB
C
290 lines
11 KiB
C
/**
|
||
******************************************************************************
|
||
* @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
|