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 完整源码
This commit is contained in:
wangfq
2026-06-25 16:21:57 +08:00
parent 6fd4e564e3
commit 95808f9f25
966 changed files with 406958 additions and 84 deletions

View File

@@ -0,0 +1,37 @@
/********************************** (C) COPYRIGHT *******************************
* File Name : ch32v20x_conf.h
* Author : WCH
* Version : V1.0.0
* Date : 2022/06/16
* Description : Library configuration file.
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* Attention: This software (modified or not) and binary are used for
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*******************************************************************************/
#ifndef __CH32V20x_CONF_H
#define __CH32V20x_CONF_H
#include "ch32v20x_adc.h"
#include "ch32v20x_bkp.h"
#include "ch32v20x_can.h"
#include "ch32v20x_crc.h"
#include "ch32v20x_dbgmcu.h"
#include "ch32v20x_dma.h"
#include "ch32v20x_exti.h"
#include "ch32v20x_flash.h"
#include "ch32v20x_gpio.h"
#include "ch32v20x_i2c.h"
#include "ch32v20x_iwdg.h"
#include "ch32v20x_pwr.h"
#include "ch32v20x_rcc.h"
#include "ch32v20x_rtc.h"
#include "ch32v20x_spi.h"
#include "ch32v20x_tim.h"
#include "ch32v20x_usart.h"
#include "ch32v20x_wwdg.h"
#include "ch32v20x_it.h"
#include "ch32v20x_misc.h"
#endif /* __CH32V20x_CONF_H */

View File

@@ -0,0 +1,18 @@
/********************************** (C) COPYRIGHT *******************************
* File Name : ch32v20x_it.h
* Author : WCH
* Version : V1.0.0
* Date : 2022/06/16
* Description : This file contains the headers of the interrupt handlers.
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* Attention: This software (modified or not) and binary are used for
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*******************************************************************************/
#ifndef __CH32V20x_IT_H
#define __CH32V20x_IT_H
#include "debug.h"
#endif /* __CH32V20x_IT_H */

View File

@@ -0,0 +1,165 @@
/*
* cmcng.h
*
* Created on: Aug 27, 2024
* Author: Thinkpad
*/
#ifndef INCLUDE_CMCNG_H_
#define INCLUDE_CMCNG_H_
#include <stdint.h>
#define PRODUCT_MODEL "DLD960GA"
#define FIRMWARE_VER "1.0"
#define HARDWARE_VER "1.0"
#define FIRMWARE_VER_MAIN 1
#define FIRMWARE_VER_SUB 1
#define HARDWARE_VER_MAIN 1
#define HARDWARE_VER_SUB 1
#define BUFF_STACK_SIZE 512 //128
#define MAX_UART_TXRX_LEN 32
#define MAX_TOUCHUAN_DISABLE_TIME 15
#define BT_DISABLE_IDLE_TIMEOUT 0 //10 // 蓝牙空闲超时 关闭时间默认10 min
typedef enum
{
DDType_DNT900 = 1, //1 ???????? DNT900
DDType_WireDUS, //2???ù?¨???????? DG
DDType_4G_1,
DDType_WireDus_Wb, //4 ???ù?¨???????? ?ò??
DDType_LoraAreaMain, //5 Lora ?????÷?ú
DDType_LoraAreaSub, //6 Lora ???????ú
DDType_LoraLotMain, //7 Lora ?????÷?ú
DDType_LoraLotSub, //8 Lora ???????ú
DDType_LoraBroadcast, //9 Lora ????????
DDType_LoraRelay, //10 Lora ?????? ???? DLR101
DDType_Relay, //11 ?????????? ?¨??RS485-2 ??·?
DDType_4G_IOT, //12 4G ??±¨??????????????MQTT
DDType_Wire_Collect_IOT, //13 ????????±¨??????????????MQTT
DDType_Wire_Display_IOT, //14 ????????·?????????MQTT
DDType_Radar_Lot, //15 ?×??????
DDType_DLD950 = 20, //DLD950
DDType_DBN101 = 21,
DDType_DNT910 = 22, //DNT910,DNT920
DDType_DNT920 = 23,
DDType_DLD950V4 = 24,
}DG_Device_Type;
typedef enum
{
KEY_ET_None = 0,
KEY_ET_BLE_ENABLE, //1
KEY_ET_REBOOT,
KEY_ET_FACTORY,
KEY_ET_NETBLE_FACTORY
} KEY_EVENT_Type;
typedef struct _SUB_CODE_ENABLE_
{
uint16_t code_set;
uint8_t net_enable;
uint8_t iot_enable;
uint8_t custom_enable;
uint8_t loop_enable; // ?÷??????
uint8_t dgdus_enable;
uint8_t wbdus_enable;
uint8_t radar_enable;
uint8_t laser_enable; // lora?¤???×??????
uint8_t lora_enable; // Lora ????
//uint8_t input_enable;
} Sub_Code_Enable;
extern Sub_Code_Enable g_sub_code_enable;
typedef struct _PKG_UART_
{
uint8_t flag;
uint16_t offset;
uint16_t len;
uint8_t pkg[BUFF_STACK_SIZE];
uint32_t tick;
}Pkg_Uart;
extern Pkg_Uart g_pkg_uart_1;
extern Pkg_Uart g_pkg_uart_2;
#define RX_BUFFER_LEN BUFF_STACK_SIZE
typedef struct
{
volatile uint8_t DMA_USE_BUFFER;
uint8_t Rx_Buffer[2][RX_BUFFER_LEN];
} USART_DMA_UNIT;
typedef struct _DBN_BLE_STATE_
{
uint8_t flag; // if need to report
uint8_t enable; // 是否使能
uint8_t send_flag;
uint8_t obj_amount;
uint8_t cmd;
uint8_t sens_type;
uint8_t dat_len ;
uint8_t dat_offset;
uint8_t pkg_amount;
uint8_t pkg_seq;
uint16_t interval;
uint32_t counter;
uint8_t timeout_min; // minute
uint32_t timeout_counter;
} DBN_BLE_State;
extern DBN_BLE_State g_dbn_ble_state_acs_enable;
typedef struct _FLAG_COUNTER_
{
uint32_t flag;
uint32_t timeout;
uint32_t tick;
} Flag_Counter;
extern Flag_Counter g_flag_counter_key;
extern Flag_Counter g_flag_counter_ota;
extern char g_flag_debug;
extern uint8_t g_dev_number[6];
extern uint8_t g_dev_password[6];
extern uint8_t g_ble_safe_flag;
extern uint32_t g_ble_safe_counter_ori;
extern uint32_t g_ble_safe_counter_dst;
// extern uint8_t MACAddr[6];
extern uint8_t gMacAddr[6];
extern char g_dev_number_str[13];
extern uint32_t g_activ_counter;
extern uint8_t g_dg_sub_dev_type;
extern uint8_t g_dg_device_type;
extern uint8_t g_max_counter_bt_min;
extern uint32_t g_max_counter_bt_timeout;
extern uint8_t g_storage_uart_num;
extern uint8_t g_storage_uart_num_2;
extern uint32_t g_storage_uart_baud;
extern uint32_t g_storage_uart_baud_2;
extern uint8_t g_flag_bt_state;
uint32_t mstick(void);
void InitPkgUart(Pkg_Uart * pkg);
void uart_init(void);
void uart_srv(void);
void UART2_SendString(uint8_t *buf, uint16_t len);
void UART1_SendString(uint8_t *buf, uint16_t len);
#endif /* INCLUDE_CMCNG_H_ */

View File

@@ -0,0 +1,124 @@
/*
* dbn_ble_srv.h
*
* Created on: Aug 27, 2024
* Author: Thinkpad
*/
#ifndef INCLUDE_DBN_BLE_SRV_H_
#define INCLUDE_DBN_BLE_SRV_H_
#include "config.h"
#include <stdint.h>
/*
* Magic | Header | Data | CheckByte
* | Addr/Sub Len CMD | | Xor Sum
* 1Byte | 1B 1B 1B | xx | 1B 1B
*
* * Len = len(CMD) + len(Data)
*/
#define MAGIC_BYTE_DBN_DEFAULT 0x8F
#define MAGIC_BYTE_DBN_TRANSPARENT 0x7F // 用于 显示屏协议、地感协议、探头协议等
#define MAGIC_BYTE_DBN_SUB_OTA 0x9F // 用于 透传子设备OTA升级
#define CMD_DBN_UPDATE_DEV_SERIAL 0x09
#define CMD_DBN_GET_DEV_INFO 0x10
#define CMD_DBN_SET_LSSC_NET 0x11
#define CMD_DBN_GET_LSSC_NET 0x12
#define CMD_DBN_SET_IOT_NET 0x13
#define CMD_DBN_GET_IOT_NET 0x14
#define CMD_DBN_SET_IOT_TOPIC 0x15
#define CMD_DBN_GET_IOT_TOPIC 0x16
#define CMD_DBN_SET_SUB_TRAFFIC_PARAM 0x17
#define CMD_DBN_GET_SUB_TRAFFIC_PARAM 0x18
#define CMD_DBN_CHECK_PASS 0x1C
#define CMD_DBN_MODIFY_PASS 0x1D
#define CMD_DBN_SET_FACTORY 0x1E
#define CMD_DBN_RESET_DEV 0x1F
#define CMD_DBN_SET_NOTIFY 0x20
#define CMD_DBN_SET_NOTIFY_LOOP 0x21
#define CMD_DBN_SET_SUB_CODE 0x22 //使能 子功能
#define CMD_DBN_SET_CJQ_PARAM 0x23 // 设置 车检器参数
#define CMD_DBN_GET_CJQ_PARAM 0x24 // 读取 车检器参数
#define CMD_DBN_RW_UART_BAUD 0x31
#define CMD_DBN_LOOP_SAMPLE_PARAM 0x87
#define CMD_DBN_LOOP_BALANCE_PARAM 0x88
#define CMD_DBN_LOOP_RELEASE_PLANB 0x89
#define CMD_DBN_LOOP_SENS_LIST 0x8A
#define CMD_DBN_SET_CJQ_FACTORY 0x92
#define CMD_SUB_SENS_REPORT 0xC0 //设备主动上报传感信息
// #define CMD_REQUIRE_DEV_MAC_ADDR 0xC1
// #define CMD_CHANGE_DEV_ADDR_BY_MAC 0xC2
// #define CMD_SET_LED 0xC3
// #define CMD_SET_RELAY 0xC4
#define CMD_SENS_ACS_ENABLE 0xC5 // 设备主动上报 使能
#define MAX_BLE_DAT_RESPONSE_LEN (BLE_BUFF_MAX_LEN - 4) // 14 //返回 的所有字节数不能超过20个字节除去 magic、header和ckb校验字节剩下数据的字节数为14
#define MAX_BLE_Notify_Buf_LEN BLE_BUFF_MAX_LEN //24
#define MAX_BLE_BUF_LEN BLE_BUFF_MAX_LEN //128
#define MAX_BLE_TMP_BUF_LEN BLE_BUFF_MAX_LEN
typedef struct _BLE_Notify_Buf_
{
uint8_t flag; //0 idle, 1 buf ready
uint8_t len;
uint8_t buf[MAX_BLE_Notify_Buf_LEN];
}BLE_Notify_Buf;
typedef struct _BUF_DBN_BLE_
{
uint8_t flag;
uint8_t magic;
uint8_t cmd;
uint8_t dat_len ;
uint8_t dat_offset;
uint8_t pkg_amount;
uint8_t pkg_seq;
uint8_t dat[MAX_BLE_BUF_LEN];
} Buf_DBN_BLE;
extern Buf_DBN_BLE g_buf_ble_response;
extern BLE_Notify_Buf g_notify_buftemp;
extern uint8_t g_flag_notify_temp;
extern BLE_Notify_Buf g_ble_rcv_buf;
extern uint16_t loop1_LPCNT;
extern uint8_t g_freq_sens;
extern uint8_t loop1_SensLevel;
extern uint8_t g_freq_level;
extern uint32_t g_sys_freq;
extern float g_freq_tmp;
void clear_ble_notify_buf(BLE_Notify_Buf * buf);
uint8_t set_response_tran_to_notify(uint8_t *dat_ori, uint8_t dat_len, BLE_Notify_Buf * notify_dst);
void poll_dbn_ble(void);
void report_sens_acs(void);
void set_factory_param(void);
void factory_dev(void);
void para_store_init(void);
#endif /* INCLUDE_DBN_BLE_SRV_H_ */

View File

@@ -0,0 +1,167 @@
/********************************** (C) COPYRIGHT *******************************
* File Name : net_config.h
* Author : WCH
* Version : V1.30
* Date : 2022/06/02
* Description : This file contains the configurations of
* Ethernet protocol stack library
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* Attention: This software (modified or not) and binary are used for
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*******************************************************************************/
#ifndef __NET_CONFIG_H__
#define __NET_CONFIG_H__
#ifdef __cplusplus
extern "C" {
#endif
/*********************************************************************
* socket configuration, IPRAW + UDP + TCP + TCP_LISTEN = number of sockets
*/
#define WCHNET_NUM_IPRAW 0 /* Number of IPRAW connections */
#define WCHNET_NUM_UDP 1 /* The number of UDP connections */
#define WCHNET_NUM_TCP 1 /* Number of TCP connections */
#define WCHNET_NUM_TCP_LISTEN 0 /* Number of TCP listening */
/* The number of sockets, the maximum is 31 */
#define WCHNET_MAX_SOCKET_NUM (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN)
#define WCHNET_TCP_MSS 576 //1024 //1460 /* Size of TCP MSS*/
#define WCHNET_NUM_POOL_BUF (WCHNET_NUM_TCP*2+2) /* The number of POOL BUFs, the number of receive queues */
/*********************************************************************
* MAC queue configuration
*/
#define ETH_TXBUFNB 1 /* The number of descriptors sent by the MAC */
#define ETH_RXBUFNB 4 /* Number of MAC received descriptors */
#ifndef ETH_MAX_PACKET_SIZE
#define ETH_RX_BUF_SZE 1520 /* MAC receive buffer length, an integer multiple of 4 */
#define ETH_TX_BUF_SZE 1520 /* MAC send buffer length, an integer multiple of 4 */
#else
#define ETH_RX_BUF_SZE ETH_MAX_PACKET_SIZE
#define ETH_TX_BUF_SZE ETH_MAX_PACKET_SIZE
#endif
/*********************************************************************
* Functional configuration
*/
#define WCHNET_PING_ENABLE 1 /* PING is enabled, PING is enabled by default */
#define TCP_RETRY_COUNT 20 /* The number of TCP retransmissions, the default value is 20 */
#define TCP_RETRY_PERIOD 10 /* TCP retransmission period, the default value is 10, the unit is 50ms */
#define SOCKET_SEND_RETRY 0 /* Send failed retry configuration, 1: enable, 0: disable */
#define FINE_DHCP_PERIOD 8 /* Fine DHCP period, the default value is 8, the unit is 250ms */
#define CFG0_TCP_SEND_COPY 1 /* TCP send buffer copy, 1: copy, 0: not copy */
#define CFG0_TCP_RECV_COPY 1 /* TCP receive replication optimization, internal debugging use */
#define CFG0_TCP_OLD_DELETE 0 /* Delete oldest TCP connection, 1: enable, 0: disable */
#define CFG0_IP_REASS_PBUFS 0 /* Number of reassembled IP PBUFs */
#define CFG0_TCP_DEALY_ACK_DISABLE 1 /* 1: disable TCP delay ACK 0: enable TCP delay ACK */
/*********************************************************************
* Memory related configuration
*/
/* If you want to achieve a higher transmission speed,
* try to increase RECE_BUF_LEN to (WCHNET_TCP_MSS*4)
* and increase WCHNET_NUM_TCP_SEG to (WCHNET_NUM_TCP*4)*/
#define RECE_BUF_LEN (WCHNET_TCP_MSS*2) /* socket receive buffer size */
#define WCHNET_NUM_PBUF WCHNET_NUM_POOL_BUF /* Number of PBUF structures */
#define WCHNET_NUM_TCP_SEG (WCHNET_NUM_TCP*2) /* The number of TCP segments used to send */
#define WCHNET_MEM_HEAP_SIZE (((WCHNET_TCP_MSS+0x10+54+8)*WCHNET_NUM_TCP_SEG)+ETH_TX_BUF_SZE+64+2*0x18) /* memory heap size */
#define WCHNET_NUM_ARP_TABLE 50 /* Number of ARP lists */
#define WCHNET_MEM_ALIGNMENT 4 /* 4 byte alignment */
#if CFG0_IP_REASS_PBUFS
#define WCHNET_NUM_IP_REASSDATA 2 /* Number of reassembled IP structures */
/*1: When using the fragmentation function,
* ensure that the size of WCHNET_SIZE_POOL_BUF is large enough to store a single fragmented packet*/
#define WCHNET_SIZE_POOL_BUF (((1500 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */
/*2: When creating a socket that can receive fragmented packets,
* ensure that "RecvBufLen" member of the "struct _SOCK_INF" structure
* (the parameter initialized when calling WCHNET_SocketCreat) is sufficient
* to receive a complete fragmented packet */
#else
#define WCHNET_NUM_IP_REASSDATA 0 /* Number of reassembled IP structures */
#define WCHNET_SIZE_POOL_BUF (((WCHNET_TCP_MSS + 40 + 14 + 4) + 3) & ~3) /* Buffer size for receiving a single packet */
#endif
/* Check receive buffer */
#if(WCHNET_NUM_POOL_BUF * WCHNET_SIZE_POOL_BUF < ETH_RX_BUF_SZE)
#error "WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS Error"
#error "Please Increase WCHNET_NUM_POOL_BUF or WCHNET_TCP_MSS to make sure the receive buffer is sufficient"
#endif
/* Check the configuration of the SOCKET quantity */
#if( WCHNET_NUM_TCP_LISTEN && !WCHNET_NUM_TCP )
#error "WCHNET_NUM_TCP Error,Please Configure WCHNET_NUM_TCP >= 1"
#endif
/* Check byte alignment must be a multiple of 4 */
#if((WCHNET_MEM_ALIGNMENT % 4) || (WCHNET_MEM_ALIGNMENT == 0))
#error "WCHNET_MEM_ALIGNMENT Error,Please Configure WCHNET_MEM_ALIGNMENT = 4 * N, N >=1"
#endif
/* TCP maximum segment length */
#if((WCHNET_TCP_MSS > 1460) || (WCHNET_TCP_MSS < 60))
#error "WCHNET_TCP_MSS Error,Please Configure WCHNET_TCP_MSS >= 60 && WCHNET_TCP_MSS <= 1460"
#endif
/* Number of ARP cache tables */
#if((WCHNET_NUM_ARP_TABLE > 0X7F) || (WCHNET_NUM_ARP_TABLE < 1))
#error "WCHNET_NUM_ARP_TABLE Error,Please Configure WCHNET_NUM_ARP_TABLE >= 1 && WCHNET_NUM_ARP_TABLE <= 0X7F"
#endif
/* Check POOL BUF configuration */
#if(WCHNET_NUM_POOL_BUF < 1)
#error "WCHNET_NUM_POOL_BUF Error,Please Configure WCHNET_NUM_POOL_BUF >= 1"
#endif
/* Check PBUF structure configuration */
#if(WCHNET_NUM_PBUF < 1)
#error "WCHNET_NUM_PBUF Error,Please Configure WCHNET_NUM_PBUF >= 1"
#endif
/* Check IP Assignment Configuration */
#if(CFG0_IP_REASS_PBUFS && ((WCHNET_NUM_IP_REASSDATA > 10) || (WCHNET_NUM_IP_REASSDATA < 1)))
#error "WCHNET_NUM_IP_REASSDATA Error,Please Configure WCHNET_NUM_IP_REASSDATA < 10 && WCHNET_NUM_IP_REASSDATA >= 1 "
#endif
/* Check the number of reassembled IP PBUFs */
#if(CFG0_IP_REASS_PBUFS > WCHNET_NUM_POOL_BUF)
#error "WCHNET_NUM_POOL_BUF Error,Please Configure CFG0_IP_REASS_PBUFS < WCHNET_NUM_POOL_BUF"
#endif
/* Check Timer period, in Ms. */
#if(WCHNETTIMERPERIOD > 50)
#error "WCHNETTIMERPERIOD Error,Please Configure WCHNETTIMERPERIOD < 50"
#endif
/* Configuration value 0 */
#define WCHNET_MISC_CONFIG0 (((CFG0_TCP_SEND_COPY) << 0) |\
((CFG0_TCP_RECV_COPY) << 1) |\
((CFG0_TCP_OLD_DELETE) << 2) |\
((CFG0_IP_REASS_PBUFS) << 3) |\
((CFG0_TCP_DEALY_ACK_DISABLE) << 8))
/* Configuration value 1 */
#define WCHNET_MISC_CONFIG1 (((WCHNET_MAX_SOCKET_NUM)<<0)|\
((WCHNET_PING_ENABLE) << 13) |\
((TCP_RETRY_COUNT) << 14) |\
((TCP_RETRY_PERIOD) << 19) |\
((SOCKET_SEND_RETRY) << 25) |\
((FINE_DHCP_PERIOD) << 27))
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -0,0 +1,289 @@
/**
******************************************************************************
* @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

View File

@@ -0,0 +1,67 @@
/********************************** (C) COPYRIGHT *******************************
* File Name : peripheral.h
* Author : WCH
* Version : V1.0
* Date : 2018/12/11
* Description :
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* Attention: This software (modified or not) and binary are used for
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*******************************************************************************/
#ifndef PERIPHERAL_H
#define PERIPHERAL_H
#ifdef __cplusplus
extern "C" {
#endif
/*********************************************************************
* INCLUDES
*/
#include "dbn_ble_srv.h"
/*********************************************************************
* CONSTANTS
*/
// Peripheral Task Events
#define SBP_START_DEVICE_EVT 0x0001
#define SBP_PERIODIC_EVT 0x0002
#define SBP_READ_RSSI_EVT 0x0004
#define SBP_PARAM_UPDATE_EVT 0x0008
#define SBP_PHY_UPDATE_EVT 0x0010
/*********************************************************************
* MACROS
*/
typedef struct
{
uint16_t connHandle; // Connection handle of current connection
uint16_t connInterval;
uint16_t connSlaveLatency;
uint16_t connTimeout;
} peripheralConnItem_t;
/*********************************************************************
* FUNCTIONS
*/
/*
* Task Initialization for the BLE Application
*/
extern void Peripheral_Init(void);
/*
* Task Event Processor for the BLE Application
*/
extern uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events);
/*********************************************************************
*********************************************************************/
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -0,0 +1,8 @@
#ifndef __SIMPLE_JSON_H_
#define __SIMPLE_JSON_H_
void simple_parse_json(const char * data, char *key_str, char *value_str);
#endif

View File

@@ -0,0 +1,36 @@
#ifndef _STORAGE_H__
#define _STORAGE_H__
#include <stdint.h>
#define DEV_NUMER_ADDR_OFFSET 0x10
#define DEV_SUB_CODE_ADDR_OFFSET 0x20 //2byte [0x20,0x21]
#define DEV_BUS_BAUD_ADDR_OFFSET 0x22 //8byte [0x22,0x29]
#define DEV_PASSWORD_ADDR_OFFSET 0x2A //6byte [0x2A, 0x2F]
#define NET_LOCAL_CFG_ADDR_OFFSET 0x30 // 0x70 // sizeof(Local_Net_Cfg):32byte
#define NET_CENTER_CFG_ADDR_OFFSET 0x50 // sizeof(NET_CENTER_INFO): 12byte
#define IOT_NET_CFG_ADDR 0x60 // sizeof(IOT_NET_INFO):226(0xE2),
#define IOT_TOPIC_CFG_ADDR (0x60 + 232) // sizeof(IOT_Topic): 129(0x81)
char get_ble_safe_flag(void);
void open_ble_safe_flag(void);
void close_ble_safe_flag(void);
char check_ble_safe_pass(uint8_t * devpass);
void set_ble_safe_pass(uint8_t * devpass);
void alter_dev_serila(uint8_t *serial);
void alter_dev_baud(uint8_t *baudbuf);
void factory_dev_info(void);
void output_cfg_from_flash(void);
void load_cfg_from_flash(void);
void SPI_Flash_Read(uint8_t *pBuffer, uint32_t ReadAddr, uint16_t size);
void SPI_Flash_Write(uint8_t *pBuffer, uint32_t WriteAddr, uint16_t size);
void storage_init(void);
#endif

View File

@@ -0,0 +1,31 @@
/********************************** (C) COPYRIGHT *******************************
* File Name : system_ch32v20x.h
* Author : WCH
* Version : V1.0.0
* Date : 2022/06/16
* Description : CH32V20x Device Peripheral Access Layer System Header File.
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* Attention: This software (modified or not) and binary are used for
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*******************************************************************************/
#ifndef __SYSTEM_ch32v20x_H
#define __SYSTEM_ch32v20x_H
#ifdef __cplusplus
extern "C" {
#endif
extern uint32_t SystemCoreClock; /* System Clock Frequency (Core Clock) */
/* System_Exported_Functions */
extern void SystemInit(void);
extern void SystemCoreClockUpdate(void);
#ifdef __cplusplus
}
#endif
#endif /*__CH32V20x_SYSTEM_H */